Está en la página 1de 31

INSTITUTO PROFESIONAL SANTO TOMAS

La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
1
UNIDAD I: BASE DE DATOS

Base de Datos:

Conjunto de datos organizados y estructurados de tal forma de facilitar su
almacenamiento y recuperacin. En el caso de las bases de datos relacionales como
MS SQL Server, la forma de estructurar los datos es a travs de tablas.


Tabla o Entidad:

La tabla es la estructura bsica de una base de datos relacional, la cual est
compuesta de atributos que describen las caractersticas de sta. Adems, la tabla
debe tener un nombre para identificarla, por lo que su nombre no se puede repetir en
tablas distintas de una misma base de datos.

La tabla se compone de columnas y filas. Las columnas son los atributos y las filas
son los valores asociados a estos atributos. A las columnas tambin se les llama
campos. Tericamente, una tabla no tiene lmite en cuanto a la cantidad de filas que
puede almacenar. A las filas tambin se les puede llamar tupla o registro.


Atributo:

Es el conjunto de propiedades que describen una tabla o entidad. Los valores
asociados a estos atributos son los que realmente se almacenan en la base de datos.
Los atributos se componen de:

- Nombre : Identifica al atributo
- Tipo : Indica el tipo de valor a almacenar: numrico, carcter, etc.
- Largo : Cantidad de espacio (bytes) que se reserva para almacenar el valor.

Los tipos de datos ms comunes son:
- char caracteres Hctor Gutirrez
- varchar caracteres Colchn de 2 plazas
- int numrico entero 12530
- smallint numrico entero 255
- float numrico con decimales 12,125
- numeric numrico (entero / decimales) 3,1416
- datetime fecha 04-11-2005 16:30:05
- timestamp fecha 2005-11-04 16:30:05






INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
2
Primary Key (PK):

Es uno o ms atributos que identifican particularmente a un registro (fila) de la
tabla, por lo que los valores de la Primary Key no se pueden repetir en registros
distintos de una misma tabla. En una tabla slo puede haber una PK.


Foreign Key (FK):

La Foreign Key es el atributo de una tabla que es Primary Key en otra tabla. Esta
se utiliza para relacionar a dos tablas, y as resguardar la integridad de los datos de la
base de datos.


Tipo de Relaciones:

Las tablas se relacionan a travs de sus Primary Key. Solo puede haber dos
tablas en una relacin, y se tipifican de acuerdo a su cardinalidad.

1:1 (uno a uno): Se refiere a que una fila de la tabla A solo se relaciona con una
fila de la tabla B y viceversa.

1:n (uno a ene): Se refiere a que una fila de la tabla A se relaciona con una o ms
filas de la tabla B, pero que una fila de la tabla B solo se relaciona
con una fila de la tabla A.

n:n (ene a ene): Se refiere a que una fila de la tabla A se relaciona con una o ms
filas de la tabla B, y que una fila de la tabla B se relaciona con
una o ms fila de la tabla A.


Restricciones de Integridad:

Generalmente en una base de datos relacional se siguen ciertas normas que
permiten mantener la integridad de los datos almacenados en ella. Algunas de estas
normas son:

- No puede haber una Primary Key con valor nulo

- El valor de una Foreign Key debe ser un valor real en la tabla donde es Primary
Key.

- No se puede eliminar una fila, si el valor de la Primary Key, es utilizado en la
Foreign Key de la tabla a la cual se relaciona.


INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
3
Programas Utilizados por MS SQL Server

MS SQL Server tiene una serie de programas que permiten administrar la base de
datos, de los cuales se utilizarn tres:

Administrador Corporativo: Permite administrar las bases de datos a travs de
una interfaz grfica.

Administrador de Servicios: Es el motor de la base de datos este debe estar
activo (corriendo) para poder tener acceso a los
datos.

Analizador de Consultas: Interfaz que nos permite ingresar directamente
sentencias SQL a la base de datos






INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
4
UNIDAD II: INTRODUCCIN A SQL

Introduccin a SQL

SQL es una herramienta para organizar, gestionar y recuperar datos almacenados
en una base de datos relacional. El nombre "SQL" es una abreviatura de Structured
Query Languaje (Lenguaje de consultas estructurado). Como su propio nombre indica,
SQL es un lenguaje informtico que se puede utilizar para interactuar con una base de
datos y trabaja especficamente con el tipo de base de datos relacional.

Las peticiones sobre los datos se expresan mediante sentencias, que deben
escribirse de acuerdo con unas reglas sintcticas y semnticas de este lenguaje.

SQL no solo sirve para MS SQL Server sino, tambin, para todas las bases de
datos existentes en el mercado que soporten este lenguaje, ya que es un lenguaje
estndar por haberse visto consolidado por el Instituto Americano de Normas (ANSI) y
por la Organizacin de Estndares Internacional (ISO).


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.

1. Comandos

Existen dos tipos de comandos SQL:

Los DDL que permiten crear y definir nuevas bases de datos, tablas, campos e
ndices.

CREATE Se utiliza para crear nuevas bases de datos o tablas
DROP Es empleado para eliminar bases de datos o tablas
ALTER Se utiliza para modificar las tablas agregando campos o cambiando la
definicin de los campos.

