Sie sind auf Seite 1von 30

SQL

(Structured Query Language)


Lenguaje Estructurado de Consultas
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
Introduccin
SQL es el lenguaje fundamental de los SGBD
Relacionales.
Es uno de los lenguajes ms utilizados de la
historia de la Informtica.
Es un lenguaje declarativo, define lo que se va
a hacer por encima del cmo se va a hacer.
Agrupa todas las funciones que se le pueden
pedir a una Base de Datos, por lo que es
utilizado tanto por administradores como por
programadores y usuarios.
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
HISTORIA DEL LENGUAJE SQL
Naci en 1970 y fue creado por Codd.
Dos aos despus, IBM adopta las directrices
formuladas por Codd y crea el Standard English
Query Lenguage (Lenguaje Estndar Ingls para
Consultas) SQUEL.
Ms tarde cambi su nombre por SQL.
En 1979 Oracle presenta la primera implementacin
comercial del lenguaje.
Poco despus se convierte en el estndar en Bases
de datos avalado por lo organismos internacionales
de estandarizacin ISO y ANSI.

Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
VERSIONES DE SQL
1989: Aparece el estndar ISO y ANSI SQL89 O
SQL1.
1992: Aparece la versin ms conocida de SQL,
llamada SQL92 o SQL2
1999: Se aprueba una nueva versin, SQL99 que
incorpora mejoras que incluyen trigers,
procedimientos, funciones,
2006: SQL2006 Define las maneras en las cuales el
SQL se puede utilizar conjuntamente con XML.
2008: Aparece el ltimo estndar hasta hoy, SQL2008


Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
PROCESO DE LAS INSTRUCCIONES SQL
SQL INTERACTIVO: las instrucciones se introducen a
travs de un cliente conectado directamente al servidor
SQL.
SQL EMBEBIDO O INCRUSTADO: las instrucciones de
SQL forman parte del cdigo de otro lenguaje que se
considera anfitrin (C, Java, Pascal, Cobol, VisualBasic)
SQL a travs de clientes grficos: un software que
permite conectar a la BD y manejarla de forma grfica.
Ms cmodo para usuarios.
SQL dinmico: instrucciones de SQL incrustadas en
mdulos especiales que sern llamados desde
aplicaciones.
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
SENTENCIAS DE SQL
DDL
Sentencias de Definicin de Datos
Crear objetos de la BD:CREATE
Modificar objetos: ALTER*
Borrar objetos: DROP*
DML
Sentencias de Manipulacin de datos
Recuperar informacin: SELECT
Actualizar informacin:
Aadir INSERT
Modificar UPDATE
Borrar DELETE
DCL
Sentencias de Control de acceso
Dar privilegios de acceso a datos
GRANT
Quitar privilegios de acceso REVOKE
Control de transacciones : ROLLBACK y
COMMIT
SQL Programtico
Utilizacin de cursores:
DECLARE
OPEN
FETCH
CLOSE
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
ELEMENTOS DE LAS SENTENCIAS SQL
Comandos: select, create
Clasulas: palabras especiales que modifican la accin
de un comando: where
Literales: valores concretos: matematicas
Expresiones: asignatura=matematicas
Nombres de Objetos: ALUMNOS, asignatura
Operadores: aritmticos (+,-,*./) o lgicos (=, >,
<,<>,AND, OR)
Funciones: para conseguir valores complejos (sum, )
Ejemplo:
SELECT CURSO, NOMBRE, NOTA FROM ALUMNOS
WHERE ASIGNATURA = matematicas

Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
CONSIDERACIONES
Los comandos de SQL van en maysculas.
En sentencias complejas:
Las llaves {} indican la eleccin obligatoria de entre
varios elementos.
La barra vertical | separa los elementos de una
seleccin.
Los corchetes [] se utilizan para un elemento opcional.
El punto y como ; indica el final de la lnea de
comando.
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
TIPOS DE DATOS
Tipos de datos Descripcin
CHARACTER (longitud)
CHAR (longitud)
Cadenas de caracteres de longitud
fija.
CHARACTER VARYING (longitud)
VARCHAR(longitud)
Cadenas de caracteres de longitud
variable.
NCHAR (longitud) Texto de anchura fija para caracteres
nacionales
NVARCHAR(longitud) Texto de anchura variable para
caracteres nacionales.
DATOS DE TIPO TEXTO
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
TIPOS DE DATOS
Tipos de datos Descripcin
SMALLINT Enteros pequeos (2 bytes).
INTEGER
INT
Enteros normales (4 bytes)
BIGINT Enteros largos (8 bytes)
FLOAT
DOUBLE
DOUBLE PRECISSION
REAL
Decimal de coma variable
NUMERIC (m,d)
DECIMAL (m,d)
Decimal de coma fija
DATOS DE TIPO NUMRICO
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
TIPOS DE DATOS
Tipos de datos Descripcin
DATE Fecha
TIMESTAMP Fecha y hora
INTERVAL Intervalos
DATOS DE TIPO FECHA
DATOS DE TIPO LOGICO
Tipos de datos Descripcin
BOOLEAN Toma valores verdadero / falso
BIT Binario
Sentencias de Definicin de Datos
(DDL)
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
DEFINICIN
El DDL es la parte del lenguaje SQL que realiza
la funcin de definicin de datos del SGBD.
Se encarga de la creacin, modificacin y
eliminacin de los objetos de la Base de Datos.
Los objetos de la Base de Datos pueden ser:
tablas, vistas, ndices

Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
CREACION y BORRADO DE BASE DE DATOS
CREATE DATABASE nombre
DROP DATABASE nombre

