1-Lenguaje SQL I Actualizado

30
SQL (Structured Query Language) Lenguaje Estructurado de Consultas

Transcript of 1-Lenguaje SQL I Actualizado

SQL

(Structured Query Language)

Lenguaje Estructurado de Consultas

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

Introducción

• SQL es el lenguaje fundamental de los SGBD

Relacionales.

• Es uno de los lenguajes más utilizados de la

historia de la Informática.

• Es un lenguaje declarativo, define lo que se va

a hacer por encima del cómo 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 Gestión de Bases de Datos.

HISTORIA DEL LENGUAJE SQL

• Nació en 1970 y fue creado por Codd.

• Dos años después, IBM adopta las directrices

formuladas por Codd y crea el Standard English

Query Lenguage (Lenguaje Estándar Inglés para

Consultas) SQUEL.

• Más tarde cambió su nombre por SQL.

• En 1979 Oracle presenta la primera implementación

comercial del lenguaje.

• Poco después se convierte en el estándar en Bases

de datos avalado por lo organismos internacionales

de estandarización ISO y ANSI.

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

VERSIONES DE SQL

• 1989: Aparece el estándar ISO y ANSI SQL89 O

SQL1.

• 1992: Aparece la versión más conocida de SQL,

llamada SQL92 o SQL2

• 1999: Se aprueba una nueva versión, 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 estándar hasta hoy, SQL2008

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

PROCESO DE LAS INSTRUCCIONES SQL

• SQL INTERACTIVO: las instrucciones se introducen a

través de un cliente conectado directamente al servidor

SQL.

• SQL EMBEBIDO O INCRUSTADO: las instrucciones de

SQL forman parte del código de otro lenguaje que se

considera anfitrión (C, Java, Pascal, Cobol, VisualBasic)

• SQL a través de clientes gráficos: un software que

permite conectar a la BD y manejarla de forma gráfica.

Más cómodo para usuarios.

• SQL dinámico: instrucciones de SQL incrustadas en

módulos especiales que serán llamados desde

aplicaciones.

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

SENTENCIAS DE SQL

DDL

Sentencias de Definición de Datos

Crear objetos de la BD:CREATE

Modificar objetos: ALTER*

Borrar objetos: DROP*

DML

Sentencias de Manipulación de datos

Recuperar información: SELECT

Actualizar información:

Añadir 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 Programático

Utilización de cursores:

DECLARE

OPEN

FETCH

CLOSE

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

ELEMENTOS DE LAS SENTENCIAS SQL

• Comandos: select, create…

• Claúsulas: palabras especiales que modifican la acción

de un comando: where

• Literales: valores concretos: ‘matematicas’

• Expresiones: asignatura=‘matematicas”

• Nombres de Objetos: ALUMNOS, asignatura

• Operadores: aritméticos (+,-,*./…) o lógicos (=, >,

<,<>,AND, OR)

• Funciones: para conseguir valores complejos (sum, …)

Ejemplo: SELECT CURSO, NOMBRE, NOTA FROM ALUMNOS

WHERE ASIGNATURA = ‘matematicas’

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

CONSIDERACIONES

• Los comandos de SQL van en mayúsculas.

• En sentencias complejas:

– Las llaves {} indican la elección obligatoria de entre

varios elementos.

– La barra vertical | separa los elementos de una

selección.

– Los corchetes [] se utilizan para un elemento opcional.

– El punto y como ; indica el final de la línea de

comando.

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

TIPOS DE DATOS

Tipos de datos Descripción

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 Gestión de Bases de Datos.

TIPOS DE DATOS

Tipos de datos Descripción

SMALLINT Enteros pequeños (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 NUMÉRICO

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

TIPOS DE DATOS

Tipos de datos Descripción

DATE Fecha

TIMESTAMP Fecha y hora

INTERVAL Intervalos

DATOS DE TIPO FECHA

DATOS DE TIPO LOGICO

Tipos de datos Descripción

BOOLEAN Toma valores verdadero / falso

BIT Binario

Sentencias de Definición de Datos

(DDL)

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

DEFINICIÓN

• El DDL es la parte del lenguaje SQL que realiza

la función de definición de datos del SGBD.

• Se encarga de la creación, modificación y

eliminación 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 Gestión 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 Gestión de Bases de Datos.

CREACIÓN 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 Gestión de Bases de Datos.

CREACIÓN DE DOMINIOS

• Además 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 lísta de valores válidos 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’, ‘Cáceres’, ‘Mérida’, ‘Badajoz’));