Los DML que permiten generar consultas para actualizar, ordenar, filtrar y
extraer datos de la base de datos.

SELECT Se utiliza para consultar registros de la base de datos que satisfagan
un criterio determinado
INSERT Se utiliza para ingresar datos en la base de datos.
UPDATE Se utiliza para modificar los valores de las columnas y registros
especificados
DELETE Se utiliza para eliminar registros de una tabla de una base de datos
INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
5
2. Clusulas

FROM Se utiliza para especificar la o las tablas de las cuales se van a
seleccionar los registros
WHERE Se utiliza para especificar las condiciones que deben reunir los
registros que se van a seleccionar
GROUP BY Se utiliza para separar los registros seleccionados en grupos
especficos
HAVING Se utiliza para expresar la condicin que debe satisfacer cada grupo
ORDER BY Se utiliza para ordenar los registros seleccionados de acuerdo con
un orden especfico


3. Operadores Lgicos

AND Es el "y" lgico. Evala dos condiciones y devuelve un valor de verdad
slo si ambas son verdaderas.
OR Es el "o" lgico. Evala dos condiciones y devuelve un valor de verdad, si
alguna de las dos es verdadera.
NOT Negacin lgica. Devuelve el valor contrario de la expresin.


4. Operadores de Comparacin

< Menor que
> Mayor que
<> Distinto
<= Menor o igual que
>= Mayor o igual que
= Igual que
BETWEEN Se utiliza para especificar un intervalo o rango de valores.
LIKE Se utiliza en la comparacin de cadenas parciales.
IN Se utiliza para establecer igualdad sobre un conjunto especfico de
valores. Es equivalente a utilizar varios OR.


5. Funciones

AVG Se utiliza para calcular el promedio de los valores de una columna
determinada
COUNT Se utiliza para devolver el nmero de registros de la seleccin
SUM Se utiliza para devolver la suma de todos los valores de una columna
determinada
MAX Se utiliza para devolver el valor ms alto de una columna determinada
MIN Se utiliza para devolver el valor ms bajo de una columna determinada

INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
6
UNIDAD III: ESTRUCTURA DE LA BASE DE DATOS

Creacin de una Base de Datos:

Para la creacin de una BD se utiliza el comando CREATE DATABASE.

Ejemplo:

CREATE DATABASE VENTAS Crea una base de datos llamada VENTAS

DROP DATABASE VENTAS Elimina una base de datos llamada VENTAS


Creacin de tablas:

Para crear una Tabla se utiliza el comando CREATE TABLE.

Ejemplo:

CREATE TABLE Articulo (
Codigo VARCHAR(6),
Nombre VARCHAR(50),
Precio NUMERIC(10,2),
Cantidad NUMERIC(6,2)
)


Creacin de tablas con PK:

Ejemplo:

CREATE TABLE Articulo (
Codigo VARCHAR(6) PRIMARY KEY NOT NULL,
Nombre VARCHAR(50),
Precio NUMERIC(10,2),
Cantidad NUMERIC(6,2)
)



CREATE TABLE Articulo (
Codigo VARCHAR(6) NOT NULL,
Nombre VARCHAR(50),
Precio NUMERIC(10,2),
Cantidad NUMERIC(6,2),
PRIMARY KEY (Codigo)
)
INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
7
Creacin de tablas con Foreign Key:

Ejemplo:

CREATE TABLE DetVenta (
Nro NUMERIC(10) NOT NULL,
Codigo VARCHAR(6) NOT NULL,
Nombre VARCHAR(50),
Precio NUMERIC(10,2),
Cantidad NUMERIC(6,2),
PRIMARY KEY (Nro, Codigo),
FOREIGN KEY (Codigo) REFERENCES Articulo (Codigo)
)


Eliminacin de Tablas:

Para eliminar tablas se utiliza el comando DROP TABLE

Ejemplo:

DROP TABLE DetVenta


Modificacin de Tablas:

Para modificar tablas se utiliza el comando ALTER.

ADD Se utiliza para aadir un nuevo campo a la tabla, indicando el
nombre, el tipo de campo y opcionalmente el tamao (para
campos de tipo texto).
DROP Se utiliza para borrar un campo. Se especifica nicamente el
nombre del campo.


Ejemplo:

ALTER TABLE Articulo ADD Stock_Critico NUMERIC(10,2)

Agrega un campo Stock_Critico de tipo Numeric a la tabla Articulo.


ALTER TABLE Articulo DROP Stock_Critico

Elimina el campo Stock_Critico de la tabla Articulo.

INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
8
ALTER TABLE DetVenta ADD FOREIGN KEY (Codigo) REFERENCES Articulo
(Codigo)

Agrega una FK a la tabla DetVenta. La FK se basa en el campo Codigo y se
refiere al campo Codigo de la tabla Articulo. En este ejemplo no es necesario
indicar el campo junto al nombre de la tabla en la clusula REFERENCES, pues
Codigo es la PK de la tabla Articulo.








































INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
9
UNIDAD IV: CONSULTAS DE ACTUALIZACIN

Sentencia INSERT

La sentencia de INSERT se utiliza para aadir registros a las tablas de la base de
datos. El formato de la sentencia es:

INSERT INTO nombre_tabla [(nombre_columna, ...)] VALUES (expr, ...)

