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 casoArtists
), 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 yPRIMARY 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 esnvarchar(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 enNOT 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 dedate
);
- 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ó.