3 - guia sql
DESCRIPTION
guia de sqlTRANSCRIPT
1.- SQL. Introducción
2.- Comandos DDL, DML, DCL
1.- SQL. Introducción
SQL sigla de Structured Query Language, que es un lenguaje
estándar de comunicación con bases de datos. Es un lenguaje
normalizado que permite trabajar con cualquier tipo de
lenguaje (ASP o PHP) en combinación con cualquier tipo de
base de datos (MS Access, SQL Server, Oracle, MySQL...).
Pero como sucede con cualquier sistema de normalización
hay excepciones para casi todo; de hecho, cada motor de
bases de datos tiene sus peculiaridades y lo hace diferente de
otro motor, por lo tanto, el lenguaje SQL normalizado (ANSI)
no servirá para resolver todos los problemas, aunque si se
puede asegurar que cualquier sentencia escrita en ANSI será
interpretable por cualquier motor de datos.
SQL (Structured Query Language).
DDLDDLDDLDDL (Data Definition Language): son los comandos que permiten definir la
estructura de la base de datos relacional, como por ejemplo: Crear tablas,
indexes, Alterar Tablas, Crear Vistas.
DMLDMLDMLDML (Data Manipulation Language): son los comandos que permiten insertar
nuevos registros, modificar registros en la base de datos y eliminar registros,
además, de la recuperación de la información. Los comandos son: Insert,
Update y Select.
DCLDCLDCLDCL (Data Control Language): son los comandos de control y seguridad del
sistema.
SQL . Comandos DDL.
CREATE CREATE CREATE CREATE : Utilizado para crear nuevas tablas, campos e índices
DROPDROPDROPDROP; Empleado para eliminar tablas e índices
ALTERALTERALTERALTER: Utilizado para modificar las tablas agregando campos o cambiando la
definición de los campos.
SQL . Comandos DML.
SELECTSELECTSELECTSELECT Utilizado para consultar registros de la base de datos que satisfagan un
criterio determinado (Query)
INSERTINSERTINSERTINSERT Utilizado para cargar lotes de datos en la base de datos en una única
operación.
UPDATE UPDATE UPDATE UPDATE Utilizado para modificar los valores de los campos y registros
especificados
DELETEDELETEDELETEDELETE Utilizado para eliminar registros de una tabla de una base de datos
SQL . ClaúsulasLas claúsulas son condiciones de modificación utilizadas para definir los datos que
desea seleccionar o manipular.
FROMFROMFROMFROM Utilizada para especificar la tabla de la cual se van a seleccionar los
registros
WHERE WHERE WHERE WHERE Utilizada para especificar las condiciones que deben reunir los registros
que se van a seleccionar
GROUP BYGROUP BYGROUP BYGROUP BY Utilizada para separar los registros seleccionados en grupos específicos
HAVING HAVING HAVING HAVING Utilizada para expresar la condición que debe satisfacer cada grupo
ORDER BY ORDER BY ORDER BY ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un
orden específico
SQL . Operadores Lógicos
AND AND AND AND Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo
si ambas son ciertas.
OROROROR Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si
alguna de las dos es cierta.
NOTNOTNOTNOT Negación lógica. Devuelve el valor contrario de la expresión. Operadores
de Comparación
SQL . Consultas (Query)
Las Query se utilizan para indicar al motor de datos que devuelva información de
las bases de datos, esta información es devuelta en forma de conjunto de registros
que se pueden almacenar en un. objeto recordset.
SELECT [ ALL | DISTINCT ] SELECT [ ALL | DISTINCT ] SELECT [ ALL | DISTINCT ] SELECT [ ALL | DISTINCT ] selectselectselectselect----listlistlistlist
...[ INTO { host-variable-list | variable-list } ]
... FROM ... FROM ... FROM ... FROM tabletabletabletable----listlistlistlist
...[ WHERE search-condition ]
...[ GROUP BY column-name, ... ]
...[ HAVING search-condition ]
...[ ORDER BY { expression | integer } [ ASC | DESC ], ... ]
;;;;
SQL . Operadores de Comparación
<<<< Menor que >>>> Mayor que <><><><> Distinto de
<=<=<=<= Menor ó Igual que >= >= >= >= Mayor ó Igual que
==== Igual que
BETWEEN BETWEEN BETWEEN BETWEEN Utilizado para especificar un intervalo de valores.
LIKELIKELIKELIKE Utilizado en la comparación de un modelo
IN IN IN IN Utilizado para especificar registros de una base de datos
SQL . FuncionesLas funciones se usan dentro de una cláusula SELECT SELECT SELECT SELECT en grupos de registros para
devolver un único valor que se aplica a un grupo de registros.
AVGAVGAVGAVG Utilizada para calcular el promedio de los valores de un campo
determinado
COUNTCOUNTCOUNTCOUNT Utilizada para devolver el número de registros de la selección
SUMSUMSUMSUM Utilizada para devolver la suma de todos los valores de un campo
determinado
MAXMAXMAXMAX Utilizada para devolver el valor más alto de un campo especificado
MIN MIN MIN MIN Utilizada para devolver el valor más bajo de un campo especificado
SQL . Consultas (Query)
SELECT *
FROM Region;
SELECT Nombre_Region
FROM Region;
La misma consulta, pero con orden en la salida
SELECT Nombre_Region
FROM Region
ORDER BY Nombre_Region;
SQL . Consultas (Query)
SELECT *
FROM Region;
Otra opción es ALL para recuperar
todas las filas
SELECT ALL
FROM Region;
TOP devuelve un cierto número de filas
SELECT TOP 2 salario, nombre & " " & apellido
FROM empleado
ORDER BY Salario DESC;
SQL . Consultas (Query)
DISTINCT omite las filas que contienen datos duplicados en los campos
seleccionados
SELECT apellido SELECT DISTINCT apellido
FROM empleado; FROM empleado;
SQL . Consultas (Query)
SELECT nombre, apellido, email
FROM Empleado;
AliasAliasAliasAlias
SELECT nombre AS NOMBRE_EMPLEADO,
apellido AS APELLIDO_EMPLEADO, email
FROM empleado;
SQL . Consultas (Query)
SELECT nombre , apellido , salario, "Valor Calculo",
salario * 0.10 As "10%"
FROM empleado;
SELECT nombre , apellido , "10% del Sueldo",
salario * 0.10
FROM empleado
WHERE salario*.10 > 500;
SQL . Consultas (Query)
SELECT *
FROM Departamento
WHERE ID_Lugar = 1700 and ID_Manager <>
NULL;
SELECT Count (*)
FROM Departamento
WHERE ID_Lugar = 1700 and ID_Manager <>
NULL;
SQL. Consultas. Otras funciones.
COUNT: Número de valores en la columnaSELECT COUNT(*) FROM Empleado;SELECT COUNT(*) FROM Empleado;SELECT COUNT(*) FROM Empleado;SELECT COUNT(*) FROM Empleado;
SUM: Suma de los valores de la columnaSELECT SUM(Salario) SELECT SUM(Salario) SELECT SUM(Salario) SELECT SUM(Salario) FROM FROM FROM FROM Empleado;Empleado;Empleado;Empleado;
AVG: Promedio de los valores de la columna
SELECT SELECT SELECT SELECT avgavgavgavg(Salario) FROM Empleado(Salario) FROM Empleado(Salario) FROM Empleado(Salario) FROM Empleado;;;;
MAX: Valor más grande de la columna
MIN: Valor más pequeño de la columnaSELECT min(Salario), SELECT min(Salario), SELECT min(Salario), SELECT min(Salario), maxmaxmaxmax(salario) (salario) (salario) (salario) FromFromFromFrom Empleado;Empleado;Empleado;Empleado;
SQL. Consultas.
Formato fecha: #mm/dd/aaaa#
SELECT Empleado.Apellido, Empleado.email,
Empleado.Fecha_Contratacion
FROM Empleado
WHERE (((Empleado.Fecha_Contratacion)=#9/30/2010#));
SQL . Consultas (Query)
Group By – Having. Se usa para combinar los registros con valores idénticos, en un único
registro. Su sintaxis es:
SELECT columna(s), funcion_grupo(columna)
FROM tabla(s) WHERE criterio
GROUP BY columna(s)
HAVING criterio para group;
Se puede dividir filas en una tabla en grupos menores usando esta clausula.
Todas las columnas listadas en el SELECT que no estén en funciones de grupo deben estar
en la clausula GROUP BY.
SELECT ID_Departamento, AVG(salario)
FROM empleado
GROUP BY ID_Departamento;
SQL . Consultas (Query)
Group By – Having.
No se usa la clausula WHERE para restringir grupos, eso se realiza con la clausula
HAVING
SELECT ID_Departamento, AVG(salario)
FROM empleado
GROUP BY ID_Departamento
HAVING AVG(salario) > 5000;
SQL . Consultas (Query)
Consultas de dos o más tablas relacionadas
SELECT *
FROM Paises,Region
WHERE Paises.ID_Region = Region.ID_Region;
SELECT *
FROM Paises INNER JOIN Region
ON Paises.ID_Region = Region.ID_Region;
SQL . Consultas (Query)
Consultas de dos o más tablas relacionadas
SELECT *
FROM Paises , Region
WHERE Paises.ID_Region = Region.ID_Region;
SQL . Consultas (Query)
Consultas de dos o más tablas relacionadas,
cuando es la misma tabla.
SELECT empleado.ID_Empleado,
empleado.nombre,
empleado.email,
empleado.ID_Manager
FROM empleado, empleado AS empleado1
WHERE empleado.ID_Manager=100
AND empleado1.ID_manager=empleado.ID_Empleado;
SQL . Consultas (Query)
SELECT Departamento.Nombre_Departamento, Empleado.Apellido,
Empleado.Fecha_Contratacion, Rol.Titulo_Rol
FROM empleado, departamento, rol
WHERE Empleado.ID_Rol = Rol.ID_Rol and
Empleado.ID_Departamento = Departamento.ID_Departamento;
;
SQL . Consultas (Query)
BETWEEN Utilizado para especificar un intervalo de valoresBETWEEN Utilizado para especificar un intervalo de valoresBETWEEN Utilizado para especificar un intervalo de valoresBETWEEN Utilizado para especificar un intervalo de valores.SELECT Apellido, email, Empleado.Fecha_Contratacion
FROM Empleado
WHERE (((Fecha_Contratacion)
BETWEEN #1/1/1998# AND #9/30/2010#));
LIKE Utilizado para comparar una expresión de LIKE Utilizado para comparar una expresión de LIKE Utilizado para comparar una expresión de LIKE Utilizado para comparar una expresión de cadnacadnacadnacadna con un modelo en una expresión SQL.con un modelo en una expresión SQL.con un modelo en una expresión SQL.con un modelo en una expresión SQL.SELECT Apellido, email
FROM Empleado
WHERE apellido LIKE "*re*";
IN Utilizado para especificar registros de una base de datos
SQL . Consultas (Query)IN Utilizado para especificar registros de una base de datosIN Utilizado para especificar registros de una base de datosIN Utilizado para especificar registros de una base de datosIN Utilizado para especificar registros de una base de datos
SELECT SELECT SELECT SELECT ApellidoApellidoApellidoApellido, email, , email, , email, , email, ID_managerID_managerID_managerID_manager SELECT SELECT SELECT SELECT ApellidoApellidoApellidoApellido, email, , email, , email, , email, ID_managerID_managerID_managerID_manager
FROM FROM FROM FROM empleadoempleadoempleadoempleado FROM FROM FROM FROM empleadoempleadoempleadoempleado
WHERE WHERE WHERE WHERE ID_ManagerID_ManagerID_ManagerID_Manager WHERE WHERE WHERE WHERE ID_managerID_managerID_managerID_manager
IN (101,103); NOT IN (101,103);IN (101,103); NOT IN (101,103);IN (101,103); NOT IN (101,103);IN (101,103); NOT IN (101,103);
SQL . SubConsultas
Se puede utilizar una subconsulta en lugar de una expresión en la lista de campos de una
instrucción SELECT o en una cláusula WHERE o HAVING. En una subconsulta, se utiliza una
instrucción SELECT para proporcionar un conjunto de uno o más valores especificados para
evaluar en la expresión de la cláusula WHERE o HAVING.
Por ejemplo , lo siguiente devuelve todos los productos cuyo precio unitario es
mayor que el de cualquier producto vendido con un descuento igual o mayor a 25%
SELECT * FROM Productos
WHERE PrecioUnidad > ANY
(SELECT PrecioUnidad FROM DetallePedido
WHERE Descuento >= 0 .25);
SQL . SubConsultas
Utilizado ANYUtilizado ANYUtilizado ANYUtilizado ANY
Valor 1 Operador Valor 2 Resultado Valor 1 Operador Valor 2 Resultado Valor 1 Operador Valor 2 Resultado Valor 1 Operador Valor 2 Resultado
3 > ANY (2,5,7) V
3 = ANY (2,5,7) F
3 = ANY (2,3,5,7) V
El operacion =ANY es equivalente al operador IN, ambos devuelven el mismo resultado.
SQL . SubConsultas
Utilizado INUtilizado INUtilizado INUtilizado IN
SELECT apellido
FROM empleado
WHERE ID_Manager IN
(SELECT ID_empleado
FROM empleado
WHERE apellido = "Torres");
SQL . SubConsultas
Utilizado OperadoresUtilizado OperadoresUtilizado OperadoresUtilizado Operadores
SELECT apellido
FROM empleado
WHERE salario >
(SELECT AVG (Salario)
FROM empleado);
Utilizado EXISTS (NOT EXISTS).Utilizado EXISTS (NOT EXISTS).Utilizado EXISTS (NOT EXISTS).Utilizado EXISTS (NOT EXISTS). Se usa en comparaciones de V/F para determinar si la
subconsulta devuelve algún registro.
SELECT salario, nombre & " " & apellido
FROM empleado
WHERE EXISTS
(SELECT *
FROM empleado
WHERE fecha_contratacion > #9/30/2009# );
SQL .
Los siguientes comandos son también conocidos como de acción y no devuelven registros, son Los siguientes comandos son también conocidos como de acción y no devuelven registros, son Los siguientes comandos son también conocidos como de acción y no devuelven registros, son Los siguientes comandos son también conocidos como de acción y no devuelven registros, son
encargadas de realizar acciones de Borrar, Añadir, Modificar.encargadas de realizar acciones de Borrar, Añadir, Modificar.encargadas de realizar acciones de Borrar, Añadir, Modificar.encargadas de realizar acciones de Borrar, Añadir, Modificar.
DELETE FROM DELETE FROM DELETE FROM DELETE FROM TablaTablaTablaTabla WHERE WHERE WHERE WHERE criteriocriteriocriteriocriterio;;;;
Ejemplo:Ejemplo:Ejemplo:Ejemplo:
DELETE FROM Localidad DELETE FROM Localidad DELETE FROM Localidad DELETE FROM Localidad wherewherewherewhere Ciudad= “Santiago”;Ciudad= “Santiago”;Ciudad= “Santiago”;Ciudad= “Santiago”;
INSERT INTO INSERT INTO INSERT INTO INSERT INTO TableTableTableTable (campo1, campo2,….. (campo1, campo2,….. (campo1, campo2,….. (campo1, campo2,….. campoNcampoNcampoNcampoN))))
VALUES(valor1, valor2,… VALUES(valor1, valor2,… VALUES(valor1, valor2,… VALUES(valor1, valor2,… valorNvalorNvalorNvalorN););););
Ejemplo:Ejemplo:Ejemplo:Ejemplo:
INSERT INTO INSERT INTO INSERT INTO INSERT INTO RegionRegionRegionRegion ((((ID_regionID_regionID_regionID_region, , , , Nombre_RegionNombre_RegionNombre_RegionNombre_Region))))
VALUES(5, “VALUES(5, “VALUES(5, “VALUES(5, “ValparaisoValparaisoValparaisoValparaiso”);”);”);”);
UPDATE UPDATE UPDATE UPDATE TableTableTableTable SET campo1=valor1, campo2=valor2,… SET campo1=valor1, campo2=valor2,… SET campo1=valor1, campo2=valor2,… SET campo1=valor1, campo2=valor2,…
WHERE Criterio;WHERE Criterio;WHERE Criterio;WHERE Criterio;
Ejemplo:Ejemplo:Ejemplo:Ejemplo:
UPDATE Empleado SET salario=salario*1,15UPDATE Empleado SET salario=salario*1,15UPDATE Empleado SET salario=salario*1,15UPDATE Empleado SET salario=salario*1,15
WHERE salario < 20000;WHERE salario < 20000;WHERE salario < 20000;WHERE salario < 20000;
SQL . Comandos DDL
Para crear una tabla, puede utilizar un comando CREATE TABLE. Un comando CREATE TABLE
tiene la siguiente sintaxis:
CREATE TABLE table_name (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT
NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])
Ejemplo:
CREATE TABLE Autos (Marca TEXT(30), Modelo TEXT(30), AnhoTEXT(4), Precio CURRENCY);
SQL . Comandos DDL
Para modificar una tabla, se utiliza el comando ALTER TABLE. Con ALTER TABLE puede agregar,
modificar o quitar columnas o restricciones. Un comando ALTER TABLE tiene la siguiente
sintaxis:
ALTER TABLE table_name Predicado;
Donde Predicado puede ser:
ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]
ALTER COLUMN field type[(size)]
DROP COLUMN field
DROP CONSTRAINT constraint
SQL . Ejemplos
SQL . Ejemplos:
1. Muestre toda la información contenida en la tabla Historico.
2. Cuente todas las tuplas en que el Codigo Postal queso en
blanco en la tabla Localidad.
3. Liste todos los empleados que trabajan en el departamento de
Ventas.
4. Muestre el nombre y apellido de todos los empleados y el
nombre del departamento al que pertenecen.
SQL . Ejemplos:
1.1.1.1. SELECT * FROM SELECT * FROM SELECT * FROM SELECT * FROM HistoricoHistoricoHistoricoHistorico;;;;
2.2.2.2. SELECT SELECT SELECT SELECT CountCountCountCount(CODIGO_POSTAL) FROM Localidad WHERE (CODIGO_POSTAL) FROM Localidad WHERE (CODIGO_POSTAL) FROM Localidad WHERE (CODIGO_POSTAL) FROM Localidad WHERE Codigo_postalCodigo_postalCodigo_postalCodigo_postal = “ “;= “ “;= “ “;= “ “;
3.3.3.3. SELECT Nombre, Apellido FROM empleado SELECT Nombre, Apellido FROM empleado SELECT Nombre, Apellido FROM empleado SELECT Nombre, Apellido FROM empleado
WHERE WHERE WHERE WHERE ID_DepartamentoID_DepartamentoID_DepartamentoID_Departamento = (SELECT = (SELECT = (SELECT = (SELECT ID_DepartamentoID_DepartamentoID_DepartamentoID_Departamento FROM departamento WHERE FROM departamento WHERE FROM departamento WHERE FROM departamento WHERE
nombre_departamentonombre_departamentonombre_departamentonombre_departamento = “= “= “= “Ventas”);Ventas”);Ventas”);Ventas”);
4. SELECT 4. SELECT 4. SELECT 4. SELECT e.nombree.nombree.nombree.nombre, , , , e.apellidoe.apellidoe.apellidoe.apellido, , , , d.nombre_departamentod.nombre_departamentod.nombre_departamentod.nombre_departamento
FROM empleado as E, departamento as D FROM empleado as E, departamento as D FROM empleado as E, departamento as D FROM empleado as E, departamento as D
WHERE WHERE WHERE WHERE e.ID_Departamentoe.ID_Departamentoe.ID_Departamentoe.ID_Departamento====d.ID_Departamentod.ID_Departamentod.ID_Departamentod.ID_Departamento;;;;