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

SQL CREATE TABLE per principianti

Questo articolo contiene CREATE TABLE SQL di base istruzioni che i principianti possono utilizzare per creare tabelle di base per i loro progetti di database.

Sintassi di base

La sintassi di base per la creazione di tabelle in SQL è la seguente:

CREATE TABLE TableName (
    Column1 datatype optional_constraints,
    Column2 datatype optional_constraints,
    Column3 datatype optional_constraints,
    ...
);

Dove:

  • TableName è il nome che vuoi dare al tavolo
  • Column1 , etc sono i nomi che dai alle tue colonne
  • datatype è il tipo di dati che assegni a ciascuna colonna. La maggior parte degli RDBMS richiedono l'assegnazione di un tipo di dati a ciascuna colonna. In SQLite, è facoltativo.
  • optional_constraints è un elenco facoltativo di vincoli da applicare a una colonna.

Nota che la maggior parte dei DBMS utilizza una sintassi più complessa di questa (cioè offrono più opzioni), ma questa è generalmente la sintassi di base richiesta per creare una tabella. La maggior parte dei principianti inizia con questa sintassi, quindi apprende opzioni più avanzate man mano che avanza.

Esempio di base

Ecco un esempio di base:

CREATE TABLE Pets
(
    PetId       int NOT NULL PRIMARY KEY,
    PetTypeId   int NOT NULL,
    OwnerId     int NOT NULL,
    PetName     varchar(60) NOT NULL,
    DOB         date NULL
);

Ecco alcuni punti da notare:

  • I nomi di tabelle e colonne possono essere comunque. Ad esempio, invece di PetId Avrei potuto chiamarlo petid , PETID o pet_id . Alcuni DBMS (ad es. Postgres) fanno distinzione tra maiuscole e minuscole quando esegui query sulle tabelle e sui nomi delle colonne, mentre altri no (ad es. SQL Server).
  • Alcuni DBMS utilizzano nomi diversi per i loro tipi di dati.
  • NOT NULL è un vincolo di tabella che specifica che questa colonna deve contenere un valore (cioè non può contenere NULL valori).
  • NULL significa che la colonna può contenere NULL valori. Alcuni DBMS (come DB2) non supportano il NULL parola chiave, quindi sarà necessario ometterla quando si lavora con tali DBMS.
  • PRIMARY KEY aggiunge un vincolo di chiave primaria alla tabella. È buona norma specificare una chiave primaria su tutte le tabelle.
  • Se esiste già una tabella con lo stesso nome nel database, riceverai un errore. Dovrai eliminare la tabella esistente o modificarla (o cambiare il nome di quella che stai creando).

Crea una tabella con chiavi esterne

L'esempio seguente crea una tabella con due chiavi esterne. Le chiavi esterne vengono utilizzate per creare una relazione tra due tabelle.

CREATE TABLE Pets
(
    PetId       int NOT NULL PRIMARY KEY,
    PetTypeId   int NOT NULL REFERENCES PetTypes (PetTypeId),
    OwnerId     int NOT NULL REFERENCES Owners (OwnerId),
    PetName     varchar(60) NOT NULL,
    DOB         date NULL
);

I REFERENCES La clausola viene utilizzata per definire una chiave esterna su due colonne. Nel nostro caso, le chiavi esterne impongono quanto segue:

  • Il Pets.PetTypeId la colonna fa riferimento a PetTypes.PetTypeId colonna (qualsiasi valore che va in Pets.PetTypeId la colonna deve avere un valore corrispondente in PetTypes.PetTypeId colonna).
  • Il Pets.OwnerId la colonna fa riferimento a Owners.OwnerId colonna (qualsiasi valore che va in Pets.OwnerId la colonna deve avere un valore corrispondente in Owners.OwnerId colonna).

Le chiavi esterne possono essere aggiunte anche in un secondo momento, utilizzando il ALTER TABLE dichiarazione se richiesta.

Crea una tabella con il vincolo DEFAULT

L'esempio seguente crea una tabella con un DEFAULT vincolo.

