Sei sulla pagina 1di 10

CREATE TABLE

planificacin
Hay que planificar :
Nombre de la tabla
Nombre de cada columna de la tabla
Tipo de datos y tamao que tendr cada columna
Las columnas obligatorias, los valores por defecto, las restricciones,...

13

CREATE TABLE
CREATE TABLE nombre_tabla
(
Columna1 TIPO_DE_DATO
[CONSTRAINT nombrerestriccin]
[NOT NULL] [UNIQUE | PRIMARY KEY] [DEFAULT valor]
[REFERENCES nombretabla[(columna[, columna])]
[ON DELETE CASCADE]
[CHECK (condicin)],
Columna2 TIPO_DE_DATO
[CONSTRAINT nombrerestriccin]
[NOT NULL] [UNIQUE|PRIMARY KEY] [DEFAULT valor]
[REFERENCES nombretabla[(columna[, columna])]
[ON DELETE CASCADE]
[CHECK (condicin)],
.....
) [TABLESPACE espacio_de_tabla];
14

CREATE TABLE (cont)


Como norma general todos los nombres creados por el usuario tienen que ser
un nombre que identifique de lo que trata y se formar con letras, dgitos y _.

Nombre_tabla: mximo 30 caracteres tiene que ser nica


Columna: nombre de la columna
NOT NULL: hay que introducir siempre un dato.
UNIQUE: el valor que se introduzca en esta columna no puede estar repetido.
PRIMARY KEY identica a la tupla
DEFAULT valor por omisin a la columna. Puede ser constante, funcin sql,
sysdate, UID.
CHECK valores limitados dentro de un rango o el cumplimiento de ciertas
condiciones.

15

Tipos de datos
Cadenas:
VARCHAR2 (tamao)
CHAR (tamao)
LONG
Numricos:
NUMBER(precisin, escala)
Fechas y horas:
DATE

16

Tipos de datos (cont)


Binarios:
RAW (tamao)
LONG RAW
Hexadecimales
ROWID
Objetos
CLOB
NCLOB
BLOB
Segn juego de caracteres empleado:
NVARCHAR2 (tamao)
17

NCHAR (tamao

Cadenas
VARCHAR2 (tamao)
Longitud variable mnimo 1 mx 4000
nombre VARCHAR2(15)
CHAR (tamao)
Longitud fija mximo 2000 bytes mnimo 1. Si ocupa menos
rellena a blancos.
dni CHAR (9)
cp CHAR (5)
LONG
Longitud variable mx 2 gigabytes
Restricciones: no ndice, no en condiciones, ....

18

Numricos
NUMBER(precisin, escala)
Almacena enteros o decimales con o sin signo
Precisin: n total de dgitos (incluidos decimales) mx. 38
Escala: nmero de decimales

19

Fechas y horas

DATE
Guarda: Siglo(ao/mes/da/hora/minutos/segundos
Por omisin formato DD/MM/YY
Este formato se cambia con ALTER SESSION y variando
el parmetro NLS_DATE_FORMAT

20

Integridad de datos
Integridad: los datos de la base de datos han de ajustarse
a restricciones antes de almacenarse en ella.

Restriccin de integridad: regla que restringe el rango de


valores para una o ms columnas en la tabla.

Restriccin de integridad referencial: Garantiza que los


valores de una columna/s de una tabla( clave ajena)
dependan de los valores de otra columna (o columnas) de
otra tabla (clave primaria)
21

Restricciones
Restriccin de:
Clave primaria (PRIMARY KEY)
De unidad (UNIQUE)
De obligatoriedad (NOT NULL)
De integridad referencial (FOREIGN KEY)
De verificacin (CHECK)
De asercin (ASSERTION)
Disparadores (TRIGGER)
22

RESTRICCIONES (clusula CONSTRAINT)


Restriccin de columna: afecta a una sola columna
CREATE TABLE nombre_tabla
(
Columna1 TIPO_DE_DATO
[CONSTRAINT nombrerestriccin]
[NOT NULL] [UNIQUE | PRIMARY KEY] [DEFAULT valor]
[REFERENCES nombretabla[(columna[, columna])]
[ON DELETE CASCADE]
[CHECK (condicin)],
Columna2 TIPO_DE_DATO
[CONSTRAINT nombrerestriccin]
[NOT NULL] [UNIQUE|PRIMARY KEY] [DEFAULT valor]
[REFERENCES nombretabla[(columna[, columna])]
[ON DELETE CASCADE]
[CHECK (condicin)],
.....
) [TABLESPACE espacio_de_tabla];
23

Comentad
create table empleados
(
dni char(9) primary key,
apellido varchar2(30) not null,
nombre varchar2(15),
sexo char(1) check(sexo in ('h','m','H','M')),
edad number check(edad between 18 and 70),
fechaNac date,
codProvincia number(2)
);

24

RESTRICCIONES (clusula CONSTRAINT)


Restriccin de tabla: afecta a varias columnas

CREATE TABLE nombre_tabla


(
Columna1 TIPO_DE_DATO,
Columna2 TIPO_DE_DATO,
....
[CONSTRAINT nombrerestriccin]
{ [UNIQUE | PRIMARY KEY] [(columna[, columna])},
[CONSTRAINT nombrerestriccin]
[FOREIGN KEY (columna[, columna])
REFERENCES nombretabla[(columna[, columna])]
[ON DELETE CASCADE]],
[CONSTRAINT nombrerestriccin]
[CHECK (condicin)],
.....
) [TABLESPACE espacio_de_tabla];
25

Restriccin PRIMARY KEY


Columna o conjunto de varias columnas que identifican
unvocamente a cada fila. Es nica, no nula y obligatoria.
Mximo una por tabla. Con las claves primarias se crea un
ndice.
Restriccin de columna
Columna TIPO_DE_DATO,
[CONSTRAINT nombrerestriccin]
[NOT NULL] [UNIQUE | PRIMARY KEY]
Restriccin de tabla
CREATE TABLE nombre_tabla
(
Columna1 TIPO_DE_DATO,
Columna2 TIPO_DE_DATO,
....
[CONSTRAINT nombrerestriccin]
{ [UNIQUE | PRIMARY KEY] [(columna[, columna])},

26

Comentad
create table empleados
(
numDpto char(3),
numempl char(9),
apellido varchar2(30) not null,
nombre varchar2(15),
sexo char(1) check(sexo in ('h','m','H','M')),
edad number check(edad between 18 and 70),
fechaNac date,
codProvincia number(2),
CONSTRAINT PKEMPLE primary key (numDpto, numempl)
27

);

Ejercicio (est en las hojas 1)


Cread una tabla de nombre FINALES201112 con las columnas: NumAlumno
(clave primaria) , DniAlumno (clave candidata), AgnoNacimiento, Curso
(contendr 1 o 2), CodCiclo (hasta 5 caracteres y tiene que contener un valor)
, NotaMedia (entre 0 y 10 y 1 para los no presentados. Pueden contener
hasta 2 decimales).
create table FINALES201112
(
NumAlumno number(4) PRIMARY KEY,
dniAlumno char(9) UNIQUE,
AgnoNacimiento number(4),
curso number CHECK (CURSO IN (1,2)),
CodCiclo varchar2(5) NOT NULL,
NotaMedia number(4,2) CHECK (NotaMedia between -1 AND 10)
);

28

DESC nombre_tabla

SQL> desc finales201112


Nombre
Nulo?
Tipo
----------------------------------- -------------- ---------------NUMALUMNO
NOT NULL NUMBER(4)
DNIALUMNO
CHAR(9)
AGNONACIMIENTO
NUMBER(4)
CURSO
NUMBER
CODCICLO
NOT NULL
VARCHAR2(5)
NOTAMEDIA
NUMBER(4,2)

Ejercicio2 de la hoja ejCreacionTablas


29

De integridad referencial (FOREIGN KEY)


Clave ajena
Columna o conjunto de columnas que son clave primaria en
otra tabla.
Restriccin de columna
REFERENCES nombretabla[(columna[, columna])]
[ON DELETE CASCADE]

Restriccin de tabla
CREATE TABLE nombre_tabla
(
Columna1 TIPO_DE_DATO,
Columna2 TIPO_DE_DATO,
....
[CONSTRAINT nombrerestriccin]
[FOREIGN KEY (columna[, columna])
REFERENCES nombretabla[(columna[, columna])]
[ON DELETE CASCADE]],

30

(FOREIGN KEY )

REFERENCES

REFERENCES nombretabla[(columna[, columna])]


[ON DELETE CASCADE]
Nombretabla: nombre de la tabla donde est la clave primaria
columna[, columna])]: columna/s que forman la clave primaria

Qu pasara si creo una tabla con clave ajena pero la tabla a


la que hace referencia no existe?

Error, no os deja crearla


Cuando se crea una tabla con claves ajenas, tienen
que estar creadas previamente las tablas a las que hace
referencia!!!
Ejercicio 3, 4 y 5
31

ON DELETE CASCADE
Se define cuando queremos que se borren las filas de la clave
ajena cuando se borre la clave primaria correspondiente.

32

Potrebbero piacerti anche