Вы находитесь на странице: 1из 26

Curso sql

MILENA MAIGUEL

Agenda
1. Introduccin SQL 2. El DDL, lenguaje de definicin de datos Introduccin La sentencia CREATE TABLE

1. Introduccin SQL
Lenguaje de Consultas Estruturado (SQL)
Lenguaje de trabajo estndar para modelo relacional Componentes DDL: Data Definition Language DML: Data Manipulation Language

SQL
DDL - Lenguaje de definicin de datos. Definicin de esquemas, relaciones, ndices y vistas (una vista es una tabla virtual, ya que sus filas no se almacenan fsicamente, sino que son producto de una consulta) Autorizaciones al acceso a datos Definicin de reglas de integridad. Control de Concurrencia

Tipos de Objetos: - Tablas - ndices - Vistas - Otros

DML - Lenguaje interactivo de manipulacin de datos. Consultar datos almacenados. Modificar el contenido de los datos almacenados.
4

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


Una tabla es un objeto de la BD que almacena datos
CREATE TABLE tabla ( combre_columna1 tipo1 [DEFAULT definicion] [NOT NULL] [CHECK ()], [,nombre_columna2 tipo2 [DEFAULT definicion] [NOT NULL] [CHECK ()]]..., [CONSTRAINT nombre_restr UNIQUE|PRIMARY KEY (atrib1[,atrib2]...)], [CONSTRAINT nombre_restr FOREIGN KEY (atrib1 [,atrib2]...) REFERENCES ]tabla(atrib1[,atrib2]...) [ON DELETE SET NULL|CASCADE]], [CONSTRAINT nombre_restr CHECK condicion]) TABLESPACE nombre_TS;

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


1. DEFINICION DE TABLA: Es un nombre de menos de 30 caracteres (letras, nmeros, -). No es sensible a maysculas y minsculas La creacin de una tabla engloba las definiciones de atributos y/o restricciones:
La DEFINICIN DE ATRIBUTOS se realiza dando el nombre del atributo (se ajusta a las mismas reglas que los nombres de tablas), su tipo y opcionalmente indicando que no acepta valores nulos. En las columnas numricas pueden especificarse las caractersticas de precisin y escala. La precisin determina el nmero de cifras significativas de un valor numrico. La escala indica el nmero de dgitos despus del punto decimal.

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


2. DEFINICION DE COLUMNA. Cada columna de una tabla tendr lo siguiente: Nombre del campo dentro de una tabla. Tipo de dato, con su longitud si es que procede y NOT NULL si nunca puede estar vaco.

La definicin de cada columna va separada por ,. El nombre de campo sigue las mismas reglas que el nombre de tabla, pero las columnas pueden tener el mismo nombre si son tablas distintas. Se pueden definer como mximo 254 columnas. Las claves primarias se deben definir como NOT NULL.

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


Los principales tipos de Oracle son: Numricos:
nmeros enteros: INT[EGER] SMALLINT nmeros reales: FLOAT (precis), REAL, DOUBLE PRECISION nmeros con formato:
DECIMAL (precis[,escala]), NUMERIC (precis[,escala]). NUMBER(precis [,escala]) es un tipo bsico equivalente a los anteriores, y admite nmeros positivos y negativos. Su espacio de almacenamiento interno se calcula como: precision / 2 + 1.Ej: NUMBER(9) => redondeo 9 / 2 + 1 = 5 bytes

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


Los principales tipos de Oracle son: Caracteres:
VARCHAR2(n): admite letras, nmeros o caracteres especiales. Se almacena en un formato de longitud variable. Su longitud mxima es de 4000 caracteres. CHAR(n): admite letras, nmeros o caracteres especiales. Internamente, se almacena en formato de longitud fija. Su longitud mxima es de 2000 caracteres. CHAR es equivalente a CHAR(1).

Las cadenas se representan entre comillas simples.

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


Los principales tipos de Oracle son: Moneda:
MONEY(numero,decimales)