nombre_tabla: Es el nombre de la tabla en la cual se agregaran los registros.

nombre_columna: Es una lista opcional de nombres de campo en los que se
insertarn valores en el mismo nmero y orden que se
especificarn en la clusula VALUES. Si no se especifica la
lista de campos, los valores de expr en la clusula VALUES
deben ser tantos como campos tenga la tabla y en el mismo
orden que se definieron al crear la tabla.

Expr: Es una lista de expresiones o valores constantes, separados por comas,
para dar valor a los distintos campos del registro que se aadir a la tabla.
Las cadenas de caracteres y las fechas debern estar encerradas entre
comillas simples ( ).

Ejemplo para aadir un registro a la tabla creada en el ejemplo de CREATE:

INSERT INTO Libros (Titulo, Paginas, Fecha)
VALUES (Gestin de Negocios, 234, 12/10/2005)

Cada sentencia INSERT aade un nico registro a la tabla. En el ejemplo solo se
han especificado 3 campos con sus respectivos valores, el resto de campos quedaran
a nulo. Un valor nulo NULL no significa blancos o ceros sino simplemente que el campo
nunca ha tenido un valor.

Se pueden insertar registros en un fichero de la Base de Datos, procedentes de un
fichero de texto, mediante la sentencia propia de IES2000 que tiene la forma:

INSERT INTO nombre_fichero [(nombre_columna, ...)] FROM fichero_ascii

Para entender el funcionamiento de esta sentencia, simplemente, se indicar que
por cada lnea del fichero de texto el programa la convertir en una sentencia IINSERT
y la ejecutar. Por lo tanto, en el fichero de texto, las lneas debern ser de la misma
forma que se explic en expr, con la diferencia, de que las fechas no irn entre llaves,
ya que es el programa el que se encarga de ponerlas.

Mediante esta ltima sentencia, podremos importar datos de cualquier aplicacin,
siempre y cuando se hayan convertido, previamente, a ASCII. Tambin podremos
aadir registros de un fichero de la Base de Datos a otro o al mismo con la utilidad de
INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
10
exportar el resultado de una consulta SQL y, posteriormente importarlos con la
sentencia vista anteriormente.


Insertar varios registros a la vez

Tambin se puede ingresar el resultado de una consulta a una tabla. Por cada
registro de la consulta se agrega un nuevo registro a la tabla seleccionada La consulta
puede tener filtros de datos y agrupacin de valores, como as tambin los datos
pueden provenir de distintas tablas unidas a travs de la consulta.

Ejemplo:

INSERT INTO cupos SELECT rut, nombre, cupo FROM letmae

(Inserta el rut, nombre y cupo de cada cliente en la tabla cupos)

INSERT INTO cupos SELECT rut, nombre, cupo FROM letmae
WHERE cupo > 150000

(Inserta el rut, nombre y cupo de cada cliente, en la tabla cupos. Solo de los
clientes cuyo cupo sea mayor a 150000)

INSERT INTO cachos
SELECT rut, c.nombre, sum(l.saldo) FROM letmae as c, letras as l
WHERE c.rut = l.rut
GROUP BY c.rut, c.nombre HAVING sum(l.saldo) > 500000

(Inserta el rut, nombre y saldo de cada cliente, en la tabla cachos. Solo de los
clientes cuya deuda sea mayor a 500000)







INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
11
Sentencia UPDATE

La sentencia UPDATE se utiliza para cambiar el contenido de los registros de una
tabla de la base de datos. Su formato es:

UPDATE nombre_tabla SET nombre_columna = expr, ...

[WHERE { condicin }]

nombre_tabla: Es el nombre de la tabla en la cual se modificarn los registros.

nombre_columna: Es el nombre de columna o campo cuyo valor se desea
cambiar. En una misma sentencia UPDATE pueden
actualizarse varios campos de cada registro de la tabla.

expr: Es el nuevo valor que se desea asignar al campo que le precede. La
expresin puede ser un valor constante o una subconsulta. Las cadenas de
caracteres y fechas debern estar encerradas entre comillas simples ( ). Las
subconsultas entre parntesis.

La clusula WHERE sigue el mismo formato que la vista en la sentencia SELECT
y determina que registros se modificarn.

Por ejemplo, subir el precio de compra de la tabla de libros un 10% de aquellos
que tengan ms de 250 pginas, sera:

UPDATE Libros SET precio = precio * 1.1 WHERE paginas > 250

Otro ejemplo, para fijar la fecha de ingreso de todos aquellos clientes que la tienen
vaca, se pondra:

UPDATE Cliente SET Fecha_Ingreso = 10-11-2005
WHERE Fecha_Ingreso IS NULL

Ejemplo utilizando una subconsulta:

UPDATE Libros SET precio = (SELECT AVG(precio) FROM Libros
WHERE precio IS NOT NULL)
WHERE PRECIO IS NULL

Con esta ltima sentencia se ha puesto precio a todos los libros que no lo tenan.
Ese precio ha sido el resultante de calcular la meda entre los libros que si lo tenan.


INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
12
Sentencia DELETE

La sentencia DELETE se utiliza para borrar registros de una tabla de la base de
datos. El formato de la sentencia es:

DELETE FROM nombre_tabla [WHERE { condicin }]

