You are on page 1of 30

TEMA 5.

DISEO FSICO DE BASES DE DATOS:SQL(DDL)


1. 2. 3. 4. 5.
1. 2.

INTRODUCCION AL SQL INTERPRETES DE COMANDOS DE LOS SGBD: CLIENTES MYSQL CONJUNTOS DE CARACTERES ALGUNOS COMANDOS UTILES: Show, describe, etc.. DDL
CREACIN, MODIFICACIN Y BORRADO DE BASES DE DATOS CREACIN DE TABLAS
1. 2. 3. 4.

TIPOS DE DATOS CARACTERISTICAS DE LA CREACIN DE TABLAS

MODIFICACIN, BORRADO Y RENOMBRADO DE TABLAS CREACIN DE INDICES

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

1. INTRODUCCIN AL SQL
Lenguaje de los SGBD relacionales. SQL (Structured Query Language) Lenguaje declarativo, se incide en el qu hay que hacer y no en el cmo hay que hacerlo. IBM en los aos 70 funda el lenguaje SEQUEL precursor del SQL. ORACLE en 1979 presenta su primera versin del SQL, ms tarde se convierte en un estndar avalado por ISO y ANSI. En 1989 aparece el estndar ISO llamado SQL89 o SQL1. El ultimo estndar es el del 2008 SQL2008
GBD -1 A.S.I.R. I.E.S. JULIAN MARIAS 2

Introduccin al Sql
El nombre no refleja todas las posibilidades del lenguaje (Query) Aunque existe una estandarizacin, cada SGBD tiene sus propias sentencias SQL. Donde se puede utilizar:

Directamente en aplicaciones (clientes) que permitan su introduccin. Autocontenido Embebido en los lenguajes de programacin. Sql Huesped
I.E.S. JULIAN MARIAS 3

GBD -1 A.S.I.R.

Introduccin al Sql
Subconjuntos del SQL:

DQL (Data Query Language).- La orden que se emplea es la SELECT. DML (Data Manipulation Language).- Entre sus ordenes destacan INSERT, DELETE y UPDATE. DDL (Data Definition Language).- Las ordenes que se utilizan son CREATE, DROP, CHECK, CONSTRAINT DCL (Data Control Language).- Las ordenes usadas son: GRANT y REVOKE. TPL (Transaction Processing Language).- Se emplea como lenguaje de control del DML. Las ordenes que se emplean son: START TRANSACTION, BEGIN TRANSACTION, etc..
I.E.S. JULIAN MARIAS 4

GBD -1 A.S.I.R.

2. INTERPRETES DE COMANDOS DE LOS SGBD


Aplicacin Cliente cuya misin es enviar comandos al SGBD Permiten ejecutar cualquier tipo de sentencia SQL. Ocupan muy poco espacio y sin requerimientos especficos del SO. En Mysql es el comando mysql En Oracle el comando sqlplus
GBD -1 A.S.I.R. I.E.S. JULIAN MARIAS 5

Interprete de Comandos: Mysql


Documentacin Oficial La Sintaxis del comando:
mysql [options] [database]

Ejecutar sentencias SQL en mysql, escribir la sentencia acabada con ; y pulsar <Enter> Ejecucin de scripts SQL,

Dentro de mysql, sintaxis:


source <ficherosql>

En modo batch, usando las redirecciones:


mysql . < fichero.sql


I.E.S. JULIAN MARIAS 6

GBD -1 A.S.I.R.

Interprete de Comandos: Mysql


Desde el prompt del cliente de consola se pueden ejecutar una serie de ordenes o comandos, para visualizar todas las ordenes disponibles ejecutar ? Algunas de estas ordenes son:

ego o \G.- Muestra los datos verticalmente Prompt o \R.- Para cambiar el prompt Status o \s.- Obtener informacin de estado del servidor. Clear o \c.- Limpia la pantalla.

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

3. CONJUNTOS DE CARACTERES
Qu son los Conjuntos de Caracteres? Conjuntos de caracteres ms habituales en Espaa:

ASCII (American Standard Code for Information Interchange). Surge en los aos 60 para los teletipos. Creada por el ANSI. Utiliza 7 bits para representar los caracteres ms habituales (la no). Actualizado por ltima vez en 1986. No confundir con ASCII extendido (son cjtos. de caracteres de 8 bits). Latin1 o ISO_8859-1(8bits).- Norma elaborada por la ISO para codificar los caracteres del alfabeto latino ( incluida). Tpico de sistemas Unix. Los 128 primeros caracteres (7bits) coinciden con el ASCII, por eso se le considera una codificacin ASCII Extendido, el resto de caracteres para codificar otros caracteres.

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

3. CONJUNTOS DE CARACTERES
Conjuntos de caracteres ms habituales:

Cp850 (Code Page 850).- Cjto. de caracteres de Ms-dos, no estndar. Ascii extendido que incluye caracteres como la . Usado por defecto en la consola de windows. Se puede modificar de forma temporal con el comando chcp, y de forma permanente HKEY_CURRENT_USER>Software->Microsoft->Command Processor y crear un valor de cadena con el Nombre AutoRun y el valor chcp codigodepagina. Windows-1252.- Codificacin por defecto en los sistemas Microsoft (Mal llamado codificacin ANSI, puesto que no es un estndar) que se ajusta casi al ISO_8859_1 o Latin1 (ms en concreto al ISO_8859_15). Los ficheros sin formato en Windows se guardan con esta codificacin (en Espaa).

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

3. CONJUNTOS DE CARACTERES
Variables en Mysql para definir el cjto. de caracteres:

character_set_client.- Esta variable indica en que juego de caracteres le sern enviados los datos del cliente al servidor. character_set_connection.- Sirve para indicar la conversin que realizar el servidor de lo que recibe del cliente, es decir, el servidor convierte los datos que recibe del cliente a este cjto. de caracteres. character_set_results.- indica el conjunto de caracteres usado por el servidor para devolver los resultados de las consultas al cliente. character_set_database.- Ser el conjunto de caracteres con el que se almacenarn los datos (y estructuras) en la base de datos. character_set_server.- Sirve para indicar el cjto. de caracteres por defecto que se utilizarn en las bases de datos. character_set_filesystem.- Se usa para interpretar los strings que se refieren a nombres de ficheros en ordenes como LOAD DATA INFILE o SELECT ... INTO OUTFILE.
I.E.S. JULIAN MARIAS 10

GBD -1 A.S.I.R.

3. CONJUNTOS DE CARACTERES
Modificar las variables que afectan al conjunto de caracteres:

De forma temporal:

Comando Set <variable>=valor.Comando Chartset, set names, set character set En fichero de configuracin. Cuando arrancamos el sistema gestor.

De forma permanente:

Visualizar variables y conjuntos de caracteres


Show character_set Show variables like %character%;


I.E.S. JULIAN MARIAS 11

GBD -1 A.S.I.R.

3. CONJUNTOS DE CARACTERES
Por defecto la consola Windows (cmd.exe,) usa el conjunto de caracteres cp850, por lo que si se pretenden enviar comandos con datos con acentos, , etc. (character_set_client, character_set_connection) o recibir datos con acentos, etc.. (character_set_result) ser necesario establecer estas variables con el conjunto de caracteres a cp850 (charset cp850, charset es lo mismo que character set) Si se lanza un fichero, normalmente estar codificado en ISO_8859-1, por lo que habr que cambiar el conjunto de caracteres para las conexiones a la codificacin del fichero. PRUEBAS
GBD -1 A.S.I.R. I.E.S. JULIAN MARIAS 12

4. COMANDOS SQL TILES


Comandos SHOW

Show databases Show tables

Comando describe Comando use

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

13

5. INTRODUCCIN AL DDL
Las funciones de este sublenguaje son:

Crear, modificar y borrar los elementos de la BD: tablas, ndices y otros objetos de las BD (vistas, sinnimos, etc..) Definir las estructuras fsicas donde se almacenarn los objetos de las BD (tablespaces, datafiles, etc..) CREATE tipo_objeto Nombre Definicin DROP tipo_objeto Nombre ALTER tipo_objeto Nombre Modificacin.

El DDL tiene tres instrucciones bsicas:


GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

14

DDL: Creacin de una BD


En MySql, documentacin oficial:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] Nombre_BD [especificacin_create [,especificacin_create] ] especificacin_create: [DEFAULT] CHARACTER SET juego_caracteres | [DEFAULT] COLLATE nombre_colacin

Database y Schema son lo mismo

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

15

DDL: Creacin de una BD


Character Set juego de caracteres de la base de datos, para visualizar los disponibles comando: show character set; Collate especifica cmo tratar el alfabeto, como se ordena (la despues de la m) y como se comparan los caracteres (p.ej.: es igual ), comando: show collate para visualizar los disponibles. Para usar una base de datos:
Use Nombre_BD;

Mostrar las bases de datos existentes:


Show databases;

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

16

DDL: Modificacin y borrado de una BD


Modificacin en MySql:
ALTER {DATABASE | SCHEMA} [db_name] alter_specification [, alter_specification] ... alter_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name

Borrado en Mysql:
DROP {DATABASE | SCHEMA } db_name

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

17

DDL: Creacin de tablas


En MySql, documentacin oficial:
CREATE [TEMPORARY] TABLE [If Not Exists] [esquema.]nombre_tabla [(definicin_create, )] [opciones_tabla] definicin_create: definicin_columna | [CONSTRAINT [smbolo]] PRIMARY KEY (nombre_columna, ) | [CONSTRAINT [smbolo]] FOREIGN KEY (nombre_columna, ) [definicin_referencia]

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

18

DDL: Creacin de tablas


(Cont.):
definicin_columna: nombre_columna tipo_datos [NOT NULL | NULL] [DEFAULT valor] [UNIKE [KEY] | [PRIMARY] KEY] [definicin_referencia] Definicin_referencia: REFERENCES nombre_tabla [(nombre_columna, )] [ON DELETE {CASCADE | SET NULL | NO ACTION}] [ON UPDATE {CASCADE | SET NULL | NO ACTION}]

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

