sql >> Base de Datos >  >> RDS >> Database

SQL CREATE TABLE para principiantes

Este artículo contiene SQL básico CREATE TABLE instrucciones que los principiantes pueden usar para crear tablas básicas para sus proyectos de base de datos.

Sintaxis básica

La sintaxis básica para crear tablas en SQL es la siguiente:

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

Dónde:

  • TableName es el nombre que le quieres dar a la tabla
  • Column1 , etc. son los nombres que le das a tus columnas
  • datatype es el tipo de datos que asigna a cada columna. La mayoría de los RDBMS requieren que asigne un tipo de datos a cada columna. En SQLite, es opcional.
  • optional_constraints es una lista opcional de restricciones que aplica a una columna.

Tenga en cuenta que la mayoría de los DBMS usan una sintaxis más compleja que esta (es decir, ofrecen más opciones), pero esta es generalmente la sintaxis básica requerida para crear una tabla. La mayoría de los principiantes comienzan con esta sintaxis y luego aprenden opciones más avanzadas a medida que avanzan.

Ejemplo básico

He aquí un ejemplo básico:

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
);

Estos son algunos puntos a tener en cuenta:

  • Los nombres de tablas y columnas pueden ser en cualquier caso. Por ejemplo, en lugar de PetId Podría haberlo llamado petid , PETID , o pet_id . Algunos DBMS (p. ej., Postgres) distinguen entre mayúsculas y minúsculas cuando consulta tablas y sus nombres de columna, mientras que otros no (p. ej., SQL Server).
  • Algunos DBMS usan diferentes nombres para sus tipos de datos.
  • NOT NULL es una restricción de tabla que especifica que esta columna debe contener un valor (es decir, no puede contener NULL valores).
  • NULL significa que la columna puede contener NULL valores. Algunos DBMS (como DB2) no admiten NULL palabra clave, por lo que deberá omitirla cuando trabaje con tales DBMS.
  • PRIMARY KEY agrega una restricción de clave principal a la tabla. Es una buena práctica especificar una clave principal en todas sus tablas.
  • Si ya existe una tabla con el mismo nombre en la base de datos, obtendrá un error. Deberá eliminar la tabla existente o modificarla (o cambiar el nombre de la que está creando).

Crear una tabla con claves foráneas

El siguiente ejemplo crea una tabla con dos claves foráneas. Las claves foráneas se utilizan para crear una relación entre dos tablas.

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
);

Las REFERENCES La cláusula se utiliza para definir una clave externa contra dos columnas. En nuestro caso, las claves foráneas imponen lo siguiente:

  • Las Pets.PetTypeId la columna hace referencia a PetTypes.PetTypeId columna (cualquier valor que entre en Pets.PetTypeId la columna debe tener un valor coincidente en PetTypes.PetTypeId columna).
  • El Pets.OwnerId la columna hace referencia a Owners.OwnerId columna (cualquier valor que entre en Pets.OwnerId la columna debe tener un valor coincidente en Owners.OwnerId columna).

Las claves foráneas también se pueden agregar más tarde, usando ALTER TABLE declaración si es necesario.

Crear una tabla con restricción DEFAULT

El siguiente ejemplo crea una tabla con un DEFAULT restricción.

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 
);

Crear una tabla con una columna de marca de tiempo

Puedes usar DEFAULT restricciones para insertar automáticamente la fecha y hora actual en una columna cada vez que se inserta una nueva fila. Esto a menudo se conoce como insertar una marca de tiempo.

Diferentes DBMS usan diferentes funciones para devolver la fecha actual.

Aquí hay un ejemplo de cómo hacerlo en 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
);

En SQL Server, CURRENT_TIMESTAMP es el equivalente ANSI de GETDATE() función.

Alternativamente, puede usar SYSDATETIME() para una marca de tiempo de mayor precisión:

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

Para admitir una mayor precisión, el tipo de datos de la columna debe ser datetime2 .

SQL Server tiene bastantes tipos de datos para valores de fecha/hora. Consulte las funciones de fecha y hora de SQL Server para obtener una lista.

Cada DBMS tiene sus propias funciones para devolver la fecha y la hora. Aquí hay una lista de los principales:

DB2 CURRENT_DATE
MySQL CURRENT_DATE o NOW()
Oráculo SYSDATE
PostgreSQL CURRENT_DATE
Servidor SQL CURRENT_TIMESTAMP , GETDATE() o SYSDATETIME()
SQLite datetime('now')

Ver también:

  • Funciones de fecha y hora de SQL Server
  • Funciones de fecha y hora de SQLite

Crear una columna con un valor que se incrementa automáticamente

A veces necesita crear una columna que incremente automáticamente un valor cada vez que se inserta una nueva fila. Por lo general, se denominan columnas de "incremento automático" o "identidad", según el DBMS que se utilice.

En SQL Server, use la IDENTITY argumento:

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()
);

En este caso, usamos IDENTITY(1,1) .

  • El primer 1 es la semilla. Esto especifica qué valor iniciar el conteo (es decir, este es el valor de la primera fila insertada en la tabla).
  • El segundo 1 es el incremento. Este es el valor incremental agregado al valor de identidad de la fila anterior cargada.

Cada DBMS tiene su propia palabra clave para crear una columna de incremento automático.

  • En MySQL y MariaDb, use AUTO_INCREMENT
  • En SQLite, tiene un par de opciones (incluido el AUTOINCREMENT palabra clave)
  • En PostgreSQL, use SERIAL
  • De la base de datos Oracle 12c , ahora puede usar la palabra clave IDENTITY para crear columnas de incremento automático. Un ejemplo podría verse así:UserId NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY

Opciones avanzadas

La mayoría de los DBMS le permiten especificar opciones avanzadas al crear tablas. Las opciones disponibles dependerán en gran medida de su DBMS.

Consulte la documentación de su DBMS si necesita opciones que no se especifican en este artículo.

Se pueden configurar muchas opciones avanzadas a través de la GUI (dependiendo de la herramienta que use para conectarse a su base de datos). Siempre puede crear o modificar una tabla a través de la GUI, luego use su opción "Script as Create" (o similar) para ver el código SQL que necesitaría ejecutar para crear dicha tabla. Puede tomar este código y cambiar los nombres de las tablas, los nombres de las columnas, etc. para crear una tabla completamente nueva basada en la definición de la anterior.