Manual Practico SQL

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 15

.

914anualPrctico de SQL
ORIENTADO A SQL 7.0
Preparado por:
Alvaro E. Garca
[email protected]
Manual Prctico de SQL
Preparado por: Alvaro E. Garca

NDICE
INTRODUCCIN 3

PASOS PARA IMPLEMENTAR UNA BD 5

CREAR UNA BD 6

SENTENCIA CREATE 8

LIGADURAS 9

ELIMINACIN DE TABLAS 14

SENTENCIA ALTER 14

CONSULTAS SIMPLES 17

SENTENCIA SELECT - FROM 19

COLUMNAS CALCULADAS 21

CONDICIONES DE BSQUEDA 22

ORDENACIN DE RESULTADOS (ORDER BY) 25

CONSULTAS A MLTIPLES TABLAS (INNER JOIN) 26

CONSULTAS RESUMEN 30

CONCLUSIN 32

BIBLIOGRAFA 33

2
Manual Prctico de SQL
Preparado por: Alvaro E. Garca

INTRODUCCIN.

SQL (Lenguaje de Consulta Estructurado)

El SQL (Structure Query Language), es un lenguaje de consulta


estructurado establecido claramente como el lenguaje de alto
nivel estndar para sistemas de base de datos relacionales. Los
responsables de publicar este lenguaje como estndar, fueron
p reci sa men t e l o s en ca rg ad o s d e p u b l i c ar es t n d a r , l a A N S I
(Instituto Americano de Normalizacin) y la ISO (organismo
Internacional de Normalizacin). Es por lo anterior que este
lenguaje lo vas a encontrar en cualquiera de los DBMS
relacionales que existen en la actualidad, por ejemplo,
ORACLE, SYBASES, SQL SERVER por mencionar algunos.

El SQL agrupa tres tipos de sentencias con objetivos


particulares, en los siguientes lenguajes:

Lenguaje de Definicin de Datos (DDL, Data Definiton


Language)
Lenguaje de Manipulacin de Datos (DML, Data
Management Language)
Lenguaje de Control de Datos (DCL, Data Control
Language)

A continuacin se describen cada uno de los lenguajes:

Lenguaje de Definicin de Datos (DDL, Data Definiton Language)

Grupo de sentencias del SQL que soportan la definicin y


declaracin de los objetos de la base de datos. Objetos tales
como: la base de datos misma(DATABASE), las tablas(TABLE),
las Vistas (VIEW), los ndices (INDEX), los procedimientos
al macen ad o s ( PR OC E D UR E ) , l o s d i sp a rad o re s (TR I G GER ) ,

3
Manual Prctico de SQL
Preparado por: Alvaro E. Garca
R e g l a s ( R U L E ) , D o mi n i o s ( D o m a i n ) y V a l o r e s p o r d e f e c t o
(DEFAULT).

CREATE,

ALTER y

DROP

Lenguaje de Manipulacin de Datos (DML, Data Management


Language)
G r u p o d e sen t e n c i a s d e l S Q L p ar a ma n i p u l a r l o s d at o s q u e
estn almacenados en las bases de datos, a nivel de filas
(tupas) y/o columnas (atributos). Ya sea que se requiera que
los datos sean modificados, eliminados, consultados o que se
agregaren nuevas filas a las tablas de las base de datos.
INSERT,
UPDATE,
DELETE y
SELECT

Lenguaje de Control de Datos (DCL, Data Control Language)

Grupo de sentencias del SQL para controlar las funciones de


administracin que realiza el DBMS, tales como la atomicidad y
seguridad.

COMMIT TRANSACTION,

ROLLBACK TRANSACTION,

GRANT

REVOKE

4
Manual Prctico de SQL
Preparado por: Alvaro E. Garca
Pasos para implementar una base de datos:

