Conceptos Básicos Sql
objetivos
- Conocer la sintaxis de SQL
- Aprender a manejar SQL contra la base de datos
Introducción
- Lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas
- Permiten efectuar consultas con el fin de recuperar de forma sencilla información de interés de bases de datos, así como hacer cambios en ella.
Componentes SQL
- Comandos
- Clausulas
- Operadores
- Funciones de agregado
Comandos
Tres tipos de comandos:
Los DLL(Data Definition Language) que permiten crear y definir nuevas bases de datos, campos e índices.
Los DML(Data Manipulation Language) que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.
Los DCL(Data Control Language) que se encargan de definir las permisos sobre los datos
DDL
Se encarga de la modificación de la estructura de los objetos de la base de datos
DDL
CREATE
ALTER
DROP
TRUNCATE
CREATE
Crea un objeto dentro del gestor de base de datos, por ejemplo una tabla:
# CREATE TABLE Empleado
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Nombre VARCHAR(50),
Apellido VARCHAR(50),
Direccion VARCHAR(255),
Ciudad VARCHAR(60),
Peso VARCHAR (5),
Edad (2),
Actividad Específica (100),
idCargo INT
)
ALTER
Permite modificar la estructura de un objeto
Añadir una columna
# ALTER TABLE 'NOMBRE_TABLA' ADD NUEVO_CAMPO INT;
Eliminar una columna
# ALTER TABLE 'NOMBRE_TABLA' DROP COLUMN NOMBRE_COLUMNA;
DROP
Este comando elimina un objeto de la base de datos
Una tabla
# DROP TABLE 'NOMBRE_TABLA';
Un esquema
# DROP SCHEMA 'ESQUEMA;'
Una base de datos completa
# DROP DATABASE 'BASEDATOS';
TRUNCATE
Este comando trunca todo el contenido de una tabla.
Sirve cuando se quiere eliminar absolutamente todos los registros.
Borra la tabla y la vuelve a crear y no ejecuta ninguna transacción.
# TRUNCATE TABLE 'NOMBRE_TABLA';
DCL
Se encarga de definir las permisos sobre los datos
GRANT
REVOKE
GRANT
Se usa para asignar acceso y privilegios a los objetos de la base de datos
GRANT privilege_name
ON object_name
TO {user_name |PUBLIC |role_name}
# GRANT ALL
ON SCHEMA gis
TO alumno
REVOKE
Se usa para asignar eliminar acceso y privilegios a los objetos de la base de datos
REVOKE privilege_name
ON object_name
FROM {user_name |PUBLIC |role_name}
# REVOKE ALL
ON SCHEMA gis
TO alumno
DML
Permite generar consultas para ordenar, filtrar y extraer datos de la base de datos.
dml
SELECT
INSERT
UPDATE
DELETE
SELECT
Devuelve un grupo de registros de una o más tablas
Extrae todos los registros de una tabla
# SELECT * FROM Tabla
Se combina con las clausulas para extraer la información
INSERT
Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional.
Inserción definiendo las columnas
# INSERT INTO agenda_telefonica (nombre, numero) VALUES ('Roberto Jeldrez', 4886850);
Asumiendo que las columnas son iguales
# INSERT INTO agenda_telefonica VALUES ('Jhonny Aguiar', 080473968);
UPDATE
Es utilizada para modificar los valores de un conjunto de registros existentes en una tabla.
# UPDATE mi_tabla SET campo1 = 'nuevo valor campo1' WHERE campo2 = 'N';
Actualizando el número
# UPDATE agenda_telefonica SET numero = 8887456 WHERE nombre = 'Roberto Jeldrez';
DELETE
Borra uno o más registros existentes en una tabla.
# DELETE FROM 'tabla' WHERE 'columna1' = 'valor1'
# DELETE FROM agenda_telefonica WHERE nombre = 'Roberto Jeldrez';
Clausulas
Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.
Clausulas
FROM
WHERE
ORDER BY
GROUP BY
HAVING
FROM
Especifica la tabla de la cual se van a seleccionar los registros
# SELECT * FROM Tabla
WHERE
Se usa para determinar qué registros de las tablas enumeradas en la cláusula FROM aparecerán en los resultados de la instrucción SELECT. WHERE es opcional, pero cuando aparece debe ir a continuación de FROM
# SELECT Apellidos, Salario FROM Empleados
WHERE Salario > 21000;
# SELECT Id_Producto, Existencias FROM Productos
WHERE Existencias <= Nuevo_Pedido;
ORDER BY
Especifica el orden en que se desean recuperar los registros de las tablas
# SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre;
Y se puede especificar el orden de los registros: ascendente mediante la claúsula (ASC -se toma este valor por defecto) ó descendente (DESC):
# SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC , Nombre ASC;
GROUP BY
Combina los registros con valores idénticos, en la lista de campos especificados, en un único registro.
# SELECT campos FROM tabla WHERE criterio
GROUP BY campos del grupo
Las columnas de agrupación.
Los campos de la lista de campos de SELECT deben incluirse en la cláusula GROUP BY
# SELECT Id_Familia, Sum(Stock)
FROM Productos GROUP BY Id_Familia;
HAVING
La cláusula HAVING se usa normalmente junto con la cláusula GROUP BY para filtrar los resultados de valores de agregado. Se utiliza para expresar la condición que debe satisfacer cada grupo
# SELECT oficina
FROM empleados
GROUP BY oficina
HAVING AVG(ventas) > 500000
Operadores
Lógicos
Comparación
Operadores comparación
< Menor que
> Mayor que
<> Distinto de
<= Menor o igual que
>= Mayor o igual que
BETWEEN Intervalo
LIKE Comparación
In Especificar en lista de valores
Operadores comparación
# SELECT * FROM Empleados WHERE Edad > 25;
# SELECT * FROM Empleados WHERE Sueldo = 100;
# SELECT * FROM Empleados WHERE Estado <> 'Soltero';
# SELECT * FROM Empleados WHERE Sueldo >= 10;
BETWEEN
Para indicar que deseamos recuperar los registros según el intervalo de valores de un campo emplearemos el operador Between:
# SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999;
(Devuelve los pedidos realizados en la provincia de Madrid)
LIKE
Permite comparar patrones dentro de campos de tipo cadena
Con los registros:
"El Aleph", "Borges";
"Antologia poetica", "J.L. Borges";
# Select * from libros where autor='Borges';
devolverá "El Aleph", "Borges";
# Select *from libros where autor like "%Borges%";
mostrará ambos registros
IN
Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de los indicados en una lista. Su sintaxis es:
expresión [Not] In(valor1, valor2, . . .)
# SELECT * FROM Pedidos WHERE Provincia In ('Pontevedra', 'Lugo', 'A Coruña');
Operadores lógicos
AND Es el “y” lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.
OR Es el “o” lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta.
NOT Negación lógica. Devuelve el valor contrario de la expresión.
OPERADORES LÓGICOS
# SELECT * FROM Empleados WHERE Edad > 25 AND Edad < 50;
# SELECT * FROM Empleados WHERE (Edad > 25 AND Edad < 50) OR Sueldo = 100;
# SELECT * FROM Empleados WHERE NOT Estado = 'Soltero';
# SELECT * FROM Empleados WHERE (Sueldo > 100 AND Sueldo < 500) OR (Provincia = 'Madrid' AND Estado = 'Casado');
Funciones de agregado
GROUP BY
Count
AVG
Max, Min
SUM
...
Count
Calcula el número de registros devueltos por una consulta. Su sintaxis es la siguiente:
Count(expr)
# SELECT Count(*) AS Total FROM Pedidos;
AVG
Calcula la media aritmética de un conjunto de valores contenidos en un campo especificado de una consulta:
Avg(expr)
La función AVG no incluye ningún campo Null en el cálculo. Un ejemplo del funcionamiento de AVG:
# SELECT AVG(Gastos) AS Promedio FROM
Pedidos WHERE Gastos > 100;
Max, Min
Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un campo especifico de una consulta. Su sintaxis es:
Min(expr) Max(expr)
En donde expr es el campo sobre el que se desea realizar el cálculo.
# SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = 'España';
# SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais = 'España';
Sum
Devuelve la suma del conjunto de valores contenido en un campo específico de una consulta. Su sintaxis es:
Sum(expr)
# SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido;
Manejo de varias tablas
JOIN
LEFT JOIN
RIGHT JOIN
UNION y UNION ALL
JOIN
La sentencia SQL JOIN se utiliza para relacionar varias tablas. Nos permitirá obtener un listado de los campos que tienen coincidencias en ambas tablas
# select nombre, telefono, accion, cantidad from clientes join acciones on clientes.cid=acciones.cid;
LEFT JOIN
La sentencia LEFT JOIN nos dará el resultado anterior mas los campos de la tabla de la izquierda del JOIN que no tienen coincidencias en la tabla de la derecha
# select nombre, telefono, accion, cantidad from clientes left join acciones on clientes.cid=acciones.cid;
RIGHT JOIN
Identico funcionamiento que en el caso anterior pero con la tabla que se incluye en la consulta a la derecha del JOIN
# select nombre, telefono, accion, cantidad from clientes right join acciones on clientes.cid=acciones.cid;
UNION y UNION ALL
Podemos combinar el resultado de varias sentencias con UNION o UNION ALL. UNION no nos muestra los resultados duplicados, pero UNION ALL si los muestra
# select nombre, telefono, accion, cantidad from clientes left join acciones on clientes.cid=acciones.cid where accion is null union select nombre, telefono, accion, cantidad from clientes right join acciones on clientes.cid=acciones.cid where nombre is null;
Vistas
Las vistas (“views”) en SQL son un mecanismo que permite generar un resultado a partir de una consulta (query) almacenado, y ejecutar nuevas consultas sobre este resultado como si fuera una tabla normal. Las vistas tienen la misma estructura que una tabla: filas y columnas. La única diferencia es que sólo se almacena de ellas la definición, no los datos.
La cláusula CREATE VIEW permite la creación de vistas. La cláusula asigna un nombre a la vista y permite especificar la consulta que la define. Su sintaxis es:
# CREATE VIEW id_vista [(columna,…)]AS especificación_consulta;
Conceptos Básicos SQL
By Micho García
Conceptos Básicos SQL
- 1,425