Está en la página 1de 47

S Q L

STRUCTURE
QUERY
LANGUAGE
Ing. Wiler Ponce Benites
Fac. Ing. Industrial - UNMSM
2016
S Q L

Contenido:
Consultas de Seleccin
Criterios de Seleccin
Agrupamiento de registros
Consultas de eliminacin
SQL: Structure Query Language
El lenguaje de consultas estructurado SQL, es un
lenguaje de base de datos normalizado, utilizado por
el motor de base de datos de Microsoft Jet.

SQL se utiliza para crear objetos QueryDef, como el


argumento de origen del mtodo OpenRecordSet y
como la propiedad RecordSource del control de datos.

Tambin se puede utilizar con el mtodo Ejecute para


crear y manipular directamente las bases de datos Jet
y crear consultas SQL de paso a travs para
manipular base de datos remotas cliente servidor
Componentes del SQL
El lenguaje SQL est compuesto por:
Comandos,
Clusulas,
Operadores y
Funciones de agregado.

Estos elementos se combinan en las instrucciones para:


Crear,
Actualizar y
Manipular las TABLAS de la base de datos
Comandos SQL
Existen dos tipos de comandos SQL:

DDL
DATA DEFINITION LANGUAGE

DML
DATA MANIPULATION LANGUAGE
Comandos DDL
Los DDL que permiten crear y definir
nuevas bases de datos, campos e
ndices.
Como crear una Base de Datos
USE master;
GO;

CREATE DATABASE bdZegarraAngel


ON PRIMARY (
NAME = bdZegarraAngel,
FILENAME = 'G:\BDExParcial20162\bdZegarraAngel.mdf',
SIZE = 3MB,
MAXSIZE = 5MB,
FILEGROWTH = 2MB)
LOG ON (
NAME = bdZegarraAngel_log,
FILENAME = 'G:\BDExParcial20162\bdZegarraAngel_Log.ldf',
SIZE = 1MB,
MAXSIZE = unlimited,
FILEGROWTH = 10%);
GO
Eliminar una tabla con restricciones

Este caso se d, cuando se crearon tablas y


relaciones y tenemos que eliminar las tablas,
entonces:
Primero eliminar la restriccin, as:
ALTER TABLE <yourTable>
DROP CONSTRAINT <Name_of_Constraint>
Segundo, eliminar la tabla:
DROP TABLE <yourtable>
Prctica DDL
En la Base de datos Autoseguro,
realizar las siguientes modificaciones
Comandos DML
Los comandos DML que permiten
generar consultas para ordenar,
filtrar y extraer datos de las bases de
datos.
Clusulas
Las clusulas son condiciones de modificacin
utilizadas para definir los datos que desea
seleccionar o manipular:
Operadores Lgicos
Operadores de Comparacin
Funciones de Agregado
Las funciones de agregado se usan dentro de una
clusula SELECT en grupos de registros para
devolver un nico valor que se aplica a un grupo
de registros.
Ordenar Registros
En predicado se incluye entre la clausula y el primer nombre
del campo a recuperar.

Los posibles predicados son:


Consultas de Seleccin
La consultas de seleccin se utilizan para
indicar al motor de datos que devuelva
informacin de las bases de datos, esta
informacin es devuelta en forma de un
conjunto de registros que se pueden
almacenar en un objeto recordset.

Este conjunto de registros es modificable.


Consultas bsicas
La sintaxis bsica de una consulta de seleccin es:
SELECT campos FROM tabla;
En donde campos es la lista de campos que se desean
recuperar y tabla es el origen de los mismos,

Por ejemplo:
SELECT NombreCompaa,Telfono, Fax
FROM Clientes;
Esta consulta devuelve un recordset con los campos:
NombreCompaa,Telfono y Fax
de la tabla:
Clientes;
Ordenar los registros
Adicionalmente se puede especificar el orden eque se desean recuperar los registros
de las tablas mediante la clusula ORDER BY <lista de campos>. En donde <lista de
campos> representa los campos a ordenar. Ejemplo:

SELECT CdPostal,NombreCompaa,Telfono FROM Clientes ORDER BY


NombreCompaa;

Esta consulta devuelve los campos CdPostal,NombreCompaa,Telfono de la


tabla Clientes ordenados por el campo NombreCompaa.

Se pueden ordenar los registros por ms de un campo, como por ejemplo:

SELECT CdPostal,NombreCompaa,Telfono FROM Clientes ORDER BY


