Sie sind auf Seite 1von 30

SQL

Qu es SQL?

SQL

Structured Query Language


Lenguaje de consulta estructurado
rdenes - comandos SQL

Lenguaje de acceso a bases de datos relacionales


Es un estndar para sistemas de gestin de bases de
datos relacionales

Oracle, Sybase, Microsoft SQL Server, Access, Ingres,


Extensiones propietarias
En Base de Datos Libres, MySQL, PostgresSQL.

SQL

Clasificacin de sentencias SQL

DDL (Data Definition Language)

DCL (Data Control Language)

rdenes para definir, modificar o borrar tablas y relaciones


entre ellas
Elementos para trabajar en entorno multiusuario donde es
importante la proteccin de datos, seguridad, restricciones de
acceso, comparticin e integridad de datos

DML (Data Manipulation Language)

Recuperacin de datos, actualizacin de datos (aadir,


suprimir o modificar)

SQL

Sintaxis

Verbo + clusulas (obligatorias y opcionales)


DIAGRAMA SINTCTICO

Ejemplos vlidos
SELECT ALL col1,col2,col3 FROM mitabla;
SELECT col1,col2,col3 FROM mitabla;
SELECT DISTINCT col1 FROM mitabla;
SELECT col1,col2 FROM mitabla WHERE col2=0
SQL

select

La orden select se usa para consultar la base de datos


y recuperar datos que cumplan el criterio que se
especifique
Formato:

Select column1[,column2,etc] from tablename [where condition]


Columnas que se devolvern en los resultados
* implica Tod@s

Condiciones que se pueden usar:

=, >, <, >=, <=, <>


LIKE

Ejemplo: select nombre, apellido, ciudad from listado where nombre LIKE L
%;
% es un comodn que significa cualquier carcter
Ms ejemplos:
select nombre, apellido from listado where apellido LIKE %s;
select * from listado where nombre=Jess;

SQL

Ejercicio

Tabla empinfo
Primero averiguar el resultado y luego ejecutarlo

select nombre, apellido, ciudad from empinfo;


select apellido, ciudad, edad from empinfo where edad > 30;
select nombre, apellido, ciudad, pais from empinfo where nombre LIKE 'J%';
select * from empinfo;
select nombre, apellido from empinfo where apellido LIKE '%z';
select nombre, apellido, edad from empinfo where apellido LIKE '%re%';
select * from empinfo where pais= Espaa';

SQL

Ejercicios

Escribir rdenes select para:


1.
2.
3.
4.
5.
6.

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


Mostrar el nombre, apellido y ciudad de todos los que no son de Potosi
Mostrar todas las columnas para todos los que son mayores de 40 aos
Mostrar el nombre y apellido de todos cuyo apellido termina en a
Mostrar todas las columnas para todos los que su nombre es igual a Mara
Mostrar todas las columnas para todos los que su nombre contiene Mara

SQL

Creacin de tablas

Qu campos la forman
De qu tipo van a ser (entero, cadena, fecha, etc)

VARCHAR(NMaxChar)

CHAR(NMaxChar)

Hora

TIMESTAMP

Fecha

TIME

Nmero real con x dgitos, y de las cuales son decimales

DATE

Entero de 16 bits

NUMERIC(x,y) o NUMBER(x,y)

Entero de 32 bits

SMALLINT

Siempre ocupa NMaxChar caracteres en memoria

Las cadenas se escriben entre comillas simples


INTEGER

Cadena de 1 a NMaxChar caracteres. NMaxChar entre 1 y 255

Fecha & Hora

Restricciones (no nulo, por ejemplo)


SQL

create table

La orden create table se usa para crear una nueva tabla


Formato estandar por ejemplo SQLServer:

create table tablename (column1 data type [constraint], column2


data type [constraint], column3 data type [constraint]);
Ejemplo:

Restricciones (constraints)

Regla asociada con una columna cuyos datos deben seguir

create table empleado (nombre varchar(15), apellido varchar(20), edad


number(3), direccion varchar(30), ciudad varchar(20), pais varchar(20));

unique: No puede haber dos registros con el mismo valor para esa
columna
not null: No puede dejarse vaca esa columna
primary key: Define una identificacin nica para cada registro

Ejercicio

Crear una tabla de empleados con: nombre, apellido, categora, edad


y salario

SQL

insert

La orden insert se usa para insertar o aadir una fila


de datos en la tabla
Formato:

insert into tablename (first_column, , last_column) values


(first_value, , last_value);
Ejemplo:

insert into empleado (nombre, apellido, edad, direccion, ciudad,


pais) values (Juan, Garca, 45, c/ Bolivar 12, Sucre, Bolivia);

SQL

Ejercicio

Inserta en la tabla de empleados los siguientes datos


Empleado(Nombre, Empleo, Edad, Sueldo)

Pablo Garca, Programador, 32, 4530


Daniel Alvarez, Programador II, 45, 7502

Insert into MITabla values (Jose,Ayudante,25,2000)

SQL

update

La orden update se usa para actualizar o cambiar


registros que cumplen un determinado criterio
Formato:

update tablename set columname=newvalue


[,nextcolumn=newvalue2] where columname
OPERATOR value [and|or column OPERATOR value];
Ejemplos:
update agenda set codigo_postal=47 where prefijo=983;
update agenda set apellido=Garca, prefijo=983 where
apellido=Rodrguez;
update empleado set edad=edad+1 where nombre=Mara and
apellido=Prez;

SQL

Ejercicio

Despus de cada update, ejecuta un select para verificar los


cambios
Realiza:
1.
2.
3.
4.
5.
6.
7.

Juana Garca se acaba de casar con Benito Gonzlez. Ella ha


solicitado que se cambie su apellido por Gonzlez
El cumpleaos de Daniel Alvarez es hoy; aade 1 a su edad
Todas las secretarias pasan a llamarse ahora Asistente
administrativo
Todos los que ganan por debajo de 30000 reciben un incremento
anual de 3500
Todos los que ganan por encima de 33500 reciben un incremento
anual de 4500
Todos los de la categora Programador II son promocionados a
Programador III
Todos los de la categora Programador son promocionados a
Programador II
SQL

delete

La orden delete se usa para borrar registros (o filas) de


una tabla
Formato:

delete from tablename where columname OPERATOR


value [and|or column OPERATOR value];
Ejemplos:
delete from empleado; Se borran todos los registros!
delete from empleado where apellido=Prez;
delete from empleado where nombre=Juan or nombre=Luis;

SQL

select avanzado

select [all | distinct] column1[,column2] from


table1[,table2] [where conditions] [group by columnlist] [having conditions] [order by column-list [asc |
desc] ];
Por defecto es ALL. DISTINCT descarta registros
duplicados para las columnas que se especifiquen
Ejemplo:

SELECT DISTINCT edad FROM empinfo; devuelve las


edades nicas de la tabla

SQL

Tablas para
ejercicios
pedidos

clientes

SQL

clienteid
10330
10101
10298
10101
10299
10339
10449
10439
10101
10449
10439
10298
10410
10438
10298
10449
10101
10330
10101
10299
10438
10413
10410
10315
10449
10101
10298
10449
10298
10330

fecha
30-jun-1999
30-jun-1999
1-jul-1999
1-jul-1999
6-jul-1999
27-jul-1999
13-ago-1999
14-ago-1999
18-ago-1999
1-sep-1999
18-sep-1999
19-sep-1999
28-oct-1999
2-nov-1999
1-dic-1999
15-dic-1999
30-dic-1999
1-ene-2000
2-ene-2000
18-ene-2000
18-ene-2000
19-ene-2000
30-ene-2000
2-feb-2000
29-feb-2000
8-mar-2000
18-mar-2000
19-mar-2000
1-abr-2000
19-abr-2000

item
Palo de golf
Balsa
Monopatn
Chaleco salvavidas
Paracadas
Paraguas
Monociclo
Palos de esqu
Impermeable
Botas para nieve
Tienda
Linterna
Saco de dormir
Almohada
Casco
Bicicleta
Hoola Hoop
Linterna flash
Linterna
Colchn hinchable
Tienda
Tumbona
Monociclo
Comps
Linterna flash
Saco de dormir
Navaja
Remo
Orejeras
Pala

cantidad
1
1
1
4
1
1
1
2
1
1
1
2
1
1
1
1
3
4
1
1
1
4
1
1
1
2
1
2
1
1

precio
28.00
58.00
33.00
125.00
1250.00
4.50
180.79
25.50
18.30
45.00
88.00
29.00
89.22
8.50
22.00
380.50
14.75
28.00
16.00
38.00
79.99
32.00
192.50
8.00
4.50
88.70
22.38
40.00
12.50
16.75

Ejercicios de repaso
1.

2.
3.

4.

De la tabla pedidos, selecciona una lista de todos los