nombre_tabla: Es el nombre de la tabla en la cual se desea eliminar registros.

La clusula WHERE sigue el mismo formato que la vista en la sentencia SELECT
y determina que registros se borrarn.

Cada sentencia DELETE borra los registros que cumplen la condicin impuesta, o
todos si no se indica clusula WHERE.

DELETE FROM Clientes WHERE Fecha_Ingreso < 01-01-2005

Con el ejemplo anterior se borraran todos los registros de la tabla clientes cuya
fecha de ingreso sea anterior a este ao.

INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
13
UNIDAD V: CONSULTAS DE SELECCION

Las 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 conjunto
de registros.
Consultas bsicas
La sintaxis bsica de una consulta de seleccin es la siguiente:
SELECT Campos FROM Tabla;
En donde campos es la lista de campos que se deseen recuperar y tabla es el
origen de los mismos, por ejemplo:
SELECT Nombre, Telefono FROM Clientes;
Esta consulta devuelve los registros con el campo nombre y telfono de la tabla
clientes.
Ordenar los registros
Adicionalmente se puede especificar el orden en que 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 Direccion, Nombre, Telefono FROM Clientes ORDER BY Nombre
Esta consulta devuelve los campos Direccion, Nombre, Telefono de la tabla
Clientes ordenados por el campo Nombre.
Se pueden ordenar los registros por ms de un campo, como por ejemplo:
SELECT Direccion, Nombre, Telefono FROM Clientes ORDER BY
Direccion, Nombre;
Incluso se puede especificar el orden de los registros: ascendente mediante la
clusula (ASC -se toma este valor por defecto) descendente (DESC)
SELECT Direccion, Nombre, Telefono FROM Clientes ORDER BY
Direccion DESC, Nombre ASC

INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
14
Consultas con Predicado
El predicado se incluye entre la clusula y el primer nombre del campo a
recuperar, los posibles predicados son:
ALL
Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de
datos selecciona todos los registros que cumplen las condiciones de la instruccin
SQL. No es conveniente abusar de este predicado ya que obligamos al motor de la
base de datos a analizar la estructura de la tabla para averiguar los campos que
contiene, es mucho ms rpido indicar el listado de campos deseados.
SELECT ALL FROM Empleados
SELECT * FROM Empleados
TOP
Devuelve un cierto nmero de registros que entran entre al principio o al final de
un rango especificado por una clusula ORDER BY. Supongamos que queremos
recuperar los nombres de los 25 primeros clientes:
SELECT TOP 25 Nombre, Apellido FROM Cliente
ORDER BY Deuda DESC;
Si no se incluye la clusula ORDER BY, la consulta devolver un conjunto
arbitrario de 25 registros de la tabla Cliente. El predicado TOP no elige entre valores
iguales. 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
clusula ORDER BY. Supongamos que en lugar de los 25 primeros estudiantes
deseamos el 10 por ciento de los clientes:
SELECT TOP 10 PERCENT Nombre, Apellido FROM Cliente
ORDER BY Deuda DESC
El valor que va a continuacin de TOP debe ser un Integer sin signo. TOP no
afecta a la posible actualizacin de la consulta.
DISTINCT
Omite los registros que contienen datos duplicados en los campos seleccionados.
Para que los valores de cada campo listado en la instruccin SELECT se incluyan en la
consulta deben ser nicos.
INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
15
Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el
mismo apellido. Si dos registros contienen Lpez en el campo Apellido, la siguiente
instruccin SQL devuelve un nico registro:
SELECT DISTINCT Apellido FROM Empleados;
Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos
campos indicados en la clusula SELECT posean un contenido diferente.

Uso de Alias
En determinadas circunstancias es necesario asignar un nombre a alguna
columna determinada de un conjunto devuelto. Para resolver todas ellas tenemos la
palabra reservada AS que se encarga de asignar el nombre que deseamos a la
columna deseada
SELECT Apellido AS Empleado FROM Empleados
SELECT sum(deuda) AS deuda_total FROM Cliente
INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
16
UNIDAD VI: CRITERIOS DE SELECCIN Y AGRUPACIN

CRITERIOS DE SELECCIN

En la unidad anterior se vio la forma de recuperar los registros de las tablas, las
formas empleadas devolvan todos los registros de la mencionada tabla. A lo largo de
este captulo se estudiarn las posibilidades de filtrar los registros con el fin de
recuperar solamente aquellos que cumplan las condiciones requeridas.

Antes de comenzar el desarrollo de esta unidad se deben recalcar dos detalles
muy importantes:

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.- Las fechas se deben escribir siempre en formato dd-mm-aa en donde dd el da,
mm representa el mes y aa el ao. Se puede utilizar los separadores de barra (/) o el
separador de guin (-) y adems la fecha debe ir encerrada entre comillas simples. Por
ejemplo si deseamos referirnos al da 8 de Noviembre de 2005 deberemos hacerlo de
la siguiente forma; 08-11-2005 9-11-05.


Operadores Lgicos

Los operadores lgicos soportados por SQL son: AND, OR y NOT. A excepcin
del ltimo todos poseen la siguiente sintaxis:

<expresin1> operador <expresin2>

