sql >> Base de Datos >  >> RDS >> Sqlserver

Crear una tabla en SQL Server 2017

Aquí creamos tres tablas en SQL Server, luego analizamos el script que las creó. También ejecutamos otro script para verificar que se creó la tabla.

Anteriormente creamos una base de datos a partir de un script. Sin embargo, la base de datos es una base de datos en blanco, no contiene tablas ni datos.

Ahora vamos a crear algunas tablas para nuestra base de datos.

Primero, como repaso, esto es lo que hemos hecho hasta ahora:

CREATE DATABASE Music;

Eso creó una base de datos en blanco. Si aún no lo ha hecho, ejecute ese script.

Ahora ejecute el siguiente script:

USE Music;

CREATE TABLE Artists (
  ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  ArtistName nvarchar(255) NOT NULL,
  ActiveFrom date
);
GO

CREATE TABLE Genres (
  GenreId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  Genre nvarchar(50) NOT NULL
);

CREATE TABLE Albums (
  AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  AlbumName nvarchar(255) NOT NULL,
  ReleaseDate date NOT NULL,
  ArtistId int NOT NULL,
  GenreId int NOT NULL

  CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId)     
    REFERENCES dbo.Artists (ArtistId)     
    ON DELETE NO ACTION    
    ON UPDATE NO ACTION    
);

Ese script agrega tres tablas a la base de datos. Las mesas se llaman Artists , Genres y Albums .

Este es el resultado en SQL Operations Studio/Azure Data Studio:

Cualquier herramienta GUI mostrará las tablas prácticamente de la misma manera. Cada tabla se puede expandir para revelar sus columnas, así como cualquier índice, disparador, clave, etc. También puede expandir las Columnas para revelar la lista de columnas y sus tipos de datos, así como cualquier restricción que se haya especificado.

Explicación de CREATE TABLE Declaración

El script que acabamos de ejecutar consta de tres CREATE TABLE instrucciones:cada una crea una tabla diferente. El script también agrega una restricción de clave externa, pero lo veremos más adelante.

Por ahora, analicemos el primer CREATE TABLE declaración en nuestro script:

USE Music;

CREATE TABLE Artists (
  ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  ArtistName nvarchar(255) NOT NULL,
  ActiveFrom date
);
GO

Esta sentencia SQL crea una tabla llamada Artists con tres columnas, llamadas ArtistId , ArtistName y ActiveFrom . La definición de cada columna comienza con su nombre, seguido de su tipo de datos y cualquier restricción que se aplique a esa columna.

Aquí hay una descripción más detallada "línea por línea":

USE Music;
Esta parte no es realmente parte de CREATE TABLE declaración. Solo está ahí para cambiar a Música base de datos. Puede haber muchas bases de datos en el servidor y queremos estar seguros de que estamos creando las tablas en la base de datos correcta. No necesita esta línea si ya está trabajando en la base de datos correcta.
CREATE TABLE Artists (
Este es el comienzo de CREATE TABLE declaración. Le sigue el nombre de la tabla (en este caso Artists ), seguido del primero de los paréntesis que encierran la definición de la tabla.
ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
Luego definimos la primera columna. En este caso lo llamamos ArtistId , especifique su tipo de datos como un número entero (int ), configúrelo como una columna de identidad (esta columna proporcionará la ID única para la tabla y el valor aumentará con cada fila agregada), el (1,1) significa que el valor comienza en 1 y se incrementa en 1, NOT NULL significa que el campo no puede contener valores nulos y PRIMARY KEY establece esta columna como la clave principal de la tabla. Una clave principal es una columna que se ha configurado como campo de identificador único para la tabla.
ArtistName nvarchar(255) NOT NULL,
La siguiente columna se llama ArtistName y su tipo de datos es nvarchar(255) , lo que significa que acepta datos de cadena Unicode de longitud variable, con una longitud máxima de 255 caracteres. También establecemos esta columna en NOT NULL para que no pueda contener entradas nulas.
ActiveFrom date
La última columna se llama ActiveFrom y lo configuramos para aceptar un tipo de datos de date
);
Luego usamos ) para cerrar la definición, y ; para finalizar la declaración (el punto y coma es un terminador de declaración).
GO
Señala el final de un lote de instrucciones Transact-SQL. Esto no es realmente una instrucción Transact-SQL. Es un comando reconocido por las utilidades sqlcmd y osql y el editor de código de SQL Server Management Studio para señalar el final de un lote de instrucciones Transact-SQL.