items comprados por el clienteid 10449. Muestra el
clienteid, item, y precio
Selecciona todas las columnas de la tabla pedidos
para cualquiera que haya comprado una Tienda
Selecciona el clienteid, fecha e item de la tabla
pedidos para cualquier item que empiece por la letra
P
Selecciona items distintos de la tabla pedidos.

SQL

Funciones de agregacin

Devuelven informacin de una columna

MIN: valor ms pequeo de una columna


MAX: valor ms grande de una columna
SUM: suma de los valores numricos de una columna
AVG: media o promedio de una columna
COUNT: nmero total de valores de una columna
COUNT(*): nmero de filas de una tabla

Ejemplos:

select avg(salario) from empleado;


select avg(salario) from empleado where
categoria=Programador
select count(*) from empleado;

SQL

Tablas para
ejercicios
pedidos

clientes

SQL

clienteid
10330
10101
10298
10101
10299
10339
10449
10439
10101
10449
10439
10298
10410
10438
10298
10449
10101
10330
10101
10299
10438
10413
10410
10315
10449
10101
10298
10449
10298
10330

fecha
30-jun-1999
30-jun-1999
1-jul-1999
1-jul-1999
6-jul-1999
27-jul-1999
13-ago-1999
14-ago-1999
18-ago-1999
1-sep-1999
18-sep-1999
19-sep-1999
28-oct-1999
2-nov-1999
1-dic-1999
15-dic-1999
30-dic-1999
1-ene-2000
2-ene-2000
18-ene-2000
18-ene-2000
19-ene-2000
30-ene-2000
2-feb-2000
29-feb-2000
8-mar-2000
18-mar-2000
19-mar-2000
1-abr-2000
19-abr-2000

item
Palo de golf
Balsa
Monopatn
Chaleco salvavidas
Paracadas
Paraguas
Monociclo
Palos de esqu
Impermeable
Botas para nieve
Tienda
Linterna
Saco de dormir
Almohada
Casco
Bicicleta
Hoola Hoop
Linterna flash
Linterna
Colchn hinchable
Tienda
Tumbona
Monociclo
Comps
Linterna flash
Saco de dormir
Navaja
Remo
Orejeras
Pala

cantidad
1
1
1
4
1
1
1
2
1
1
1
2
1
1
1
1
3
4
1
1
1
4
1
1
1
2
1
2
1
1

precio
28.00
58.00
33.00
125.00
1250.00
4.50
180.79
25.50
18.30
45.00
88.00
29.00
89.22
8.50
22.00
380.50
14.75
28.00
16.00
38.00
79.99
32.00
192.50
8.00
4.50
88.70
22.38
40.00
12.50
16.75

Ejercicios
1.
2.
3.
4.

Selecciona el precio mximo de cualquier item de la


tabla pedidos
Selecciona el precio medio de los items que fueron
comprados en el mes de diciembre
Cual es el nmero total de filas de la tabla pedidos?
Para todas las tiendas de la tabla pedidos, cual es el
precio de la ms barata?

SQL

Clusula GROUP BY

La clusula GROUP BY rene todas las filas que contienen datos


en las columnas especificadas y permite ejecutar funciones de
agregacin en una o ms columnas
Formato ejemplo:

select column1,SUM(column2) from list-of-tables group by columnlist

Ejemplo:

SELECT max(salario), dept FROM empleados GROUP BY dept;


Lista de los salarios ms altos de cada departamento
La salida sern los salarios y los departamentos correspondientes
SELECT cantidad, max(precio) FROM pedidos GROUP BY cantidad;

SQL

Clusula HAVING

Permite especificar condiciones para las filas de cada


grupo. Va despus de GROUP BY
Formato:

SELECT column1, SUM(column2) FROM "list-of-tables


GROUP BY "column-list" HAVING "condition";
Ejemplo:

SELECT dept, avg(salario) FROM empleados GROUP BY dept


HAVING avg(salario) > 20000;

SQL

Clusula ORDER BY

Permite ordenar los resultados de una consulta,


ordenados por las columnas que se especifique
Por defecto es orden ascendente (ASC)
Formato:

SELECT column1, SUM(column2) FROM "list-of-tables


ORDER BY "column-list" [ASC | DESC];
Ejemplo:
SELECT empleado_id, dept, nombre, edad, salario FROM
empleados WHERE dept = Ventas' ORDER BY salario;
SELECT empleado_id, dept, nombre, edad, salario FROM
empleados WHERE dept = 'Ventas' ORDER BY salario, edad
DESC;

SQL

Ejercicios
1.

2.
3.

Selecciona el apellido, nombre y ciudad de todos los