En donde expresin1 y expresin2 son las condiciones a evaluar, el resultado de
la operacin vara en funcin del operador lgico. La tabla adjunta muestra los
diferentes posibles resultados:

<expresin1> Operador <expresin2> Resultado
Verdadero AND Falso Falso
Verdadero AND Verdadero Verdadero
Falso AND Verdadero Falso
Falso AND Falso Falso
Verdadero OR Falso Verdadero
Verdadero OR Verdadero Verdadero
Falso OR Verdadero Verdadero
Falso OR Falso Falso

INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
17
Si a cualquiera de las anteriores condiciones le anteponemos el operador NOT el
resultado de la operacin ser el contrario al devuelto en la tabla.

Ejemplos:

SELECT * FROM Empleado WHERE Edad > 25 AND Edad < 50

SELECT * FROM Cliente WHERE (Edad > 25 AND Edad < 50) OR deuda = 100

SELECT * FROM Empleado WHERE NOT Estado = 'Soltero'

SELECT * FROM Empleado WHERE (Sueldo > 100000 AND Sueldo < 500000)
OR (Ciudad = 'Coquimbo' AND Estado_Civil = 'Casado')


Clusula WHERE

Se utiliza para filtrar los registros de la base de datos y recuperar solo los que
cumplan los requerimientos solicitados por el usuario. Esta clusula debe ir a
continuacin de FROM.

Ejemplos:

SELECT Apellidos, Sueldo FROM Empleados WHERE Sueldo > 210000

SELECT Codigo, Cant FROM Productos WHERE Cant <= 200

SELECT * FROM Pedidos WHERE Fecha_Envio = 5/10/05

SELECT Apellidos, Nombre FROM Empleados WHERE Apellidos = 'Torres'

SELECT Apellidos, Nombre FROM Empleados WHERE Apellidos Like 'S%'

SELECT Apellidos, Sueldo FROM Empleados WHERE Sueldo BETWEEN 200000
AND 300000

SELECT Nro_Pedido, Fecha_Pedido FROM Pedidos WHERE Fecha_Pedido
BETWEEN 1-1-2005 AND 30-11-2005









INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
18
Intervalos de Valores

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, valor2 (ambos inclusive). Si anteponemos la
condicin NOT devolver aquellos valores no incluidos en el intervalo.

Ejemplo:

SELECT * FROM Clientes WHERE ciudad = Coquimbo AND
deuda BETWEEN 10000 AND 50000

(Devuelve los clientes de la ciudad de Coquimbo, con deudas entre 10000 y
50000)


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 un campo y modelo es una cadena contra la cual 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 (Ej.: Ana Mara), o se pueden utilizar caracteres comodn para encontrar
un rango de valores (Ej.: Ana%).

El operador LIKE se puede utilizar en una expresin para comparar un valor de un
campo con una expresin de cadena.

Por ejemplo:

SELECT * FROM Datos WHERE nombre LIKE C%

(Esta consulta devuelve todos los valores de campo nombre que comiencen por
la letra C).

En una consulta con parmetros, puede hacer que el usuario escriba el modelo
que se va a utilizar.

INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
19
El ejemplo siguiente devuelve los datos que comienzan con la letra P seguido de
cualquier letra entre A y F y de tres dgitos:

Like 'P[A-F]###'

Este ejemplo devuelve los campos cuyo contenido empiece con una 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 en una lista. Su sintaxis es:

expresin [NOT] IN(valor1, valor2, . . .)

Ejemplo:

SELECT * FROM Cliente WHERE Ciudad IN ('Serena', 'Coquimbo', 'Ovalle');


INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
20
Consultas en ms de una tabla

El enlace o relacin entre dos tablas para realizar una consulta se conoce como
JOIN. Por ejemplo si deseamos un listado de letras con el Rut y Nombres de todos los
clientes que deban mas de 50.000, y tenemos que la tabla Cliente contiene todos los
datos generales de los clientes, entre ellos Nombre, direccin, etc., y la tabla Letras
contiene los distintos datos de las diferentes letras firmadas por cada uno de ellos;
Debemos buscar un campo que contenga informacin comn en las dos tablas, es
decir, aquel por el que estn relacionados ambos. Este campo es el Rut del cliente, que
en este caso es el mismo nombre en las dos tablas, y nos servir para efectuar el
JOIN. Para realizar la consulta en ms de una tabla, solo es necesario indicar las tablas
separadas por coma despus de la sentencia FROM.

Ejemplo:

SELECT Letras.letra, Letras.rut, Cliente.nombre FROM Cliente, Letras
WHERE Letras.rut = Cliente.rut AND Letras.deuda > 50000

(Devuelve los N de letra, Rut y nombre de los clientes cuya deuda sea mayor a
50000. en este caso el campo rut de ambas tablas es el que realiza el enlace o join)


Uso de Alias

Para facilitar la referencia a las tablas es posible reemplazar el nombre de la tabla
por un alias.

Ejemplo:

SELECT a.letra, a.rut, b.nombre FROM Letras AS a, Cliente AS b
WHERE a.rut = b.rut AND a.deuda > 50000


Orden de las tablas en la clusula FROM

Especial mencin merece el orden de enumeracin de las tablas en la clusula
FROM. El Gestor de SQL, cuando existe un JOIN entre dos tablas, recorre la tabla que
figura en primer lugar, y por cada registro que encuentra que satisface el resto de
restricciones, comprueba si existe correspondencia en la otra tabla.