Cómo recuperar información de tablas cuando se usa una herramienta de línea de comandos

Cuando usa una herramienta de línea de comandos, no puede darse el lujo de ver las tablas de su base de datos en el panel lateral esperando ser expandidas con un solo clic. Pero eso no significa que no pueda ver información sobre sus tablas u otros objetos de la base de datos.

Cuando utilice una herramienta de línea de comandos, puede ejecutar la siguiente declaración para mostrar información sobre las tablas en la base de datos anterior:

USE Music; 
SELECT column_name, data_type, character_maximum_length, is_nullable 
FROM information_schema.columns;
Result
column_name  data_type  character_maximum_length  is_nullable
-----------  ---------  ------------------------  -----------
ArtistId     int        null                      NO         
ArtistName   nvarchar   255                       NO         
ActiveFrom   date       null                      YES        
GenreId      int        null                      NO         
Genre        nvarchar   50                        NO         
AlbumId      int        null                      NO         
AlbumName    nvarchar   255                       NO         
ReleaseDate  date       null                      NO         
ArtistId     int        null                      NO         
GenreId      int        null                      NO         

10 row(s) returned

Executed in 1 ms

La tabla en cuestión está en la base de datos llamada Música así que es por eso que lo cambiamos primero.

También puede reducirlo a una tabla específica usando WHERE cláusula:

USE Music; 
SELECT column_name, data_type, character_maximum_length, is_nullable 
FROM information_schema.columns 
WHERE table_name = 'Artists';
Result
column_name  data_type  character_maximum_length  is_nullable
-----------  ---------  ------------------------  -----------
ArtistId     int        null                      NO         
ArtistName   nvarchar   255                       NO         
ActiveFrom   date       null                      YES        

3 row(s) returned

Executed in 1 ms

Hay muchos más campos que pueden ser devueltos por information_schema.columns . Puedes usar SELECT * para devolverlos todos si lo desea.

El método de línea de comandos para recuperar información de la tabla también funciona cuando se utiliza una herramienta GUI (después de todo, son solo instrucciones SQL). Puede ingresar las mismas instrucciones SQL para recuperar los mismos datos, ya sea que use sql-cli, sqlcmd, SSMS, Azure Data Studio, DBeaver o cualquier otra herramienta de administración de SQL Server:

El GO Comando

Es posible que deba agregar GO hasta el final del script (al usar sqlcmd por ejemplo).

Líneas Múltiples

Es posible que obtenga un error si intenta distribuir los scripts anteriores en varias líneas con una herramienta de línea de comandos.

Si este es el caso, intente agregar una barra invertida al final de cada línea. Me gusta esto:

USE Music; \
SELECT column_name, data_type, character_maximum_length, is_nullable \
FROM information_schema.columns;

Si no le gusta la idea de tener que agregar barras invertidas, otra opción es guardar el script de varias líneas en un archivo .sql y luego ejecutarlo desde el símbolo del sistema.

El método para ejecutar un script desde el símbolo del sistema dependerá de la utilidad de línea de comandos que utilice.

Aquí se explica cómo usar sqlcmd para ejecutar un archivo guardado en una máquina con Windows:

sqlcmd -S myServer\instanceName -i C:\myScript.sql

Y aquí se explica cómo usar sql-cli para ejecutar un archivo guardado en una Mac:

.run /myScript.sql

Obviamente, la ruta completa y los nombres de archivo dependerán de su nombre de archivo y de dónde lo guardó.