CdPostal,NombreCompaa;

Incluso se puede especificar el orden de los registros: ascendente mediante la clusula ASC que es
el valor por defecto o des para descendente. Ejemplo;

SELECT CdPostal,NombreCompaa,Telfono FROM Clientes ORDER BY


CdPostal DESC,NombreCompaa ASC;
Ordenar los registros
Select * from empleados;

Select top 25 Nombre, Apellidos from empleados order by


nombre desc;

Select top 10 percent nombre, apellidos from empleados order


by FechaNacimiento desc;

Select Distinct Apellidos from empleados;

Select Apellidos As empleados from empleados;

Select distinct Apellidos As empleados from empleados;


Criterios de Seleccin
Ya vimos la forma de recuperar registros de las tablas, las formas
empleadas devolvan todos los registros de la mencionada tabla. A lo largo
de este capitulo se estudiarn las posibilidades de filtrar los registros con
el fin de recuperar solamente aquellos que cumplan una condicin
preestablecida.

Antes de comenzar este captulo hay que recalcar tres detalles de vital
importancia:

1. Cada vez que se desee establecer una condicin referida a un campo de


texto la condicin de bsqueda debe ir encerrada entre comillas simples.

2. No es posible establecer condiciones de bsqueda en los campos memo y

3. Las fechas se deben escribir siempre en formato SIGUIENTE:


Criterios de Seleccin
SELECT * FROM Pedidos WHERE FechaEnvo =
CAST('28/11/1994' AS DATETIME)

SELECT IdPedido, IdCliente,


FechaPedido,FechaEntrega,FechaEnvo FROM
Pedidos WHERE FechaEnvo =
CAST('28/11/1994' AS DATETIME)

SELECT IdPedido, IdCliente,


FechaPedido,FechaEntrega,FechaEnvo FROM
Pedidos WHERE FechaEnvo =
CAST('27/11/1995' AS DATETIME)
Operadores Lgicos

Los operadores lgicos soportados pro SQL son:


AND, OR, XOR, Eqv, Imp, Is y Not. A excepcin
de los dos ltimos todos poseen la siguiente
sintaxis:

<expresin1> operador
<expresion2>

La siguiente tabla muestra los diferentes posibles


resultados:
Si a cualquiera de las anteriores condiciones le anteponemos el
operador NOT el resultado de la operacin ser el contrario al
devuelto sin el operador NOT.

El ultimo operador denominado Is se emplea para comparar dos


variables de tipo objeto <Objeto1> Is <Objeto2>, este operador
devuelve verdad si los dos objetos son iguales.

SELECT * FROM Productos WHERE PrecioUnidad > 25 AND


PrecioUnidad < 50;

SELECT * FROM Productos WHERE PrecioUnidad > 25 AND


PrecioUnidad < 50 OR PrecioUnidad = 10;

SELECT * FROM Productos WHERE IdCategora = 8;

SELECT * FROM Productos WHERE NOT IdCategora = 8 and


IdCategora <= 3;

SELECT * FROM Productos WHERE (IdCategora> 5 AND


IdCategora < 8) OR (Suspendido = 0 AND UnidadesEnExistencia
<= 35);
Operadores Lgicos
Para indicar que deseamos recuperar los registros
segn el intervalo de valores de un campo
emplearemos el operador BETWEEN, cuya sintaxis
es:
Campo [Not] BETWEEN valor1 And Valor2
La condicin Not es opcional.
En este caso la consulta devolvera los registros que
contengan en campo un valor incluido en el intervalo
valor1 y valor2.
Si anteponemos la condicin Not, devolver aquellos
valores no includos en el intervalo.

SELECT * FROM Pedidos WHERE CdPostalDestinatario


BETWEEN 28000 And 28999;
El operador LIKE
Se utiliza para comparar una expresin de
cadena con un modelo en una expresin SQL.
Su sintaxis es:

Expresin LIKE modelo


En donde: Expresin, es una cadena

Modelo o campo contra el que se compara


Expresin.
Se puede utilizar el operador LIKE para encontrar
valores en los campos que coincidan con el
modelo especificado.
Por modelo puede especificar un valor completo
(Ana Mara) o se pueden utilizar caracteres
comodn como los reconocidos por el sistema
operativo para encontrar un rango de valores:
LIKE An%.
El operador LIKE
select NombreContacto from Proveedores order by
NombreContacto;

select NombreContacto from Proveedores Where


NombreContacto Like 'Cha%;