PASO Descripcin
Definir en el disco duro, el rea fsica que contendr las
1 tablas de la base de datos. Sentencia SQL --> CREATE
DATABASE. Tema 1 de este manual

2 1--> CREATE TABLE Terna 4.2 del contenido de este curso.


Crear las diferentes tablas de la base de dato. Sentencia SQL
Insertar las filas de las diferentes tablas, sin violar la
integridad de datos. Sentencia SQL --> INSERT INTO . Tema
3 3.4.1 del contenido de este curso.
Actualizar los datos que cambien con el tiempo en las
diferentes tablas. Sentencia SQL --> UPDATE. Tema 3.4.2
4 del contenido de este curso.

Eliminar las filas que ya no se requieran en las diferentes


5 tablas. Sentencia SQL --> DELETE Tema 3.4.3 del contenido
de este curso.
Realizar las consultas deseadas a las tablas de la base de
datos a travs de la poderosa sentencia de consultas del SQL,
6 llamada SELECT. Tema 4.3 hasta 4.6 del contenido de este
curso.

Dar nombre a las consultas. elaboradas en el paso No.6 cuando


se requiera ocultar el diseo y columnas de las tablas a travs
7 de la creacin de vistas lgicas. Sentencia SQL ----> CREATE
VIEW. Tema 3.5 del contenido de este curso.

5
Manual Prctico de SQL
Preparado por: Alvaro E. Garca
Crear una base de datos:
Sentencia SQL CREATE DATABASE

SINTAXIS:

create database nombre_basededatos ON PRIMARY


(
n a m e = n o m b re b a se d e d a t o s d a t a ,
filename = fc: \BDTRANSITO.mdf, /*Direccin donde se crea*/
s i z e = 3m b, / *Tam ao de l a base d e dat os*/
maxsize = 7mb, / *Tamao de maximo de la base de datos*/
filegrowth = 2 mb /*crecimiento de la base de datos*/
)

log on

(
name = BDTRANSITO log,
filename = 'c: \BDTRANSIT0.1df, ,
size = 3mb,
maxsize = 7mb,
filegrowth = 2 mb
)
Tipo de archivo Extensin de nombre de
archivo recomendada
Archivo de datos principal .mdf
Archivo de datos secundario .ndf
Archivo de registro de transacciones .Idf

Antes de proceder a crear la base de datos debemos averiguar si existe


otra base de datos VENTAS para borrarla y crear la nuestra. Recuerde no
u t i l i z a r e s t a s s e nt ec i a s e n u n s e r v i d o r d e p r o d u c c i n d e S Q L S E R V E R .
Corra el siguiente codigo en el Query Analyser de SQLSERVER.

IF DB_ID('VENTAS') IS NOT NULL


BEGIN
DROP DATABASE VENTAS
END
A continuacin la sentencia CREATE DATABASE, que usaremos para la
creacin del espacio que contendr la base de datos Ventas es el siguiente

6
Manual Prctico de SQL
Preparado por: Alvaro E. Garca
CREATE DATABASE VENTAS ON PRIMARY
(

NAME=VENTAS data,
FILENAME=icAVINTAS.mdf,
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=1 MB
)

LOG ON
(

NAME=VENTAS log,
FILENAME= 1 c:WTAS.Idf,
SIZE=5MB,
MAXSIZE=10MB,
FILEGROWTH=1 MB
)

En el ejem plo que se acaba de present ar se crea un archivo principal de


ex t e ns i n m d f d e t a m a o i ni ci al d e 5 MB , c u and o e st e es pa ci o se a got e,
este se expandir en 1 MB ms para tener espacio libre y meter ms
registros o tablas y cuando se agote nuevamente el archivo fsico de
1M B, st e se ex pandi r en 1 MB nu ev am ent e y as e n l o sucesi vo has t a
alcanzar el mximo 10 MB ya de ah no crecer ms.

7
Manual Prctico de SQL
Preparado por: Alvaro E. Garca
Sentencia CREATE