Ejemplo:
CREATE DATABASE prueba
DROP DATABASE prueba

Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
CREACIN DE TABLAS
CREATE TABLE nombre_tabla (
nombre_columna tipo [ NULL | NOT NULL ] [PRIMARY KEY]
[, ... ] )

Ejemplo:
CREATE TABLE PROVEEDORES (
Codigo_proveedor INT
);
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
CREACIN DE DOMINIOS
Adems de los dominios dados por el tipo de datos predefinidos, el
SQL nos ofrece la posibilidad de trabajar con dominios definidos por el
usuario.
Un dominio nos permite definir una lsta de valores vlidos para
un campo.
CREATE DOMAIN nombre dominio [AS] tipos_datos
[def_defecto] [restricciones_dominio];
Ejemplo:
CREATE DOMAIN ciudades AS CHAR (20)
CONSTRAINT ciudades_validas
CHECK (VALUE IN (Plasencia, Cceres, Mrida, Badajoz));
Borrar dominios:
DROP DOMAIN nombre_dominio {RESTRICT|CASCADE};
Ejemplo:
DROP DOMAIN dom_ciudades RESTRICT;
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
MODIFICAR TABLAS
ALTER TABLE nombre_tabla accin_modificar_columna|
accin_modif_restriccin_tabla};
accin_modificar_columna puede ser:
Aadirle una columna (ADD columna).
ADD [COLUMN] columna def_columna |
2) Modificar las definiciones por defecto de la columna
(ALTER columna).
ALTER [COLUMN] columna {SET def_defecto|DROP DEFAULT
3) Borrar la columna (DROP columna).
DROP [COLUMN ] columna {RESTRICT|CASCADE}
4) Aadir alguna nueva restriccin de tabla (ADD restriccin).
5) Borrar alguna restriccin de tabla (DROPCONSTRAINT restriccin).
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
BORRAR TABLAS
DROP TABLE nombre_tabla {RESTRICT|CASCADE};
Si utilizamos la opcin RESTRICT, la tabla no se borrar
si est referenciada.
Si usamos la opcin CASCADE, todo lo que referencie a
la tabla se borrar junto con sus referencias.
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
VALORES POR DEFECTO (DEFAULT)
A cada columna se le puede asignar un valor
por defecto durante su creacin mediante la
propiedad default.
Ejemplo:
CREATE TABLE ARTICULO (
COD_ARTICULO INT,
NOMBRE VARCHAR(25),
PRECIO DECIMAL (10,2) DEFAULT 3,5
)
DEFAULT puede utilizarse con CREATE y con ALTER.
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
RESTRICCIONES
Una restriccin es una condicin de obligado
cumplimiento para una o ms columnas de la
tabla.
A cada restriccin se le puede poner un
nombre.
SINTAXIS:
CREATE TABLE Nombre_Tabla (
Campo1 tipo,
Campo2 tipo,
CONSTRAIN [Nombre_restriccion] Tipo (campo1),
CONSTRAIN [Nombre restriccin] Tipo (campo2)
)

Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
RESTRICCIONES
Los tipos de restricciones son los siguientes:
NOT NULL
UNIQUE.
PRIMARY KEY.
FOREING KEY.
CHECK (regla de validacin)


Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
NOT NULL (PROHIBIR NULOS)
Esta restriccin permite prohibir los valores nulos en un
campo de la tabla, obligando a que el campo tenga un
valor para que pueda ser almacenado en el registro.
Se puede colocar durante la creacin o modificacin del
campo aadiendo NOT NULL detrs del tipo.
La restriccin NOT NULL se puede poner a continuacin
del campo porque se aplicar solo a un campo.




