Sunteți pe pagina 1din 46

SQL

Lenguaje de Consultas Estructurado

Que es una base de


datos?
Una base de datos es una coleccin de archivos relacionados que permite
el manejo de informacin.
Cada uno de dichos archivos puede ser visto como una coleccin de
registros y cada registro est compuesto de una coleccin de campos.
Cada uno de los campos de cada registro permite llevar informacin de
algn atributo de una entidad del mundo real.
Ejemplo :
Para una UNIVERSIDAD, las entidades de inters podran ser: ALUMNOS,
PROFESORES, SALONES, etc.
Para la entidad ALUMNO, los atributos importantes podran ser: NOMBRE,
DIRECCION, TELEFONO, CARRERA, MATRICULA, etc.

Modelo Entidad-Relacin
Los diagramas o modelos entidad-relacin (denominado por
su siglas, ERD Diagram Entity relationship) son una
herramienta para el modelado de datos de un sistema de
informacin. Estos modelos expresan entidades relevantes
para un sistema de informacin, sus inter-relaciones y
propiedades.

Introduccin para SQL


Que es SQL?
Cuando un usuario desea obtener informacin de
una base de datos, se puede emitir una consulta SQL.
Una consulta es una solicitud de un usuario para
recuperar los datos o informacin con una
determinada condicin.
SQL es un lenguaje de consulta que permite al
usuario especificar las condiciones.

Introduccin para SQL


Conceptos de SQL
El usuario especifica una determinada condicin.
El programa va a ir a travs de todos los registros
de la base de datos y escoge los registros que
cumplen la condicin.
Se puede obtener la informacin estadstica de los
datos.
El resultado de la consulta se almacenar en forma
de una tabla.

Introduccin para SQL


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 bases de datos.

Introduccin para SQL


Existen dos tipos de comandos
SQL:
Los comandos del Lenguaje de Definicin de Datos
(DDL) que permiten crear y definir nuevas bases de
datos, campos e ndices.
Los comandos del Lenguaje de Manipulacin de Datos
(DML) que permiten modificar y generar consultas para
insertar, modificar o eliminar, as como, ordenar, filtrar y
extraer datos de la base de datos.

Comandos SQL

Comandos SQL
Comando
CREATE
DROP
ALTER
Comando
SELECT
INSERT
UPDATE
DELETE

Descripcin
Utilizado para crear nuevas tablas, campos e ndices
Empleado para eliminar tablas e ndices
Utilizado para modificar las tablas y agregar campos
o cambiar la definicin de los campos.
Descripcin
Utilizado para consultar registros de la base de datos
que satisfagan un criterio determinado
Utilizado para ingresar registros de datos en la base
de datos en una nica operacin
Utilizado para modificar los valores de los campos y
registros especificados
Utilizado para eliminar registros de una tabla de una
base de datos

Estructura bsica de una


consulta SQL
Estructura
General

SELECT, ALL / DISTINCT, *,


AS, FROM, WHERE

Comparacin

IN, BETWEEN, LIKE "% _"

Agrupamiento

GROUP BY, HAVING,


COUNT( ), SUM( ), AVG( ), MAX( ), MIN( )

Visualizar
Orden

ORDER BY, ASC / DESC

Operadores
Logicos

AND, OR, NOT

Salidas

INTO TABLE / CURSOR


TO FILE [ADDITIVE], TO PRINTER, TO SCREEN

Unin

UNION

Comandos de Agregado
Comando

Descripcin

<

Menor que

>

Mayor que

<>

Distinto de

<=

Menor igual que

>=

Mayor igual que

Igual que

BETWEEN
LIKE
In

Utilizado para especificar un intervalo de valores


Utilizado en la comparacin de un modelo

Utilizado para especificar registros de una base


de datos

http://msdn.microsoft.com/en-us/library/ms174318.aspx

Comandos de Agregado
Comando
AVG
COUNT
SUM
MAX
MIN