CREATE TABLE OrderItems
(
    OrderId     int NOT NULL PRIMARY KEY,
    OrderItem   int NOT NULL,
    ProductId   int NOT NULL,
    Quantity    int NOT NULL DEFAULT 1,
    ItemPrice   decimal(8,2) NOT NULL 
);

Crea una tabella con una colonna timestamp

Puoi usare DEFAULT vincoli per inserire automaticamente la data e l'ora correnti in una colonna ogni volta che viene inserita una nuova riga. Questo è spesso indicato come inserimento di un timestamp.

Diversi DBMS utilizzano funzioni diverse per restituire la data corrente.

Ecco un esempio di come farlo in SQL Server.

CREATE TABLE Users
(
    UserId         int NOT NULL PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime DEFAULT CURRENT_TIMESTAMP
);

In SQL Server, CURRENT_TIMESTAMP è l'equivalente ANSI di GETDATE() funzione.

In alternativa puoi usare SYSDATETIME() per un timestamp di maggiore precisione:

CREATE TABLE Users
(
    UserId         int NOT NULL PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime2 DEFAULT SYSDATETIME()
);

Per supportare una maggiore precisione, il tipo di dati della colonna deve essere datetime2 .

SQL Server ha diversi tipi di dati per i valori di data/ora. Consulta le funzioni di data e ora di SQL Server per un elenco.

Ogni DBMS ha le sue funzioni per restituire la data e l'ora. Ecco un elenco dei principali:

DB2 CURRENT_DATE
MySQL CURRENT_DATE o NOW()
Oracolo SYSDATE
PostgreSQL CURRENT_DATE
SQL Server CURRENT_TIMESTAMP , GETDATE() o SYSDATETIME()
SQLite datetime('now')

Vedi anche:

  • Funzioni di data e ora di SQL Server
  • Funzioni di data e ora di SQLite

Crea una colonna con un valore incrementale automaticamente

A volte è necessario creare una colonna che incrementi automaticamente un valore ogni volta che viene inserita una nuova riga. Queste sono generalmente denominate colonne di "incremento automatico" o "identità", a seconda del DBMS utilizzato.

In SQL Server, usa IDENTITY argomento:

CREATE TABLE Users
(
    UserId         int NOT NULL IDENTITY(1,1) PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime2 DEFAULT SYSDATETIME()
);

In questo caso, utilizziamo IDENTITY(1,1) .

  • Il primo 1 è il seme. Questo specifica quale valore deve iniziare il conteggio (cioè questo è il valore della prima riga inserita nella tabella).
  • Il secondo 1 è l'incremento. Questo è il valore incrementale aggiunto al valore di identità della riga precedente caricata.

Ogni DBMS ha la propria parola chiave per la creazione di una colonna con incremento automatico.

  • In MySQL e MariaDb, usa AUTO_INCREMENT
  • In SQLite, hai un paio di opzioni (incluso AUTOINCREMENT parola chiave)
  • In PostgreSQL, usa SERIAL
  • Da Oracle Database 12c , ora puoi utilizzare la parola chiave IDENTITY per creare colonne a incremento automatico. Un esempio potrebbe essere:UserId NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY

Opzioni avanzate

La maggior parte dei DBMS consente di specificare opzioni avanzate durante la creazione di tabelle. Le opzioni disponibili dipenderanno in gran parte dal tuo DBMS.

Fare riferimento alla documentazione del DBMS se sono necessarie opzioni non specificate in questo articolo.

Molte opzioni avanzate possono essere impostate tramite la GUI (a seconda dello strumento utilizzato per la connessione al database). Puoi sempre creare o modificare una tabella tramite la GUI, quindi utilizzare la sua opzione "Script as Create" (o simile) per vedere il codice SQL che dovresti eseguire per creare una tabella di questo tipo. Puoi prendere questo codice e modificare i nomi delle tabelle, i nomi delle colonne, ecc. per creare una tabella completamente nuova basata sulla definizione della precedente.