En el mundo actual de mayor digitalización, big data y computación en la nube, la gestión de datos es una de las habilidades más importantes que puede tener un ingeniero de software. Con este fin, una de las herramientas de bases de datos más poderosas es SQL.
SQL (lenguaje de consulta estructurado) es el lenguaje de programación estándar utilizado para manipular objetos de estructura de datos. Operan sobre datos contenidos en un sistema de gestión de base de datos relacional (RDBMS). Algunos RDBMS conocidos son MySQL y PostgreSQL.
En esta guía, aprenderá sobre los subconjuntos del lenguaje SQL y cómo usar algunos comandos SQL fundamentales, como SELECT
, INSERT
, UPDATE
y DELETE
.
Subconjuntos de SQL
La siguiente lista incluye los diferentes subconjuntos de idiomas de varios comandos SQL. Cada subconjunto tiene su propia función y propósito.
- Lenguaje de definición de datos (DDL):esto le permite crear, eliminar y actualizar definiciones de esquemas de bases de datos (es decir, tablas e índices), sin manipular realmente los datos dentro de las tablas de la base de datos.
- Lenguaje de consulta de datos (DQL):DQL se usa para recuperar datos de la base de datos usando
SELECT
declaración. - Lenguaje de manipulación de datos (DML):este sublenguaje permite la manipulación de datos en la base de datos usando
INSERT
,UPDATE
yDELETE
declaraciones.
Esta guía utiliza una base de datos de ejemplo para una escuela para demostrar aún más los comandos SQL para cada subconjunto enumerado anteriormente. La base de datos de la escuela tiene varias tablas, para estudiantes, cursos, calificaciones, etc. La definición del Student
la tabla contiene columnas para el SSNumber
del estudiante , Firstname
y Lastname
y la definición del CourseTaken
la tabla contiene columnas para SSNumber
, CourseId
, NumericGrade
y YearTaken
.
El ejemplo asume que hay tres estudiantes en la escuela, cada uno de los cuales ha completado dos cursos. Los datos de muestra se muestran en la siguiente tabla:
SSNumber | Apellido | Nombre | ID del curso | NumericGrade | Año tomado |
---|---|---|---|---|---|
111111111 | Smith | Juan | CSC101 | 98 | 2021 |
111111111 | Smith | Juan | ENG101 | 95 | 2022 |
222222222 | Jones | María | CSC101 | 100 | 2022 |
222222222 | Jones | María | EEE101 | 75 | 2022 |
333333333 | Hansen | Roberto | POL101 | 92 | 2021 |
333333333 | Hansen | Roberto | SOC103 | 84 | 2022 |
Crear, modificar y eliminar tablas usando comandos SQL
Desde la línea de comando, use CREATE TABLE
comando seguido del nombre de la tabla y los datos de la tabla. El siguiente comando crea el Student
mesa.
CREATE TABLE Student (
SSNumber CHAR(9) NOT NULL,
LastName VARCHAR(30) NOT NULL,
FirstName VARCHAR(20) NOT NULL
);
El paréntesis encierra los datos de la tabla, comenzando con una columna que etiqueta los datos de cada fila. La siguiente columna indica el tipo de datos que contiene esta fila. CHAR
indica un tipo de datos de cadena de longitud fija y VARCHAR
indica un tipo de datos de cadena de longitud variable. En la última columna, NOT NULL
El atributo garantiza que no se puede agregar un registro a la tabla si alguno de los NOT NULL
las columnas no tienen datos asociados con ellas.
Nota El CREATE TABLE
La declaración está delimitada con un punto y coma final (;), aunque es posible que algunos sistemas comerciales de bases de datos relacionales no requieran ese delimitador.
Nota A menos que se indique lo contrario, todos los comandos de base de datos que se muestran en esta guía funcionan bien tanto en MySQL y PostgreSQL .
Para crear el CourseTaken
tabla, ejecute el siguiente comando:
CREATE TABLE CourseTaken (
SSNumber CHAR(9) NOT NULL,
CourseId CHAR(6) NOT NULL,
NumericGrade INT NOT NULL
);
El YearTaken
la columna no se incluye intencionalmente en el CourseTaken
table para demostrar el uso de ALTER TABLE
dominio. Para agregar el YearTaken
columna en el CourseTaken
tabla, no necesita soltar el CourseTaken
mesa por completo. En su lugar, puede usar el DDL ALTER TABLE
dominio. El siguiente comando altera el CourseTaken
tabla agregando la columna que falta a la tabla.
ALTER TABLE CourseTaken
ADD (YearTaken INT NOT NULL);
El comando anterior sigue una sintaxis similar a la anterior. Requiere el nombre de la tabla, así como tres argumentos:nombre de fila, tipo de datos de fila y NOT NULL
atributo. Si desea eliminar el CourseTaken
tabla por completo, emita el DDL DROP TABLE
comando seguido del nombre de la tabla.
DROP TABLE CourseTaken;
Precaución Al soltar una tabla, se eliminan todos los datos de la tabla.
Cómo insertar datos en una tabla en SQL
Para insertar los datos en la tabla, use SQL INSERT INTO
declaración. Para llamar a este comando, proporcione el nombre de la tabla y la lista de nombres de fila (entre paréntesis) en los que desea insertar los datos. Esto es seguido por VALUES
palabra clave y los valores reales (entre paréntesis) que desea insertar. Los valores se insertan en las filas en el orden en que se llaman.
Nota
- Los comandos SQL se pueden dividir en líneas. El final del comando SQL está delimitado por un punto y coma (
;
).- Los datos del carácter están delimitados por un apóstrofo de apertura y cierre (
‘
), mientras que los datos numéricos no lo son.
El siguiente INSERT
los comandos insertan tres filas en el Student
mesa. Estos comandos usan múltiples INSERT
declaraciones.
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('111111111', 'Smith', 'John');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('222222222', 'Jones', 'Mary');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('333333333', 'Hansen', 'Robert');
De manera similar, también puede insertar varias filas en la tabla en una sola consulta SQL como se muestra a continuación:
INSERT INTO CourseTaken
(SSNumber, CourseId, NumericGrade, YearTaken)
VALUES
('111111111', 'CSC101', 98, 2021),
('111111111', 'ENG101', 95, 2022),
('222222222', 'CSC101', 100, 2022);
NotaPuedes usar el
INSERT INTO
comando de manera similar en PostgreSQL para agregar filas a la tabla. Asegúrese de que los valores coincidan con el orden de las columnas en la definición de la tabla.INSERT INTO student VALUES ('111111111', 'Smith', 'John');
Eliminar datos de una tabla
Para eliminar datos de una tabla, use SQL DELETE FROM
declaración. Usa el WHERE
cláusula para especificar la condición, y si hay más de una condición, use el AND
cláusula junto con WHERE
.
Por ejemplo, el siguiente comando elimina un registro del CourseTaken
tabla con SSNumber 333333333
y ID del curso POL101
.
Precaución Si omite el WHERE
cláusula, se eliminan todos los registros de la tabla.
DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';
Comando SQL para actualizar datos en una tabla
Para actualizar el registro existente en una tabla, use SQL UPDATE
dominio. El SET
La cláusula se usa para establecer (actualizar) un nuevo valor en una columna en particular y el WHERE
se utiliza para actualizar las filas seleccionadas.
Por ejemplo, el siguiente comando actualiza el NumericGrade
columna del CourseTaken
tabla para registros con SSNumber 222222222
y ID del curso EEE101
.
UPDATE CourseTaken
SET NumericGrade = 95
WHERE SSNumber = '222222222' AND CourseId = 'EEE101';
Comando SQL para recuperar datos de una tabla
El verdadero poder de los sistemas de bases de datos relacionales está en su capacidad para recuperar información en un esquema de tablas múltiples, a través de SQL SELECT
comando y la capacidad de unir tablas a través de teclas comunes. Aunque esta guía introductoria no examina la creación de claves e índices utilizando esas claves, utiliza el SSNumber
columna de cada tabla como vehículo (clave) para relacionar (o unir) las tablas para generar información. Los siguientes ejemplos proporcionan diferentes casos de uso de SQL SELECT
comando desde la línea de comando.
Ejemplo 1: Para obtener la lista de todos los estudiantes de la escuela.
SELECT * from Student;
Salida:
+-----------+----------+-----------+
| SSNumber | LastName | FirstName |
+-----------+----------+-----------+
| 111111111 | Smith | John |
| 222222222 | Jones | Mary |
| 333333333 | Hansen | Robert |
+-----------+----------+-----------+
Ejemplo 2: Para obtener la lista de todos los estudiantes y cursos que han tomado.
SELECT Student.SSNumber, Student.LastName,
Student.FirstName, CourseTaken.CourseId
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber;
Salida:
+-----------+----------+-----------+----------+
| SSNumber | LastName | FirstName | CourseId |
+-----------+----------+-----------+----------+
| 111111111 | Smith | John | CSC101 |
| 111111111 | Smith | John | ENG101 |
| 222222222 | Jones | Mary | CSC101 |
+-----------+----------+-----------+----------+
Nota En el comando anterior, las dos tablas,Student
yCourseTaken
se unen para recuperar la información requerida. Los nombres de las columnas enSELECT
yWHERE
las cláusulas tienen el prefijo de sus nombres de tabla para mayor claridad. Sin embargo, en el caso delSSNumber
columna, debemos especificar los prefijos de nombre de tabla apropiados, ya que ambas tablas comparten el mismo nombre de columna. ElFROM
cláusula indica las tablas que se están utilizando en esta consulta.
Ejemplo 3: Recuperar la lista de alumnos con CourseId CSC101
y el año en que tomaron este curso.
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.YearTaken
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.CourseId = 'CSC101';
Salida:
+----------+-----------+----------+-----------+
| LastName | FirstName | CourseId | YearTaken |
+----------+-----------+----------+-----------+
| Smith | John | CSC101 | 2021 |
| Jones | Mary | CSC101 | 2022 |
+----------+-----------+----------+-----------+
Ejemplo 4: Recupere la lista de nombres de estudiantes, cursos tomados y calificaciones recibidas, para aquellos que tenían calificaciones de cursos superiores a 90
.
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.NumericGrade
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.NumericGrade > 90;
Salida:
+----------+-----------+----------+--------------+
| LastName | FirstName | CourseId | NumericGrade |
+----------+-----------+----------+--------------+
| Smith | John | ENG101 | 95 |
| Smith | John | CSC101 | 98 |
| Jones | Mary | CSC101 | 100 |
+----------+-----------+----------+--------------+
Nota El AND
La cláusula en el comando anterior le permite filtrar los resultados por una prueba de puntaje de calificación condicional.
Conclusión
Esta guía sobre comandos SQL es un manual introductorio sobre cómo crear esquemas de base de datos y manipular datos dentro de esas bases de datos. Aunque los conceptos presentados aquí simplemente rascan la superficie con respecto al uso de los sistemas de bases de datos relacionales, es un buen punto de partida para los comandos y conceptos básicos y esenciales.