Dent ro del Lenguaje de Defi ni ci n (DL) del S QL, l a sentenci a CR EATE


perm i t en l a defi ni ci n o creaci n de m uchos obj et os de l a base de dat os
t a l e s c o m o: t a b l a s ( e s q u e m a s ) , n di c e s , v i s t a s, d o m i n i o s , l i ga d u r a s d e
integridad y procedi mientos.

En est a oport unidad veremos las sent encias correspondi entes a la creacin
de l os esquem as o lo que es l o m ismo las t abl as que cont endrn los dat os
de la base de datos, La sentencia CREATE TABLE.

La sentencia CREATE TABLE, define el nombre de la tabla, las columnas


con su t ipo de dat os, l as li gaduras de int engridad que vi gil an el valor que
se guarde como dato en l as columnas o atributos sean llaves o no.

Sintaxis:

CREATE TABLE nombre_tabla


(
c a m p o l t i p o d a t o [ N U L L/ N O T N U L L] 1 C H E C K ( e x p r e s i n L g i c a ) 1 [

DEFAULT expresinConstante],
campo2 tipo dato [NULL/NOT NULL] 1 C H E C K ( e x p r e s i n L g i c a ) 1 [

DEFAULT expresinConstante ],
campo-N,
PRIMARY KEY(campo_llave),
FOREIGN KEY (campo_llave) REFERENCES tabla2 (campo_llave -tabla2)
)

8
Manual Prctico de SQL
Preparado por: Alvaro E. Garca

Ligaduras
Es t o de l as l i gadu ra s es m u y i m port ant e que l e pres ent en at enci n. A yud a
a que dejes la vigilancia de la entrada de datos al DBMS y no al que
programa la aplicacin que a veces puede darse que no haga tal validacin
en la entrada de los datos. Esto tiene l a ventaja de ahorrar lneas de
cdigos en los programas y no te que se implementan en la sentencia SQL
CREATE TABLE .

Tipo: Integridad de Dominio o Columna


E s pec if ic a un co nju nto de valor es qu e son vlidos a in gr es ar so br e un a co lumn a


