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,357