SlideShare una empresa de Scribd logo
1 de 68
Descargar para leer sin conexión
SQL Structured Query Language
Capítulo 5
• El esfuerzo de estandarización por parte de ANSI
para llevarlo rápidamente a ser el lenguaje estándar
para las bases de datos relacionales.
• Formas básicas para el presente y el futuro en la
unión de esfuerzos para un mejor DBMS.
• Volverse el catalizador en el desarrollo de bases de
datos distribuidas y bases de datos basadas en la
arquitectura cliente/servidor.
Introducción a SQL
3
El lenguaje de consulta estructurado SQL (Structured
Query Language), es un lenguaje de base de datos.
El lenguaje SQL está compuesto por comandos,
cláusulas, operadores y funciones.
Estos elementos se combinan en las instrucciones para
crear, actualizar y manipular las bases de datos.
SQL es el lenguaje ideal para las bases de datos
–Lenguaje para definición de datos
–Lenguaje para manipulación de datos
Introducción a SQL
4
DDL (Data Definition Language)
Permiten crear y definir nuevas bases de datos,
campos e índices.
DML (Data Manipulation Language )
Permiten generar consultas para ordenar, filtrar y
extraer datos de la base de datos.
4
Comandos SQL
5
CREATE: Utilizado para crear tablas, campos e
índices.
DROP: Empleado para eliminar tablas e índices.
ALTER: Utilizado para modificar las tablas
agregando campos o cambiando la definición de los
campos.
5
Comandos DDL
6
SELECT: Utilizado para consultar registros de la BD
que satisfagan un determinado criterio.
INSERT: Utilizado para cargar lotes de datos en la
BD en una única operación.
UPDATE: Utilizado para modificar los valores de los
campos y registros especificados.
DELETE: Utilizado para eliminar registros de una
tabla de una BD.
6
Comandos DML
7
Tipos de Datos
Cada columna de una tabla tiene un dato asignado,
que determina los valores posibles y las operaciones
permitidas sobre esos valores.
•Tipo Numéricos
Existen tipos de datos numéricos, que se pueden
dividir en dos grandes grupos, los que están en coma
flotante (con decimales) y los que no.
TinyInt: es un número entero con o sin signo. Con
signo el rango de valores válidos va desde -128 a 127.
Sin signo, el rango de valores es de 0 a 255
Bit ó Bool: un número entero que puede ser 0 ó 1
8
SmallInt: número entero con o sin signo. Con signo el rango de
valores va desde -32768 a 32767. Sin signo, el rango de valores
es de 0 a 65535.
MediumInt: número entero con o sin signo. Con signo el rango
de valores va desde -8.388.608 a 8.388.607. Sin signo el rango
va desde 0 a16777215.
Integer, Int: número entero con o sin signo. Con signo el rango
de valores va desde -2147483648 a 2147483647. Sin signo el
rango va desde 0 a 429.4967.295
BigInt: número entero con o sin signo. Con signo el rango de
valores va desde -9.223.372.036.854.775.808 a
9.223.372.036.854.775.807. Sin signo el rango va desde 0 a
18.446.744.073.709.551.615.
Tipos de Datos
9
Float: número pequeño en coma flotante de precisión simple. Los
valores válidos van desde -3.402823466E+38 a -1.175494351E-38,
0 y desde 1.175494351E-38 a 3.402823466E+38.
xReal, Double: número en coma flotante de precisión doble. Los
valores permitidos van desde -1.7976931348623157E+308 a -
2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308
a 1.7976931348623157E+308
Decimal, Dec, Numeric: Número en coma flotante
desempaquetado. El número se almacena como una cadena
Tipos de Datos
10
• Tipo Fecha
A la hora de almacenar fechas, hay que tener en cuenta que
Mysql no comprueba de una manera estricta si una fecha es
válida o no. Simplemente comprueba que el mes esta
comprendido entre 0 y 12 y que el día esta comprendido entre
0 y 31.
Date: tipo fecha, almacena una fecha. El rango de valores va
desde el 1 de enero del 1001 al 31 de diciembre de 9999. El
formato de almacenamiento es de año-mes-dia
DateTime: Combinación de fecha y hora. El rango de valores
va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0
segundos al 31 de diciembre del 9999 a las 23 horas, 59
minutos y 59 segundos. El formato de almacenamiento es de
año-mes-dia horas:minutos:segundos
Tipos de Datos
11
• Tipo Cadena
Char(n): almacena una cadena de longitud fija. La cadena
podrá contener desde 0 a 255 caracteres.
VarChar(n): almacena una cadena de longitud variable. La
cadena podrá contener desde 0 a 255 caracteres.
Dentro de los tipos de cadena se pueden distinguir otros dos
subtipos, los tipo Test y los tipo BLOB (Binary large Object)
La diferencia entre un tipo y otro es el tratamiento que reciben
a la hora de realizar ordenamientos y comparaciones. Mientras
que el tipo test se ordena sin tener en cuenta las Mayúsculas y
las minúsculas, el tipo BLOB se ordena teniéndolas en cuenta.
Tipos de Datos
12
Sentencia DDL: CREATE TABLE
Crea la estructura de una tabla.
Formato simplificado:
CREATE TABLE <tabla>
( <definición de columna 1>,
…
<definición de columna n>,
<definición de restricción 1>,
…
<definición de restricción n>)
En la definición del atributo o columna puede aparecer:
<nombre de columna> { <tipo de dato> / <dominio>}
[<restricción de columna> … ]
13
Las restricciones se usan para declarar en el modelo relacional las
condiciones que los datos cumplen en el mundo real.
Pueden ser de un diverso tipo (valor defectivo, valor nulo, clave
primaria, clave foránea, etc.)
•Valor defectivo de una columna. Se expresa con DEFAULT <valor>
•Valor nulo (defectivo) o no nulo de una columna. Se expresa con [NOT]
NULL
Ejemplo:
CREATE TABLE emp1
(empno NUMBER(4) NOT NULL,
ename VARCHAR2(15),
mgr NUMBER(4) DEFAULT 7500,
deptno NUMBER(2))
Sentencia DDL: CREATE TABLE
14
Otras restricciones:
•Llave primaria.
Indica la condición de que un conjunto de columnas toma
valores diferentes para cada fila y ninguno de ellos es nulo.
Se expresa mediante PRIMARY KEY
CREATE TABLE emp2
(empno NUMBER(4) NOT NULL,
ename VARCHAR2(15),
mgr NUMBER(4),
deptno NUMBER(2),
PRIMARY KEY (empno))
Sentencia DDL: CREATE TABLE
15
Toda restricción puede nombrarse incluyendo CONSTRAINT
<nombre de restricción>
Aquí sería anteponiendo a PRIMARY KEY
CREATE TABLE emp2
(empno NUMBER(4) NOT NULL,
ename VARCHAR2(15),
mgr NUMBER(4),
deptno NUMBER(2),
CONSTRAINT cp_emp2 PRIMARY KEY (empno))
Sentencia DDL: CREATE TABLE
16
• Valor único
Indica que un conjunto de atributos no puede tener valores
iguales en filas distintas.
Formato:
UNIQUE (<columna 1> [<columna 2>, … >)
CREATE TABLE emp2
(empno NUMBER(4) NOT NULL,
ename VARCHAR2(15),
mgr NUMBER(4),
deptno NUMBER(2),
UNIQUE (empno))
Sentencia DDL: CREATE TABLE
17
• Llave foránea
Un conjunto de atributos es una clave foránea si sus
valores corresponden con los de otro conjunto de atributos
que es una clave candidata en otra relación.
Sentencia DDL: CREATE TABLE
18
Sentencia DDL: CREATE TABLE
19
Crear una tabla
20
Sentencia DML: INSERT
Permite introducir filas en una tabla.
Select Sintaxis
SELECT select_list [ INTO new_table ]
FROM table_source
[WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
22
La consulta más sencilla
Consultar a una tabla
Seleccionar solo ciertos campos
SELECT * FROM
Alumnos
SELECT nombre+” “+paterno+” “+materno FROM
Alumnos
23
Filtrando registros con WHERE
• Sin WHERE, se obtienen todos los registros
• Con WHERE se obtienen aquellos registros que cumplan ciertas
condiciones
SELECT * FROM Alumnos
WHERE lugar_nac = ‘Mty’ AND fecha_nac > ‘1990-06-30’
Ejemplos de select
• select * from TablaA
• select name from TablaA
• select id from TablaA where name=‘Pirate’
• select * from TablaA where id=1 or name=‘Ninja’
Sentencia DML: UPDATE
• UPDATE <tabla>
SET <campo1> = value1, <campo2> = value2
--SIN WHERE se modifican todos los registros
--Con WHERE se modifican sólo los registros que cumplen con
ciertas condiciones
• DELETE FROM <tabla>
--SIN WHERE se eliminan todos los registros de la tabla
--Con WHERE se eliminan sólo los registros que cumplen con
ciertas condiciones
Sentencia DML: DELETE
Operador DISTINCT
• SELECT DISTINCT "nombre_columna“ FROM "nombre_tabla"
EJEMPLO:
SELECT DISTINCT store_name FROM Store_Information
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
RESULTADO:
store_name
Los Angeles
San Diego
Boston
Claúsula WHERE
• seleccionar todos los negocios con ventas mayores a 1.000€ dólares
estadounidenses en la Tabla Store_Information,
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
Ejemplo:
SELECT store_name FROM Store_Information
WHERE Sales > 1000
RESULTADO:
store_name
Los Angeles
Operador AND OR
SELECT "nombre_columna“
FROM "nombre_tabla"
WHERE "condición simple“
{[AND|OR] "condición simple"}+
SELECT store_name
FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275)
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
RESULTADO:
store_name
Los Angeles
San Francisco
Por ejemplo, podemos desear seleccionar todos los negocios con ventas mayores
a 1000€ dólares estadounidenses o todos los negocios con ventas menores a 500€
dólares estadounidenses pero mayores a 275€ dólares estadounidenses en la
Tabla Store_Information,
{}+ significa que la expresión dentro de las llaves ocurrirá una o más veces.
Note que AND u OR pueden utilizarse indistintamente. Además, podemos
utilizar el símbolo paréntesis () para indicar el orden de la condición.
Operador IN
En SQL, hay dos usos de la palabra clave IN, y esta sección introduce aquél
relacionado con la cláusula WHERE. Cuando se lo utiliza en este contexto,
sabemos exactamente el valor de los valores regresados que deseamos ver
para al menos una de las columnas. La sintaxis para el uso de la palabra clave
IN es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" IN (''valor1', ''valor2', ...)
El número de valores en los paréntesis pueden ser uno o más, con
cada valor separado por comas. Los valores pueden ser números o
caracteres. Si hay sólo un valor dentro del paréntesis, este comando
es equivalente a
WHERE "nombre_columna" = 'valor1'
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
Ejemplo:
SELECT * FROM Store_Information
WHERE store_name IN ('Los Angeles', 'San Diego')
Por ejemplo, podríamos desear seleccionar todos los registros para los negocios
de Los Ángeles y San Diego en la Tabla Store_Information,
Operador IN
RESULTADO:
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Operador in
• El operador in nos permite saber si existe algún valor x en una
lista de elementos.
• Ejemplo:
– select * from TablaA where id in (1, 3, 7)
– select * from TablaA where id=1 or id=3 or id=7
33
IN
• La cláusula IN permite especificar una lista en una cláusula
WHERE
SELECT * FROM Alumnos
WHERE lugar_nac IN (‘Mty’, ‘Apodaca’, ‘Gpe’)
SQL BETWEEN
Mientras que la palabra clave IN ayuda a las personas a limitar el criterio de
selección para uno o más valores discretos, la palabra clave BETWEEN permite
la selección de un rango. La sintaxis para la cláusula BETWEEN es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2'
Por ejemplo, podríamos desear seleccionar la visualización de toda la
información de ventas entre el 06 de enero de 1999, y el 10 de enero de 1999,
en la Tabla Store_Information,
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
SQL BETWEEN
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
SELECT *
FROM Store_Information
WHERE Date BETWEEN '06-Jan-1999' AND '10-Jan-1999'
Tenga en cuenta que la fecha puede almacenarse en diferentes formatos
según las diferentes bases de datos. Esta guía de referencia simplemente
elige uno de los formatos.
RESULTADO:
store_name Sales Date
San Diego 250 € 07-Jan-1999
San Francisco 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
SQL LIKE
LIKEes otra palabra clave que se utiliza en la cláusula WHERE. Básicamente,
LIKEle permite hacer una búsqueda basada en un patrón en vez de especificar
exactamente lo que se desea (como en IN) o determinar un rango (como en
BETWEEN). La sintaxis es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" LIKE {patrón}
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
SQL LIKE
{patrón} generalmente consiste en comodines. Aquí hay algunos ejemplos:
•'A_Z': Toda línea que comience con 'A', otro carácter y termine con 'Z'. Por
ejemplo, 'ABZ' y 'A2Z' deberían satisfacer la condición, mientras 'AKKZ' no debería
(debido a que hay dos caracteres entre A y Z en vez de uno).
•'ABC%': Todas las líneas que comienzan con 'ABC'. Por ejemplo, 'ABCD' y
'ABCABC' ambas deberían satisfacer la condición.
•'%XYZ': Todas las líneas que terminan con 'XYZ'. Por ejemplo, 'WXYZ' y 'ZZXYZ'
ambas deberían satisfacer la condición.
•'%AN%': : Todas las líneas que contienen el patrón 'AN' en cualquier lado. Por
ejemplo, 'LOS ANGELES' y 'SAN FRANCISCO' ambos deberían satisfacer la
condición.
SQL LIKE
Deseamos encontrar todos los negocios cuyos nombres contengan ‘AN’. Para
hacerlo, ingresamos,
SELECT *
FROM Store_Information
WHERE store_name LIKE '%AN%'
RESULTADO:
store_name Sales Date
LOS ANGELES 1500 € 05-Jan-1999
SAN DIEGO 250 € 07-Jan-1999
SAN FRANCISCO 300 € 08-Jan-1999
39
Ordenando
• ORDER BY permite ordenar los registros alfabéticamente por
campos.
SELECT * FROM Alumnos
WHERE lugar_nac = ‘Mty’
AND fecha_nac > ‘1990-06-30’
ORDER BY lugar_nac DESC, paterno, materno, nombre
40
Subconsultas
• Permiten crear una lista para una cláusula IN mediante una
consulta
SELECT * FROM Alumnos
WHERE matricula IN (SELECT matricula
FROM Alumnos
WHERE YEAR(fecha_nac) = 2007)
41
Consultas a dos tablas
• Una consulta a dos tablas da como resultado el producto de
ambas.
• El producto de dos tablas es otra tabla con todos los campos
de las dos tablas, repitiendo la segunda tabla tantas veces
como registros tiene la primera.
• Es necesario filtrar con WHERE por un campo común a ambas
tablas.
42
Funciones agregadas
• COUNT
• SUM
• AVG
• MAX
• MIN
• GROUP BY
Funciones agregadas
• COUNT
• Calcula el número de registros devueltos por una consulta.
• No toma en cuenta qué valores se almacenan en los registros.
• No cuenta los registros que tienen campos NULL a menos que
su utilice el carácter comodín asterisco (*).
• Sintaxis:
43
COUNT(Expresion)
* Expresion: nombre del campo que desea contar. Puede
incluir el nombre de un campo de una tabla,una constante
o una función (no funciones agregadas de SQL).
Funciones agregadas
• SUM
• Devuelve la suma del conjunto de valores contenido en un
campo específico de una consulta.
• Sintaxis:
44
SUM(Expresion)
* Expresion: campo que contiene los datos que desean sumarse o una expresión
que realiza un cálculo utilizando los datos de dichos campos.
Puede incluir el nombre de un campo de una tabla,
una constante o una función (no funciones agregadas de SQL).
SELECT SUM(PrecioUnidad * Cantidad) AS Total
FROM DetallePedido
Funciones agregadas
• AVG
• Calcula el promedio de un conjunto de valores contenidos en
un campo especificado de una consulta.
• Sintaxis:
45
AVG(Expresion)
* Expresion: campo que contiene los datos numéricos para los que se desea
calcular el promedio o una expresión que realiza un cálculo utilizando los
datos de dicho campo.
Funciones agregadas
• MAX y MIN
• Devuelven el mínimo o el máximo de un conjunto de valores
contenidos en un campo específico de una consulta.
• Sintaxis:
46
MIN(expresion)
MAX(expresion)
* Expresion: campo sobre el que se desea realizar el
cálculo. Puede incluir el nombre de un campo de una
tabla, una constante o una función (no funciones
agregadas de SQL).
Funciones agregadas
• GROUP BY
• Combina los registros con valores idénticos, en la lista de
campos especificados, en un único registro. Para cada registro
se crea un valor si se incluye una función SQL agregada, como
por ejemplo SUM o COUNT, en la instrucción SELECT.
• Sintaxis:
47
SELECT campos FROM tabla WHERE criterio
GROUP BY campos_del_grupo
Funciones agregadas
• HAVING
• HAVING es similar a WHERE, determina qué registros se
seleccionan.
• Una vez que los registros se han agrupado utilizando GROUP
BY, HAVING determina cuales de ellos se van a mostrar.
• Sintaxis:
48
SELECT Id_Familia, SUM(Stock) FROM Productos
GROUP BY Id_Familia
HAVING SUM(Stock) > 100
AND NombreProducto LIKE ’BOS%’
Funciones de Cadenas de caracteres
Funciones numéricas
Funciones de fecha
• getdate()
• DATENAME:(datepart , date)
Devuelve una cadena de caracteres que representa el datepart
especificado de la fecha especificada.
• DATEPART (datepart , date)
Devuelve un entero que representa el datepart especificado del date
especificado.
• DAY (date)
Devuelve un entero que representa la parte del día de date especificado.
• MONTH (date)
Devuelve un entero que representa la parte del mes de un date
especificado.
• YEAR (date)
Devuelve un entero que representa la parte del año de un date
especificado.
• DATEDIFF (datepart , startdate , enddate)
Devuelve el número (int) de límites datepart de fecha y hora entre dos fechas
especificadas.
SELECT DATEDIFF(YEAR,hire_date,GETDATE()) FROM employee
• DATEADD (datepart , number , date)
Devuelve un nuevo valor datetime agregando un intervalo al datepart del date
especificado.
El tipo de datos del argumento date.
• ISDATE (expression)
Determina si una expresión de entrada date es un valor de fecha.
52
Ejercicios
• Calcular la edad de los alumnos
• Número de alumnos por lugar de nacimiento
• Promedio de calificaciones por alumno
Vistas
• Tiene un comportamiento similar al de una tabla base, excepto
en las limitaciones de actualización.
• Sintaxis
53
CREATE [OR REPLACE]
VIEW <vista> [(columna1, ..., columna n)]
AS <Sentencia SQL>
• Una vista es un tipo especial de tabla en la que sus datos se
derivan de otras tablas, mediante la evaluación dinámica de
una consulta.
• Elementos
– Nombre: único en el esquema relacional.
– Atributos: forman las columnas de la vista
– Definición: consiste en una sentencia SELECT sobre otras tablas o vistas.
Vistas (VIEW)
Vistas
• Tiene un comportamiento similar al de una tabla base, excepto
en las limitaciones de actualización.
• Sintaxis
CREATE [OR REPLACE] VIEW <vista> [(columna1, ..., columna n)]
AS <Sentencia SQL>
Stored Procedures
• Por medio de procedimientos almacenados, Stored Procedures (SP), el
sistema de base de datos es capaz de ejecutar un conjunto de instrucciones
coordinadas entre sí que afectan la información con el fin de lograr un
objetivo dentro del sistema. Los procedimientos se asemejan a
construcciones en otros lenguajes de programación porque pueden:
– Aceptar parámetros de entrada y devolver múltiples valores en forma
de parámetros de salida al programa de llamada.
– Contiene enunciados de programación que realizan operaciones en la
base de datos. Estos incluyen llamar a otros procedimientos.
– Devuelva un valor de estado a un programa de llamada para indicar el
éxito o el fracaso (y el motivo del error).
Stored Procedures
Algunos beneficios del uso de procedimientos.
• Reducción del tráfico del servidor / red del cliente.
Los comandos en un procedimiento se ejecutan como un único lote de código. Esto
puede reducir significativamente el tráfico de red entre el servidor y el cliente
porque solo la llamada para ejecutar el procedimiento se envía a través de la red. Sin
la encapsulación de códigos provista por un procedimiento, cada línea individual de
código tendría que cruzar la red.
• Mayor seguridad
Varios usuarios y programas clientes pueden realizar operaciones en objetos de base
de datos subyacentes a través de un procedimiento, incluso si los usuarios y
programas no tienen permisos directos sobre esos objetos subyacentes. El
procedimiento controla qué procesos y actividades se realizan y protege los objetos
de base de datos subyacentes. Esto elimina el requisito de otorgar permisos a nivel
de objeto individual y simplifica las capas de seguridad.
Stored Procedures
CREATE [ OR ALTER]PROCEDURE procedure_name
@parameter data_type
AS BEGIN <sql_statement> END
;
EXECUTE PROCEDURE_NAME
EXEC
FUNCTION
Una función definida por el usuario es una rutina de SQL
que acepta parámetros, realiza una acción, como un cálculo
complejo, y devuelve el resultado de esa acción como un
valor.
El valor devuelto por una función puede ser un valor escalar
(único) o una tabla.
FUNCTION
Sintaxis para funciones escalares:
CREATE FUNCTION [ schema_name. ] function_name
(@parameter_name parameter_data_type, . . . n)
RETURNS return_data_type
AS
BEGIN
function_body
RETURN scalar_expression
END;
FUNCTION
Ejemplo: Función que devuelve un valor escalar
CREATE FUNCTION dbo.ordenesEmpleado
(@employeeID int)
RETURNS int
AS
BEGIN
DECLARE @orders int;
SELECT @orders = (
SELECT COUNT(orderID)
FROM Orders
WHERE employeeID = @employeeID
);
RETURN @orders;
END;
FUNCTION
Sintaxis para funciones que devuelven una tabla:
CREATE FUNCTION [ schema_name. ]
function_name
(@parameter_name parameter_data_type, . . . n)
RETURNS TABLE
AS
RETURN ( select_stmt )
;
Disparador o Desencadenador
(Trigger)
• Es un tipo de procedimiento almacenado que se
ejecuta cuando se intenta modificar los datos de
una tabla (o vista).
• Un trigger se asocia a un evento (inserción,
actualización o borrado) sobre una tabla.
• La diferencia con los procedimientos almacenados
del sistema es que los triggers:
- no pueden ser invocados directamente; al intentar
modificar los datos de una tabla para la que se ha
definido un disparador, el disparador se ejecuta
automáticamente.
- no reciben y retornan parámetros.
- son apropiados para mantener la integridad de los
datos, no para obtener resultados de consultas.
Sintaxis:
create trigger NOMBREDISPARADOR
on NOMBRETABLA o vista
for | after -- son equivalentes, momento del disparo
Accion -- insert, update o delete
as SENTENCIAS
create trigger NOMBREDISPARADOR
on NOMBRETABLA o vista
after o instead of -- momento de disparo
Accion -- insert, update o delete
as SENTENCIAS
Disparador o Desencadenador
(Trigger)
65
66
Materia
Alumno
Profesor
Carrera
Materia_id
Nombre_m
Creditos_m
Matricula_id
Nombre_a
Apellidos_a
FechaNac_a
Carrera_id1
Semestre_m
Profesor_id
Nombre_p
Apellidos_p
Tel_p
Carrera_id
Nombre_c
Abr_c
Duracion_c
N:M
N:M Materia_id1
Matricula_id1
Calificacion
Materia_id2
Profesor_id2
Profesor_id1
1:M
1:M
--Tutor
Tutor_p
BD cap 5  SQL.pdf

Más contenido relacionado

Similar a BD cap 5 SQL.pdf (20)

my SQL - PRACTICA DE SLIDE
my SQL - PRACTICA DE SLIDE my SQL - PRACTICA DE SLIDE
my SQL - PRACTICA DE SLIDE
 
Medicina - Taller
Medicina - TallerMedicina - Taller
Medicina - Taller
 
04-SQL.pdf
04-SQL.pdf04-SQL.pdf
04-SQL.pdf
 
04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf
 
MYSQL DDL DML.pdf
MYSQL DDL DML.pdfMYSQL DDL DML.pdf
MYSQL DDL DML.pdf
 
unidad-4
 unidad-4 unidad-4
unidad-4
 
95795044 unidad-4
95795044 unidad-495795044 unidad-4
95795044 unidad-4
 
Precentacion
PrecentacionPrecentacion
Precentacion
 
Precentacion
PrecentacionPrecentacion
Precentacion
 
Precentacion
PrecentacionPrecentacion
Precentacion
 
95795044 unidad-4
95795044 unidad-495795044 unidad-4
95795044 unidad-4
 
95795044 unidad-4
95795044 unidad-495795044 unidad-4
95795044 unidad-4
 
95795044 unidad-4
95795044 unidad-495795044 unidad-4
95795044 unidad-4
 
TABLAS Y TIPOS DE DATOS
TABLAS Y TIPOS DE DATOSTABLAS Y TIPOS DE DATOS
TABLAS Y TIPOS DE DATOS
 
Cheat_MySQL.docx
Cheat_MySQL.docxCheat_MySQL.docx
Cheat_MySQL.docx
 
Operaciones basicas de sql
Operaciones basicas de sqlOperaciones basicas de sql
Operaciones basicas de sql
 
95795044 unidad-4
95795044 unidad-495795044 unidad-4
95795044 unidad-4
 
Precentacion
PrecentacionPrecentacion
Precentacion
 
Precentacion
PrecentacionPrecentacion
Precentacion
 
Precentacion
PrecentacionPrecentacion
Precentacion
 

Último

LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxMapyMerma1
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 
plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativafiorelachuctaya2
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuelacocuyelquemao
 

Último (20)

LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptx
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdf
 
plan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativaplan-de-trabajo-colegiado en una institucion educativa
plan-de-trabajo-colegiado en una institucion educativa
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuela
 

BD cap 5 SQL.pdf

  • 1. SQL Structured Query Language Capítulo 5
  • 2. • El esfuerzo de estandarización por parte de ANSI para llevarlo rápidamente a ser el lenguaje estándar para las bases de datos relacionales. • Formas básicas para el presente y el futuro en la unión de esfuerzos para un mejor DBMS. • Volverse el catalizador en el desarrollo de bases de datos distribuidas y bases de datos basadas en la arquitectura cliente/servidor. Introducción a SQL
  • 3. 3 El lenguaje de consulta estructurado SQL (Structured Query Language), es un lenguaje de base de datos. El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos. SQL es el lenguaje ideal para las bases de datos –Lenguaje para definición de datos –Lenguaje para manipulación de datos Introducción a SQL
  • 4. 4 DDL (Data Definition Language) Permiten crear y definir nuevas bases de datos, campos e índices. DML (Data Manipulation Language ) Permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. 4 Comandos SQL
  • 5. 5 CREATE: Utilizado para crear tablas, campos e índices. DROP: Empleado para eliminar tablas e índices. ALTER: Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos. 5 Comandos DDL
  • 6. 6 SELECT: Utilizado para consultar registros de la BD que satisfagan un determinado criterio. INSERT: Utilizado para cargar lotes de datos en la BD en una única operación. UPDATE: Utilizado para modificar los valores de los campos y registros especificados. DELETE: Utilizado para eliminar registros de una tabla de una BD. 6 Comandos DML
  • 7. 7 Tipos de Datos Cada columna de una tabla tiene un dato asignado, que determina los valores posibles y las operaciones permitidas sobre esos valores. •Tipo Numéricos Existen tipos de datos numéricos, que se pueden dividir en dos grandes grupos, los que están en coma flotante (con decimales) y los que no. TinyInt: es un número entero con o sin signo. Con signo el rango de valores válidos va desde -128 a 127. Sin signo, el rango de valores es de 0 a 255 Bit ó Bool: un número entero que puede ser 0 ó 1
  • 8. 8 SmallInt: número entero con o sin signo. Con signo el rango de valores va desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535. MediumInt: número entero con o sin signo. Con signo el rango de valores va desde -8.388.608 a 8.388.607. Sin signo el rango va desde 0 a16777215. Integer, Int: número entero con o sin signo. Con signo el rango de valores va desde -2147483648 a 2147483647. Sin signo el rango va desde 0 a 429.4967.295 BigInt: número entero con o sin signo. Con signo el rango de valores va desde -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin signo el rango va desde 0 a 18.446.744.073.709.551.615. Tipos de Datos
  • 9. 9 Float: número pequeño en coma flotante de precisión simple. Los valores válidos van desde -3.402823466E+38 a -1.175494351E-38, 0 y desde 1.175494351E-38 a 3.402823466E+38. xReal, Double: número en coma flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157E+308 a - 2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308 a 1.7976931348623157E+308 Decimal, Dec, Numeric: Número en coma flotante desempaquetado. El número se almacena como una cadena Tipos de Datos
  • 10. 10 • Tipo Fecha A la hora de almacenar fechas, hay que tener en cuenta que Mysql no comprueba de una manera estricta si una fecha es válida o no. Simplemente comprueba que el mes esta comprendido entre 0 y 12 y que el día esta comprendido entre 0 y 31. Date: tipo fecha, almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999. El formato de almacenamiento es de año-mes-dia DateTime: Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos Tipos de Datos
  • 11. 11 • Tipo Cadena Char(n): almacena una cadena de longitud fija. La cadena podrá contener desde 0 a 255 caracteres. VarChar(n): almacena una cadena de longitud variable. La cadena podrá contener desde 0 a 255 caracteres. Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los tipo Test y los tipo BLOB (Binary large Object) La diferencia entre un tipo y otro es el tratamiento que reciben a la hora de realizar ordenamientos y comparaciones. Mientras que el tipo test se ordena sin tener en cuenta las Mayúsculas y las minúsculas, el tipo BLOB se ordena teniéndolas en cuenta. Tipos de Datos
  • 12. 12 Sentencia DDL: CREATE TABLE Crea la estructura de una tabla. Formato simplificado: CREATE TABLE <tabla> ( <definición de columna 1>, … <definición de columna n>, <definición de restricción 1>, … <definición de restricción n>) En la definición del atributo o columna puede aparecer: <nombre de columna> { <tipo de dato> / <dominio>} [<restricción de columna> … ]
  • 13. 13 Las restricciones se usan para declarar en el modelo relacional las condiciones que los datos cumplen en el mundo real. Pueden ser de un diverso tipo (valor defectivo, valor nulo, clave primaria, clave foránea, etc.) •Valor defectivo de una columna. Se expresa con DEFAULT <valor> •Valor nulo (defectivo) o no nulo de una columna. Se expresa con [NOT] NULL Ejemplo: CREATE TABLE emp1 (empno NUMBER(4) NOT NULL, ename VARCHAR2(15), mgr NUMBER(4) DEFAULT 7500, deptno NUMBER(2)) Sentencia DDL: CREATE TABLE
  • 14. 14 Otras restricciones: •Llave primaria. Indica la condición de que un conjunto de columnas toma valores diferentes para cada fila y ninguno de ellos es nulo. Se expresa mediante PRIMARY KEY CREATE TABLE emp2 (empno NUMBER(4) NOT NULL, ename VARCHAR2(15), mgr NUMBER(4), deptno NUMBER(2), PRIMARY KEY (empno)) Sentencia DDL: CREATE TABLE
  • 15. 15 Toda restricción puede nombrarse incluyendo CONSTRAINT <nombre de restricción> Aquí sería anteponiendo a PRIMARY KEY CREATE TABLE emp2 (empno NUMBER(4) NOT NULL, ename VARCHAR2(15), mgr NUMBER(4), deptno NUMBER(2), CONSTRAINT cp_emp2 PRIMARY KEY (empno)) Sentencia DDL: CREATE TABLE
  • 16. 16 • Valor único Indica que un conjunto de atributos no puede tener valores iguales en filas distintas. Formato: UNIQUE (<columna 1> [<columna 2>, … >) CREATE TABLE emp2 (empno NUMBER(4) NOT NULL, ename VARCHAR2(15), mgr NUMBER(4), deptno NUMBER(2), UNIQUE (empno)) Sentencia DDL: CREATE TABLE
  • 17. 17 • Llave foránea Un conjunto de atributos es una clave foránea si sus valores corresponden con los de otro conjunto de atributos que es una clave candidata en otra relación. Sentencia DDL: CREATE TABLE
  • 20. 20 Sentencia DML: INSERT Permite introducir filas en una tabla.
  • 21. Select Sintaxis SELECT select_list [ INTO new_table ] FROM table_source [WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]
  • 22. 22 La consulta más sencilla Consultar a una tabla Seleccionar solo ciertos campos SELECT * FROM Alumnos SELECT nombre+” “+paterno+” “+materno FROM Alumnos
  • 23. 23 Filtrando registros con WHERE • Sin WHERE, se obtienen todos los registros • Con WHERE se obtienen aquellos registros que cumplan ciertas condiciones SELECT * FROM Alumnos WHERE lugar_nac = ‘Mty’ AND fecha_nac > ‘1990-06-30’
  • 24. Ejemplos de select • select * from TablaA • select name from TablaA • select id from TablaA where name=‘Pirate’ • select * from TablaA where id=1 or name=‘Ninja’
  • 25. Sentencia DML: UPDATE • UPDATE <tabla> SET <campo1> = value1, <campo2> = value2 --SIN WHERE se modifican todos los registros --Con WHERE se modifican sólo los registros que cumplen con ciertas condiciones
  • 26. • DELETE FROM <tabla> --SIN WHERE se eliminan todos los registros de la tabla --Con WHERE se eliminan sólo los registros que cumplen con ciertas condiciones Sentencia DML: DELETE
  • 27. Operador DISTINCT • SELECT DISTINCT "nombre_columna“ FROM "nombre_tabla" EJEMPLO: SELECT DISTINCT store_name FROM Store_Information store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 Tabla Store_Information RESULTADO: store_name Los Angeles San Diego Boston
  • 28. Claúsula WHERE • seleccionar todos los negocios con ventas mayores a 1.000€ dólares estadounidenses en la Tabla Store_Information, store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 Tabla Store_Information Ejemplo: SELECT store_name FROM Store_Information WHERE Sales > 1000 RESULTADO: store_name Los Angeles
  • 29. Operador AND OR SELECT "nombre_columna“ FROM "nombre_tabla" WHERE "condición simple“ {[AND|OR] "condición simple"}+ SELECT store_name FROM Store_Information WHERE Sales > 1000 OR (Sales < 500 AND Sales > 275) store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 Tabla Store_Information RESULTADO: store_name Los Angeles San Francisco Por ejemplo, podemos desear seleccionar todos los negocios con ventas mayores a 1000€ dólares estadounidenses o todos los negocios con ventas menores a 500€ dólares estadounidenses pero mayores a 275€ dólares estadounidenses en la Tabla Store_Information, {}+ significa que la expresión dentro de las llaves ocurrirá una o más veces. Note que AND u OR pueden utilizarse indistintamente. Además, podemos utilizar el símbolo paréntesis () para indicar el orden de la condición.
  • 30. Operador IN En SQL, hay dos usos de la palabra clave IN, y esta sección introduce aquél relacionado con la cláusula WHERE. Cuando se lo utiliza en este contexto, sabemos exactamente el valor de los valores regresados que deseamos ver para al menos una de las columnas. La sintaxis para el uso de la palabra clave IN es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" WHERE "nombre_columna" IN (''valor1', ''valor2', ...) El número de valores en los paréntesis pueden ser uno o más, con cada valor separado por comas. Los valores pueden ser números o caracteres. Si hay sólo un valor dentro del paréntesis, este comando es equivalente a WHERE "nombre_columna" = 'valor1'
  • 31. store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 Tabla Store_Information Ejemplo: SELECT * FROM Store_Information WHERE store_name IN ('Los Angeles', 'San Diego') Por ejemplo, podríamos desear seleccionar todos los registros para los negocios de Los Ángeles y San Diego en la Tabla Store_Information, Operador IN RESULTADO: store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999
  • 32. Operador in • El operador in nos permite saber si existe algún valor x en una lista de elementos. • Ejemplo: – select * from TablaA where id in (1, 3, 7) – select * from TablaA where id=1 or id=3 or id=7
  • 33. 33 IN • La cláusula IN permite especificar una lista en una cláusula WHERE SELECT * FROM Alumnos WHERE lugar_nac IN (‘Mty’, ‘Apodaca’, ‘Gpe’)
  • 34. SQL BETWEEN Mientras que la palabra clave IN ayuda a las personas a limitar el criterio de selección para uno o más valores discretos, la palabra clave BETWEEN permite la selección de un rango. La sintaxis para la cláusula BETWEEN es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2' Por ejemplo, podríamos desear seleccionar la visualización de toda la información de ventas entre el 06 de enero de 1999, y el 10 de enero de 1999, en la Tabla Store_Information, store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 Tabla Store_Information
  • 35. SQL BETWEEN store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 Tabla Store_Information SELECT * FROM Store_Information WHERE Date BETWEEN '06-Jan-1999' AND '10-Jan-1999' Tenga en cuenta que la fecha puede almacenarse en diferentes formatos según las diferentes bases de datos. Esta guía de referencia simplemente elige uno de los formatos. RESULTADO: store_name Sales Date San Diego 250 € 07-Jan-1999 San Francisco 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999
  • 36. SQL LIKE LIKEes otra palabra clave que se utiliza en la cláusula WHERE. Básicamente, LIKEle permite hacer una búsqueda basada en un patrón en vez de especificar exactamente lo que se desea (como en IN) o determinar un rango (como en BETWEEN). La sintaxis es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" WHERE "nombre_columna" LIKE {patrón} store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 Tabla Store_Information
  • 37. SQL LIKE {patrón} generalmente consiste en comodines. Aquí hay algunos ejemplos: •'A_Z': Toda línea que comience con 'A', otro carácter y termine con 'Z'. Por ejemplo, 'ABZ' y 'A2Z' deberían satisfacer la condición, mientras 'AKKZ' no debería (debido a que hay dos caracteres entre A y Z en vez de uno). •'ABC%': Todas las líneas que comienzan con 'ABC'. Por ejemplo, 'ABCD' y 'ABCABC' ambas deberían satisfacer la condición. •'%XYZ': Todas las líneas que terminan con 'XYZ'. Por ejemplo, 'WXYZ' y 'ZZXYZ' ambas deberían satisfacer la condición. •'%AN%': : Todas las líneas que contienen el patrón 'AN' en cualquier lado. Por ejemplo, 'LOS ANGELES' y 'SAN FRANCISCO' ambos deberían satisfacer la condición.
  • 38. SQL LIKE Deseamos encontrar todos los negocios cuyos nombres contengan ‘AN’. Para hacerlo, ingresamos, SELECT * FROM Store_Information WHERE store_name LIKE '%AN%' RESULTADO: store_name Sales Date LOS ANGELES 1500 € 05-Jan-1999 SAN DIEGO 250 € 07-Jan-1999 SAN FRANCISCO 300 € 08-Jan-1999
  • 39. 39 Ordenando • ORDER BY permite ordenar los registros alfabéticamente por campos. SELECT * FROM Alumnos WHERE lugar_nac = ‘Mty’ AND fecha_nac > ‘1990-06-30’ ORDER BY lugar_nac DESC, paterno, materno, nombre
  • 40. 40 Subconsultas • Permiten crear una lista para una cláusula IN mediante una consulta SELECT * FROM Alumnos WHERE matricula IN (SELECT matricula FROM Alumnos WHERE YEAR(fecha_nac) = 2007)
  • 41. 41 Consultas a dos tablas • Una consulta a dos tablas da como resultado el producto de ambas. • El producto de dos tablas es otra tabla con todos los campos de las dos tablas, repitiendo la segunda tabla tantas veces como registros tiene la primera. • Es necesario filtrar con WHERE por un campo común a ambas tablas.
  • 42. 42 Funciones agregadas • COUNT • SUM • AVG • MAX • MIN • GROUP BY
  • 43. Funciones agregadas • COUNT • Calcula el número de registros devueltos por una consulta. • No toma en cuenta qué valores se almacenan en los registros. • No cuenta los registros que tienen campos NULL a menos que su utilice el carácter comodín asterisco (*). • Sintaxis: 43 COUNT(Expresion) * Expresion: nombre del campo que desea contar. Puede incluir el nombre de un campo de una tabla,una constante o una función (no funciones agregadas de SQL).
  • 44. Funciones agregadas • SUM • Devuelve la suma del conjunto de valores contenido en un campo específico de una consulta. • Sintaxis: 44 SUM(Expresion) * Expresion: campo que contiene los datos que desean sumarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Puede incluir el nombre de un campo de una tabla, una constante o una función (no funciones agregadas de SQL). SELECT SUM(PrecioUnidad * Cantidad) AS Total FROM DetallePedido
  • 45. Funciones agregadas • AVG • Calcula el promedio de un conjunto de valores contenidos en un campo especificado de una consulta. • Sintaxis: 45 AVG(Expresion) * Expresion: campo que contiene los datos numéricos para los que se desea calcular el promedio o una expresión que realiza un cálculo utilizando los datos de dicho campo.
  • 46. Funciones agregadas • MAX y MIN • Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un campo específico de una consulta. • Sintaxis: 46 MIN(expresion) MAX(expresion) * Expresion: campo sobre el que se desea realizar el cálculo. Puede incluir el nombre de un campo de una tabla, una constante o una función (no funciones agregadas de SQL).
  • 47. Funciones agregadas • GROUP BY • Combina los registros con valores idénticos, en la lista de campos especificados, en un único registro. Para cada registro se crea un valor si se incluye una función SQL agregada, como por ejemplo SUM o COUNT, en la instrucción SELECT. • Sintaxis: 47 SELECT campos FROM tabla WHERE criterio GROUP BY campos_del_grupo
  • 48. Funciones agregadas • HAVING • HAVING es similar a WHERE, determina qué registros se seleccionan. • Una vez que los registros se han agrupado utilizando GROUP BY, HAVING determina cuales de ellos se van a mostrar. • Sintaxis: 48 SELECT Id_Familia, SUM(Stock) FROM Productos GROUP BY Id_Familia HAVING SUM(Stock) > 100 AND NombreProducto LIKE ’BOS%’
  • 49. Funciones de Cadenas de caracteres Funciones numéricas
  • 50. Funciones de fecha • getdate() • DATENAME:(datepart , date) Devuelve una cadena de caracteres que representa el datepart especificado de la fecha especificada. • DATEPART (datepart , date) Devuelve un entero que representa el datepart especificado del date especificado. • DAY (date) Devuelve un entero que representa la parte del día de date especificado. • MONTH (date) Devuelve un entero que representa la parte del mes de un date especificado. • YEAR (date) Devuelve un entero que representa la parte del año de un date especificado.
  • 51. • DATEDIFF (datepart , startdate , enddate) Devuelve el número (int) de límites datepart de fecha y hora entre dos fechas especificadas. SELECT DATEDIFF(YEAR,hire_date,GETDATE()) FROM employee • DATEADD (datepart , number , date) Devuelve un nuevo valor datetime agregando un intervalo al datepart del date especificado. El tipo de datos del argumento date. • ISDATE (expression) Determina si una expresión de entrada date es un valor de fecha.
  • 52. 52 Ejercicios • Calcular la edad de los alumnos • Número de alumnos por lugar de nacimiento • Promedio de calificaciones por alumno
  • 53. Vistas • Tiene un comportamiento similar al de una tabla base, excepto en las limitaciones de actualización. • Sintaxis 53 CREATE [OR REPLACE] VIEW <vista> [(columna1, ..., columna n)] AS <Sentencia SQL>
  • 54. • Una vista es un tipo especial de tabla en la que sus datos se derivan de otras tablas, mediante la evaluación dinámica de una consulta. • Elementos – Nombre: único en el esquema relacional. – Atributos: forman las columnas de la vista – Definición: consiste en una sentencia SELECT sobre otras tablas o vistas. Vistas (VIEW)
  • 55. Vistas • Tiene un comportamiento similar al de una tabla base, excepto en las limitaciones de actualización. • Sintaxis CREATE [OR REPLACE] VIEW <vista> [(columna1, ..., columna n)] AS <Sentencia SQL>
  • 56. Stored Procedures • Por medio de procedimientos almacenados, Stored Procedures (SP), el sistema de base de datos es capaz de ejecutar un conjunto de instrucciones coordinadas entre sí que afectan la información con el fin de lograr un objetivo dentro del sistema. Los procedimientos se asemejan a construcciones en otros lenguajes de programación porque pueden: – Aceptar parámetros de entrada y devolver múltiples valores en forma de parámetros de salida al programa de llamada. – Contiene enunciados de programación que realizan operaciones en la base de datos. Estos incluyen llamar a otros procedimientos. – Devuelva un valor de estado a un programa de llamada para indicar el éxito o el fracaso (y el motivo del error).
  • 57. Stored Procedures Algunos beneficios del uso de procedimientos. • Reducción del tráfico del servidor / red del cliente. Los comandos en un procedimiento se ejecutan como un único lote de código. Esto puede reducir significativamente el tráfico de red entre el servidor y el cliente porque solo la llamada para ejecutar el procedimiento se envía a través de la red. Sin la encapsulación de códigos provista por un procedimiento, cada línea individual de código tendría que cruzar la red. • Mayor seguridad Varios usuarios y programas clientes pueden realizar operaciones en objetos de base de datos subyacentes a través de un procedimiento, incluso si los usuarios y programas no tienen permisos directos sobre esos objetos subyacentes. El procedimiento controla qué procesos y actividades se realizan y protege los objetos de base de datos subyacentes. Esto elimina el requisito de otorgar permisos a nivel de objeto individual y simplifica las capas de seguridad.
  • 58. Stored Procedures CREATE [ OR ALTER]PROCEDURE procedure_name @parameter data_type AS BEGIN <sql_statement> END ; EXECUTE PROCEDURE_NAME EXEC
  • 59. FUNCTION Una función definida por el usuario es una rutina de SQL que acepta parámetros, realiza una acción, como un cálculo complejo, y devuelve el resultado de esa acción como un valor. El valor devuelto por una función puede ser un valor escalar (único) o una tabla.
  • 60. FUNCTION Sintaxis para funciones escalares: CREATE FUNCTION [ schema_name. ] function_name (@parameter_name parameter_data_type, . . . n) RETURNS return_data_type AS BEGIN function_body RETURN scalar_expression END;
  • 61. FUNCTION Ejemplo: Función que devuelve un valor escalar CREATE FUNCTION dbo.ordenesEmpleado (@employeeID int) RETURNS int AS BEGIN DECLARE @orders int; SELECT @orders = ( SELECT COUNT(orderID) FROM Orders WHERE employeeID = @employeeID ); RETURN @orders; END;
  • 62. FUNCTION Sintaxis para funciones que devuelven una tabla: CREATE FUNCTION [ schema_name. ] function_name (@parameter_name parameter_data_type, . . . n) RETURNS TABLE AS RETURN ( select_stmt ) ;
  • 63. Disparador o Desencadenador (Trigger) • Es un tipo de procedimiento almacenado que se ejecuta cuando se intenta modificar los datos de una tabla (o vista). • Un trigger se asocia a un evento (inserción, actualización o borrado) sobre una tabla. • La diferencia con los procedimientos almacenados del sistema es que los triggers: - no pueden ser invocados directamente; al intentar modificar los datos de una tabla para la que se ha definido un disparador, el disparador se ejecuta automáticamente. - no reciben y retornan parámetros. - son apropiados para mantener la integridad de los datos, no para obtener resultados de consultas.
  • 64. Sintaxis: create trigger NOMBREDISPARADOR on NOMBRETABLA o vista for | after -- son equivalentes, momento del disparo Accion -- insert, update o delete as SENTENCIAS create trigger NOMBREDISPARADOR on NOMBRETABLA o vista after o instead of -- momento de disparo Accion -- insert, update o delete as SENTENCIAS Disparador o Desencadenador (Trigger)
  • 65. 65
  • 66. 66