Mysql
 sql >> Database >  >> RDS >> Mysql

Come creare una tabella in SQL:query di esempio Postgres e MySQL

Saper creare tabelle in SQL è un concetto importante e fondamentale.

In questo tutorial, ti guiderò attraverso SQL sintassi per CREATE TABLE istruzione utilizzando esempi di codice sia per PostgreSQL che per MySQL.

Base CREATE TABLE Sintassi

Ecco la sintassi di base per CREATE TABLE dichiarazione:

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
);

Per la prima parte, devi iniziare con CREATE TABLE istruzione seguita dal nome della tabella che si desidera creare.

Se volessi creare una tabella di informazioni sull'insegnante, scriverei qualcosa del genere:

CREATE TABLE teachers();

Tra parentesi verranno aggiunte le informazioni per la creazione delle colonne per la tabella. Se dimentichi la parentesi, riceverai un messaggio di errore.

CREATE TABLE teachers;

Il punto e virgola alla fine della parentesi indica al computer che è la fine di SQL dichiarazione. A volte sentirai questo denominato terminatore di istruzione.

Cosa sono MySQL motori di archiviazione?

Secondo il MySQL documentazione:

I motori di archiviazione sono componenti MySQL che gestiscono le operazioni SQL per diversi tipi di tabelle.

MySQL utilizza questi motori di archiviazione per eseguire operazioni CRUD (creazione, lettura, aggiornamento ed eliminazione) sul database.

In MySQL , hai la possibilità di specificare il tipo di motore di archiviazione che desideri utilizzare per la tua tabella. Se ometti il ​​ENGINE clausola quindi l'impostazione predefinita sarà InnoDB.

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
)ENGINE=storage_engine;

Cos'è il IF NOT EXISTS clausola?

C'è una clausola opzionale chiamata IF NOT EXISTS che verificherà se la tabella che vuoi creare esiste già nel database. Puoi inserire quella clausola appena prima del nome della tabella.

CREATE TABLE IF NOT EXISTS teachers();

Se la tabella esiste già, il computer non creerà una nuova tabella.

Se ometti IF NOT EXISTS clausola e prova a creare una tabella che esiste già nel database, quindi riceverai un messaggio di errore.

In questo esempio, ho prima creato una tabella chiamata insegnanti. Ma se provo a creare la stessa tabella nel comando successivo, mi imbatterò in un errore.

CREATE TABLE IF NOT EXISTS teachers();
CREATE TABLE teachers();

Come creare colonne nella tabella

Tra parentesi per il CREATE TABLE istruzione, elencherai i nomi delle colonne che desideri creare insieme ai loro tipi di dati e vincoli.

Questo è un esempio di come possiamo aggiungere quattro colonne di school_id , name , email e age al tavolo dei nostri insegnanti. Ogni nome di colonna deve essere separato da virgole.

CREATE TABLE teachers(
	school_id data_type column_constraint, 
	name data_type column_constraint,
    email data_type column_constraint, 
	age data_type column_constraint
);

Secondo il MySQL documentazione:

MySQL ha un limite fisso di 4096 colonne per tabella, ma il massimo effettivo potrebbe essere inferiore per una determinata tabella. L'esatto limite di colonna dipende da diversi fattori.

Se stai lavorando su MySQL più piccoli progetti personali, allora probabilmente non dovrai preoccuparti di superare il numero di colonne per le tue tabelle.

Secondo la documentazione di PostgreSQL, esiste un limite di 1600 colonne per tabella. Simile a MySQL , un limite esatto può variare in base allo spazio su disco o alle limitazioni delle prestazioni.

Tipi di dati in SQL

Quando crei colonne nella tabella, devi assegnarle un tipo di dati. I tipi di dati descrivono il tipo di valore all'interno delle colonne.

Ecco sei categorie popolari di tipi di dati in SQL :

  1. Numero (int, float, seriale, decimale, ecc.)
  2. Dati e ora (marcatura temporale, dati, ora, ecc.)
  3. Carattere e stringa (carattere, varchar, testo, ecc.)
  4. Unicode (ntext, nvarchar, ecc.)
  5. Binario (binario, ecc.)
  6. Varie (xml, tabella, ecc.)

Questo articolo non esaminerà ogni singolo tipo di dati, ma tratterà alcuni di quelli popolari.

Ecco l'elenco completo di PostgreSQL tipi di dati e MySQL tipi di dati.

Cos'è SERIAL e AUTO_INCREMENT ?

