Sei sulla pagina 1di 28

CONCEPTOS GENERALES DE SQL

Clasificación de sentencias SQL

• DDL (Data Description Language)


– Órdenes para crear, modificar o borrar tablas y
relaciones entre ellas
• DCL (Data Control Language)
– Elementos para trabajar en entorno multiusuario
donde es importante la protección de datos,
seguridad, restricciones de acceso, compartición e
integridad de datos
• DML (Data Manipulation Language)
– Recuperación de datos, actualización de datos (añadir,
suprimir o modificar)
DDL (Data Description Language)

Create……

Drop……

Alter……
Creación/Eliminación de Base de Datos y Tablas

Sintaxis:

CREATE DATABASE nombreBaseDatos

DROP DATABASE nombreBaseDatos

CREATE TABLE nombreTabla (campo1 tipo (tamaño) , campo2 tipo (tamaño) , ...
campoN tipo (tamaño) )

DROP TABLE nombreTabla


Creación de tablas (clausulas adicionales)

CREATE TABLE Empleado (


Id_empleado integer not null primary key,
sexo_empleado char(1) check (sexo_empleado in (‘F’,’M’)),
Nombre_empleado varchar(50) not null,
Apellidos_empleado varchar(50) not null,
id_profesion integer foreign key (id_profesion) references profesion
(id_profesion),
FecNac_empleado datetime null);

Observación
“not null”: No puede dejarse vacía esa columna
“primary key”: Define una identificación única para cada registro (clave principal)
“check”: Define un dominio limitado para ese campo.
“foreign key”: Define las claves foráneas
Modificar el Diseño de una Tabla

Modificar el diseño de una tabla ya existente implica poder modificar los


campos o los índices existentes.
Su sintaxis es:

ALTER TABLE tabla ADD COLUMN campo tipodecampo(tamaño)

ALTER TABLE tabla DROP COLUMN campo


Ejemplos:

ALTER TABLE Empleados ADD COLUMN mail_empleado varchar(25);


Agrega un campo mail_empleado de tipo varchar a la tabla Empleados.

ALTER TABLE Empleados DROP COLUMN Salario;


Elimina el campo Salario de la tabla Empleados.
DML (Data Manipulation Language)

Insert……

Update……

Delete……

Select…….
Consultas de Acción : INSERT INTO
Agrega un registro en una tabla. Se la conoce como una consulta de
datos añadidos. Esta consulta puede ser de dos tipo: Insertar un
único registro ó Insertar en una tabla los registros contenidos en
otra tabla.

A) Para insertar un único Registro:

INSERT INTO Tabla (campo1,..., campoN) VALUES (valor1, ..., valorN)

Esta consulta graba en el campo1 el valor1, en el campo2 el valor2 y


así sucesivamente.

Ejemplo:

INSERT INTO Empleados (Nombre, Apellido, Cargo)


VALUES ('Luis', 'Sánchez', ‘Administrativo')
B) Para insertar Registros de otra Tabla:

INSERT INTO TablaDestino (campo1, campo2, ..., campoN)


SELECT TablaOrigen.campo1, TablaOrigen.campo2, ..., TablaOrigen.campoN
FROM TablaOrigen

En este caso se seleccionarán los campos 1,2, ..., n de la TablaOrigen


y se grabarán en los campos 1,2,.., n de la TablaDestino. La condición
SELECT puede incluir la cláusula WHERE para filtrar los registros a
copiar.
Si TablaDestino y TablaOrigen poseen la misma estructura podemos
simplificar la sintaxis a:

INSERT INTO TablaDestino


SELECT TablaOrigen.* FROM TablaOrigen

De esta forma los campos de TablaOrigen se grabarán en


TablaDestino, para realizar esta operación es necesario que todos los
campos de TablaOrigen estén contenidos con igual nombre e igual
tipo en TablaDestino.

Ejemplo:

INSERT INTO Empleados


SELECT * FROM Vendedores WHERE edad >= 30
Consultas de Acción : UPDATE
Crea una consulta de actualización que cambia los valores de los campos de
una tabla especificada basándose en un criterio específico.

Su sintaxis es:

UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, ..CampoN=ValorN


WHERE Criterio

UPDATE es especialmente útil cuando se desea cambiar un gran número de


registros. Puede cambiar varios campos a la vez.

El ejemplo siguiente incrementa los valores Cantidad pedidos en un 10 por


ciento y los valores Transporte en un 3 por ciento para aquellos que se hayan
enviado a España.:

UPDATE Pedidos SET cantidad_Pedido = cantidad_Pedido * 1.1,