clientes de la tabla clientes. Muestra los resultados en
orden ascendente basado en el apellido
Lo mismo, pero en orden descendente
Selecciona el item y precio para cada uno de los
items de la tabla pedidos en los que el precio sea
mayor que 10. Muestra los resultados en orden
ascendente basado en el precio

SQL

Operador condicional IN

El operador IN se utiliza para comprobar si un valor


est contenido en una lista de valores
Formato:

SELECT column1, SUM(column2) FROM "list-of-tables


WHERE column3 IN (list-of-values);
Ejemplo:
SELECT empleadoid, apellido, salario FROM empleados WHERE
apellido IN ('Hernandez', Jurez', Gonzlez', 'Ruiz');
Se podra haber escrito con varios OR. Sera equivalente

Se puede utilizar NOT IN para excluir filas

SQL

Operador condicional BETWEEN

Se utiliza para comprobar si un valor est comprendido


entre dos valores
Formato:

SELECT column1, SUM(column2) FROM "list-of-tables


WHERE column3 BETWEEN value1 AND value2;
Ejemplo:
SELECT empleadoid, edad, apellido, salario FROM empleados
WHERE edad BETWEEN 30 AND 40;
Se podra haber utilizado tambin <= y >=. Sera equivalente

Tambin se puede utilizar NOT BETWEEN para excluir


valores dentro de un rango

SQL

Ejercicios
1.
2.

Selecciona la fecha, item, y precio de la tabla pedidos


para todas las filas que tengan un precio entre 10 y 80
Selecciona el nombre, ciudad, y provincia de la tabla
clientes para todas las filas donde la provincia sea:
Tomas Frias, Oruro, Oropeza, o La Paz

SQL

Uniones de tablas

Hasta ahora no se ha usado la potencia de las bases


de datos relacionales, ya que slo utilizbamos una
nica tabla. Las uniones nos permiten realizar
consultas sobre dos o ms tablas relacionndolas
Formato:

SELECT "list-of-columns" FROM table1,table2 WHERE


"search-condition(s)
Ejemplo:

SELECT cliente_info.nombre, cliente_info.apellido, compras.item


FROM cliente_info, compras WHERE cliente_info. cliente
_numero = compras. cliente _ numero;

La columna comn sirve para unir las tablas

SQL

Tablas para
ejercicios
pedidos

clientes

SQL

clienteid
10330
10101
10298
10101
10299
10339
10449
10439
10101
10449
10439
10298
10410
10438
10298
10449
10101
10330
10101
10299
10438
10413
10410
10315
10449
10101
10298
10449
10298
10330

fecha
30-jun-1999
30-jun-1999
1-jul-1999
1-jul-1999
6-jul-1999
27-jul-1999
13-ago-1999
14-ago-1999
18-ago-1999
1-sep-1999
18-sep-1999
19-sep-1999
28-oct-1999
2-nov-1999
1-dic-1999
15-dic-1999
30-dic-1999
1-ene-2000
2-ene-2000
18-ene-2000
18-ene-2000
19-ene-2000
30-ene-2000
2-feb-2000
29-feb-2000
8-mar-2000
18-mar-2000
19-mar-2000
1-abr-2000
19-abr-2000

item
Palo de golf
Balsa
Monopatn
Chaleco salvavidas
Paracadas
Paraguas
Monociclo
Palos de esqu
Impermeable
Botas para nieve
Tienda
Linterna
Saco de dormir
Almohada
Casco
Bicicleta
Hoola Hoop
Linterna flash
Linterna
Colchn hinchable
Tienda
Tumbona
Monociclo
Comps
Linterna flash
Saco de dormir
Navaja
Remo
Orejeras
Pala

cantidad
1
1
1
4
1
1
1
2
1
1
1
2
1
1
1
1
3
4
1
1
1
4
1
1
1
2
1
2
1
1

precio
28.00
58.00
33.00
125.00
1250.00
4.50
180.79
25.50
18.30
45.00
88.00
29.00
89.22
8.50
22.00
380.50
14.75
28.00
16.00
38.00
79.99
32.00
192.50
8.00
4.50
88.70
22.38
40.00
12.50
16.75

Ejercicios
1.

Escribe una consulta usando una unin para


determinar qu items fueron pedidos por cada cliente
de la tabla clientes. Selecciona el clienteid, nombre,
apellido, fecha de pedido, item, y precio de todo lo
que compr cada cliente en la tabla pedidos

SQL

Das könnte Ihnen auch gefallen