Descripcin
Se emplea para calcular el promedio de los valores
de un campo determinado
Se emplea para devolver la cantidad de registros de
la seleccin
Se emplea para devolver la suma de todos los
valores de un campo determinado
Se emplea para devolver el valor ms alto de un
campo o expresin especificada
Se emplea para devolver el valor ms bajo de un
campo o expresin especificada

http://msdn.microsoft.com/en-us/library/ms177677.aspx

Comandos de Fecha
Funcin

Descripcin

GETDATE

Devuelve la fecha del da

DAY

Devuelve un entero que representa el da (da del mes) de la


fecha especificada

MONTH

Devuelve un entero que representa el mes de la fecha


especificada

YEAR

Devuelve un entero que representa la parte del ao de la fecha


especificada

DATEDIFF

Devuelve el nmero de lmites datepart de fecha y hora entre


dos fechas especificadas

DATEPART

Devuelve un entero que representa el parmetro datepart


especificado del parmetro date especificado

CONVERT

Convierte una expresin de un tipo de datos en otro

http://msdn.microsoft.com/en-us/library/ms189794.aspx

Ejemplo:
Tabla de estudiante
Campo
id
nombre
fecha
sexo
clase
hcode
mtest
dcode

Tipo
Longitud
contenido
numeric
4
identificador del estudiante
character 10
nombre
date
8
Fecha de nacimiento
character
1
sexo: M / F
character
2
clase
character
1
cdigo de casa
numeric
4
calificacin de matematicas
character
3
cdigo de distrito

Estructura General
SELECT ...... FROM ...... WHERE ......
SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ;

FROM nombre de la tabla WHERE condicin

Estructura General
SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ;
FROM nombre de la tabla WHERE condicin
La consulta selecciona las filas del nombre de tabla y
da salida al resultado en forma de tabla de origen.
Expresiones expr1, expr2 pueden ser:
(1) una columna, o
(2) una expresin de funciones y campos.
Col1 y col2 son los nombres de las columnas
correspondientes de la tabla de salida.

Estructura General
SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ;
FROM nombre de la tabla WHERE condicin
DISTINCT eliminar las filas duplicadas en la salida,
mientras que ALL mantendr todas las filas
duplicadas.
La condicin puede ser:
(1) la desigualdad, o
(2) una comparacin de cadenas
Utilizando los operadores lgicos AND, OR, NOT.

Estructura General
Ejemplo: Indique los estudiantes de la clases 1A.

Clase
1A
1A
1A
1B
1B
:

SELECT nombre, clase FROM estudiante;


WHERE clase="1A"
Clase

clase="1A"

1A
1A
1A
1B
1B
:

Comparacin

expr IN ( value1, value2, value3)


expr BETWEEN value1 AND value2
expr LIKE "%_"

Comparacin
Enumere los estudiantes que no nacieron
en enero, marzo, junio, septiembre.

Ejemplo . 7

SELECT nombre, clase, fecha FROM estudiante ;


WHERE MONTH(fecha) NOT IN (1,3,6,9)
Resultado

nombre
Wendy
Tobe
Eric
Patty
Kevin
Bobby
Aaron
:

clase
1B
1B
1C
1C
1C
1A
1A
:

fecha
07/09/86
10/17/86
05/05/87
08/13/87
11/21/87
02/16/86
08/02/86
:

Comparacin
Enumere los estudiantes cuyos nombres
comienzan con "T ".

Ejemplo . 9

SELECT nombre, clase FROM estudiante;


WHERE nombre LIKE "T%"
Resultado

nombre
Tobe
Teddy
Tim

clase
1B
1B
2A

Comparacin
Enumerar los miembros de la casa roja
cuyos nombres contienen "a" como la segunda letra.

Ejemplo. 10

SELECT nombre, clase, hcode FROM estudiante;


WHERE nombre LIKE "_a%" AND hcode="R"
Resultado

nombre
Aaron
Janet
Paula

clase
1A
1B
2A

hcode
R
R
R