Fechas:
DATE: campo de longitud fija de 7 bytes, que se utiliza para almacenar datos temporales, lo que incluye la fecha (da del mes, mes y ao) y hora (hora, minutos y segundos, e incluso fracciones de segundo). Es importante tener esto en cuenta cuando se desea comparar dos fechas. El formato predeterminado de fecha es DD-MON-YY, donde DD es el da, MON es el mes e YY son los dos ltimos dgitos del ao.

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


Los principales tipos de Oracle son: Moneda:
MONEY(numero,decimales)

Fechas:
DATE: campo de longitud fija de 7 bytes, que se utiliza para almacenar datos temporales, lo que incluye la fecha (da del mes, mes y ao) y hora (hora, minutos y segundos, e incluso fracciones de segundo). Es importante tener esto en cuenta cuando se desea comparar dos fechas. El formato predeterminado de fecha es DD-MON-YY, donde DD es el da, MON es el mes e YY son los dos ltimos dgitos del ao.

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


Sintxis: CREATE TABLE nombre_tabla { Columna1 TIPO_DE_DATO [CONSTRAINT nombre_restriccin] [NOT NULL] [UNIQUE] [PRIMARY KEY] [DEFAULT valor] [REFERENCES nombre_tabla [(columna[, columna])] [ON DELETE CASCADE]] [CHECK condicin], Columna2 ..... ) [TABLESAPCE espacio_de_tabla];

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


DEFAULT definicion: indica el valor por defecto que almacenar el campo si se inserta una tupla sin indicar un valor para ese atributo (Si no se indica un valor por defecto, se insertar un valor nulo). Definicion ser una constante del tipo definido para el atributo. Existen algunos valores predefinidos para algunos tipos de datos. As:
valores como SYSDATE, que nos da la fecha actual, o USER que es un string que nos da el nombre del usuario (con el que se conect a Oracle).

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


La DEFINICIN DE RESTRICCIONES DE INTEGRIDAD / SEMNTICAS: Se almacenan en el Diccionario de Datos. Permiten al diseador restringir el rango de valores de una tabla. Las restricciones pueden ser de columna si afectan a una sola columna, o de tabla si afectan a una o ms columnas. Pueden ser:

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


NOT NULL: la columna NO puede contener un valor nulo CONSTRAINT nombre_restr UNIQUE (col1 [, col2] ...): la(s) columna(s) NO pueden contener valores duplicados. Deben declararse como NOT NULL y NO pueden formar parte de la clave primaria. Con [CONSTRAINT nombre_restr] se puede dar nombre a la restriccin. En este caso, el nombre de la restriccin debe ser nico dentro del esquema.

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


CONSTRAINT nombre_restr PRIMARY KEY (atrib1 [, atrib2] ...): la(s) columna(s) forman la clave primaria. Por lo tanto, tienen valor nico y no nulo, por defecto.

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


CONSTRAINT nombre_restr FOREIGN KEY (atrib1 [, atrib2] ...) REFERENCES tabla (atrib1 [, atrib2] ...): la(s) columna(s) forman una clave fornea. REFERENCES indica el nombre de la tabla referenciada. Si los atributos clave de la tabla referenciada no tienen el mismo nombre que los atributos que forman la clave fornea, deben especificarse los nombres de los atributos clave.
Cada valor no nulo en esta(s) columna(s) deber(n) tener un valor equivalente en una columna de la tabla referenciada. Es posible que una tabla haga referencia a s misma. ON DELETE SET NULL | CASCADE: si se borra una tupla en la tabla padre
SET NULL: se coloca el valor nulo ... CASCADE: se borran las tuplas correspondientes ... en las tuplas de la tabla actual donde el elemento borrado es forneo

CONSULTAS DE DEFINICIN DE DATOS. CREACIN DE TABLAS


[CONSTRAINT nombre_restr CHECK (condicin)]: antes de que una fila sea insertada o borrada debe satisfacer condicin.
CHECK (EMPNO BETWEEN 10 and 100) CONSTRAINT C_LOC CHECK (LOC IN ( ATENAS , LONDON , MADRID )) CHECK ((LOC <> ATENAS ) OR (DEPTNO = 20))
Los predicados que admite CHECK son: de comparacin, BETWEEN, LIKE, IN, IS NULL /IS NOT NULL y ALL/ANY.

