SQL: Curso gratuito de SQL ¿Qué es el lenguaje SQL? Sintaxis y sentencias básicas
by Juan Carlos García
25-Abr-2024
(9)
Suscribirme al canal:
Hola a todos, hoy iniciamos un nuevo curso gratuito en EWebik, en esta ocasión te enseñare todo respecto al LENGUAJE SQL (Structured Query Language), analizaremos sus antecedentes, ¿Qué es? Y revisaremos la mayoría de las sentencias que son necesarias para manipular una base de datos.
El objetivo de este curso gratuito de SQL es que al final, aprendas a seleccionar, eliminar o actualizar datos dentro de una base de datos.
- No olvides en revisar los demás cursos gratuitos que he creado para ti, sobre todo el Curso gratuito de base de datos que es la antesala de este curso.
Sin más comencemos y vayamos paso a paso para que comprendas todo a la perfección, si aún no he subido el vídeo de esta clase, te recomiendo que te suscribas a mi boletín y canal de YouTube, para que te enteres cuando suba cada uno de los capítulos.
¡No te puedes perder las nuevas clases 🧐!
CREATE, DROP Y ALTER DATABASE
¿Cómo crear (CREATE DATABASE), modificar (ALTER DATABASE) y eliminar (DROP DATABASE) una base de datos en SQL Server?
(2)
CREATE, DROP Y ALTER TABLE
Manejo de tablas en SQL Server: CREATE TABLE, ALTER TABLE y DROP TABLE.
(1)
INSERT SQL
INSERT SQL SERVER: ¿Cómo insertar datos en una tabla desde SQL Server? Sintaxis y ejemplos.
(2)
JOIN SQL
JOIN SQL: ¿Qué son y cómo funcionan INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN y CROSS JOIN?
(1)
DELETE SQL
DELETE SQL y TRUNCATE TABLE: ¿Cómo eliminar datos de una tabla en SQL Server?
(2)
Stored Procedure en SQL Server
Stored Procedure en SQL Server: ¿Cómo crear, modificar y ejecutar procedimientos almacenados en SQL Server?
(3)
Connection String
Connection String de SQL Server: Una Guía Completa para Establecer Conexiones con la Base de Datos
(1)
CASE en SQL Server
Cláusula CASE en SQL Server: Uso y Ejemplos de Condicionales en Consultas
(1)
IS NULL en SQL Server
IS NULL en SQL Server: Comprendiendo la Verificación de Valores Nulos e IS NOT NULL
(1)
🧐 Autoevaluación: SQL
¿Cuál es el lenguaje SQL?
¿Qué es el lenguaje DDL?
¿Qué es el lenguaje DML?
Para iniciar y, como es costumbre en cada uno de mis cursos gratuitos, comencemos con una definición general del lenguaje SQL:
¿Qué es SQL?
El lenguaje SQL (Structured Query Language o lenguaje de consulta estructurado) es un tipo de lenguaje de programación, que permite manipular un conjunto de datos y las relaciones que existen entre ellos.
SQL es uno de los lenguajes de manipulación de datos DML (Data Manipulation Language) más utilizados en el mundo. Un DML es un lenguaje que sirve para la gestión de base de datos, permite llevar a cabo consultas o manipulación de datos organizados mediante algún tipo de modelo de datos.
Es por ello que es uno de los principales lenguajes de programación utilizados para la manipulación de bases de datos, sobre todo en aquellas consideradas como:
Historia: origen y evolución del lenguaje SQL
El lenguaje SQL en sus inicios basaba su existencia alrededor de lo que hoy conocemos como álgebra relacional (del cual tenemos una clase completa que te invito a revisar) y en el cálculo relacional, donde SQL es un lenguaje que consiste en:
- Definición de datos.
- Manipulación de datos.
- Y control de datos.
Dicho lo anterior, SQL es uno de los primero lenguajes que se utilizaron en el mundo de las bases de datos, sobre todo en las relacionales (modelo relacional), propuestas por Edgar Frank Codd en la década de los 70's cuando formaba parte de IBM.
- No obstante fue la empresa Oracle quien lo lanza como un producto comercial haya por el 1979.
Veamos algunos datos importantes:
- En 1986: vemos la primera publicación por parte del ANSI (American National Standards Institute).
- En 1999: se agrega soporte para:
- Manejo de expresiones regulares.
- Consultas recursivas, muy útiles para relaciones jerárquicas.
- Triggers
- Y ciertas características orientadas a objetos.
- En 2003: se agregan nuevas características para soportar XML.
- En 2006: se siguen agregando características respecto a XML:
- Se define la forma en que se almacenan o importan datos XML dentro de una base de datos.
- Manipulación de datos en formato XML dentro de la misma base de datos.
- Se agrega la forma en que las aplicaciones pueden utilizar XQuery dentro de su código SQL. XQuery es el lenguaje de consulta XML.
- En 2008: se introduce la característica de utilizar la cláusula ORDER BY fuera de ciclos con cursores, además, se añade la sentencia TRUNCATE.
- En 2016: se agrega una nueva característica que permite la búsqueda de patrones, funciones de tablas polimórficas y compatibles con ficheros tipos JSON.
Como puedes observar el lenguaje SQL vio la luz en el siglo pasado y, al día de hoy, sigue siendo utilizado en millones de aplicaciones que requieren de una base de datos para operar.
Características del lenguaje SQL
Es muy importante comprender que SQL es un lenguaje declarativo de alto nivel y, que principalmente cuenta con las siguientes características:
➤ Lenguaje de definición de datos (Language of definition of data, DDL)
- SQL nos proporciona instrucciones mediante las cuales podemos:
- Definir un esquema de relación.
- Borrado de relaciones.
- O modificaciones de relaciones.
➤ Lenguaje interactivo de manipulación de datos
- En SQL podemos encontrar lenguajes de consulta que están basados tanto en la álgebra relacional como en el cálculo de tuplas relacionales.
➤ Integridad
- El lenguaje SQL proporciona comandos (en un apartado más adelante veremos los distintos comandos) para crear restricciones de integridad que todo dato almacenado dentro de una base de datos debe cumplir.
➤ Definición de vistas
- Tal como lo vimos en una de las reglas de Codd, SQL incluye instrucciones que nos permiten manipular vistas.
➤ SQL incorporado y dinámico
- Este punto hace referencia a que SQL puede ser incorporado en otros lenguajes de programación como Java, PHP, C++, por mencionar algunos.
➤ Autorización
- SQL cuenta con instrucciones y comandos que permiten especificar los permisos de acceso a las relaciones y vistas.
Gracias por tu calificación
(9)
Elementos básicos del lenguaje SQL
Si nos detenemos a examinar a detalle el lenguaje SQL, vemos que esta compuesto por una serie de:
- Comandos
- Cláusulas
- Operadores
- Funciones de agregación
- Literales
Todos estos elementos se combinas para crear instrucciones que aplicaremos en una base de datos para administrar los datos, ya sea, para consultar, modificar o eliminar dichos registros, revisemos cada uno de ellos.
➤ Comandos del lenguaje SQL
Los comandos son aquellos que nos permiten modificar el esquema o manipular la información de una base de datos, existen tres tipos principalmente:
▷ Comandos (DDL): lenguaje de definición de datos
- Permiten crear nuevas bases de datos, tablas, campos e índices.
- Cabe mencionar que este tipo de comandos no trabajan con los datos de la tabla, sino que actúan sobre el esquema.
Comandos de lenguaje de definición de datos (DDL) | |
---|---|
Comando | Descripción del comando |
CREATE | Permite crear, tablas, campos e índices. |
DROP | Permite eliminar tablas e índices. |
ALTER | Permite modificar la definición de una tabla. |
▷ Comandos (DML): lenguaje de manipulación de datos
- Permiten manipular la información o datos almacenados en las tablas dentro de una base de datos.
Comandos de lenguaje de manipulación de datos (DML) | |
---|---|
Comando | Descripción del comando |
SELECT | Permite consultar datos dentro de una tabla que satisfagan ciertos criterios. |
INSERT | Permite agregar nuevos datos a una tabla. |
UPDATE | Permite modificar datos existentes dentro de una tabla bajo ciertos criterios. |
DELETE | Permite eliminar datos existentes dentro de una tabla que satisfagan ciertos criterios. |
▷ Comandos Data Control Language (DCL): lenguaje de control de datos
- Permite establecer las políticas de acceso y permisos de usuarios.
Comandos Data Control Language (DCL) | |
---|---|
Comando | Descripción del comando |
GRANT | Permite atribuir un rol o permisos a uno o varios usuarios para limitar las tareas que se llevarán a cabo. |
REVOKE | Permite revocar los permisos atribuidos por GRANT. |
Como puedes observar, los comandos en SQL permiten controlar operaciones, el mismo flujo del programa, conexiones, sesiones y diagnostico de datos.
➤ Cláusulas del lenguaje SQL
Dentro del lenguaje SQL existen las clausulas, dichos elementos permiten crear criterios o condiciones que establecen las políticas con las que consultaremos, modificaremos o eliminaremos los datos.
Cláusulas del lenguaje SQL | |
---|---|
Cláusula | Descripción de la cláusula |
FROM | Especifica la tabla de trabajo, ya sea para realizar una selección de datos u otras operaciones. |
WHERE | Establece las condiciones o criterios que deben respetarse durante la manipulación de datos. |
GROUP BY | Permite llevar acabo una agrupación de filas, por lo regular a través de alguna función de agregación: suma, promedio, etc. |
HAVING | Establece condiciones y criterios por grupo de datos (GROUP BY), por lo regular a través de alguna función de agregación: suma, promedio, etc. |
ORDER BY | Permite ordenar los registros bajo un cierto criterio o criterios. |
➤ Operadores del lenguaje SQL
Los operadores son muy útiles para crear expresiones simples o muy complejas, pueden ser del tipo aritmético o lógicos.
▷ Operadores lógicos
- Son utilizados para evaluar una expresión y retornar un operador Booleano (Verdadero o Falso).
Operadores lógicos | |
---|---|
Operador | Descripción del operador |
AND | Permite evaluar dos condiciones y retorna un valor verdadero, si y sólo si, ambas son ciertas. |
OR | Permite evaluar dos condiciones y retorna un valor verdadero, si alguna de las dos es cierta. |
NOT | Permite retornar el valor contrario a la expresión evaluada. |
Gracias por tu calificación
(9)
▷ Operadores de comparación
- Permiten comparar dos valores y regresan un valor Booleano.
Operadores de comparación | |
---|---|
Operador | Descripción del operador |
< | Indica menor que. |
> | Indica mayor que. |
<> | Indica distinto de. |
<= | Menor o igual. |
>= | Mayor o igual |
= | Igual a. |
BETWEEN | Permite establecer un intervalo de valores. |
LIKE | Permite llevar una comparación de patrones. |
IN | Permite filtrar un conjunto de datos en función de una lista de valores. |
➤ Funciones de agregación del lenguaje SQL
- Mediante este tipo de funciones podemos crear un tipo resumen de las filas de una tabla agrupando los datos en un sólo valor, por lo regular, pero no obligatorio, va acompañada por un GROUP BY.
Funciones de agregación SQL | |
---|---|
Función | Descripción de la función de agregación |
AVG | Permite calcular el promedio de los datos de un campo de una tabla. |
COUNT | Retorna un conteo con el número total de registros de una tabla o selección. |
SUM | Permite calcular la suma de los datos de un campo especifico en una tabla. |
MAX | Retorna el máximo valor de un campo especifico de una tabla. |
MIN | Retorna el mínimo valor de un campo especifico de una tabla. |
➤ Literales del lenguaje SQL
- Valores previamente establecidos, las literales son valores considerados como constantes, por ejemplo: un número, fechas, o un conjunto especifico de caracteres, etc.
Literales SQL | |
---|---|
Literales | Descripción de la literal SQL |
2021-10-01 | Literal que establece una fecha especifica. |
EWebik | Literal que representa una cadena de caracteres. |
7 | Literal que representa un número especifico. |
Consultas SQL
En este punto ya hemos visto mucha información, que estoy seguro, te han ayudado a comprender ¿Qué es SQL y para qué sirve? Y estamos listo para comenzar a utilizarlo, en este post te dejaré algunos ejemplos de consultas y comandos básicos de SQL, pero haré otras clases donde a través de vídeos veremos a profundidad cada consulta.
Por lo pronto veamos un ejemplo de consultas y comandos que utilizaremos más adelante.
➤ CREATE DATABASE
Permite crear una base de datos y, cuenta con varias opciones, por ejemplo:
- Podemos crear una base de datos con tan solo indicar el nombre.
- También, podemos especificar quien es el archivo primario, los archivos secundarios y los archivos de transacción.
- Otra característica muy importante es la creación de FILEGROUPS o grupos de archivos, ya que con ellos podemos mejorar el rendimiento de nuestra base de datos al separar la información.
CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON
[ PRIMARY ] <filespec> [ ,...n ]
[ , <filegroup> [ ,...n ] ]
[ LOG ON <filespec> [ ,...n ] ]
]
[ COLLATE collation_name ]
[ WITH <option> [,...n ] ]
[;]
<option> ::=
{
FILESTREAM ( <filestream_option> [,...n ] )
| DEFAULT_FULLTEXT_LANGUAGE = { lcid | language_name | language_alias }
| DEFAULT_LANGUAGE = { lcid | language_name | language_alias }
| NESTED_TRIGGERS = { OFF | ON }
| TRANSFORM_NOISE_WORDS = { OFF | ON}
| TWO_DIGIT_YEAR_CUTOFF = <two_digit_year_cutoff>
| DB_CHAINING { OFF | ON }
| TRUSTWORTHY { OFF | ON }
| PERSISTENT_LOG_BUFFER=ON ( DIRECTORY_NAME='<Filepath to folder on DAX formatted volume>' )
}
<filestream_option> ::=
{
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
| DIRECTORY_NAME = 'directory_name'
}
<filespec> ::=
{
(
NAME = logical_file_name ,
FILENAME = { 'os_file_name' | 'filestream_path' }
[ , SIZE = size [ KB | MB | GB | TB ] ]
[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
)
}
<filegroup> ::=
{
FILEGROUP filegroup name [ [ CONTAINS FILESTREAM ] [ DEFAULT ] | CONTAINS MEMORY_OPTIMIZED_DATA ]
<filespec> [ ,...n ]
}
➤ ALTER DATABASE
Permite modificar una base de datos existente, este comando cuenta con muchas opciones y, es muy importante que lo uses con precaución, ya que, podrías modificar algo de tu base de datos y dejarla fuera de operación.
-- SQL Server Syntax
ALTER DATABASE { database_name | CURRENT }
{
MODIFY NAME = new_database_name
| COLLATE collation_name
| <file_and_filegroup_options>
| SET <option_spec> [ ,...n ] [ WITH <termination> ]
}
[;]
<file_and_filegroup_options>::=
<add_or_modify_files>::=
<filespec>::=
<add_or_modify_filegroups>::=
<filegroup_updatability_option>::=
<option_spec>::=
{
| <auto_option>
| <change_tracking_option>
| <cursor_option>
| <database_mirroring_option>
| <date_correlation_optimization_option>
| <db_encryption_option>
| <db_state_option>
| <db_update_option>
| <db_user_access_option><delayed_durability_option>
| <external_access_option>
| <FILESTREAM_options>
| <HADR_options>
| <parameterization_option>
| <query_store_options>
| <recovery_option>
| <service_broker_option>
| <snapshot_option>
| <sql_option>
| <termination>
| <temporal_history_retention>
| <data_retention_policy>
| <compatibility_level>
{ 150 | 140 | 130 | 120 | 110 | 100 | 90 }
}
➤ DROP DATABASE
Otro comando que debes utilizar con mucha precaución, ya que, si eliminas una base de datos y no cuentas con respaldos, podrías perder toda tu información, su sintaxis es muy sencilla.
DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,...n ] [;]
Para ver todo sobre CREATE, ALTER Y DROP DATABASE, por favor revisa el siguiente post: ¿Cómo crear, modificar y eliminar una base de datos en SQL Server?
Gracias por tu calificación
(9)
➤ CREATE TABLE
Ahora que ya has aprendido a crear una base de datos, es momento de crear tus primeras tablas, para ello utilizamos CREATE TABLE, T-SQL, proporciona una gran cantidad de opciones, pero lo que ocuparemos es lo siguiente:
CREATE TABLE
{ database_name.schema_name.table_name | schema_name.table_name | table_name }
( { <column_definition> } [ ,...n ] )
[ ; ]
➤ ALTER TABLE
Con ALTER TABLE podemos modificar una serie de parámetros dentro de una tabla, por ejemplo:
- Agregar nuevos campos.
- Eliminar columnas.
- Declarar índices.
- Definir llaves primarías y/o foráneas.
-- Agregar campo
ALTER TABLE table_name
ADD column_name datatype;
--Eliminar campo
ALTER TABLE table_name
DROP COLUMN column_name;
--Crear llave foranea
ALTER TABLE table_name
ADD CONSTRAINT fk_name_key FOREIGN KEY (column_name)
REFERENCES reference_table_name (column_name)
ON DELETE CASCADE
ON UPDATE CASCADE
;
➤ DROP TABLE
Ahora, si lo que deseas es eliminar una tabla, esto es muy sencillo, pero, debes tener cuidado y saber lo que estas haciendo.
DROP TABLE [ IF EXISTS ] { database_name.schema_name.table_name | schema_name.table_name | table_name } [ ,...n ]
[ ; ]
Para ver todo sobre CREATE, ALTER Y DROP TABLE, por favor revisa el siguiente post: Manejo de tablas en SQL Server: CREATE TABLE, ALTER TABLE, DROP TABLE.
➤ SELECT
El comando SELECT permite seleccionar datos a una tabla perteneciente a una base de datos, además cuenta con opciones que nos permiten, limitar el número de datos consultados, agregar condicionales y agrupación de datos.
<SELECT statement> ::=
[ WITH { [ XMLNAMESPACES ,] [ <common_table_expression> [,...n] ] } ]
<query_expression>
[ ORDER BY <order_by_expression> ]
[ <FOR Clause>]
[ OPTION ( <query_hint> [ ,...n ] ) ]
Para ver todas las opciones de SELECT, por favor revisa el siguiente post: SELECT SQL SERVER: ¿Cómo seleccionar y consultar datos en SQL Server?
➤ INSERT
El comando INSERT permite agregar nuevos datos a una tabla perteneciente a una base de datos.
INSERT
{
[ TOP ( expression ) [ PERCENT ] ]
[ INTO ]
{ <object> | rowset_function_limited
[ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
}
{
[ ( column_list ) ]
[ <OUTPUT Clause> ]
{ VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ]
| derived_table
| execute_statement
| <dml_table_source>
| DEFAULT VALUES
}
}
}
[;]
Para ver todas las opciones de INSERT, por favor revisa el siguiente post: INSERT SQL SERVER: ¿Cómo insertar datos en una tabla desde SQL Server? Sintaxis y ejemplos.
➤JOIN SQL
A través de la clausula JOIN podemos recuperar datos de dos o más tablas a través de la relación lógica que existe entre ellas. Existen cinco tipos de JOIN principalmente:
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL JOIN
- CROSS JOIN
Para ver todas las opciones de JOIN, por favor revisa el siguiente post: JOIN SQL: ¿Qué son y cómo funcionan INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN y CROSS JOIN?
➤ UPDATE SQL
Actualizar la información de una tabla dentro de una base de datos puede llegar a ser algo complejo, ya que, crear consultas (querys) relacionados a UPDATE, requiere conocer muchas clausulas, tal y como son las que hemos visto hasta el momento, pero sobre todo, debes de tener mucho cuidado al ejecutar este tipo de clausulas.
A través de UPDATE SQL podemos actualizar datos existentes dentro de una tabla en una base de datos.
Para ver todas las opciones de UPDATE, por favor revisa el siguiente post: UPDATE SQL: ¿Cómo actualizar datos en una tabla en SQL Server?
Gracias por tu calificación
(9)
➤ DELETE SQL
A través de DELETE podemos eliminar todos los datos o datos específicos de una tabla, todo depende de las condiciones que indiquemos en nuestra consulta.
DELETE FROM table_name WHERE condition;
➤ TRUNCATA TABLE
Si lo que deseas es eliminar todos los datos de una tabla, existe una mejor opción a DELETE y se llama TRUNCATE TABLE.
TRUNCATE TABLE
{ database_name.schema_name.table_name | schema_name.table_name | table_name }
[ WITH ( PARTITIONS ( { <partition_number_expression> | <range> }
[ , ...n ] ) ) ]
[ ; ]
Te dejo la clase completa para que puedes ver a DELETE Y TRUNCATE TABLE en acción: DELETE SQL y TRUNCATE TABLE: ¿Cómo eliminar datos de una tabla en SQL Server?
➤ Stored Procedure
Existen muchas ventajas y razones para utilizar Stored Procedures, por ejemplo: ocultar consultas SQL, por seguridad o reutilizar código, pero para que lo comprendas mejor, veamos las ventajas y beneficios de utilizar procedimientos almacenados en el siguiente post que te dejo a continuación.
Excelente, hemos llegado al final del post, no obstante, te invito a suscribirte a mi canal de YouTube y al boletín, ya que, estaré subiendo nuevas clases referentes a SQL e iré actualizando este post.
🧐 Autoevaluación: SQL
¿Cuál es el lenguaje SQL?
¿Qué es el lenguaje DDL?
¿Qué es el lenguaje DML?
Juan Carlos García
Desarrollador de software / SEO
Durante años he desarrollado plataformas dedicadas al rastreo satelital y varios sitios web que se encuentran en la primera página de Google, y hoy quiero compartir contigo lo que se en tecnologías como: Node JS, PHP, C# y Bases de datos.
Si quieres apoyarme sígueme en mis redes sociales y suscríbete a mi canal de YouTube.