Agrupamiento
SELECT ...... FROM ...... WHERE condicin ;
GROUP BY groupexpr [teniendo el requisito]
Funciones de Grupo:
COUNT( ), SUM( ), AVG( ), MAX( ), MIN( )
group especifica las filas relacionadas para ser agrupados
como una sola entrada. Por lo general, se trata de una
columna.
WHERE especifica la condicin de filas individuales antes
de las filas en el grupo. HAVING requisito especifica la
condicin de la participacin de todo el grupo.

Agrupamiento
Ejemplo. 11

clase.

Cuente el nmero de estudiantes de cada

Group By Clase
clase
1A

1A

1A

COUNT( )

1A
1B
1B

1B

1B
1B

COUNT( )

1B
1B
1C

1C

1C
1C
Estudiante

COUNT( )

Agrupamiento
Ejemplo. 11

Cuente el nmero de estudiantes de cada

clase. SELECT clase, COUNT(*) FROM estudiante;


GROUP BY clase

Resultado

clase
1A
1B
1C
2A
2B
2C

cnt
10
9
9
8
8
6

Agrupamiento
Seleccione el puntaje de la prueba de
matemticas de cada clase.

Ejemplo . 12

Group By Clase
clase
1A

1A

1A

AVG( )

1A
1B
1B

1B

1B
1B

AVG( )

1B
1B
1C

1C

1C
1C
Estudiante

AVG( )

Agrupamiento
Seleccione el puntaje de la prueba de
matemticas de cada clase.

Ejemplo . 12

SELECT clase, AVG(mtest) FROM estudiante ;


GROUP BY clase
Resultado

clase
1A
1B
1C
2A
2B
2C

avg_mtest
85.90
70.33
37.89
89.38
53.13
32.67

Agrupamiento
Ejemplo . 13

Seleccione el nmero de nias de cada

distrito.

SELECT dcode, COUNT(*) FROM estudiante;


WHERE sexo="F" GROUP BY dcode

Resultado

dcode
HHM
KWC
MKK
SSP
TST
YMT

cnt
6
1
1
5
4
8

Agrupamiento
Seleccione el Max. y min. de calificacin de
la prueba de matemticas a los estudiantes de cada
distrito.

Ejemplo. 14

SELECT MAX(mtest), MIN(mtest), dcode ;


FROM estudiante WHERE clase LIKE "1_" GROUP BY dcode

Resultado

max_mtest min_mtest dcode


92
36
HHM
91
19
MKK
91
31
SSP
92
36
TST
75
75
TSW
88
38
YMT

Agrupamiento
Ejemplo . 15 Seleccione el puntaje promedio de las pruebas de
matemticas de los nios en cada clase. La lista no debe
contener clase con menos de 3 nios.

SELECT AVG(mtest), clase FROM estudiantes


WHERE sexo="M" GROUP BY clase
HAVING COUNT(*) >= 3
Resultado

avg_mtest clase
86.00
1A
77.75
1B
35.60
1C
86.50
2A
56.50
2B

Visualizar Orden
SELECT ...... FROM ...... WHERE ......
GROUP BY ..... ;
ORDER BY nombre de la columna
ASC / DESC

Visualizar Orden
Enumere los chicos de la clase 1A,
ordenado por sus nombres.

Ejemplo . 16

SELECT nombre, id FROM estudiante


WHERE sexo="M" AND clase="1A" ORDER BY nombre
nombre
Peter
Johnny
Luke
Bobby
Aaron
Ron

id
9801
9803
9810
9811
9812
9813

Resultado

ORDER BY
dcode

nombre
Aaron
Bobby
Johnny
Luke
Peter
Ron

id
9812
9811
9803
9810
9801
9813

Visualizar Orden
Enumere los estudiantes 2A por su distrito
de residencia.

Ejemplo . 17

SELECT nombre, id, clase, dcode FROM estudiante ;


WHERE clase="2A" ORDER BY dcode
Resultado

nombre
Jimmy
Tim
Samual
Rosa
Helen
Joseph
Paula
Susan

id
9712
9713
9714
9703
9702
9715
9701
9704

clase
2A
2A
2A
2A
2A
2A
2A
2A

dcode
HHM
HHM
SHT
SSP
TST
TSW
YMT
YMT