select NombreContacto from Proveedores Where


NombreContacto Like '%Cha%;
El operador LIKE

El operador LIKE se puede utilizar en una expresin


para comparar un valor de un campo con una
expresin de cadena. Por ejemplo: si introduce LIKE
C* en una consulta SQL, la consulta devuelve todos
los valores de campo que comiencen por la letra C.

En una consulta con parmetros, puede hacer que el


usuario escriba el modelo que se va a utilizar.
El operador LIKE
El ejemplo siguiente devuelve los datos que
comienza con la letra P seguido de cualquier letra
entre A y F y de tres dgitos:

LIKE P%###

SELECT IdPedido, Destinatario, PasDestinatario FROM Pedidos


WHERE Destinatario LIKE '%Deli%'

Este ejemplo, devuelve los campos cuyo


contenido empiece con la letra de la A a la D
seguidas de cualquier cadena:

LIKE [A-D]%
El operador In
Este operador devuelve aquellos
registros cuyo campo indicado coincide
con alguno de los de una lista.

Su sintaxis es:
Expresin [Not] In (Valor1, Valor2,)

SELECT * FROM Orders WHERE ShipCity


In (Reims, Munster, Ro de Janeiro)
El operador In
SELECT Destinatario,FechaPedido, FechaEntrega,PasDestinatario
FROM Pedidos
WHERE PasDestinatario In ('Irlanda', 'Venezuela', 'Ro de
Janeiro')
ORDER BY Destinatario DESC;

SELECT Destinatario,FechaPedido, FechaEntrega,PasDestinatario


FROM Pedidos
WHERE PasDestinatario In ('Irlanda', 'Venezuela', 'Ro de
Janeiro')
ORDER BY PasDestinatario, Destinatario DESC;
El operador In
SELECT Destinatario,FechaPedido, FechaEntrega,PasDestinatario
FROM Pedidos
WHERE PasDestinatario Not In ('Irlanda', 'Venezuela', 'Ro de
Janeiro')
ORDER BY Destinatario DESC;

SELECT Destinatario,FechaPedido, FechaEntrega,PasDestinatario


FROM Pedidos
WHERE PasDestinatario Not In ('Irlanda', 'Venezuela', 'Ro de
Janeiro')
ORDER BY PasDestinatario, Destinatario DESC;
Clusula WHERE
La clusula WHERE puede usarse para
determinar que registros de las tablas
enumeradas en la clusula FROM aparecern en
los resultados de la instruccin SELECT.

Despus de escribir esta clusula se deben


especificar las condiciones expuestas en lo
manifestado anteriormente.

Si no se emplea esta clusula, la consulta


devolver todas las filas de la tabla.

WHERE es opcional, pero cuando aparece debe ir


a continuacin de FROM.
SELECT IdProducto, UnidadesEnExistencia FROM
Productos WHERE UnidadesEnExistencia <=
UnidadesEnPedido

SELECT Apellidos, Nombre, Extensin FROM


Empleados WHERE Extensin > 4000

SELECT Apellidos, Nombre, Extensin FROM


Empleados WHERE Apellidos = 'King'

SELECT Apellidos, Nombre, Extensin FROM


Empleados WHERE Apellidos LIKE 'S%'
SELECT Apellidos, Nombre FROM Empleados WHERE Sueldo
BETWEEN 2000 And 3000

SELECT Apellidos, Nombre FROM Empleados WHERE Apellidos


BETWEEN Lon And Tol

SELECT IdPedido, IdCliente, FechaPedido,FechaEntrega,FechaEnvo


FROM Pedidos WHERE FechaPedido BETWEEN CAST('01/10/1995'
AS DATETIME) And CAST('10/10/1995' AS DATETIME)

SELECT Apellidos, Nombre, Ciudad FROM Empleados WHERE


Apellidos BETWEEN Ciudad IN (Lima, Arequipa, Huancayo,
Cusco)
Resumen
El lenguaje SQL

IMPORTANCIA:
Es el lenguaje ms extendido.
Estandarizado.

COMPONENTES:
Un lenguaje de definicin de datos (DDL).
Un lenguage de manipulacin de datos (DML).

36
El lenguaje SQL: manipulacin de datos

ACCIONES BSICAS:
Consulta de informacin: sentencias SELECT
Insercin de informacin: sentencias INSERT
Actualizacin de informacin: sentencias UPDATE
Eliminacin de informacin: sentencias DELETE

CONSULTAS BSICAS:

SELECT atributos FROM tablas WHERE condiciones ORDER BY atributos

ejemplo:

SELECT * FROM TablaClientes WHERE dni=32777555 ORDER BY nombre

37
El lenguaje SQL: manipulacin de datos (II)

PALABRAS RESERVADAS:
SELECT: especifica las columnas (atributos) que se quieren consultar.
DISTINCT: indica que no deben aparecer filas repetidas en el resultado:
p. ej: SELECT DISTINCT nombre, apellido

FROM: especifica las tablas que se van a utilizar (1 varias)


p. ej: FROM TablaClientes, TablaUsuarios, TablaSalarios

WHERE: elimina las filas que no cumplen las condiciones especificadas.


p. ej: WHERE edad>25 AND ciudad=Lugo AND comentario IS NOT NULL
ORDER BY: indica los atributos que determinan el orden del resultado.

p. ej: ORDER BY edad ASC, sueldo DESC, hijos

38
El lenguaje SQL: manipulacin de datos (III)

FUNCIONES AGREGADAS:
COUNT: devuelve el nmero de filas que responden a las condiciones
SELECT COUNT (sueldo) FROM TablaSueldos
SUM: devuenve la suma del atributo seleccionado
SELECT SUM (salario) WHERE dni=32876543
MAX (MIN): devuelve el mximo (mnimo) del campo seleccionado
SELECT MAX (edad) WHERE salario>2000
AVG: devuelve el promedio de una columna determinada
SELECT AVG (edad);

39
El lenguaje SQL: manipulacin de datos (III)

JOIN SIMPLE:
SELECT TablaClientes.nombre, TablaTelefonos.telefono
FROM TablaClientes, TablaTelefonos
WHERE TablaClientes.dni=TablaTelefonos.dni

Cuando no hay atributos con el mismo nombre en las tablas implicadas, se


puede omitir el nombre de la tabla el la especificacin de los atributos:

SELECT nombre, telefono FROM TablaClientes, TablaTelefonos


WHERE TablaClientes.dni=TablaTelefonos.dni

40
El lenguaje SQL: manipulacin de datos (IV)

COMBINACIN DE TABLAS RESULTADOS:


UNION: concatena las filas resultantes de varias consultas
SELECT nombre, direccion FROM TablaClientes
UNION
SELECT nombre , direccion FROM TablaEmpleados

INTERSECT: slo devuelve las filas comunes de ambas consultas


SELECT nombre, direccion FROM TablaClientes
INTERSECT
SELECT nombre , direccion FROM TablaEmpleados

41
El lenguaje SQL: manipulacin de datos (V)

COMBINACIN DE TABLAS RESULTADOS:


EXCEPT: elimina las filas del resultado de la primera consulta que coinciden
con las de la segunda:

SELECT nombre, direccion FROM TablaClientes


EXCEPT
SELECT nombre , direccion FROM TablaEmpleados

42
El lenguaje SQL: manipulacin de datos (VI)

INSERCIN DE VALORES:

INSERT INTO TablaEmpleados (nombre, apellido, dni)


VALUES (Ana ,Garca, 23456789)

INSERT INTO TablaMorosos (nombre, dni)


SELECT nombre, dni FROM TablaClientes WHERE deuda > 0

43
El lenguaje SQL: manipulacin de datos (VI)

ACTUALIZACIN DE VALORES:

UPDATE TablaEmpleados SET sueldo = sueldo * 1.04

UPDATE TablaEmpleados SET sueldo = 100000, cargo = director


WHERE dni = 22333444

44
El lenguaje SQL: manipulacin de datos (VII)

ELIMINACIN DE VALORES:

todas las filas:


DELETE from TablaAlumnosAprobados

filas seleccionadas:
DELETE from TablaEmpleados WHERE dni = 33777888

45
El lenguaje SQL: definicin de datos

EJEMPLO DE TIPOS DE DATOS:

CHAR (un carcter), VARCHAR (cadena de caracteres), FLOAT (nmero


real), INTEGER (nmero entero), DATE (fecha)

EJEMPLO DE CREACIN DE UNA TABLA


CREATE TABLE TablaEmpleados ( dni VARCHAR(8) NOT NULL,
nombre VARCHAR(15) NOT NULL,
apellido VARCHAR(15) NOT NULL,
fechaNacimiento DATE)

46
El lenguaje SQL: definicin de datos

Link: Curso SQL

http://www.mailxmail.com/curso-sql

47

También podría gustarte