Ejemplo:
CREATE TABLE CLIENTES
(COD_CLIENTE INT NOT NULL,
NOMBRE VARCHAR(25),
PRECIO DECIMAL (10,2) DEFAULT 3,5,
CONSTRAIN Nom_nn NOT NULL (Nombre)
Restriccin con nombre.
En ese caso la ponemos
al final
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
UNIQUE (VALORES NICOS)
Esta restriccin OBLIGA a que el contenido de una o
ms columnas no puedan repetir valores.
Ejemplo:
CREATE TABLE CLIENTES (
COD_CLIENTE INT NOT NULL ,
DNI_CLIENTE VARCHAR(9) UNIQUE)

O TAMBIN PODRIAMOS PONER
DNI_CLIENTE VARCHAR(9) CONSTRAINT dni_un UNIQUE
Si la restriccin se refiere a varios campos, ponemos:






Restriccin con nombre.
CREATE TABLE CLIENTES (
COD_CLIENTE INT NOT NULL ,
DNI_CLIENTE VARCHAR(9),
DIRECCION VARCHAR(50),
CONSTRAINT Clientes_un UNIQUE(DNI_CLIENTE, DIRECCIN)
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
PRIMARY KEY (CLAVE PRIMARIA)
La clave primaria est formada por los campos que identifican a cada
registro de forma nica dentro de la tabla.
Hace que los campos sean NOT NULL Y UNIQUE (sin posibilidad de que
estn vacos y sin posibilidad de estar duplicados)
Si la clave est formada por un solo campo:
CREATE TABLE CLIENTES (
COD_CLIENTE INT NOT NULL PRIMARY KEY,
DNI_CLIENTE VARCHAR(9) UNIQUE)
O TAMBIN PODRIAMOS PONER
COD_CLIENTE INT CONSTRAINT Clientes_PK PRIMARY KEY,
DNI_CLIENTE VARCHAR(9) UNIQUE)
Si la clave est formada por ms de un campo:
CREATE TABLE VENTAS (
COD_CLIENTE INT NOT NULL,
COD_PRODUCTO INT NOT NULL,
CONSTRAINT Ventas_PK PRIMARY KEY (COD_CLIENTE,
COD_PRODUCTO));

Restriccin con nombre.
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
FOREING KEY (CLAVE SECUNDARIA O FORANEA)
Una clave secundaria est formada por uno ms campos de la tabla que
estn relacionados con la clave primaria (o con otro campo) de otra tabla.
CREATE TABLE VENTAS
(
COD_CLIENTE INT NOT NULL,
COD_PRODUCTO INT NOT NULL,
CONSTRAINT Ventas_PK (COD_CLIENTE,COD_PRODUCTO)
CONSTRAINT Clientes_fk FOREING KEY (cod_cliente) REFERENCES CLIENTES
(COD_CLIENTE);
CONSTRAINT Produc tos_fk FOREING KEY (cod_productos) REFERENCES
PRODUCTOS(COD_PRODUCTO)
);
Significa que el campo cod_cliente se relaciona con el campo cod_cliente de la tabla
CLIENTES y que el campo cod_producto se relaciona con el campo cod_producto
de la tabla PRODUCTOS. Los campos no tienen porque llamarse igual en las dos
tablas, pero si deben ser del mismo tipo.
Al definir claves secundarias se crean relaciones entre las tablas, lo que obliga al
cumplimiento de la INTEGRIDAD REFERENCIAL.


Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
FOREING KEY E INTEGRIDAD REFERENCIAL
La Integridad Referencial es obligatoria en BD Relacionales, pero puede
ocasionar problemas al realizar operaciones de modificacin y borrado.
Para evitarlos podemos aadir clasulas detrs de REFERENCES.
ON DELETE SET NULL: Coloca a nulos todas las claves
secundarias relacionadas con la que borramos.
ON DELETE CASCADE: Borra todos los registros cuya clave
secundaria es igual que la clave del registro borrado.
ON DELETE SET DEFAULT. Coloca en el registro relacionado el
valor por defecto en la columna relacionada.
ON DELETE NOTHING (NOT ACTION). No hara nada.
Se aplicaran las clasulas cuando se eliminen filas y la clave principal est
relacionada con las claves secundarias.
Estas opciones son vlidas tambin para la modificacin de tablas
(UPDATE).


Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
EJEMPLO
CREATE TABLE VENTAS (
COD_CLIENTE INT,
COD_PRODUCTO INT,
FECHA DATETIME,
CONSTRAINT ventas_pk PRIMARY KEY( COD_CLIENTE, COD_PRODUCTO),
CONSTRAINT clientes_fk FOREING KEY(COD_CLIENTE) REFERENCES
CLIENTES (COD_CLIENTE) ON DELETE SET NULL,
CONSTRAINT productos_fk FOREING KEY (COD_PRODUCTO) REFERENCES
PRODUCTOS (COD_PRODUCTO) ON DELETE CASCADE
);
Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
CHECK (RESTRICCIONES DE VALIDACION)
Marcan una condicin que deben cumplir los valores de un campo.
Un mismo campo puede tener varias restricciones CHECK.
CREATE TABLE PRODUCTOS
(
COD_PRODUCTO INT NOT NULL RPIMARY KEY
NOMBRE VARCHAR (50) NOT NULL,
PRECIO DECIMAL(2,0) CHECK (PRECIO >1),
STOCK_MINIMO INT CHECK (STOCK_MINIMO >3)
);

En este caso, el precio no puede ser 0 y el mnimo valor para el campo
stock_mnimo ser 3.





Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
CHECK (RESTRICCIONES DE VALIDACION)
Si las restricciones se refieren a otros campos de la tabla, deben aparecer al
final de dicha tabla.
CREATE TABLE PRODUCTOS
(
COD_PRODUCTO INT NOT NULL RPIMARY KEY
NOMBRE VARCHAR (50) NOT NULL,
PRECIO DECIMAL(2,0) CHECK (PRECIO >1),
STOCK_MINIMO INT CHECK (STOCK_MINIMO >3),
STOCK_MXIMO INT,
CONSTRAINT Stock_mxi CHECK (STOCK_MINIMO<STOCK_MAXIMO)
);

En este caso, el stock mximo ser siempre mayor que el mnimo, que a su vez est
obligado a ser mayor de 3.




Lenguaje SQL
Puerto Cruz Mateos Gestin de Bases de Datos.
AADIR RESTRICCIONES
Si queremos aadir restricciones despus de tener creada la tabla:
ALTER TABLE Nombre _tabla
ADD CONSTRAINT [NOMBRE] TIPO (Campos)
Donde TIPO puede ser CHECK, PRIMARY KEY O FOREING KEY.
Las restricciones NOT NULL se aaden con ALTER TABLE MODIFY colocando
NOT NULL en el campo a modificar.

EJEMPLO:
ALTER TABLE PRODUCTOS
ADD CONSTRAINT precio_max CHECK (PRECIO <1000) ;

ALTER TABLE PRODUCTOS
MODIFY PRECIO NOT NULL

Das könnte Ihnen auch gefallen