tema 5.diseÑo fÍsico bd sql(ddl)
TRANSCRIPT
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 1
TEMA 5. DISEÑO FÍSICO DE BASES DE DATOS:SQL(DDL)
1. INTRODUCCION AL SQL2. INTERPRETES DE COMANDOS DE LOS SGBD: CLIENTES MYSQL3. CONJUNTOS DE CARACTERES4. ALGUNOS COMANDOS UTILES: Show, describe, etc..5. DDL
1. CREACIÓN, MODIFICACIÓN Y BORRADO DE BASES DE DATOS2. CREACIÓN DE TABLAS
1. TIPOS DE DATOS
2. CARACTERISTICAS DE LA CREACIÓN DE TABLAS
3. MODIFICACIÓN, BORRADO Y RENOMBRADO DE TABLAS4. CREACIÓN DE INDICES
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 2
1. INTRODUCCIÓN 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 cómo hay que hacerlo.IBM en los años 70 funda el lenguaje SEQUEL precursor del SQL.ORACLE en 1979 presenta su primera versión del SQL, más tarde se convierte en un estándar avalado por ISO y ANSI.En 1989 aparece el estándar ISO llamado SQL89 o SQL1.El ultimo estándar es el del 2008 SQL2008
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 3
Introducción al Sql
El nombre no refleja todas las posibilidades del lenguaje (Query)Aunque existe una estandarización, cada SGBD tiene sus propias sentencias SQL.Donde se puede utilizar:
Directamente en aplicaciones (clientes) que permitan su introducción. AutocontenidoEmbebido en los lenguajes de programación. SqlHuesped
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 4
Introducción 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, CONSTRAINTDCL (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..
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 5
2. INTERPRETES DE COMANDOS DE LOS SGBD
Aplicación Cliente cuya misión es enviar comandos al SGBDPermiten ejecutar cualquier tipo de sentencia SQL.Ocupan muy poco espacio y sin requerimientos específicos del SO.En Mysql es el comando mysqlEn Oracle el comando sqlplus
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 6
Interprete de Comandos: Mysql
Documentación OficialLa Sintaxis del comando:mysql [options] [database]
Ejecutar sentencias SQL en mysql, escribir la sentencia acabada con ; y pulsar <Enter>Ejecución de scripts SQL,
Dentro de mysql, sintaxis:source <ficherosql>
En modo batch, usando las redirecciones:mysql …. < fichero.sql
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 7
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 verticalmentePrompt o \R.- Para cambiar el prompt Status o \s.- Obtener información de estado del servidor.Clear o \c.- Limpia la pantalla.
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 8
3. CONJUNTOS DE CARACTERES
¿Qué son los Conjuntos de Caracteres?Conjuntos de caracteres más habituales en España:
ASCII (American Standard Code for Information Interchange). –Surge en los años 60 para los teletipos. Creada por el ANSI. Utiliza 7 bits para representar los caracteres más 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). Típico de sistemas Unix. Los 128 primeros caracteres (7bits) coinciden con el ASCII, por eso se le considera una codificación ASCII Extendido, el resto de caracteres para codificar otros caracteres.
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 9
3. CONJUNTOS DE CARACTERES
Conjuntos de caracteres más habituales:Cp850 (Code Page 850).- Cjto. de caracteres de Ms-dos, no estándar. 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.- Codificación por defecto en los sistemas Microsoft (Mal llamado codificación ANSI, puesto que no es un estándar) que se ajusta casi al ISO_8859_1 o Latin1 (más en concreto al ISO_8859_15). Los ficheros sin formato en Windows se guardan conesta codificación (en España).
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 10
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 serán enviados los datos del cliente al servidor.character_set_connection.- Sirve para indicar la conversión que realizará el servidor de lo que recibe del cliente, es decir, el servidorconvierte 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 almacenarán los datos (y estructuras) en la base de datos.character_set_server.- Sirve para indicar el cjto. de caracteres por defecto que se utilizarán 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.
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 11
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
De forma permanente:En fichero de configuración.Cuando arrancamos el sistema gestor.
Visualizar variables y conjuntos de caracteresShow character_setShow variables like ‘%character%’;
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 12
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, charsetes 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 codificación del fichero.PRUEBAS
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 13
4. COMANDOS SQL ÚTILES
Comandos SHOWShow databasesShow tables
Comando describeComando use
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 14
5. INTRODUCCIÓN 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, sinónimos, etc..)Definir las estructuras físicas donde se almacenarán los objetos de las BD (tablespaces, datafiles, etc..)
El DDL tiene tres instrucciones básicas:CREATE tipo_objeto Nombre DefiniciónDROP tipo_objeto NombreALTER tipo_objeto Nombre Modificación.
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 15
DDL: Creación de una BD
En MySql, documentación oficial:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS]
Nombre_BD [especificación_create[,especificación_create] …]
especificación_create:[DEFAULT] CHARACTER SET juego_caracteres| [DEFAULT] COLLATE nombre_colación
Database y Schema son lo mismo
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 16
DDL: Creación de una BD
Character Set juego de caracteres de la base de datos, para visualizar los disponibles comando: show character set;Collate especifica cómo 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 17
DDL: Modificación y borradode una BD
Modificación 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 18
DDL: Creación de tablas
En MySql, documentación oficial:CREATE [TEMPORARY] TABLE [If Not Exists]
[esquema.]nombre_tabla[(definición_create, …)][opciones_tabla]
definición_create:definición_columna| [CONSTRAINT [símbolo]] PRIMARY KEY (nombre_columna, …)| [CONSTRAINT [símbolo]] FOREIGN KEY (nombre_columna, …)
[definición_referencia]
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 19
DDL: Creación de tablas
(Cont.):definición_columna:
nombre_columna tipo_datos [NOT NULL | NULL] [DEFAULT valor] [UNIKE [KEY] | [PRIMARY] KEY] [definición_referencia]
Definición_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 20
DDL: Tipos de Datos
En Mysql: Documentación Oficial
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 21
DDL: Tipos de Datos
Para visualizar las tablas de una base de datos: show tablesComando para visualizar la estructura de una tabla: describe nombre_tablaPara 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 22
DDL: Restricciones a nivel de columna
[NOT NULL | NULL].- Dar opción a incluir o no valores nulos en columnas, la opción por defecto es NULL.DEFAULT.- Valor por defecto de una columnaAUTO_INCREMENT.- Datos se incrementan de forma automática sino damos valor para ese campo, es necesario que la columna sea de tipo entero.PRIMARY KEY o KEY.- Definir clave primaria, implícitamente lleva creación de índice y restricción NOT NULL.UNIQUE.- Valores únicos en los registros, por defecto admite NULL. Se pueden definir más de una columna UNIQUE a diferencia de PRIMARY. Lleva implícito la creación 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 23
DDL: Restricciones a nivel de tabla
PRIMARY KEY.- Restricción de clave primaria, normalmente se usa para definir que la clave primaria de la tabla esta formada por más de un campo.KEY e INDEX.- Significan lo mismo, KEY se añadió 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 (más información)UNIQUE.- Lo mismo, pero se puede especificar para varias columnas.
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 24
DDL: Restricciones a nivel de tabla
FOREIGN KEY.- Clave foránea. Cuando se definen claves foráneas 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 correcto2ª No definir las claves foráneas y posteriormente modificar las tablas añadiendo las restricciones de clave foránea.3ª Deshabilitar el uso de claves foráneas a través de la variable foreign_key_checks, en caso de relaciones reflexivas esta estrategia será obligada.
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 25
DDL: Características creación de tablas
Opciones en la creación de tablas:opciones_tabla:ENGINE=nombre_motor| AUTO_INCREMENT= valor| [DEFAULT] CHARACTER SET juego_car
[COLLATE colación]| COMMENT = ‘string’| MAX_ROWS= valor| MIN_ROWS= valor
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 26
DDL: Modificación de tablas
En Mysql, documentación oficial:ALTER TABLE nombre_tabla
especificación_alter [, especificación_alter] …especificación_alter:
ADD definición_columna [FIRST | AFTER nombre_columna]| ADD (definición_columna)| ADD [CONSTRAINT [simbolo]]
PRIMARY KEY (nombre_columna, …)| ADD [CONSTRAINT [simbolo]]
UNIQUE (nombre_columna, …)| ADD [CONSTRAINT [simbolo]]
FOREIGN KEY (nombre_columna, …) [definición_referencia]
GBD -1º A.S.I.R. I.E.S. JULIAN MARIAS 27
DDL: Modificación de tablas
especificación_alter(cont.):| CHANGE [COLUMN] anterior_nombre_columnadefinición_columna [FIRST | AFTER nombre_columna] En mysql| RENAME COLUMN anterior_nombre_columna TO nuevo_nombre_columna Esto es solo en Oracle| MODIFY definición_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 28
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 29
DDL: Creación de Índices
Permiten optimizar el acceso a datos en consultas. Documentación oficialPara ver los índices de una tabla: SHOW INDEX FROM nombre_tablaSintaxis para la creación 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 30
DDL: CONSULTA DE TABLAS
El comando SHOW (ver 5.6) permite mostrar todas las definiciones de las tablas creadas:
SHOW