Vous êtes sur la page 1sur 8
SQL TEMA 1 SQL> Lenguaje Estructurado de Consultas (Structured Query Language) valde para Base de Datos relacionales Lenguaje que comunica la base de datos con el usuario. SQL SQL*Plus TIPOS DE SENTENCIAS DDL > Data Description Language. Sentencias que se crea y mantiene la estructura de la base de datos. © REATE>Crear objetos ~> Tablas, vistas, procedimientos. ROP > Eliminar objetos ALTER >Modificar abjetos GRANT > Sirve para establecer los derechos que tendrén los usuarios sobre los objetos REVOQUE > Sirve para retirar privilegios sobre un objeto de la base de datos, DML > Data Manipulation Language. Sentencias para manipular los datos contenidos en la base de datos. + INSERT Sirve pore afadir tuples + UPDATE-> Sirve para modificar el contenido de una tupla + DELETE Permite borrar tuplas + SELECT Sirve para seleccionar tuplas TIPOS DE DATOS CHAR(a) > Define un nimero (n) de caracteres definidos. Caracteristicas: © Tiene una tongitud fija introduce una cadena menor se rellena con espacios. ‘© Si'se introduce una cadena mayor se pase y da error. VARCHAR2(n) > Es igual que CHAR, pero la longitud es variable, Caracteristicas: ‘© Tienen una longitud variable. © Cuando la cadena es menor se almacena lo introducido nada mas. © Cuando la cadena es mayor que lo establecido da error. NUMBER(p, e) > Almacena datos numéricos. Se utiliza lo que es la precisién y la escala: Precisién (p) > nimero de digitos que vamos a usar, por ejemplo del 1 al 38. Escala (€) > nimero de digitos a la derecha del punto, por ejemplo del -84 al 127. Sila escala es 0, es un n° entero, Si la escala es negativa, redondea tantos nlimeros como hemos puesto ala izq de la coma, Ejemplos: 84745832 > Number(6-2) : 847500 7466123.89 > Number(9): 7466124 > Number(9,1) : 7466123.9 > Number(6) : Error DATE > Almacena fechas y horas «Por defecto el formato es DDIMMIYY. LONG + Almacena grandes cadenas de caracteres (textos largos). RAW y LONGRAW > Almacena grandes contenidos de informacién de forma binaria. CREACION DE TABLAS ‘Aspectos Fundamentales para la creacién de una tabla mediante SENTENCIAS DDL: ‘Nombre de la tabla. ‘Nombre para cada columna, ‘Tipo de dato de cada column. ‘Tamafto de cada columna. Restricciones. La sintaxis en SQL para la creacién de una tabla seria: SQL > CREATE TABLE nosbre_de_ia tabla ( ‘colusnai TIFO_DE_DATO (NOT FULE], columa2 TIRO_DEDATO (NOT NULL], }" (WaRLESPACE nombre tablespace] ; Por ejemplo, creacién de una tabla llamada ALUMNOS: SQL > create table ALUMNOS ( num_matricula number (6), nombre varchar2 (15), fecha_nac date, direccion varchar2(30), Localidad varchar? (15) 7 ara ver eémo ha quedado escribiriamos la siguiente sentencia: SQL > DESC ALUMNOS; RESTRICCIONES DE INTEGRIDAD DE DATOS Las restricciones son un conjunto de reglas que nos aseguran la integridad de los datos en nuestra base de datos. Dos tipos de restricciones: © Integridad de los datos: ‘Una restriccién de integridad de los datos es una regla que restringe el rango de valores para una o més ccolumnas de una tabla. © Integridad referencial (relaciones y claves de las tablas). Puede ser de dos tipos: 1. Restriccién de una columna: Restringimos una s6la columna. 2. Restriccién de la tabla: Para un grupo de columnas. 3 RESTRICCIONES EN CREATE TABLA La orden CREATE TABLE permite definir distintos tipos de restricci claves ajenas, obligatoriedad, valores por defecto y verificacién de ca Para defini las restricciones en la orden CREATE TABLE usamos la clausula CONSTRAINT. Una cldusula CONSTRAINT puede restringir una sola columna (restriccién de columna) © un grupo de columnas de una ‘misma tabla (restrieeién de tabla). Hay dos modos de especificar restricciones: como parte de la definicion de columnas (una restriccién de columna) o al final, una vez especificadas todas las columnas (una restriccién de tabi). A continuacién aparece el formato de la orden CREATE TABLE con restriccién de columna, La restriceién 2 ies sobre una tabla: claves primarias, forma parte de la definicién de la columna: ‘CREATE TABLE nombre tabla ( Columnal T1PO_DE_DATO [CONSTRAINT nombrerestriceién} INOT NULL] [UNIQUE] [PRIMARY KEY] [DEFAULT valor] [REFERENCES Nombretabla {(columna |, columna] ) | ION DELETE CASCADE} [CHECK condicién), Columna2 TIPO_DE_DATO ICONSTRAINT nombrerestriccién] [NOT NULL] [UNIQUE] [PRIMARY KEY} [DEFAULT valor] IREFERENCES Nombretabla [(columnal,columna))] ION DELETE CASCADE} [CHECK condicién), ) [TABLESPACE espacio_de_tablaj; Ejemplo: CREATE TABLE EMPLEADO ( NOMBRE, VARCHAR? (25) CONSTRAINT pk_empleado_ PRIMARY KEY, EDAD NUMBER CHECK (EDAD BETWEEN 18 AND 35), COD_PROVINCIA NUMBER(2)_ REFERENCES PROVINCIAS ON DELETE CASCADE, vs ‘Aqui se definen las siguientes restricciones: ~ Clave primaria: NOMBRE. = Clave Ajena: COD_PROVINCIA, que referencia a la tabla PROVINCIAS. - Verificacin de condici6n CHECK: la edad ha de estar comprendida entre 18 y 35. Las restricciones de la orden CREATE TABLE que aparecen al final de la definicién de las columnas (o de tabla) se diferencia de la anterior en que se puede hacer referencia a varias columnas en una tnica restrccién (por «ejemplo, dectarando dos columnas como clave primaria 0 ajena) CREATE TABLE nombre_tabla ( Columnal TIPO_DE_DATO, Columna2 TIPO_DE_DATO, Columna3 T1PO_DE_DATO, [CONSTRAINT nombrerestrieci6n] {{UNIQUE) | [PRIMARY KEY] (columna|,columnal)}, [CONSTRAINT nombrerestriceién} [FOREIGN KEY (columna [, columna] ) REFERENCES Nombretabla {(columna | , olumna] )] [ON DELETE CASCADE]} , [CONSTRAINT nombrerestrieci6n] [CHECK (condicién)] ) [TABLESPACE espacio_de_tablasls PRIMARY KEY (Clave Primaria): Utilizacion de la restricci6n PRIMARY KEY: Formato de restricci6n de Columna, SQL > CREATE TABLE nombre tabla ( Columnal TIPO_DE_DATO [CONSTRAINT nombrederestriccién] PRIMARY KEY, Columna2 TIPO_DE_DATO, ) [TABLESPACE nombre_tablespace]; Se la suele dar nombre a la restricci6n utilizando CONSTRAINT y el nombre de la restriceién: “Formato de Restriccién de Tabla. SQL > CREATE TABLE nombre tabla ( coll TIPO_DE_DATO, e012 TIBO_DE”DATO, (Constraint nombre_restriccién] PRIMARY KEY(col1{,col2]} ) TABLESPACE nonbré_tablespace] 7 « Creamos la tabla BLOQUESPISOS. Las columnas son ls siguientes: ome column presenta [rie (LEE alle donde estel Bloque |vARCHAR® (25) TUMERO ‘mero donde et el blogus UMBERG) ies. mero de plat {UMBERO) [puERTA en CHAR (I) CODIGO_POSTAL [digo postal {UMBERG) (ETROS feos de a vivenla {UMBER(S) IMENTARIOS rs als de a vivid /ARCHAR2 (60) )D_ZONA [Cédigo de zona donde esta el bloque. NUMBERQ) pyr [PNT del propitaro JARCHAR2 (10) ‘La clave primariaestaré formada por las columnas Calle, Numero, Piso y Puerta que, por tanto, no pueden contener valores rules, Se puede crear la tabla de la siguiente forma: SQL > CREATE TABLE BLOQUE_PISOS ( calle varchar2(25), numero number (3), piso number (3), puerta char (1), op number (5), m2 number (5), cod_zona number (5), dni varchar? (10), CONSTRAINT PK_BLOQUE_PISOS PRIMARY KEY (calle, numero, piso, puerta) ve Claves ajenas. La restriccin FOREIGN KEY Una clave ajena esté formada por una o varias columnas que estén asociadas a una clave primaria de otra o de la ‘misma tabla, Se pueden definirtantas claves ajenas como sea preciso, y pueden estar o no en la misma tabla que la clave primaria. El valor de la columna o columnas que son claves ajenas debe ser: NULL o Igual a un valor de la clave referenciada (regla de integridad referencial). Pueden darse dos tipos: © Decolumna, ‘© De grupos de columnas o de tabla Se utiliza de la siguiente manera: = De columna: SQL> CREATE TABLE nombre tabla ( columnal TIPO_DE_DATO [CONSTRAINT nombre_restriccién] REFERENCES nombre_de_la tabla [(columna[jcolumna]) [ON DELETE CASCADE] , columna2 TIPO_DE_DATO, ) [TABLESPACE nombre_tablespace]; -Formato de restriceién de Tabla SQL> CREATE TABLE nombre tabla ( colunnal TIPO DE DATO, columna2 TIPO_DE_DATO, [CONSTRAINT nombre_restriceién] FOREIGN KEY (columfal[,columna2]) REFERENCES nombre _de_la tabla [(columna[,columna]) [ON DELETE CASCADE], ) [RABLESPACE nombre_tablespace] ; Por ejemplo, vamos a crear estas dos tablas relacionadas entre PERSONAS PROVINCIAS dni (PK) od_prov (PK) nombre Tom _prov direccion poblacion cod_prov_per (FK) SQL> CREATE TABLE PROVINCIAS ( cod_prov number (5) CONSTRAINT PK_PROVINCIAS PRIMARY KEY, nom_prov varchar? (20) ) TABLESPACE USER DATA; SQL> CREATE TABLE PERSONAS ( ni number (8) CONSTRAINT PK_PERSONAS PRIMARY KEY, nombre varchar2 (25), direccion varchar? (30), poblacion varchar2(20), cod_prov_per number (5) CONSTRAINT FK_PERSONAS REFERENCES PROVINCIAS ) TABI = USER_DATA; tambien: COD_PROV_PER NUMBER(S), FOREIGN KEY (COD_PROV_PER) REFERENCES PROVINCIAS. ON DELETE CASCADE (Borrado en cascada): tenemios una tabla relacionada con otra u otras, con la opcién ON DELETE CASCADE si borramos una fila de una tabla maestra se borrarén automaticamnte todas las filas de la tabla detalle cuya clave ajena sea referenciada, Por ejemplo en la table PROVINCIAS creada anteriormente no podrfamos borrar un registro relacionado con ‘tro de la tabla PERSONAS, tendriamos que poner la siguiente restriccign a la hora de crear la tabla de la forma siguiente: [con IND nombre_restriccién] FOREIGN KEY (coll, col2, ...) nombre tabla ON DELETE CASCADE Para eliminar datos en cascada: SQL> Create table Nombre Tabla( (Coll TIPO DE DATO, Co12 TIPO_DE_DATO, C013. PIFO_OE_DA’ [CONSTRAINT nombre _tabla] FOREIGN KEY (Coll) REFERENCES Nombre Tabla ON DELETE CASCADE Hasta ahora al definir las restricciones de clave primaria y clave ajena no les hemos dado nombre. Por defecto ORACLE asigna un nombre a la restriccién SYS C00n, donde ‘n’ es un numero asignado autométicamente por ORACLE. NOT NULL Esta restriceién asociada a una columna significa que no puede tener valores nulos. DEFAULT Asignar valores por defecto a las columnas al crear Ia tabla En el momento de crear una tabla podemos asignar valores por defecto a las columnas. Si especificamos la cldusula DEFAULT a una columna, le proporcionamos un valor por omisién cuando el valor de la columna no se specifica en la cldusula INSERT. En la especificacién DEFAULT es posible incluir varias expresiones: constantes, funciones SQL y variables UID y SYSDATE. No se puede hacer referencias a columnas 0 a funciones PL/SQL. Ejemplo: SQL> Create table EJEMPLO ( DNI Varchar2(10) not null, Nombre Varchar2(30) DEFAULT ‘no definido', Edad Number (2), fecha DATE DEFAULT SYSDATE ae CHECK + Verificacién de condiciones. La restriceién CHECK Muchas columnas de tablas requieren valores limitados dentro de un rango 0 el cumplimiento de ciertas condiciones. Con una restriccién de verificacién de condiciones se puede expresar una condicién que ha de ‘cumplirse para todas y cada una de las filas de la tabla, La restriccién CHECK actia como una cldusula WHERE, Puede hacer referencia @ una o a més eolumnas, pero no a valores de otras filas, En una cléusula CHECK no cabe incluir subconsultas ni las pseudocolumnas SYSDATE, UID y USER. “Formato de restriccién de columna, SQL> CREATE TABLE nombre_tabla ( columnal TIPO_DE_DATO [CONSTRAINT flombre_restricelén] CHECK (condicién), columna2 TIPO_DE_DATO ) [TABLESPACE nombre_tablespace]; Formato de restricci6n de Tabla SOL> CREATE TABLE nombre tabla ( columnal TIPO_DE_DATO, columna2 TIPO_DE_DATO, [CONSTRAINT nombre_restriccién] CHECK (condicién), ) [TABLESPACE nombre_tablespace]? UNIQUE Evita valores repetidos en 1a misma columna, cuando se crea una restricciébn UNIQUE se crea un indice automaticamente. SQL> CREATE TABLE nombre tabla ( columnal TIPO_DE_DATO [CONSTRAINT Honbre_restriccién] UNIQUE, columna? TIPO_DE_DATO ) (TABLESPACE nombre tablespace]; Formato de restricci6n de Tabla SQL> CREATE TABLE nombre_tabla ( columnal TIPO_DE_DATO, columna? TIPO_DE_DATO, {CONSTRAINT nonbre_restriccién] UNIQUE (colunna[,columna]), ) (TABLESPACE nombre tablespacel; Vistas del onario de datos para Ias restrieciones Existe una serie de vistas creadas por Oracle que contienen informacién referente a las restricciones definidas en las tablas, Contienen informacion general las siguientes: USER_CONSTRAINTS: definiciones de restricciones de tablas propiedad del usuario. ALL_CONSTRAINTS: definiciones de restrcciones sobre tablas a las que puede acceder el usuario. DBA_CONSTRAINTS: todas las definiciones de restricciones sobre todas las tablas. Ejemplo de aplicacion Observemos las restricciones de la tabla EJEMPLO: el nombre de restriccién, el nombre de la tabla y el tipo de restricein: SQL> SELECT CONSTRAINT_NAME, TABLE NAME, CONSTRAINT_TYPE FROM USER_CONSTRAINTS | WHERE TABLE NANE='EJEMPLO'; Eltipo de CONSTRAINT (CONSTRAINT - TYPE) puede ser: © Restricciones de tipo CHECK, R__Restriccién FOREIGN KEY. (References). P_ Restriccién PRIMARY KEY. U__ Restriccién UNIQUE Para informacién sobre columnas tenemos: = USER_CONS_COLUMNS: informacién sobre las restricciones de columnas en tablas del usuario, - ALL_CONS_COLUMNS: informacién sobre las restricciones de columnas en tablas a las que puede acceder el usuario, = DBA_CONS_COLUMNS: informacién sobre todas las restricciones de columnas Ejercicios: Ejercicio 1: Tabla ALUMNOS: Alumnos Restricciones Dr No Nulo y Clave Primaria Nombre No Nulo y en maytsculas Edad Entre 5 y 20 atios curso 1,203 Ejercicio 2: Tabla ARTICULOS: Nane Nell Type Articulo not null varchar? (20) Cod_Fabricante not null umber (3) Beso not null Number (3) Categoria not null Varchar2 (10) Precio Venta Number (4) Precio Coste Number (4) Existencias - Number (5) Clave Primaria > Articulo, Cod Fabricante, Peso y Categoria. Cod_Fabricante > Clave ajena que referencia a la tabla Fabricantes. Precio Venta, Precio Coste y Peso>0 Categoria debe ser Primaria, Sacundaria o Terciaria. Ejercicio 3: Crear en SQL la siguiente tabla FABRICANTES : Name Type Cod_Fabricante Not Null Number (3) Nombre . Varchar2 (15) Pais - Varchar? (15) Clave Primaria Cod_Fabricante

Vous aimerez peut-être aussi