Borrar dominios:

DROP DOMAIN nombre_dominio {RESTRICT|CASCADE};

Ejemplo:

DROP DOMAIN dom_ciudades RESTRICT;

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

MODIFICAR TABLAS

ALTER TABLE nombre_tabla acción_modificar_columna|

acción_modif_restricción_tabla};

acción_modificar_columna puede ser:

• Añadirle 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) Añadir alguna nueva restricción de tabla (ADD restricción).

• 5) Borrar alguna restricción de tabla (DROPCONSTRAINT restricción).

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

BORRAR TABLAS

DROP TABLE nombre_tabla {RESTRICT|CASCADE};

• Si utilizamos la opción RESTRICT, la tabla no se borrará

si está referenciada.

• • Si usamos la opción CASCADE, todo lo que referencie a

la tabla se borrará junto con sus referencias.

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

VALORES POR DEFECTO (DEFAULT)

• A cada columna se le puede asignar un valor

por defecto durante su creación 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 Gestión de Bases de Datos.

RESTRICCIONES

• Una restricción es una condición de obligado

cumplimiento para una o más columnas de la

tabla.

• A cada restricción se le puede poner un

nombre.

• SINTAXIS:

CREATE TABLE Nombre_Tabla ( Campo1 tipo,

Campo2 tipo,

CONSTRAIN [Nombre_restriccion] Tipo (campo1),

CONSTRAIN [Nombre restricción] Tipo (campo2)

)

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

RESTRICCIONES

• Los tipos de restricciones son los siguientes:

• NOT NULL

• UNIQUE.

• PRIMARY KEY.

• FOREING KEY.

• CHECK (regla de validación)

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

NOT NULL (PROHIBIR NULOS)

• Esta restricción 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 creación o modificación del

campo añadiendo NOT NULL detrás del tipo.

• La restricción NOT NULL se puede poner a continuación

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) Restricción con nombre.

En ese caso la ponemos

al final

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

UNIQUE (VALORES ÚNICOS)

• Esta restricción OBLIGA a que el contenido de una o

más columnas no puedan repetir valores.

Ejemplo:

CREATE TABLE CLIENTES (

COD_CLIENTE INT NOT NULL ,

DNI_CLIENTE VARCHAR(9) UNIQUE)

O TAMBIÉN PODRIAMOS PONER

DNI_CLIENTE VARCHAR(9) CONSTRAINT dni_un UNIQUE

Si la restricción se refiere a varios campos, ponemos:

Restricción con nombre.

CREATE TABLE CLIENTES (

COD_CLIENTE INT NOT NULL ,

DNI_CLIENTE VARCHAR(9),

DIRECCION VARCHAR(50),

CONSTRAINT Clientes_un UNIQUE(DNI_CLIENTE, DIRECCIÓN)

Lenguaje SQL

Puerto Cruz Mateos Gestión 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

estén vacíos 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 TAMBIÉN PODRIAMOS PONER

COD_CLIENTE INT CONSTRAINT Clientes_PK PRIMARY KEY,

DNI_CLIENTE VARCHAR(9) UNIQUE)

• Si la clave está formada por más 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));

Restricción con nombre.

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

FOREING KEY (CLAVE SECUNDARIA O FORANEA)

• Una clave secundaria está formada por uno más campos de la tabla que

están 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 Gestión 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 modificación y borrado.

• Para evitarlos podemos añadir claúsulas detrás 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 haría nada.

• Se aplicarían las claúsulas cuando se eliminen filas y la clave principal esté

relacionada con las claves secundarias.

• Estas opciones son válidas también para la modificación de tablas

(UPDATE).

Lenguaje SQL

Puerto Cruz Mateos Gestión 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 Gestión de Bases de Datos.

CHECK (RESTRICCIONES DE VALIDACION)

• Marcan una condición 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 mínimo valor para el campo

stock_mínimo será 3.

Lenguaje SQL

Puerto Cruz Mateos Gestión 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_MÁXIMO INT,

CONSTRAINT Stock_máxi CHECK (STOCK_MINIMO<STOCK_MAXIMO)

);

• En este caso, el stock máximo será siempre mayor que el mínimo, que a su vez está

obligado a ser mayor de 3.

Lenguaje SQL

Puerto Cruz Mateos Gestión de Bases de Datos.

AÑADIR RESTRICCIONES

• Si queremos añadir restricciones después 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 añaden 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