especfica para una tabla de la base de datos . Esta integridad se verifica a travs de
una la validac in de los valores de datos que s e ingresan y el tipo de los datos a
introducir (numrico, alfanumrico, alfabtico, etc. .

D es c r i p c i n Clusula SQL
Tipos de
R es t r ic c i n
Esta restriccin asigna DEFAULT
un valor es pec f ico a
una columna cuando
P o r ej em p lo , s l as r e g la s d e l n ego c io d ic en
el valor para ello no
que no se contratan a menores de edad, en la
haya sido
Por Defecto c o lu m n a E DA D en l a t a b la EM P LEA D O s e
explcit am ent e restringe a que si una edad para un empleado
proporcionado para tal que ingresa no es sealada explcitamente, el
co lumn a en un a DBMS asigne 18 que es la mayora de ed ad.
s en t enc ia "INSE RT" o
de adicin de un nuevo
registro en la tabla. CREATE TABLE EMPLEADO (ID_EMPL int
Primary KEY, EDAD int not null default 18 )
Especfic a los valores CHECK
de datos que el DBMS
Por Validac i n acepta le sean CREATE TABLE EMPLEADO ( ID INT
i n gr es a do s p ar a u n a
co lumn a. PRIMARY KEY, EDAD INT DEFAULT 18, SEXO
VARCHAR(1) CHECK ( SEXO IN ('F','M') ) )

Por ejem plo, la columna SEXO, solo permitir


el ingreso del caracter F o M.
Especifica los valores REFERENCES
de datos que son
aceptables para CREATE TABLE JOBS (job_id int primary key
actualizar una columna not null, func_id int unique)
y qu e est n bas ados en
Por Referencia valores de datos
CREATE TABLE EMPLEADO ( ID INT
loc aliz ados en un a
PRIM A RY K EY, EDA D IN T DEFA U LT 1 8 , S EXO
columna de otra tabla.
VARCHAR(1) CHECK ( SEXO IN ('F','M') ) ,
NO_FUNC int R EFE RE NC ES jo bs (f u n c _ id) )

El valor de lo que entre en la columna


NO_FUNC en la tabla EMPLEADO deber ser
uno de los valores contenido en la columna
FUNC_ID en la Tabla JOBS.

9
Manual Prctico de SQL
Preparado por: Alvaro E. Garca

Tipo: Integridad de Entidad o Tabla


Especfica que en una tabla o entidad, todas sus filas tenga un identificador
nico que diferencie a una fila de otra y tambin que se establezcan columnas
cuyo contenido es un valor nico que las hace llaves candidatas para un futuro
como por ejemplo: nmero de cdula, nmero de seguro social o cuenta de e -
mail.

Descripcin Clusula SQL


Tipos de
Restriccin
Este tipo de PRIMARY KEY
restriccin se aplica
a todas las filas CREATE TABLE CLIENTE (NUMCLI INT not
permitiendo que null,
exista un
NOMCLI char(30) not null, DIRCLI char(30),
Por Llave identificador, que se FAX INT, E_MAIL CHAR(30) UNIQUE not
Primaria conoce como llave null, SALD_0_30 DECIMAL (10,2),
primaria y que se SALD_31_60 DECIMAL (10,2), SALD_61_90
asegura que los DECIMAL (10,2), primary key (NUMCLI) )
usuarios no
introduzcan valores
duplicados. Adems En este ejemplo, NUMCLI corresponder a
asegura que se cree ser la llave primaria de la tabla CLIENTE.
un ndice para
mejorar el

desempeo. Los
valores nulos no
estn permitidos
para este tipo de
restriccin.

Con esta restriccin UNIQUE


se previene la
duplicacin de CREATE TABLE CLIENTE (NUMCLI INT not
valores en columnas null,
que tienen valor nico NOMCLI char(30) not null, DIRCLI char(30),
Por Valor y que no son llave FAX INT, E_MAIL CHAR(30) UNIQUE not
Unico primaria pero que null, SALD O 30 DECIMAL (10,2),
pueden ser una llave
alternativa o SALD_31_60 DECIMAL (10,2), SALD_61_90
candidata para el DECIMAL (10,2), primary key (NUMCLI) )
futuro. Asegura que
se cree (Por parte del En este ejemplo, E_MAIL correponder a
DBMS) un ndice para ser una columna de valores nico en la
mejorar el tabla CLIENTE

desempeo. Y al igual
que las llaves
primarias, no se le
est permitido que se
introduzcan valores
nulos.

10
Manual Prctico de SQL
Preparado por: Alvaro E. Garca
Tipo: Integridad Referencial
La Integridad Referencial asegura que las relaciones que existe entre llave
primaria (en la tabla referenciada) y la llave fornea (en las tablas referenciantes)
sern siempre mantenidas. Una fila o registro en la tabla referenciada (tabla
donde reside la llave primaria) no puede ser borrada o su llave primaria cambiada
si existe una fila o registro con una llave fornea (en la tabla referenciante) que
se refiere a esa llave primaria.

Descripcin Clusula SQL


Tipos de
Restriccin
En esta restriccin se FOREIGN KEY
define una columna o
combinacin de
CREATE TABLE PEDIDO (NUMPED INT not
columnas en las
null PRIMARY KEY,
cuales su valor debe
Por Llave corresponder al valor NUMCLI INT not null, FECHA_PED
Fornea de la llave primaria DATETIME,

en la misma u en otra TOT_DESC DECIMAL (10,2),


tabla. FOREIGN KEY (NUMCLI) REFERENCES
CLIENTE(NUMCLI) )

En este ejemplo de la creacin de la tabla


PEDIDO, la columna NUMCLI correponder
a ser la llave fornea que hace referecia a la
llave primaria NUMCLI (no necesariamente
deben llamarse igual las columnas pero
deben tener igual tipo de datos) en la tabla
CLIENTE

11
Manual Prctico de SQL
Preparado por: Alvaro E. Garca
A continuacin se muestran las sentencias CREATE TABLE que crean las
t a b l a s d e l a B a s e d e D a t o s V E N T A S , d e l a c u a l ya s e c r e o e l r e a a l
principio de este manual.

Es m u y i m port ant e el orden en qu e se crean l as t abl as. S e debe a qu e no


de be vi ol a rs e l a r e f e re n ci a cr uz a d a ent r e l as l i ga du ra s de i nt e gri d a d d el
tipo referencial (es decir llave primaria con forneas). Por ejemplo no puede
crear la tabla de PEDIDO primero que la tabla de cliente, pues la tabla de
PEDIDO hace referencia a CLIENTE.

P ri m ero crea r l as t a bl as que sol o t i enen l l ave pri m ari a y l u ego l as t abl as
q u e i n c l u ye n l l a v e s f o r n e a s . E n n u e s t r o c a s o , p r i m e r o c r e a m o s a l a s
t a b l a s : C LIE N T E , A R T IC U LO y V E N D E D O R y d e s p u s a P E D ID O y a
DETALLE PED.

12
Manual Prctico de SQL
Preparado por: Alvaro E. Garca

Creacin de Tabla Cliente


CREATE TABLE CLIENTE
(NUMCLI INT not null,
NOMCLI CHAR(30) not null, DIRCLI char(30), FAX INT,
E_MAIL CHAR(30) DEFAULT ('Desconocido'),
SALD_0_30 DECIMAL (10,2), SALD_31_60 DECIMAL (10,2),
SALD 61 90 DECIMAL (10,2), primary key (NUMCLI) )
Creacin de Tabla Vendedor
CREATE TABLE VENDEDOR (CODVEND INT not null,
NOMVEND char(20) not null,APELLVEND char(20) not null,
DIRVEND char(30), TELVEND INT, E_MAIL CHAR(30)
DEFAULT(' Desconocido' ),
CUOTA DECIMAL (10,2), VENTAS DECIMAL (10,2), primary key
(CODVEND) )
Creacin de Tabla Artculo
CREATE TABLE ARTICULO (NUMART char(4) not null PRIMARY
KEY, DESCRIPCION CHAR(30), PRECIO DECIMAL (10,2) NOT
NULL CHECK (PRECIO >, 0.00), EXISTENCIA INT,
CATEGORIA_ART CHAR (15))

Creacin de Tabla Pedido


CREATE TABLE PEDIDO (NUMPED INT not null PRIMARY KEY,
NUMCLI INT not null, FECHA_PED DATETIME,
TOT_DESC DECIMAL (10,2),
FOREIGN KEY (NUMCLI) REFERENCES CLIENTE(NUMCLI) ,
FOREIGN KEY (CODVEND) REFERENCES VENDEDOR(CODVEND))

Creacin de Tabla Detalle Ped


CREATE TABLE DETALLE_PED (NUMPED INT not null,
NUMART char (4) not null, CANTIDAD INT CHECK (CANTIDAD >.=
0), PRIMARY KEY (NUMPED,NUMART),
FOREIGN KEY (NUMPED) REFERENCES PEDIDO(NUMPED),
FOREIGN KEY (NUMART) REFERENCES ARTICULO (NUMART) )

13
Manual Prctico de SQL
Preparado por: Alvaro E. Garca

Eliminacin de Tablas:
La sentencia para eliminar una tabla y por ende todo los objetos asociados
con esa t abl a como: las vistas, disparadores, et c., DR OP TABLE, donde r
es el nom bre de un a t abl a ex i st ent e.

DROP TABLE r
Por ejemplo si deseamos eliminar a la tabla ARTICULO PANAMA,
revis emos haber si est a ya exi st e, de l a si gui et e m anera

SELECT * from ARTICULO PANAMA

P os t eriorm ent e una vez verii fcada que la t abl a exi st e, se procede a borrar
la tabla, escribiendo lo siguiente en 1 ainterface de consultas del SQL:

Sentencia ALTER
Despus que una tabla ha sido utilizada durante algn tiempo, los
usuarios suelen descubrir que desean almacenar informacin adicional
con res p ect o a l as t abl as. P or ej em pl o en l a b ase d e dat os VE NT AS , s e
podra desear:

A adi r e l n om br e y num e ro d e d e u na p e rso n a d e c ont a ct o a c ad a


fila de la tabla CLIENTES para contacta r a los clientes.
Aadir una columna de punto de reorden mnimo en la tabla
ARTICULO, para que la base de datos pueda alertar
automticamente cuando la cantidad o stock de un producto en
particular esta por debajo de lo optimo para la venta.

Por lo general, esta sentencia ALTER TABLE se utiliza sobre tablas que ya
poseen desde cientos a miles de filas por ser tablas de un sistemas de
Bas e d e Dat os qu e ya est a en p roducci n .

14
Manual Prctico de SQL
Preparado por: Alvaro E. Garca
Los cambios que se pueden realizar con la sentencia SQL ALTER TABLE
son (ver ejemplo con la figura ) :
TI
al a2 a3 a4 a5

Tabla para ejemplos de sentencia ALTER TABLE.

1. Aadi r una d efi ni ci n de l a col um na de una t abl a. P ued e crea rse con
valores nulos o valores

A LT E R T A B LE n o m b r e _ d e _ l a _ t a b l a AD D n o m b r e _ d e _ c o l u m n a _ n u e v a
TIPO DE DATO NULL

[ CONSTRAINT nombre_de_nueva_restriccion CHECK / DEFAULT]

E j e m p l o: A LT E R T A B LE T 1 A D D a 6 V A R C H A R ( 3 0 ) N UL L

2 . El i m i nar una col um na de l a t abl a. P e ro ant es d e su el i m i naci n deb en


ser eliminados por ALTER TABLE t odas las restricciones que estn
definidas sobre esta columna.

E j e m p l o: A LT E R T A B LE T 1 D R O P C OLU M N a 4
3 . El i m i n ar l a de fi ni ci n de : l l a v e p ri m a ri a, f o r n ea o r es t r i c c i on es d e
ligaduras de integridad (check), existentes para una tabla. Esta accin no
elimina la a la columna con sus valores, ella permanece tal cual como
esta, solo se elimina su definicin. Este procedimiento varia de DBMS, con
SQL SEVER, Primero se debe averiguar el nombre de la restriccin o
ligadura de integridad (CONSTRAINT) eliminar se ejecuta el
p r o c e d i m i e n t o a l m a c e n a d o S P _ H E LP n o m b r e d e T a b l a y e n e l r e s u l t a d o
s e bu s ca en l a col u m na co nst r ai nt _n am e a l a d e r ec h a de co nst ra i nt _t yp e
para saber el nombre que el DBMS le puso a la restriccin de llave
primaria y luego se ejecuta la sentencia ALTER TABLE con el nombre de la
definicin de llave primaria a eliminar.

Ejemplo: ALTER TABLE T1 DROP CONSTRAINT


PK T1 numeroqueasignaelDBM S

Es t o e l i m i na c u al q u i e r a l i ga du r a d e i nt e gri da d t r at ad a en el t em a 4. 2.1 .
P ara ve ri fi ca r al ej ecut ar nuevam ent e S P _ HELP nom br e d e Tabl a, en el
res ul t ado ya no sal e en const rai nt _ t ype el nombre de l a ll ave prim ari a.

15

También podría gustarte