Ejemplo:
CREATE TABLE EMPLEADO ( NOMBRE VARCHAR2(25) PRIMARY KEY, EDAD NUMBER CHECK (EDAD BETWEEN 18 AND 35), COD_PROVINCIA NUMBER(2) REFERENCES PROVINCIAS ON DELETE CASCADE

Sea el modelo:
DEPARTAMENTO # cdigo * nombre * ciudad el lugar de trabajo de adscrito a EMPLEADO #cdula * nombre * salario comisin * cargo

el subordinado de

el jefe de

CREAR UNA TABLAS CON CREATEejemplos


CREATE TABLE departamento( codigoNUMBER(4), nombre VARCHAR2(14), ciudad VARCHAR2(13), PRIMARY KEY (codigo) ); CREATE TABLE departamento( codigo NUMBER(4) CONSTRAINT PK_dpto PRIMARY KEY, nombre VARCHAR2(14), ciudad VARCHAR2(13));

CREAR UNA RELACIN ENTRE TABLAS CON CREATE-ejemplos


CREATE TABLE empleado ( cedula NUMBER(4) NOT NULL , nombre VARCHAR2(10), cargo VARCHAR2(9), salario DECIMAL(7,2), comisin DECIMAL(7,2), deptno NUMBER(4), PRIMARY KEY (cedula), FOREIGN KEY (deptno) REFERENCES departamento(codigo) ); CREATE TABLE empleado ( cedula NUMBER(4) NOT NULL , nombre VARCHAR2(10), cargo VARCHAR2(9), salario DECIMAL(7,2), comisin DECIMAL(7,2), deptno NUMBER(4), CONSTRAINT Pk_emp PRIMARY KEY(cedula), CONSTRAINT Fk_emp FOREIGN KEY (deptno) REFERENCES departamento(codigo) );

CREATE TABLE departamento ( codigo NUMBER(6) PRIMARY KEY, nombre VARCHAR(6) NOT NULL UNIQUE, ciudad VARCHAR(12) CHECK (ciudad IN ('Medelln', 'Bogot', 'Cali')) NOT NULL );
El atributo ciudad slo admitir 1 de estas 3 ciudades. Es necesario adems colocarle la restriccin de no nulidad.

CREATE TABLE empleado ( cdula NUMBER(10) PRIMARY KEY, nombre VARCHAR(30) NOT NULL, jefe NUMBER(10) REFERENCES empleado, salario NUMBER(10,2) NOT NULL, comisin NUMBER(2) , cargo VARCHAR(20) NOT NULL, depto NUMBER(6) NOT NULL REFERENCES departamento );

Clave fornea sobre la misma tabla

Clave fornea

Restricciones de Integridad
Ejemplos con la clusula CHECK:
CREATE TABLE empleado ( cdula NUMBER(10) PRIMARY KEY, nombre VARCHAR(30) NOT NULL, jefe NUMBER(10) REFERENCES empleado(cdula), salario NUMBER(10,2) NOT NULL CHECK (salario > 0 ) , comision NUMBER(3) CHECK (comision between 0 and 100), cargo VARCHAR(20) NOT NULL, depto NUMBER(6) NOT NULL REFERENCES departamento );
Puede especificarse el atributo hacia el cual se refiere la clave fornea

Restricciones de Integridad
Especificacin de una clave primaria compuesta:
CREATE TABLE envio ( snro NUMBER(6), pnro NUMBER(6), cantidad NUMBER(6) NOT NULL, PRIMARY KEY(snro,pnro) );

Nota: Es incorrecto colocar PRIMARY KEY al frente de snro y de pnro.

Restricciones de Integridad Clave fornea hacia una clave primaria compuesta:


CREATE TABLE revision( codrevision NUMBER(5) PRIMARY KEY, cf_snro NUMBER(6) NOT NULL, cf_pnro NUMBER(6) NOT NULL, revisor VARCHAR(20)NOT NULL, FOREIGN KEY(cf_snro,cf_pnro) REFERENCES envio );

Cuando la clave primaria a la que se referencia es compuesta se debe utilizar esta sintaxis.

Вам также может понравиться