19

DDL: Tipos de Datos


En Mysql: Documentacin Oficial

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

20

DDL: Tipos de Datos


Para visualizar las tablas de una base de datos: show tables Comando para visualizar la estructura de una tabla: describe nombre_tabla Para mostrar la sentencia con la que se creo una tabla show create table <NombreTabla>

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

21

DDL: Restricciones a nivel de columna


[NOT NULL | NULL].- Dar opcin a incluir o no valores nulos en columnas, la opcin por defecto es NULL. DEFAULT.- Valor por defecto de una columna AUTO_INCREMENT.- Datos se incrementan de forma automtica sino damos valor para ese campo, es necesario que la columna sea de tipo entero. PRIMARY KEY o KEY.- Definir clave primaria, implcitamente lleva creacin de ndice y restriccin NOT NULL. UNIQUE.- Valores nicos en los registros, por defecto admite NULL. Se pueden definir ms de una columna UNIQUE a diferencia de PRIMARY. Lleva implcito la creacin de un ndice. REFERENCES.- En mysql no se tiene en cuenta a nivel de columna.

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

22

DDL: Restricciones a nivel de tabla


PRIMARY KEY.- Restriccin de clave primaria, normalmente se usa para definir que la clave primaria de la tabla esta formada por ms de un campo. KEY e INDEX.- Significan lo mismo, KEY se aadi por compatibilidad con otros SGBD. Permiten definir uno o varios campos como indexados-> optimizan el acceso a los datos en consultas. El index_type es el tipo de ndice creado (BTREE solamente). Un ndice FULLTEXT sirve para campos de tipo CHAR o VARCHAR, y SPATIAL para campos espaciales (ms informacin) UNIQUE.- Lo mismo, pero se puede especificar para varias columnas.
GBD -1 A.S.I.R. I.E.S. JULIAN MARIAS 23

DDL: Restricciones a nivel de tabla


FOREIGN KEY.- Clave fornea. Cuando se definen claves forneas en las tablas de una base de datos es necesario que la tabla referenciada exista, se pueden seguir tres estrategias:

1 Definir las tablas en el orden correcto 2 No definir las claves forneas y posteriormente modificar las tablas aadiendo las restricciones de clave fornea. 3 Deshabilitar el uso de claves forneas a travs de la variable foreign_key_checks, en caso de relaciones reflexivas esta estrategia ser obligada.
I.E.S. JULIAN MARIAS 24

GBD -1 A.S.I.R.

DDL: Caractersticas creacin de tablas


Opciones en la creacin de tablas:

opciones_tabla:
ENGINE=nombre_motor | AUTO_INCREMENT= valor | [DEFAULT] CHARACTER SET juego_car [COLLATE colacin] | COMMENT = string | MAX_ROWS= valor | MIN_ROWS= valor

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

25

DDL: Modificacin de tablas


En Mysql, documentacin oficial:
ALTER TABLE nombre_tabla especificacin_alter [, especificacin_alter] especificacin_alter: ADD definicin_columna [FIRST | AFTER nombre_columna] | ADD (definicin_columna) | ADD [CONSTRAINT [simbolo]] PRIMARY KEY (nombre_columna, ) | ADD [CONSTRAINT [simbolo]] UNIQUE (nombre_columna, ) | ADD [CONSTRAINT [simbolo]] FOREIGN KEY (nombre_columna, ) [definicin_referencia]
GBD -1 A.S.I.R. I.E.S. JULIAN MARIAS 26

DDL: Modificacin de tablas


especificacin_alter(cont.): | CHANGE [COLUMN] anterior_nombre_columna definicin_columna [FIRST | AFTER nombre_columna] En mysql | RENAME COLUMN anterior_nombre_columna TO nuevo_nombre_columna Esto es solo en Oracle | MODIFY definicin_columna [FIRST | AFTER nombre_columna] | DROP COLUMN nombre_columna | DROP PRIMARY KEY | DROP FOREIGN KEY fk_simbolo | opciones_tabla

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

27

DDL: Borrado y Renombrado de Tablas


Borrado:
DROP [TEMPORARY] TABLE nombre_tabla;

Renombrado:
RENAME TABLE nombre_tabla TO nuevo_nombre_tabla

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

28

DDL: Creacin de ndices


Permiten optimizar el acceso a datos en consultas. Documentacin oficial Para ver los ndices de una tabla: SHOW INDEX FROM nombre_tabla Sintaxis para la creacin de ndices:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name (index_col_name,...) index_col_name: col_name [(length)] [ASC | DESC]
GBD -1 A.S.I.R. I.E.S. JULIAN MARIAS 29

DDL: CONSULTA DE TABLAS


El comando SHOW (ver 5.6) permite mostrar
todas las definiciones de las tablas creadas:

SHOW

GBD -1 A.S.I.R.

I.E.S. JULIAN MARIAS

30