In PostgreSQL , un SERIAL il tipo di dati è un numero intero che verrà incrementato automaticamente di uno per ogni nuova riga creata.

Possiamo aggiungere SERIAL subito dopo school_id colonna nella nostra tabella insegnanti.

school_id SERIAL

In MySQL , useresti AUTO_INCREMENT invece di SERIAL . In questo esempio, il INT viene utilizzato il tipo di dati che rappresenta un numero intero.

school_id INT AUTO_INCREMENT

Se aggiungiamo cinque righe alla nostra tabella insegnanti, l'output mostrerebbe i numeri di 1, 2, 3, 4, 5 per school_id colonna perché il numero intero aumenta automaticamente di uno per ogni nuova riga.

Cos'è il VARCHAR tipo di dati?

Un VARCHAR il tipo di dati è una lunghezza di stringa variabile in cui è possibile impostare una lunghezza massima dei caratteri.

Questo è un esempio di utilizzo di VARCHAR tipo di dati per il name e email colonne nella nostra tabella insegnanti. Il numero 30 è la lunghezza massima dei caratteri.

name VARCHAR(30) column_constraint,
email VARCHAR(30) column_constraint,

Vincoli della colonna in SQL

Queste sono regole che vengono applicate ai dati all'interno delle colonne della tabella.

Di seguito è riportato un elenco di alcuni dei vincoli di colonna più comuni:

  • CHIAVE PRIMARIA:questa chiave funge da identificatore univoco per la tabella
  • CHIAVE ESTERA - questa chiave assicura che i valori in una colonna siano presenti anche in un'altra tabella. Questo serve come collegamento tra le tabelle.
  • UNICO - tutti i valori nella colonna devono essere univoci
  • NON NULL - i valori non possono essere NULL. NULL è l'assenza di un valore
  • CHECK - verifica un valore rispetto a un'espressione booleana

Esempi di PRIMARY e FOREIGN chiavi

Nella nostra tabella insegnanti, possiamo aggiungere una PRIMARY KEY al school_id colonna.

Ecco come sarebbe il codice in PostgreSQL:

 school_id SERIAL PRIMARY KEY

Ecco come sarebbe il codice in MySQL:

school_id INT AUTO_INCREMENT PRIMARY KEY

Se vuoi avere più di una colonna per la PRIMARY KEY , quindi lo aggiungeresti subito dopo la creazione delle colonne.

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
    PRIMARY KEY (column1, column2)
);

Se vuoi collegare una tabella ad un'altra puoi usare una FOREIGN KEY .

Supponiamo di avere una tabella chiamata district_employees con una chiave primaria di district_id . Ecco come sarebbe il codice in PostgreSQL:

CREATE TABLE district_employees(
   district_id SERIAL PRIMARY KEY,
   employee_name VARCHAR(30) NOT NULL,
   PRIMARY KEY(district_id)
);

Nella nostra tabella insegnanti, possiamo utilizzare una chiave esterna e fare riferimento alla tabella district_employees.

district_id INT REFERENCES district_employees(district_id),
CREATE TABLE teachers(
    school_id SERIAL PRIMARY KEY,
    district_id INT REFERENCES district_employees(district_id),
    column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc 
);

Esempi di NOT NULL , CHECK e UNIQUE

Se vogliamo assicurarci di non avere valori nulli, possiamo utilizzare NOT NULL vincolo.

name VARCHAR(30) NOT NULL

Possiamo usare il CHECK vincolo per garantire che tutti i nostri insegnanti abbiano 18 anni e più. Il CHECK vincolo verifica un valore rispetto a un'espressione booleana.

age INT CHECK(age >= 18)

Se uno dei nostri valori non soddisfa tale condizione, verrà visualizzato un messaggio di errore.

Possiamo usare il UNIQUE vincolo per assicurarsi che tutte le email siano univoche.

email VARCHAR(30) UNIQUE

Questo è il risultato finale per la tabella docenti:

Ecco come sarebbe il codice in PostgreSQL:

CREATE TABLE teachers(
	school_id SERIAL PRIMARY KEY,
	name VARCHAR(30) NOT NULL,
    email VARCHAR(30) UNIQUE,
	age INT CHECK(age >= 18)      
);

Ecco come sarebbe il codice in MySQL:

CREATE TABLE teachers(
	school_id INT AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(30) NOT NULL,
    email VARCHAR(30) UNIQUE,
	age INT CHECK(age >= 18)      
);

Spero che questo articolo ti sia piaciuto e buona fortuna per il tuo viaggio con SQL.