Transporte = Transporte * 1.03
WHERE PaisEnvio = ‘ESPAÑA’
UPDATE no genera ningún resultado. Para saber qué registros se van a
cambiar, hay que examinar primero el resultado de una consulta de
selección que utilice el mismo criterio y después ejecutar la consulta de
actualización.

UPDATE Empleados SET Grado = 5 WHERE Grado = 2

UPDATE Productos SET Precio_producto = Precio_producto * 1.1


WHERE cod_proveedor = 8 AND familia_producto = 3

IMPORTANTE: Si en una consulta de actualización suprimimos la


cláusula WHERE todos los registros de la tabla señalada serán
actualizados.

UPDATE Empleados SET Salario = Salario * 1.1


Consultas de Acción : DELETE

Crea una consulta de eliminación que elimina los registros de una o más
de las tablas listadas en la cláusula FROM que satisfagan la cláusula
WHERE. Esta consulta elimina los registros completos, no es posible
eliminar el contenido de algún campo en concreto.

Su sintaxis es:

DELETE FROM Tabla WHERE criterio


Una vez que se han eliminado los registros utilizando una consulta
de borrado, no puede deshacer la operación. Si desea saber qué
registros se eliminarán, primero examine los resultados de una
consulta de selección que utilice el mismo criterio y después
ejecute la consulta de borrado. Mantenga copias de seguridad de
sus datos en todo momento. Si elimina los registros equivocados
podrá recuperarlos desde las copias de seguridad.

DELETE FROM Empleados WHERE Cargo = 'Vendedor'


Ejercicio: Dada la tabla EMPLEADO
nombre apellido id edad ciudad pais
Juan Juárez 99980 45 Palencia España
María Juárez 99982 25 Palencia España
Enrique Esteban 88232 32 Oporto Portugal
María Antonia Esteban 88233 32 Pontevedra España
Beatriz Hernández 98002 42 Córdoba España
Sebastián Suárez 92001 23 Guadalajara España
Gustavo García 22322 35 Badajoz España
María Antonia Martínez 32326 52 Toledo España
Erica Zamora 32327 60 Santander España
Leandro Boada 32380 22 Peñafiel España
Ernesto Clavel 32382 22 Oporto Portugal

• Crear la tabla en SQL, según los tipos de datos entregados por profesor .
• Insertar los registros mostrados.
• Modificar el nombre de la ciudad ‘Palencia’ por ´Valencia’
• Eliminar el registro de id=32380
Consultas SQL: Select…
La orden Select se usa para consultar la base de datos y
recuperar datos que cumplan el criterio especificado.

SELECT <lista de atributos>


FROM <lista de tablas>
WHERE <condición>

Por defecto es ALL.


DISTINCT descarta registros duplicados para las columnas que se especifiquen
Consultas sencillas

SELECT columna1, columna2, ..., columnan


FROM tabla1, tabla2, ..., tablam
WHERE condiciones

Obs: comodín * (SELECT * FROM tabla)

Ejemplos válidos
SELECT ALL col1,col2,col3 FROM tabla;
SELECT col1,col2,col3 FROM tabla;
SELECT DISTINCT col1 FROM tabla;
SELECT col1,col2 FROM tabla WHERE col2=0
Operadores Lógicos

Operador Uso

AND Es el "y" lógico. Evalua dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.

OR Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.

NOT Negación lógica. Devuelve el valor contrario de la expresión.

Operadores de Comparación

Operador Uso
< Menor que
> Mayor que
<> Distinto de
<= Menor ó Igual que
>= Mayor ó Igual que
= Igual que
BETWEEN Utilizado para especificar un intervalo de valores.(tb. NOT BETWEEN)
LIKE Utilizado en la comparación de un modelo
Utilizado para especificar registros de una base de datos
IN
Ordenamiento:
• Se hace mediante la cláusula ORDER BY y siempre que
aparezca, es la última en una consulta.

SELECT columnas
FROM tablas
WHERE condiciones
ORDER BY columna o expresión [ASC/DESC]

Por defecto el ordenamiento es ascendente.


Se permite ordenar datos tipo carácter, numérico y fecha.

SELECT campo1, campo2


FROM tabla1
WHERE condiciones
ORDER BY campo2, campo1
Consultas con Predicado

• El predicado se incluye entre la claúsula y el primer nombre


del campo a recuperar, los posibles predicados son:

Predicado Descripción

ALL Devuelve todos los campos de la tabla .Si no se incluye ninguno de los predicados se asume ALL

Devuelve un determinado número de registros de la tabla .Devuelve un cierto número de registros


TOP
que entran entre al principio o al final de un rango especificado por una cláusula ORDER BY.

DISTINCT Omite los registros que contienen datos duplicados en los campos seleccionados
Ejemplos:

SELECT ALL FROM Empleados


SELECT * FROM Empleados

SELECT TOP 25 Nombre, Apellido FROM Estudiantes


ORDER BY Nota DESC

Si no se incluye la cláusula ORDER BY, la consulta devolverá un conjunto arbitrario de 25


registros de la tabla Estudiantes .El predicado TOP no elige entre valores iguales. En el ejemplo
anterior, si la nota media número 25 y la 26 son iguales, la consulta devolverá 26 registros.

Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros
que caen al principio o al final de un rango especificado por la cláusula ORDER BY. Supongamos
que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso:

SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes


ORDER BY Nota DESC

SELECT DISTINCT Apellido FROM Empleados

Si la tabla empleados contiene dos registros: Antonio López y Marta López el ejemplo del
predicado DISTINCT devuelve un único registro con el valor López en el campo Apellido ya que
busca no duplicados en dicho campo.
Operador condicional BETWEEN
• Se utiliza para comprobar si un valor está comprendido entre dos valores
• Formato:
– SELECT columna1, columna2
FROM tablas
WHERE columna3 BETWEEN valor1 AND valor2

– Ejemplo:
• SELECT id_emp, edad_emp, apellido_emp, salario_emp
FROM empleados
WHERE edad_emp BETWEEN 30 AND 40

• Se podría haber utilizado también <= y >=. Sería equivalente


Operador condicional IN

• Se utiliza para comprobar si un valor está contenido en una lista de


valores.

• Formato:
– SELECT columna1, columna2
FROM tablas
WHERE columna3 IN (lista-de-valores)

– Ejemplo:
• SELECT id_empo, apellido_emp, salario_emp
FROM empleados
WHERE apellido_emp IN ('Hernandez', ‘Juárez', ‘González', 'Ruiz')

• Se podría haber escrito con varios OR. Sería equivalente


Operador condicional LIKE

• Facilita la consulta de atributos de campos con cadenas de caracteres bajo


patrones o comodines.
Estos pueden ser:
_ : Representa un solo carácter, en la posición que se ubique en la consulta.
% : Metacaracter que representa cero o más caracteres en la posición que se
ubique en la consulta.

• Formato:
SELECT columna1, columna2
FROM tablas
WHERE columna3 LIKE {patrón}

Ejemplo patrón:
LIKE '%O' : Se refiere a todos los terminados en O.
LIKE 'C---' : Señala cadenas que inician con C y tienen 3 caracteres mas.
Is Null / Is Not Null

Se puede probar si un registro posee o no un VALOR NULO .

Ejemplos:

select *
from cliente
where telefono is null

select *
from cliente
where telefono is not null
Uso de Not

• Is not null SELECT rut, edad, nombre, apellido, salario


FROM empleados
• Not between WHERE edad IS NOT NULL;
• Not in
SELECT rut, edad, nombre, apellido, salario
• Not like FROM empleados
WHERE edad NOT BETWEEN 30 AND 40;

SELECT rut, edad, nombre, apellido, salario


FROM empleados
WHERE edad NOT IN (30,40,50);

SELECT rut, edad, nombre, apellido, salario


FROM empleados
WHERE apellido NOT LIKE “%a”;
Ejercicio:

Dada la tabla EMPLEADO:


nombre apellido id edad ciudad pais
Juan Juárez 99980 45 Valencia España
María Juárez 99982 25 Valencia España
Enrique Esteban 88232 32 Oporto Portugal
María Antonia Esteban 88233 32 Pontevedra España
Beatriz Hernández 98002 42 Córdoba España
Sebastián Suárez 92001 23 Guadalajara España
Gustavo García 22322 35 Badajoz España
María Antonia Martínez 32326 52 Toledo España
Erica Zamora 32327 60 Santander España
Ernesto Clavel 32382 22 Oporto Portugal
Resolver:

• Mostrar el nombre y la edad de todos los empleados de la tabla


• Seleccionar todas las columnas para todos los empleados de la tabla
ordenados por apellido.
• Mostrar el nombre, apellido y ciudad de todos los empleados que no son
de Valencia
• Mostrar todas las columnas para todos los que son menores de 40 años
ordenados por apellido.
• Mostrar todas las columnas para todos los que son mayores de 40 años y
viven en Valencia.
• Mostrar el nombre y apellido de todos los empleados cuyo apellido
termina en “a”
• Mostrar todas las columnas para todos los empleados donde su nombre
es igual a “María” ordenados por nombre en forma descendente.
• Mostrar todas las columnas para todos los empleados que su nombre
contiene “María”
• Seleccione los 5 empleados de menor edad.

Potrebbero piacerti anche