Introducción a SQL 08/11/2013 1. Introducción 2. Historia de SQL 3. Lenguajes dentro de SQL 4. Tipos de datos en SQL 5. Manejo de tablas Introducción a SQL (DDL) 6. Secuencias Grupo de Ingeniería del Software y Bases de Datos Departamento de Lenguajes y Sistemas Informáticos © Diseño de Amador Durán Toro, 2011 Universidad de Sevilla noviembre 2012 Introducción a SQL • Objetivos de este tema – Conocer los orígenes de SQL. 1. Introducción 2. Historia de SQL 3. Lenguajes dentro de SQL 4. Tipos de datos en SQL 5. Manejo de tablas 6. Secuencias – Conocer tanto el DDL (Data Definition Language) como el DML (Data Manipulation Language) de SQL. – Ser capaz de usar el SQL DDL para definir noviembre 2012 IISSI Introducción a la Ingeniería del Software y a los Sistemas de Información 1 © Diseño de Amador Durán Toro, 2011 modelos relacionales. 1 Introducción a SQL 08/11/2013 Introducción a SQL • ¿Qué es SQL? – SQL (Structured Query Language) es el lenguaje 1. Introducción estándar para definir, manipular y consultar bases de datos relacionales. 2. Historia de SQL 3. Lenguajes dentro de SQL 4. Tipos de datos en SQL – SQL permite especificar consultas declarativas: declarativas se especifica qué datos se quieren obtener, pero no 5. Manejo de tablas 6. Secuencias el cómo obtenerlos. – SQL suele dividirse en dos partes: • DML (Data Manipulation Language): gestión de los datos (inserción, actualización, borrado y consulta de datos). Introducción a la Ingeniería del Software y a los Sistemas de Información noviembre 2012 2 © Diseño de Amador Durán Toro, 2011 • DDL (Data Definition Language): gestión del esquema de la base de datos (creación, modificación y borrado de tablas, claves, etc.) Historia de SQL 1. Introducción Aňo Nombre Alias Comentarios 1986 SQL-86 Primera publicación hecha por ANSI. Confirmada SQL-87 por ISO en 1987. 2. Historia de SQL 3. Lenguajes dentro de SQL 4. Tipos de datos en SQL 5. Manejo de tablas 6. Secuencias 1989 SQL-89 1992 SQL-92 SQL2 Importantes modificaciones 1999 SQL:1999 SQL2000 Se agregaron expresiones regulares, consultas SQL3 Pocas modificaciones Oracle Entry level recursivas (para relaciones jerárquicas), triggers y algunas características orientadas a objetos. 2003 SQL:2003 Introduce características de XML, junto a la estandarizyación de objetos sequence y los campos autonuméricos 2006 SQL:2006 Define la manera en la cual SQL se puede 2008 noviembre 2012 IISSI SQL:2008 Modificaciones de ORDER BY, incluye disparadores tipo INSTEAD OF... Introducción a la Ingeniería del Software y a los Sistemas de Información 3 © Diseño de Amador Durán Toro, 2011 utilizar conjuntamente con XML 2 Introducción a SQL 08/11/2013 Lenguajes dentro de SQL • En SQL existen dos tipos de sentencias: – DDL (Data Definition Language) 1. Introducción 2. Historia de SQL – DML (Data Manipulation Language) 3. Lenguajes dentro de SQL 4. Tipos de datos en SQL 5. Manejo de tablas 6. Secuencias • DDL es utilizado para crear estructuras dentro de la base de datos, permitiendo por ejemplo: – CREATE, crear objetos en la base de datos como tablas, vistas, usuarios, perfiles… – ALTER, modificar los objetos creados – TRUNCATE, borrar todos los registros de una tabla noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 4 © Diseño de Amador Durán Toro, 2011 – DROP, borrar los objetos creados Lenguajes dentro de SQL 1. Introducción 2. Historia de SQL 3. Lenguajes dentro de SQL 4. Tipos de datos en SQL 5. Manejo de tablas 6. Secuencias • DML se usa para la gestión de los datos almacenados en las distintas estructuras. Puede ser utilizado en lenguajes de programación de propósito general como C o Pascal o bien en lenguajes específicos del fabricante (p.ej. PL/SQL en ORACLE, TRANSACT SQL en MS-SQL Server)... – SELECT, obtener un subconjunto de los datos almacenados – INSERT, insertar datos en una tabla – DELETE, borrar todos los objetos de una tabla pero manteniendo el espacio de los registros noviembre 2012 IISSI Introducción a la Ingeniería del Software y a los Sistemas de Información 5 © Diseño de Amador Durán Toro, 2011 – UPDATE, actualizar los datos de una tabla 3 Introducción a SQL 08/11/2013 Lenguajes dentro de SQL • El DDL permite, entre otras cosas: 1. Introducción 2. Historia de SQL 3. Lenguajes dentro de SQL Crear Modificar Borrar Renombrar 4. Tipos de datos en SQL Tablas Índices Vistas 5. Manejo de tablas 6. Secuencias – Se pueden crear tablas con la instrucción CREATE TABLE nombre_tabla ( atributos: cada uno con su tipo de datos y restricciones ); – Las vistas no son más que “consultas con nombres” CREATE VIEW nombre_vista AS consulta; – Se crean índices de la forma: noviembre 2012 Introducción a la Ingeniería del Software y a los Sistemas de Información 6 © Diseño de Amador Durán Toro, 2011 CREATE INDEX nombreindice ON tabla(columna(s)); Tipos de Datos en Oracle • CHAR (tamaño (tamaño) tamaño) – Cadena de caracteres de longitud fija (tamaño por defecto 1). Hasta 2000 bytes. 1. Introducción 2. Historia de SQL 3. Lenguajes dentro de SQL 4. Tipos de datos en SQL 5. Manejo de tablas 6. Secuencias • VARCHAR (tamaño) – Cadena de caracteres de longitud variable. En desuso, se utiliza VARCHAR2 en su lugar. • VARCHAR2 (tamaño) – Cadena de caracteres de longitud variable. Entre 1 y 4000 bytes como máximo. El tamaño del campo dependerá del valor que contenga, es de longitud variable. • NVARCHAR (tamaño) – Cadena de caracteres de longitud fija que sólo almacena caracteres Unicode. – Cadena de caracteres de longitud variable que sólo almacena caracteres Unicode. noviembre 2012 IISSI Introducción a la Ingeniería del Software y a los Sistemas de Información 7 © Diseño de Amador Durán Toro, 2011 • NVARCHAR2 (tamaño) 4 Introducción a SQL 08/11/2013 Tipos de Datos en Oracle • NUMBER (L, D) – Números de coma fija o flotante. L representa la longitud y D el número de dígitos decimales. Ej. NUMBER(5, 2) 999.99 1. Introducción – Según el dialecto SQL, SQL también se puede especificar como: DECIMAL(L,D), DEC(L,D) o NUMERIC(L,D) 2. Historia de SQL 3. Lenguajes dentro de SQL 4. Tipos de datos en SQL • INTEGER 5. Manejo de tablas – Números enteros, también indicados como INT o SMALLINT. SMALLINT 6. Secuencias • DATE – Fechas (DD-MM-AAAA) • BLOB – Objeto binarios de gran tamaño (hasta 4 Gigabyes). • CLOB • RAW (tamaño) – Datos binarios en bruto: imágenes, vídeo, sonido, etc. Introducción a la Ingeniería del Software y a los Sistemas de Información noviembre 2012 8 © Diseño de Amador Durán Toro, 2011 – Objetos de caracteres de gran tamaño (hasta 4 Gigabyes). Creación de Tablas 1. Introducción Especificación de restricciones de columna – Cláusula NULL o NOT NULL, indica si una columna puede contener o no NULL, Por omisión, omisión se asume NULL – CREATE TABLE Empleado (dni VARCHAR(9), nombre VARCHAR(15) NOT NULL); NULL – Cláusula DEFAULT <valor> 2. Historia de SQL 3. Lenguajes dentro de SQL 4. Tipos de datos en SQL • Valor por omisión (o por defecto) 5. Manejo de tablas • CREATE TABLE Empleado ( ..., salario DECIMAL(5,2) DEFAULT 1000 NULL); NULL 6. Secuencias • Si una columna no tiene DEFAULT, su valor por defecto es: • noviembre 2012 IISSI – El de su dominio, si su tipo es un dominio que incluye DEFAULT – NULL en cualquier otro caso, siempre que la columna permita NULL Especificación de restricciones de tabla – Cláusula PRIMARY KEY (<lista_columnas (<lista_columnas>) lista_columnas>) que componen la clave primaria – Cláusula UNIQUE (<lista_columnas (<lista_columnas>) lista_columnas>) que forman una clave alternativa – Cláusula FOREIGN KEY (<lista_columnas (<lista_columnas>) lista_columnas>) REFERENCES <tabla>(<lista_columnas lista_columnas>) <tabla>(< lista_columnas >) – Cláusula CHECK (<expresión>), que determina una condición sobre los valores de las columnas que debe cumplir toda fila de la tabla Introducción a la Ingeniería del Software y a los Sistemas de Información 9 © Diseño de Amador Durán Toro, 2011 • 5 Introducción a SQL 08/11/2013 Creación de Tablas CREATE TABLE USUARIOS2 ( IDUSUARIO NUMBER NOT NULL 1. Introducción , EMAIL VARCHAR2(20 BYTE) NOT NULL 2. Historia de SQL 3. Lenguajes dentro de SQL , DIRECCION VARCHAR2(100 BYTE) NOT NULL 4. Tipos de datos en SQL , NOMBRE VARCHAR2(20 BYTE) NOT NULL 5. Manejo de tablas , GENERO VARCHAR2(8 BYTE) NOT NULL 6. Secuencias , CONSTRAINT USUARIOS_PK PRIMARY KEY (IDUSUARIO) , CONSTRAINT USUARIOS_UK1 UNIQUE (EMAIL) , CONSTRAINT USUARIOS_CHK1 CHECK (GENERO = 'Hombre' OR GENERO = 'Mujer') Introducción a la Ingeniería del Software y a los Sistemas de Información noviembre 2012 10 © Diseño de Amador Durán Toro, 2011 ); Creación de Tablas CREATE TABLE PEDIDOS ( IDPEDIDO NUMBER NOT NULL 1. Introducción , FECHAENTREGA DATE 2. Historia de SQL , FECHAPEDIDO DATE 3. Lenguajes dentro de SQL , PRECIOENVIO NUMBER 4. Tipos de datos en SQL , PRECIOTOTAL NUMBER 5. Manejo de tablas , IDUSU NUMBER 6. Secuencias , CONSTRAINT PEDIDOS_PK PRIMARY KEY (IDPEDIDO) , CONSTRAINT PEDIDOS_USUARIOS_FK1 FOREIGN KEY (IDPEDIDO) REFERENCES USUARIOS (IDUSUARIO) Cuando la clave primaria a la que se referencia es compuesta se debe utilizar la sintaxis: FOREIGN KEY (column1, column2, ... column_n) REFERENCES parent_table (column1, column2, ... column_n) noviembre 2012 IISSI Introducción a la Ingeniería del Software y a los Sistemas de Información 11 © Diseño de Amador Durán Toro, 2011 ); 6 Introducción a SQL 08/11/2013 Secuencias (Autonuméricos en Oracle) • Las secuencias (sequences) son objetos que facilitan la generación automática de series 1. Introducción numéricas. 2. Historia de SQL 3. Lenguajes dentro de SQL 4. Tipos de datos en SQL 5. Manejo de tablas • 6. Secuencias Los usos más frecuentes de las secuencias, son: – La generación automática de claves primarias – Coordinar las claves de múltiples filas o tablas. • Las secuencias son independientes de las tablas; por tanto, una misma secuencia se puede usar para más tablas. Introducción a la Ingeniería del Software y a los Sistemas de Información diciembre 2011 12 © Diseño de Amador Durán Toro, 2011 generar valores de columnas numéricas de una o Secuencias CREATE SEQUENCE [INCREMENT [START 1. Introducción 3. Lenguajes dentro de SQL n] n] n] ...; 4. Tipos de datos en SQL 6. Secuencias BY WITH [MAXVALUE 2. Historia de SQL 5. Manejo de tablas nombre_secuencia • Para referenciar al número actual de una secuencia: • Para generar el siguiente número de una secuencia: nombre_secuencia.Nextval .Nextval • Los usos posibles de Nextval y Currval son: Clausula “Values” del comando Insert Lista “Select” del comando Select Clausula “Set” del comando Update diciembre 2011 IISSI Introducción a la Ingeniería del Software y a los Sistemas de Información 13 © Diseño de Amador Durán Toro, 2011 nombre_secuencia.Currval .Currval 7 Introducción a SQL 08/11/2013 Secuencias • Ejemplo de creación de secuencia CREATE SEQUENCE sec_emp; 1. Introducción 2. Historia de SQL 3. Lenguajes dentro de SQL 4. Tipos de datos en SQL 5. Manejo de tablas 6. Secuencias • Obtener los valores de la clave primaria de la tabla Empleado y coordinar los valores de las claves primarias de las tabla Empleado y la tabla Salario. – Insertar fila en la tabla Empleado INSERT INTO Empleado (cod_emp,codemp...) VALUES (sec_emp.NEXTVAL sec_emp.NEXTVAL, sec_emp.NEXTVAL ‘emp01’...); INSERT INTO Salario (cod_emp,mes...) VALUES (sec_emp.CURRVAL sec_emp.CURRVAL,..) sec_emp.CURRVAL diciembre 2011 IISSI Introducción a la Ingeniería del Software y a los Sistemas de Información 14 © Diseño de Amador Durán Toro, 2011 – Insertar empleado en la tabla Salarios 8