Pongamos un ejemplo prctico: Si tenemos 5000 registros en la tabla Cliente y en
la tabla Letras 15000, de los cuales solo 1000 tienen deuda superior a 50000, el Gestor
realiza 1000 lecturas de la tabla Letras y 1000 ms de la tabla Cliente. Si los
enumerramos al revs, se realizaran 5000 lecturas de Cliente y 5000 ms de Letras.



INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
21
SELECT anidadas

Pueden existir consultas a la Base de Datos que requieran una restriccin que sea
el resultado de otra consulta.

Por ejemplo: Deseamos saber el nombre del cliente que tiene la letra de mayor
valor. Mediante MAX(deuda) podemos saber la letra de ms valor, pero el nombre solo
se puede recuperar de la tabla Cliente.

SELECT Rut FROM Letra WHERE deuda = (SELECT MAX(deuda) FROM Letra)



Funciones

Las funciones permiten realizar con los datos operaciones adicionales a las ya
vistas, pudiendo participar como operadores en las expresiones.

Una funcin representa un valor nico que se obtiene aplicando unas
determinadas operaciones a otros valores dados, que se llaman argumentos. Se
especifica como una palabra predefinida seguida de los argumentos entre parntesis y
separados por comas.

El lenguaje SQL dispone de un conjunto de funciones que pueden usarse en las
consultas y que aparecen aqu agrupadas por el tipo de valores que devuelven.

Funciones que devuelven una cadena de caracteres:

CHR: Convierte un Cdigo ASCII en una cadena de carcter

Ejemplo: CHR(67) devuelve la letra C.


RTRIM o TRIM: Quita los blancos que existan por la derecha en una cadena

Ejemplo: RTRIM (ABC ) devuelve ABC.


LTRIM: Quita los blancos por la izquierda que tenga una cadena

Ejemplo: LTRIM( ABC) devuelve ABC.


UPPER: Convierte cada letra de una cadena a mayscula

Ejemplo: UPPER(cadena) devuelve CADENA.

INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
22
LOWER: Convierte a minscula cada letra de una cadena

Ejemplo: LOWER(CADENA) devuelve cadena.


LEFT: Devuelve los n primeros caracteres por la izquierda

Ejemplo: LEFT(Cadena,3) devuelve Cad.


RIGHT: Devuelve los n ltimos caracteres de una cadena

Ejemplo: RIGTH(Cadena,4) devuelve dena.


SUBSTR: Devuelve una subcadena de una cadena. Los parmetros son la
cadena, la posicin del primer carcter a extraer y el nmero de
caracteres a extraer.

Ejemplo: SUBSTR(Cadena de letras,4,6) devuelve ena de.
SUBSTR(Cadena,5) devuelve na.

SPACE: Genera una cadena de espacios en blanco.

Ejemplo: SPACE(5) devuelve .


DTOC: Convierte una fecha a una cadena de caracteres. Un segundo parmetro
opcional determina el formato del resultado:

0 (por defecto) devuelve MM/DD/YY.
1 devuelve DD/MM/YY.
2 devuelve YY/MM/DD.
10 devuelve MM/DD/YYYY.
11 devuelve DD/MM/YYYY.
12 devuelve YYYY/MM/DD.

Puede existir un tercer parmetro opcional para determinar el carcter que se
quiere utilizar como separador. Si no se especifica se toma el (/).

Ejemplos:

