3 - guia sql

37
1.- SQL. Introducción 2.- Comandos DDL, DML, DCL

Upload: juan-pablo-lira-aguilera

Post on 29-Jan-2016

253 views

Category:

Documents


0 download

DESCRIPTION

guia de sql

TRANSCRIPT

Page 1: 3 - Guia SQL

1.- SQL. Introducción

2.- Comandos DDL, DML, DCL

Page 2: 3 - Guia SQL

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...).

Page 3: 3 - Guia SQL

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.

Page 4: 3 - Guia SQL

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.

Page 5: 3 - Guia SQL

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.

Page 6: 3 - Guia SQL

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

Page 7: 3 - Guia SQL

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

Page 8: 3 - Guia SQL

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

Page 9: 3 - Guia SQL

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 ], ... ]

;;;;

Page 10: 3 - Guia SQL

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

Page 11: 3 - Guia SQL

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

Page 12: 3 - Guia SQL

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;

Page 13: 3 - Guia SQL

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;

Page 14: 3 - Guia SQL

SQL . Consultas (Query)

DISTINCT omite las filas que contienen datos duplicados en los campos

seleccionados

SELECT apellido SELECT DISTINCT apellido

FROM empleado; FROM empleado;

Page 15: 3 - Guia SQL

SQL . Consultas (Query)

SELECT nombre, apellido, email

FROM Empleado;

AliasAliasAliasAlias

SELECT nombre AS NOMBRE_EMPLEADO,

apellido AS APELLIDO_EMPLEADO, email

FROM empleado;

Page 16: 3 - Guia SQL

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;

Page 17: 3 - Guia SQL

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;

Page 18: 3 - Guia SQL

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;

Page 19: 3 - Guia SQL

SQL. Consultas.

Formato fecha: #mm/dd/aaaa#

SELECT Empleado.Apellido, Empleado.email,

Empleado.Fecha_Contratacion

FROM Empleado

WHERE (((Empleado.Fecha_Contratacion)=#9/30/2010#));

Page 20: 3 - Guia SQL

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;

Page 21: 3 - Guia SQL

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;

Page 22: 3 - Guia SQL

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;

Page 23: 3 - Guia SQL

SQL . Consultas (Query)

Consultas de dos o más tablas relacionadas

SELECT *

FROM Paises , Region

WHERE Paises.ID_Region = Region.ID_Region;

Page 24: 3 - Guia SQL

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;

Page 25: 3 - Guia SQL

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;

;

Page 26: 3 - Guia SQL

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

Page 27: 3 - Guia SQL

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);

Page 28: 3 - Guia SQL

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);

Page 29: 3 - Guia SQL

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.

Page 30: 3 - Guia SQL

SQL . SubConsultas

Utilizado INUtilizado INUtilizado INUtilizado IN

SELECT apellido

FROM empleado

WHERE ID_Manager IN

(SELECT ID_empleado

FROM empleado

WHERE apellido = "Torres");

Page 31: 3 - Guia SQL

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# );

Page 32: 3 - Guia SQL

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;

Page 33: 3 - Guia SQL

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);

Page 34: 3 - Guia SQL

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

Page 35: 3 - Guia SQL

SQL . Ejemplos

Page 36: 3 - Guia SQL

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.

Page 37: 3 - Guia SQL

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;;;;