Visualizar Orden
Seleccione el nmero de estudiantes de
cada distrito (en orden descendente).

Ejemplo. 18

SELECT COUNT(*) AS cnt, dcode FROM estudiantes ;


GROUP BY dcode ORDER BY cnt DESC
cnt

Resultado

11
10
10
9
5
2
1
1
1

docode
YMT
HHM
SSP
MKK
TST
TSW
KWC
MMK
SHT

Visualizar Orden
Enumere los nios de cada cdigo de casa
por clase. (2-niveles de ordenamiento)

Ejemplo. 19

SELECT nombre, clase, hcode FROM estudiantes ;


WHERE sexo="M" ORDER BY hcode, clase

Visualizar Orden
Resultado
Casa
azul

Order
by
hcode
Casa
verde

:
:

nombre
Bobby
Teddy
Joseph
Zion
Leslie
Johnny
Luke
Kevin
George
:

hcode
B
B
B
B
B
G
G
G
G
:

clase
1A
1B
2A
2B
2C
1A
1A
1C
1C
:

Order
by
clase

Salida
Imprima los miembros de la casa roja da su
clase, el sexo y el nombre.

Ejemplo. 21

SELECT clase, nombre, sexo FROM student ;


WHERE hcode="R" ;
ORDER BY clase, sexo DESC, nombre TO PRINTER
Resultado

clase
1A
1A
1A
1B
1B
1B
1B
:

nombre
Aaron
Peter
Ron
Tobe
Janet
Kitty
Mimi
:

sexo
M
M
M
M
F
F
F
:

Llave Primaria y Llave Fornea


El principio fundamental del modelo relacional, es que cada fila de
una tabla pueda utilizarse como un identificador exclusivo, pero en
la prctica el identificador suele ser la combinacin de campos la
cual se le denomina Primary Key o Llava Primaria.

Una Llave Fornea o Foreign Key es una o varias columnas de una


tabla cuyos valores deben ser iguales a una Primary key de otra
tabla.
Llave Primaria

Llave Fornea

Relacin Uno a Varios:


La relacin uno a muchos, es el tipo de relacin ms comn.
Por ejemplo, sabemos que cada profesor pertenece nicamente a un
departamento, pero en cada departamento existe ms de un profesor. De aqu
podemos extraer una relacin UNO a MUCHOS entre las tablas Departamentos
y Profesores.

Relacin Muchos a
Muchos:

En las relaciones de muchos a muchos se recomienda crear una relacin de este


tipo:
Defina una tercera tabla, denominada tabla de rompimiento, cuya clave principal
est formada por las claves externas de las tablas A y B. Por ejemplo, si queremos
conocer los profesores que dan clase a un grupo o los grupos a los que da clase un
profesor determinado, necesitamos en principio dos tablas: Profesores y Grupos.

Relacin Uno a Uno:

Una relacin de uno a uno se crea si las dos columnas relacionadas son claves
principales o tienen restricciones nicas.
Este tipo de relacin no es comn porque la mayor parte de la informacin
relacionada de esta manera estara en una tabla. Se puede utilizar una relacin de
uno a uno para:
Dividir una tabla con muchas columnas
Aislar parte de una tabla por razones de seguridad
Almacenar informacin aplicable nicamente a un subconjunto de la tabla
principal.
Implementar entidades del tipo Generalizacin con sus especializaciones.

Varias Tablas:
SQL proporciona una operacin conveniente para recuperar la
informacin de varias tablas.

Esta operacin se denomina join.


En la operacin join se combinan las tablas en una tabla grande, con
todas las combinaciones posibles (Matemticas: Producto
cartesiano), y luego va a filtrar las filas de esta tablas que se
combinaron para proporcionar informacin til.

Varias Tablas:

Campo1
A
B

campo2
1
2
3

campo1 campo2
A
1
A
2
A
3
B
1
B
2
B
3

Principales Manejadores
de Base de Datos

Microsoft SQL Server


Oracle
Informix
PostgreSQL
MySQL
DB2
Sybase

S-ar putea să vă placă și