DTOC({01/30/89}) devuelve 01/30/89
DTOC({01/30/89},0) devuelve 01/30/89
DTOC({01/30/89},1) devuelve 30/01/89
DTOC({01/30/89,11,-) devuelve 01-30-1989

INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
23
DTPOS: Convierte una fecha en una cadena de caracteres usando el formato
YYYYMMDD.

Ejemplo: DTPOS({01/23/90}) devuelve 19900123.


IIF: Devuelve uno de dos posibles valores. Los parmetros son tres: el primero es
una expresin lgica, el segundo el valor a devolver si la expresin es cierta, y
el ltimo, el valor a devolver si es falsa.

Ejemplo:

IIF(SEXO=V,Masculino,Femenino) devolvera la palabra Masculino si el campo
sexo contiene la V e caso contrario devolvera la palabra Femenino.


STR: Convierte un numero en una cadena. Los parmetros son el nmero, el total
de posiciones a devolver (incluyendo el punto decimal) y otro opcional para
indicar el nmero de dgitos a la derecha de punto decimal.

Ejemplos:

STR(12.34567,4) devuelve 12
STR(12.34567,4,1) devuelve 12.3
STR(12.34567,6,3) devuelve 12.346
STRVAL Convierte un valor de cualquier tipo a una cadena de caracteres
STRVAL(Cadena) devuelve Cadena
STRVAL({12/25/53}) devuelve 12/25/53
STRVAL(5 * 3) devuelve 15
STRVAL(4 = 5) devuelve False


TIME: Devuelve la hora del da como una cadena.

Ejemplo: A las 9:49 PM, TIME() devuelve 21:49:00












INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
24
Funciones que devuelven nmeros

MOD: Divide dos nmeros y devuelve el resto de la divisin.

Ejemplo: MOD(10,3) devuelve 1.


LEN: Devuelve la longitud de una cadena.

Ejemplo: LEN(Cadena) devuelve 6


MONTH: Devuelve el mes en cifras de un fecha.

Ejemplo: MONTH({01/30/89}) devuelve 1


DAY: Devuelve el da de una fecha.

Ejemplo: DAY({01/30/89}) devuelve 30


YEAR: Devuelve el ao, con todas sus cifras, de una fecha.

Ejemplo: YEAR({01/30/89}) devuelve 1989.


MAX: Devuelve el mayor de dos nmeros.

Ejemplo: MAX(66,89) devuelve 89.


MIN: Devuelve el menor de dos nmeros.

Ejemplo: MIN(66,89) devuelve 66.


POW: Eleva un nmero a una potencia.

Ejemplo: POW(2,3) devuelve 8


INT: Devuelve la parte entera de un nmero.

Ejemplo: INT(6.4321) devuelve 6


INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
25
ROUND: Redondea un nmero.

Ejemplos:

ROUND(123.456,0) devuelve 123
ROUND(123.456,2) devuelve 123.46
ROUND(123.456,-2) devuelve 100


NUMVAL: Convierte una cadena de caracteres a un nmero. Si la cadena VAL no
es un nmero se devuelve el valor 0.

Ejemplos:

NUMVAL(123) devuelve 123
NUMVAL(12A) devuelve 0



Funciones que devuelven fechas:

DATE: Devuelve la fecha de hoy.

Ejemplo: Si hoy es 25/12/05, DATE() devuelve {12/25/05}


DATEVAL: Convierte una cadena de caracteres a una fecha.

Ejemplo: DATEVAL(01/30/89) devuelve {01/30/89}

CTOD: Convierte una cadena de caracteres a una fecha. Se puede utilizar un
segundo parmetro para especificar el formato de la fecha devuelta: 0
(por defecto devuelve MM/DD/YY, 1 devuelve DD/MM/YY y 2 devuelve
YY/MM/DD.

Ejemplos:

CTOD(01/30/89) devuelve {01/30/89}
CTOD(01/30/89,1) devuelve {30/01/89}

Ejemplos de funciones de fecha:

SELECT SUM(AUSENCIAS) FROM FALTASAL WHERE TODAY()-FECHA<= 5

Esta sentencia nos dir el nmero total de horas ausencias de los alumnos en los
ltimos 5 das.

INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
26
SELECT NOMBRE+' '+APELLIDOS,
YEAR(TODAY()) - YEAR(FECHA_NACIMIENTO) FROM ALUMNOS

Mostrar a cada alumno con su edad en aos (Cumplidos o que cumplir)

Para tener en cuenta el mes y da actuales y calcular la edad sera:

SELECT NOMBRE+' '+APELLIDOS,

IIF(MONTH(FECHA_NACIMIENTO) > MONTH(TODAY()),
YEAR(TODAY())-YEAR(FECHA_NACIMIENTO) - 1,

IIF(MONTH(TODAY()) = MONTH(FECHA_NACIMIENTO) AND
DAY(FECHA_NACIMIENTO) > DAY(TODAY()),

YEAR(TODAY())-YEAR(FECHA_NACIMIENTO) - 1,
YEAR(TODAY())-YEAR(FECHA_NACIMIENTO))) FROM ALUMNOS

INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
27
Clusula de Agrupacin GROUP BY

Combina los registros con valores idnticos, en la lista de campos especificados,
en un nico registro. Para cada registro se crea un valor sumario si se incluye una
funcin SQL de agrupamiento, como por ejemplo Sum o Count, en la instruccin
SELECT. Su sintaxis es:

SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo

La clusula GROUP BY es opcional. Los valores de resumen se omiten si no
existe una funcin SQL de agrupamiento en la instruccin SELECT. Los valores Null en
los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se
evalan en ninguna de las funciones SQL de agrupamiento.

Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y la
clusula HAVING para filtrar los registros una vez agrupados.

Un campo de la lista de campos GROUP BY puede referirse a cualquier campo de
las tablas que aparecen en la clusula FROM, incluso si el campo no esta incluido en la
instruccin SELECT, siempre y cuando la instruccin SELECT incluya al menos una
funcin SQL de agrupamiento.

Todos los campos de la lista de campos de SELECT deben incluirse en la clusula
GROUP BY.

Ejemplo:

SELECT Rut, Sum(Valor) FROM letras GROUP BY Rut

SELECT Cuenta, Sum(Debe) AS debe, Sum(Haber) AS Haber, Sum(Debe
Haber) AS Saldo FROM letras GROUP BY Cuenta


Clusula HAVING

Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier
registro agrupado por la clusula GROUP BY que satisfaga las condiciones de la
clusula 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.

Ejemplo:

SELECT Rut, Sum(Valor) FROM Letras GROUP BY Rut
HAVING Sum(Valor) > 100000
INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
28
SELECT Cuenta, Sum(Debe) AS debe, Sum(Haber) AS Haber,
Sum(Debe Haber) AS Saldo FROM Libro_Diario GROUP BY Cuenta
HAVING Cuenta BETWEEN 01.00.00 AND 01.99.99

(Calcula el debe, haber y saldo de la tabla Libro_Diario agrupados por cuenta
contable de activos (cdigo entre 01.00.00 y 01.99.99))


Funciones de agrupamiento

Las funciones de agrupamiento son parte de la clusula SELECT. Devuelven un
nico valor de un conjunto de registros. Pueden usarse con un nombre de campo (por
ejemplo, Avg (Total)o en combinacin con una expresin de columna ms compleja
(por ejemplo, Avg (Total / 1.19) ). La expresin de columna puede ir precedida por el
operador DISTINCT. El operador DISTINCT eliminar los valores repetidos de una
expresin de agrupamiento.

Por ejemplo,

SELECT Count(DISTINCT Ciudad) FROM Clientes

En este ejemplo, slo aparecern los distintos N de ciudades donde residen los
clientes.

Las funciones de agrupamiento permitidas son:

SUM:

Devuelve la suma total de los valores de una expresin de columna o campo
numrica.

Por ejemplo:

SELECT SUM(Total) FROM Factura WHERE Fecha = 10-11-2005

Devolver el total facturado del da 10 de noviembre de 2005

SELECT Cliente, SUM(Total) FROM Factura
WHERE Fecha BETWEEN 01-11-2005 AND 30-11-2005 GROUP BY Cliente

Devolver el total facturado del mes de noviembre de 2005 por cliente.






INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
29
AVG:

Devuelve la media de los valores de una expresin de columna.

Por ejemplo:

SELECT AVG(Total) FROM Factura WHERE Fecha = 10-11-2005

Devolver el promedio de ventas facturado del da 10 de noviembre de 2005

SELECT Cliente, AVG(Total) FROM Factura
WHERE Fecha BETWEEN 01-01-2005 AND 30-11-2005 GROUP BY Cliente

Devolver el promedio facturado por cliente del ao 2005.


COUNT:

Devuelve el nmero de valores en una expresin de columna. Un caso especial es
COUNT(*), que nos devuelve el nmero de registros incluyendo aquellos registros con
valores nulos.

Por ejemplo:

SELECT COUNT(*) FROM Factura WHERE Fecha = 10-11-2005

Devolver la cantidad de facturas emitidas del da 10 de noviembre de 2005

SELECT COUNT(Nro_Factura) FROM Factura WHERE Fecha = 10-11-2005

Devolver la cantidad de facturas emitidas del da 10 de noviembre de 2005,
omitiendo los valores nulos.

SELECT Cliente, COUNT (*) FROM Factura
WHERE Fecha BETWEEN 01-01-2005 AND 30-11-2005 GROUP BY Cliente

Devolver la cantidad de facturas emitidas por cliente del ao 2005.










INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
30
MAX:

Devuelve el valor ms alto de los contenidos en una expresin de columna.

Por ejemplo:

SELECT MAX(Total) FROM Factura WHERE Fecha = 10-11-2005

Devolver el valor mas alto facturado del da 10 de noviembre de 2005

SELECT Cliente, MAX(Total) FROM Factura
WHERE Fecha BETWEEN 01-01-2005 AND 30-11-2005 GROUP BY Cliente

Devolver el valor mas alto facturado por cliente del ao 2005.


MIN:

Devuelve el valor ms bajo de los contenidos en una expresin de columna.

Por ejemplo:

SELECT MIN(Total) FROM Factura WHERE Fecha = 10-11-2005

Devolver el valor mas bajo facturado del da 10 de noviembre de 2005

SELECT Cliente, MIN(Fecha) FROM Factura
WHERE Fecha BETWEEN 01-01-2005 AND 30-11-2005 GROUP BY Cliente

Devolver la fecha de la factura mas antigua por cliente del ao 2005.


INSTITUTO PROFESIONAL SANTO TOMAS
La Serena
Hernn Fernndez Elgueta Ingeniero de Ejecucin en Informtica
Docente de la Escuela de Informtica
31
UNIDAD VII: PROCEDIMIENTOS ALMACENADOS

Procedimientos Almacenados

Los procedimientos almacenados permiten ejecutar un conjunto de sentencias
SQL, agrupadas bajo un mismo concepto. Este procedimiento se crea en la base de
datos y es almacenado permanentemente en ella.

El formato de un procedimiento almacenado es el siguiente

CREATE PROCEDURE Nombre_Procedimiento ( [@parmetros, ] )
AS
BEGIN
Conjunto de sentencias SQL
END

Por ejemplo, si deseamos crear un procedimiento que ingrese valores a la tabla
cachos, se hara lo siguiente:

CREATE PROCEDURE CachosInsProc
(
@rut varchar(12),
@nombre varchar(50),
@deuda numeric (10,2)
)
AS
BEGIN
INSERT INTO Cachos(rut, nombre, deuda) VALUES(@rut, @nombre, @deuda)
END


Si deseamos ejecutar este procedimiento utilizamos la sentencia EXECUTE.

Ejemplo:

EXECUTE CachosInsProc '1-9', 'Hernan', 200000


Eliminacin de Procedimientos Almacenados

Para eliminar procedimientos almacenados se utiliza la sentencia DROP
PROCEDURE ms el nombre del procedimiento a eliminar.

Por Ejemplo:

DROP PROCEDURE CachosInsProc

También podría gustarte