sql >> Base de Datos >  >> RDS >> Mysql

Cómo crear una tabla en SQL:consulta de ejemplo de Postgres y MySQL

Saber crear tablas en SQL es un concepto importante y fundamental.

En este tutorial, lo guiaré a través del SQL sintaxis para CREATE TABLE declaración utilizando ejemplos de código para PostgreSQL y MySQL.

Básico CREATE TABLE Sintaxis

Esta es la sintaxis básica para CREATE TABLE declaración:

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

Para la primera parte, debe comenzar con CREATE TABLE seguido del nombre de la tabla que desea crear.

Si quisiera crear una tabla de información del maestro, escribiría algo como esto:

CREATE TABLE teachers();

Dentro del paréntesis, agregará la información para crear las columnas de la tabla. Si olvida los paréntesis, recibirá un mensaje de error.

CREATE TABLE teachers;

El punto y coma al final del paréntesis le dice a la computadora que es el final del SQL declaración. A veces escuchará que se hace referencia a esto como un terminador de declaración.

¿Qué son MySQL? motores de almacenamiento?

Según el MySQL documentación:

Los motores de almacenamiento son componentes de MySQL que manejan las operaciones SQL para diferentes tipos de tablas.

MySQL utiliza estos motores de almacenamiento para realizar operaciones CRUD (crear, leer, actualizar y eliminar) en la base de datos.

En MySQL , tiene la opción de especificar el tipo de motor de almacenamiento que desea usar para su tabla. Si omite el ENGINE cláusula entonces el valor predeterminado será 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;

¿Qué es el IF NOT EXISTS cláusula?

Hay una cláusula opcional llamada IF NOT EXISTS eso verificará si la tabla que desea crear ya existe en la base de datos. Puede colocar esa cláusula justo antes del nombre de la tabla.

CREATE TABLE IF NOT EXISTS teachers();

Si la tabla ya existe, la computadora no creará una nueva tabla.

Si omite el IF NOT EXISTS e intente crear una tabla que ya existe en la base de datos, recibirá un mensaje de error.

En este ejemplo, primero creé una tabla llamada maestros. Pero si trato de crear esa misma tabla en el siguiente comando, me encontraré con un error.

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

Cómo crear columnas en la tabla

Dentro del paréntesis para CREATE TABLE instrucción, va a enumerar los nombres de las columnas que desea crear junto con sus tipos de datos y restricciones.

Este es un ejemplo de cómo podemos agregar cuatro columnas de school_id , name , email y age a nuestra mesa de profesores. Cada nombre de columna debe estar separado por comas.

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

Según el MySQL documentación:

MySQL tiene un límite estricto de 4096 columnas por tabla, pero el máximo efectivo puede ser menor para una tabla determinada. El límite de columna exacto depende de varios factores.

Si está trabajando en MySQL más pequeño proyectos personales, entonces probablemente no tendrá que preocuparse por exceder el número de columnas para sus tablas.

Según la documentación de PostgreSQL, existe un límite de 1600 columnas por tabla. Similar a MySQL , un límite exacto puede variar según el espacio en disco o las restricciones de rendimiento.

Tipos de datos en SQL

Cuando está creando columnas en la tabla, debe asignarle un tipo de datos. Los tipos de datos describen el tipo de valor dentro de las columnas.

Aquí hay seis categorías populares de tipos de datos en SQL :

  1. Numérico (int, flotante, serial, decimal, etc.)
  2. Datos y hora (marca de tiempo, fecha, hora, etc.)
  3. Carácter y cadena (char, varchar, texto, etc.)
  4. Unicode (ntext, nvarchar, etc.)
  5. Binario (binario, etc.)
  6. Varios (xml, tabla, etc.)

Este artículo no analizará todos los tipos de datos, pero cubrirá algunos de los más populares.

Aquí está la lista completa de PostgreSQL tipos de datos y MySQL tipos de datos.

Que es SERIAL y AUTO_INCREMENT ?

En PostgreSQL , un SERIAL el tipo de datos es un número entero que se incrementará automáticamente en uno por cada nueva fila que se cree.

Podemos agregar SERIAL justo después del school_id columna en nuestra tabla de profesores.

school_id SERIAL

En MySQL , usaría AUTO_INCREMENT en lugar de SERIAL . En este ejemplo, el INT se utiliza el tipo de datos que representa un número entero.

school_id INT AUTO_INCREMENT

Si agregamos cinco filas a nuestra tabla de maestros, la salida mostraría los números 1, 2, 3, 4, 5 para el school_id columna porque el número entero se incrementa automáticamente en uno para cada nueva fila.

¿Qué es el VARCHAR ¿tipo de datos?

Un VARCHAR El tipo de datos es una cadena de longitud variable en la que puede establecer una longitud máxima de caracteres.

Este es un ejemplo del uso de VARCHAR tipo de datos para el name y email columnas en nuestra tabla de profesores. El número 30 es la longitud máxima de caracteres.

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

Restricciones de columna en SQL

Estas son reglas que se aplican a los datos dentro de las columnas de la tabla.

Aquí hay una lista de algunas de las restricciones de columna más comunes:

  • CLAVE PRINCIPAL:esta clave sirve como un identificador único para la tabla
  • CLAVE EXTERNA:esta clave se asegura de que los valores en una columna también estén presentes en otra tabla. Esto sirve como enlace entre las tablas.
  • ÚNICO:todos los valores de la columna deben ser únicos
  • NOT NULL:los valores no pueden ser NULL. NULL es la ausencia de un valor
  • CHECK - prueba un valor contra una expresión booleana

Ejemplos de PRIMARY y FOREIGN llaves

En nuestra tabla de profesores, podemos agregar una PRIMARY KEY al school_id columna.

Así es como se vería el código en PostgreSQL:

 school_id SERIAL PRIMARY KEY

Así es como se vería el código en MySQL:

school_id INT AUTO_INCREMENT PRIMARY KEY

Si quisiera tener más de una columna para la PRIMARY KEY , entonces lo agregaría justo después de las creaciones de su columna.

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

Si desea vincular una tabla a otra, puede usar una FOREIGN KEY .

Digamos que tenemos una tabla llamada district_employees con una clave principal de district_id . Así es como se vería el código en PostgreSQL:

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

En nuestra tabla de maestros, podemos usar una clave externa y hacer referencia a la tabla 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 
);

Ejemplos de NOT NULL , CHECK y UNIQUE

Si queremos asegurarnos de que no tenemos ningún valor que sea nulo, podemos usar NOT NULL restricción.

name VARCHAR(30) NOT NULL

Podemos usar el CHECK restricción para garantizar que todos nuestros maestros tengan 18 años o más. El CHECK la restricción prueba un valor contra una expresión booleana.

age INT CHECK(age >= 18)

Si uno de nuestros valores no cumple con esa condición, obtendremos un mensaje de error.

Podemos usar el UNIQUE restricción para asegurarse de que todos los correos electrónicos sean únicos.

email VARCHAR(30) UNIQUE

Este es el resultado final de la tabla de profesores:

Así es como se vería el código en PostgreSQL:

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

Así es como se vería el código en 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)      
);

Espero que haya disfrutado este artículo y la mejor de las suertes en su viaje SQL.