Sei sulla pagina 1di 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga

A.1.

Fecha y horas.................................................................................................1

A.2.

El comando CREATE....................................................................................1

A.3.

Crear un tabla a partir de otra.........................................................................3

A.4.

Utilizacin de sinnimos................................................................................4

A.5.

Las SECUENCIAS........................................................................................5

B. La eliminacin de tablas........................................................................................6
C.

La modificacin de tablas..................................................................................6
C.1.

D.

Renombrar una tabla (RENAME)..................................................................6


Las vistas...........................................................................................................6

D.1.

La eliminacin de vistas.................................................................................7

E. Los ndices.............................................................................................................7

F.

E.1.

La creacin de un ndice................................................................................7

E.2.

La eliminacin de un ndice...........................................................................7

La integridad de los datos......................................................................................7


F.1.

La FOREIGN KEY........................................................................................8

F.2.

Valores por defecto.........................................................................................8

F.3.

La clusula NOT NULL ...........................................................................9

F.4.

La clusula UNIQUE ...............................................................................9

F.5.

CHECK........................................................................................................10

F.6.

Correccin de los ejercicios de aplicacin...................................................10

A.1.

A.2.

Fecha y horas

SELECT SYSDATE FROM DUAL para Oracle


o
SELECT NOW() para MySql

A.3.

El comando CREATE

Lenguaje SQL

Pgina 1 de 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga


Sintaxis Oracle:
CREATE TABLE TELEFONO (NUMERO
TIPO
MARCA
FECHA_COMPRA
PRECIO
NUM_PROPIETARIO
COLOR

INTEGER,
CHAR(2),
INTEGER,
DATE,
NUMBER(9,2),
INTEGER,
VARCHAR(25));

Sintaxis MySql: (sustitucin de NUMBER por DECIMAL


CREATE TABLE TELEFONO (NUMERO
TIPO
MARCA
FECHA_COMPRA
PRECIO
NUM_PROPIETARIO
COLOR

INTEGER,
CHAR(2),
INTEGER,
DATE,
DECIMAL (9,2),
INTEGER,
VARCHAR(25));

Sintaxis Oracle y MySql:


CREATE TABLE TIPO_TEL

(TIPO
DESC_TIPO

CHAR(2),
VARCHAR(25));

CREATE TABLE MARCA_TEL (MARCA


INTEGER,
DESC_MARC VARCHAR(25),
PAIS
VARCHAR(30));

Aadir un comentario a una tabla:

COMMENT ON TABLE TELEFONO IS 'Lista de telfonos de la empresa';

Aadir un comentario sobre una columna

COMMENT ON COLUMN TELEFONO.TIPO IS 'Indica si es un telfono de


tipo SMARTPHONE, CON TAPA u OTRO';

Ejemplo de script SQL ORACLE que permite mostrar las columnas de una tabla as
como sus comentarios

Lenguaje SQL

Pgina 2 de 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga


SET FLU OFF
SET PAGESIZE 255
SET FEEDBACK OFF
SET WRAP OFF
SET VER OFF
SET ARRAYSIZE 1
COL type FORMAT A15
COL not_null FORMAT A8
PROMPT .
PROMPT Estructura de la tabla TELEFONO:
PROMPT .
SELECT UPPER(a.column_name) nombre,
a.data_type || '(' ||
DECODE(a.data_type,'NUMBER',a.data_precision,a.data_length)
|| ')' tipo,DECODE(a.nullable,'N','
N','') not_null,
b.comments comentario
FROM user_tab_columns a, user_col_comments b
WHERE a.table_name = 'TELEFONO'
AND
b.table_name = 'TELEFONO'
AND
a.table_name = b.table_name
AND
a.column_name = b.column_name
ORDER BY a.column_id;

En MYSQL, los comentarios se introducen al crear la tabla aadiendo el comando


COMMENT:

CREATE TABLE
NUMERO
TIPO
MARCA
FECHA_COMPRA
PRECIO
PROPIETARIO
NUM_PROVEEDOR

TELEFONO (
INTEGER
COMMENT 'Nmero de telfono',
VARCHAR(2) COMMENT 'Tipo'
,
INTEGER
COMMENT 'Nombre de la Marca',
DATE,
DECIMAL(9,2) COMMENT 'Precio sin contrato',
VARCHAR(25),
INTEGER);

Para mostrar las columnas y los comentarios en MySql, hay que utilizar este
comando:

SHOW FULL COLUMNS FROM TELEFONO;

A.4.

Crear un tabla a partir de otra

con ORACLE hay que utilizar la siguiente sintaxis


CREATE TABLE SAV_TELEFONO AS SELECT * FROM TELEFONO;

Lenguaje SQL

Pgina 3 de 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga

con MYSQL la sintaxis es la siguiente (el AS desaparece )


CREATE TABLE SAV_TELEFONO SELECT * FROM TELEFONO;

Ejemplos de copia de estructura:


CREATE TABLE SAV_TELEFONO AS SELECT * FROM TELEFONO WHERE 1=2;

Ejemplo de copia a partir de la estructura:


CREATE TABLE SAV_TELEFONO AS SELECT NUMERO, NUM_PROPIETARIO FROM
TELEFONO WHERE 1=2;

Con MySql hay que copiar la estructura de una tabla en otra utilizando un LIKE
CREATE TABLE SAV_TELEFONO LIKE TELEFONO;

Ejemplo de copia de una parte de la estructura y seleccin de filas (sintaxis Oracle):


CREATE TABLE SAV_TELEFONO AS SELECT NUMERO, NUM_PROPIETARIO, COLOR
FROM TELEFONO WHERE TIPO = 'SP';

A.5.

Utilizacin de sinnimos

Slo Oracle:
CREATE SYNONYM TELEFONO FOR ALEXANDRE.TELEFONO;

Ejemplos:
CREATE SYNONYM TELEFONO FOR ALEXANDRE.TE_ANYO_2014_BARCELONA;
CREATE SYNONYM TELEFONO FOR ALEXANDRE.TEL_ESPANYA_OESTE_010402;

Lenguaje SQL

Pgina 4 de 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga

A.6.

Las SECUENCIAS

CREATE SEQUENCE S_NUMERO START WITH 5 INCREMENT BY 1


MINVALUE 2 MAXVALUE 999999 CYCLE;

SELECT S_NUMERO.NEXTVAL FROM DUAL;


SELECT S_NUMERO.CURRVAL FROM DUAL;

CREATE OR REPLACE TRIGGER TR_NUMERO


BEFORE INSERT ON TELEFONO
FOR EACH ROW
DECLARE
BEGIN
SELECT S_NUMERO.NEXTVAL
INTO :NEW.NUMERO FROM DUAL;
END;
/

INSERT INTO TELEFONO VALUES


(S_NUMERO.NEXTVAL,'DE',5,to_date('01/01/2009','DD/MM/YYYY'),
99,122120,'BLANCO');

Ejemplo de columna autoincrementada en MySql:


CREATE TABLE TELEFONO (NUMERO
INTEGER AUTO_INCREMENT,
TIPO
VARCHAR(2),
MARCA
INTEGER,
FECHA_COMPRA
DATE,
PRECIO
DECIMAL(9,2),
NUM_PROPIETARIO INTEGER,
COLOR
VARCHAR(25),
CONSTRAINT PK_TELEFONO PRIMARY KEY (NUMERO,TIPO,MARCA));

Para eliminar una secuencia hay que utilizar el DROP SEQUENCE


DROP SEQUENCE S_NUMERO;

Para modificar una secuencia hay que utilizar el ALTER SEQUENCE

Lenguaje SQL

Pgina 5 de 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga


ALTER SEQUENCE S_NUMERO MAXVALUE 888888;

Modificar el incremento de 1 a 5:
ALTER SEQUENCE S_NUMERO INCREMENT BY 5;

B.

La eliminacin de tablas

DROP TABLE TELEFONO;

C.

La modificacin de tablas

Aadir una columna


ALTER TABLE TELEFONO ADD TEL_NUM_PIN INTEGER;

Eliminar una columna


ALTER TABLE TELEFONO DROP COLUMN TEL_NUM_PIN;

C.1.

Renombrar una tabla (RENAME)

RENAME TELEFONO TO SAV_TELEFONO;

D.

Las vistas

CREATE VIEW TEL_DATE AS


SELECT TELEFONO.FECHA_COMPRA,TELEFONO.TIPO
,TIPO_TEL.DESC_TIPO,
TELEFONO.MARCA
,MARCA_TEL.DESC_MARCA

Lenguaje SQL

Pgina 6 de 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga


FROM TELEFONO, TIPO_TEL, MARCA_TEL
WHERE TELEFONO.TIPO = TIPO_TEL.TIPO AND
TELEFONO.MARCA = MARCA_TEL.MARCA;

D.1.

La eliminacin de vistas

DROP VIEW TEL_DATE;

E.

Los ndices

E.1.

La creacin de un ndice

CREATE INDEX I2_TIPO


ON TELEFONO (TIPO);
CREATE INDEX I3_TIPMAR ON TELEFONO (TIPO, MARCA);
CREATE INDEX I4_COLOR ON TELEFONO (COLOR DESC);

Ejemplo de consulta que permite visualizar los ndices de una tabla en Oracle:
PROMPT .
PROMPT ndices de la tabla TELEFONO
PROMPT .
BREAK ON "INDEX" ON "SCRIPT"
SELECT index_name "INDEX",
LOWER(column_name) "COLUMNA(S)"
FROM user_ind_columns
WHERE table_name = UPPER('TELEFONO')
ORDER BY index_name, column_position;

E.2.

La eliminacin de un ndice

DROP INDEX I2_TIPO;


DROP INDEX I4_COLOR;

F.

La integridad de los datos

Ejemplo de declaracin de PRIMARY KEY con 1 columna:


Lenguaje SQL

Pgina 7 de 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga

CREATE TABLE TELEFONO (NUMERO


INTEGER PRIMARY KEY,
TIPO
VARCHAR(2),
MARCA
INTEGER,
FECHA_COMPRA
DATE,
PRECIO
DECIMAL(9,2),
NUM_PROPIETARIO INTEGER,
COLOR
VARCHAR(25))
Automticamente la columna nmero ser NOT NULL y UNIQUE.

Ejemplo de declaracin de PRIMARY KEY con varias columnas:

CREATE TABLE TELEFONO (NUMERO


INTEGER ,
TIPO
VARCHAR(2),
MARCA
INTEGER,
FECHA_COMPRA
DATE,
PRECIO
DECIMAL(9,2),
NUM_PROPIETARIO INTEGER,
COLOR
VARCHAR(25),
CONSTRAINT PK_TELEFONO PRIMARY KEY (NUMERO,TIPO,MARCA));

Ejemplo de creacin de una PRIMARY KEY en una tabla existente:


ALTER TABLE TELEFONO ADD
CONSTRAINT PK_TELEFONO PRIMARY KEY (NUMERO,TIPO,MARCA);

F.1.

La FOREIGN KEY

Ejemplo de creacin de clave fornea:


ALTER TABLE TIPO_TEL ADD
CONSTRAINT PK_TELEFONO PRIMARY KEY (TIPO);
CREATE TABLE TELEFONO (NUMERO
INTEGER,
TIPO
VARCHAR(2),
MARCA
INTEGER,
FECHA_COMPRA
DATE,
PRECIO
DECIMAL(9,2),
NUM_PROPIETARIO INTEGER,
COLOR
VARCHAR(25),
CONSTRAINT FK_TIPO FOREIGN KEY (TIPO) REFERENCES TIPO_TEL );

F.2.

Valores por defecto

Lenguaje SQL

Pgina 8 de 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga


Ejemplo de valores por defecto:
En la creacin de la tabla
CREATE TABLE TELEFONO (NUMERO
TIPO
MARCA
FECHA_COMPRA
PRECIO
NUM_PROPIETARIO
COLOR

INTEGER PRIMARY KEY,


VARCHAR(2) DEFAULT 'OT',
INTEGER,
DATE DEFAULT CURRENT_DATE,
DECIMAL(9,2) DEFAULT 0,
INTEGER,
VARCHAR(25));

Una vez se ha creado la tabla podemos modificar el valor por defecto del siguiente
modo:
ALTER TABLE TELEFONO MODIFY TIPO DEFAULT 'SP';

Aadir una columna y asignar un valor por defecto:


ALTER TABLE TELEFONO ADD (USUARIO VARCHAR2(25) DEFAULT USER);

F.3.

La clusula NOT NULL

SELECT COUNT(*) FROM TELEFONO WHERE COLOR NOT IN


('ROJO','NEGRO','BLANCO') OR COLOR IS NULL;

F.4.

La clusula UNIQUE

CREATE TABLE TELEFONO (NUMERO


TIPO
MARCA
FECHA_COMPRA
PRECIO
NUM_PROPIETARIO
COLOR

INTEGER PRIMARY KEY,


VARCHAR(2) DEFAULT 'OT',
INTEGER,
DATE DEFAULT CURRENT_DATE,
DECIMAL(9,2) DEFAULT 0,
INTEGER UNIQUE,
VARCHAR(25));

Modificar una columna:


ALTER TABLE TELEFONO MODIFY (NUM_PROPIETARIO UNIQUE)

Lenguaje SQL

Pgina 9 de 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga

F.5.

CHECK

Ejemplo de posibles controles segn la norma SQL92:


CREATE TABLE TELEFONO
(NUMERO
INTEGER PRIMARY KEY,
TIPO
VARCHAR(2) CHECK (VALUE IN (SELECT TIPO FROM
TIPO_TEL)),
MARCA
INTEGER CHECK (VALUE BETWEEN 1 AND 99),
FECHA_COMPRA
DATE,
PRECIO
DECIMAL(9,2) CHECK (VALUE > 0),
NUM_PROPIETARIO INTEGER,
COLOR
VARCHAR(25));

Ejemplo Oracle
CREATE TABLE TELEFONO
(NUMERO
INTEGER PRIMARY KEY,
TIPO
VARCHAR(2),
MARCA
INTEGER CONSTRAINT MARCA_CTRL
CHECK (MARCA BETWEEN 1 AND 99),
FECHA_COMPRA
DATE,
PRECIO
DECIMAL(9,2) CONSTRAINT PRECIO_CTRL
CHECK (PRECIO > 0),
NUM_PROPIETARIO INTEGER,
COLOR
VARCHAR(25));

F.6.

Correccin de los ejercicios de aplicacin

1er Ejercicio

DROP TABLE PELICULAS;


CREATE TABLE PELICULAS (IDENT_PELICULA
TITULO
GENERO1
RECAUDACION
FECHA_ESTRENO
PAIS
NUM_ENTRADAS
SINOPSIS
FECHA_INTRODUCCION
);

INTEGER PRIMARY KEY,


VARCHAR(50),
VARCHAR(20),
DECIMAL(15,2),
DATE,
SMALLINT,
INTEGER,
VARCHAR(2000),
TIMESTAMP

Consulta de creacin del ndice


Lenguaje SQL

Pgina 10 de 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga

CREATE INDEX I2_GENEROPAIS ON PELICULAS (GENERO1, PAIS);

2 Ejercicio
Consulta para aadir una columna.
ALTER TABLE PELICULAS ADD (NUM_DIRECTOR INTEGER);

Aadir una clave fornea:


- Creacin de la tabla Director
DROP TABLE DIRECTOR;
CREATE TABLE DIRECTOR
(NUM_DIRECTOR
NOMBRE

INTEGER PRIMARY KEY,


VARCHAR(50));

- Aadir la restriccin de integridad


ALTER TABLE PELICULAS ADD CONSTRAINT FK_DIRECTOR FOREIGN KEY
(NUM_DIRECTOR) REFERENCES DIRECTOR;

Aadir un valor por defecto en la columna RECAUDACION con el valor 0.


ALTER TABLE PELICULAS MODIFY RECAUDACION DEFAULT 0;

Poner las columnas TITULO y PAIS como NOT NULL


ALTER TABLE PELICULAS MODIFY TITULO NOT NULL;
ALTER TABLE PELICULAS MODIFY PAIS NOT NULL;

Eliminar la restriccin
ALTER TABLE PELICULAS DROP CONSTRAINT FK_DIRECTOR;

3er Ejercicio

Lenguaje SQL

Pgina 11 de 12

Captulo 2: LENGUAJE DE DEFINICIN DE DATOS LDD - Descarga


Crear una vista PELICULAS2 a partir de la tabla PELICULAS que contenga las
cuatro primeras columnas de la tabla PELICULAS y la columna SINOPSIS
CREATE VIEW PELICULAS2 AS
SELECT IDENT_PELICULA, TITULO, GENERO1, SINOPSIS
FROM PELICULAS;

Elimina resta vista.


DROP VIEW PELICULAS2;

4 Ejercicio
Crear una secuencia en la columna IDENT_PELICULA que comience en el nmero
12 y tenga un valor mximo de 9999.
CREATE SEQUENCE S_PELICULAS START WITH 12 INCREMENT BY 1
MINVALUE 12 MAXVALUE 9999 CYCLE;

Renombrar la tabla PELICULAS como PELICULASOLD.


RENAME PELICULAS TO PELICULASOLD;

Crear una nueva tabla PELICULAS a partir de la tabla PELICULASOLD.


CREATE TABLE PELICULAS AS SELECT * FROM PELICULASOLD;

Eliminar la tabla PELICULAS y la tabla PELICULASOLD


DROP TABLE PELICULAS;
DROP TABLE PELICULASOLD;

Lenguaje SQL

Pgina 12 de 12

Potrebbero piacerti anche