SlideShare una empresa de Scribd logo
Base de Datos
UNIDAD 4: El lenguaje SQL
Clase 2: El lenguaje DDL de SQL
Ing. Ricardo Tillero
Introducción SQL
ESTÁNDAR:
• El SQL, lenguaje de consulta estructurado, es el lenguaje de datos
estándar que utilizan las bases de datos relacionales.
EVOLUCIÓN:
• 1970: IBM, en su centro de investigación de San José (denominado
actualmente Almaden), desarrolló el Sequel (lenguaje de consulta).
Fue el prototipo de lo que hoy se conoce como SQL.
• 1986: Aparece una primera normalización ANSI, aunque no tiene
éxito.
• 1987: IBM saca al mercado el SAA-SQL.
• 1989: Aparece otra normalización ANSI, y esta vez tiene más éxito,
siendo Oracle el primero en utilizarlo.
• 1992: Sale al mercado el SQL-2; es lo que hoy día implementan todos
los sistemas gestores de bases de datos, y es, asimismo, lo mínimo
que se le puede pedir a un sistema de este tipo.
Introducción SQL
COMPONENTES: todo lenguaje de consulta tiene:
• Lenguaje de Definición de Datos (LDD - DDL): sirve para crear
todos los objetos y datos que se utilizan normalmente (tablas, vistas,
restricciones, etc.) así como las directivas de seguridad.
• Lenguaje de Manipulación de Datos (LMD - DML): está orientado
principalmente a las consultas; permite insertar datos, consultar
(mediante SELECT), borrar, actualizar, entre otras.
El lenguaje DDL de SQL
El DDL (Data Definition Language) o Lenguaje de Definición de Datos
es la parte de SQL dedicada a la definición de los datos. Las sentencias
DDL son las siguientes:
• CREATE: se utiliza para crear objetos como bases de datos, tablas,
vistas, índices, triggers y procedimientos almacenados.
• DROP: se utiliza para eliminar los objetos de la base de datos.
• ALTER: se utiliza para modificar los objetos de la base de datos.
• SHOW: se utiliza para consultar los objetos de la base de datos.
Otras sentencias de utilidad que usaremos en esta unidad son:
• USE: se utiliza para indicar la base de datos con la que queremos
trabajar.
• DESCRIBE: se utiliza para mostrar información sobre la estructura de
una tabla.
Manipulación de Bases de Datos
Crear una base de datos:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS]
nombre_base_datos;
• DATABASE y SCHEMA son sinónimos.
• IF NOT EXISTS crea la base de datos sólo si no existe una base de
datos con el mismo nombre.
Ejemplos:
• CREATE DATABASE nombre_base_datos;
• CREATE DATABASE nombre_base_datos CHARACTER SET utf8;
• CREATE DATABASE nombre_base_datos CHARACTER SET utf8 COLLATE
utf8_general_ci;
Manipulación de Bases de Datos
CHARACTER SET y COLLATE
• CHARACTER SET: Especifica el set de caracteres que vamos a
utilizar en la base de datos.
• COLLATE: Especifica el tipo de cotejamiento que vamos a utilizar en
la base de datos. Indica el criterio que vamos a seguir para ordenar
las cadenas de caracteres.
• SHOW CHARACTER SET;
Para ver cuáles son los sets de caracteres que tenemos disponibles.
• SHOW COLLATION;
Para consultar qué tipos de cotejamiento hay disponibles podemos
usar.
• SHOW COLLATION LIKE 'utf8%‘;
Si queremos hacer una consulta más específica sobre los tipos de
cotejamiento que podemos usar con utf8.
Manipulación de Bases de Datos
Eliminar una base de datos:
DROP {DATABASE | SCHEMA} [IF EXISTS] nombre_base_datos;
DATABASE y SCHEMA son sinónimos.
IF EXISTS elimina la la base de datos sólo si ya existe.
Ejemplo:
DROP DATABASE nombre_base_datos;
Manipulación de Bases de Datos
Modificar una base de datos:
ALTER {DATABASE | SCHEMA} [nombre_base_datos]
alter_specification [, alter_especification] ...
Ejemplo:
ALTER DATABASE nombre_base_datos CHARACTER SET utf8;
Manipulación de Bases de Datos
Consultar el listado de bases de datos disponibles:
SHOW DATABASES;
Muestra un listado con todas las bases de datos a las que tiene acceso el
usuario con el que hemos conectado a MySQL.
Mostrar la sentencia SQL de creación de una base de datos:
SHOW CREATE DATABASE nombre_base_datos;
Se puede utilizar para visualizar la sentencia SQL que sería necesaria
ejecutar para crear la base de datos que le estamos indicando como
parámetro.
Manipulación de tablas
Crear una tabla: a continuación se muestra una versión simplificada de
la sintaxis necesaria para la creación de una tabla en MySQL.
Manipulación de tablas
Restricciones sobre las columnas de la tabla: podemos aplicar las
siguientes restricciones sobre las columnas de la tabla:
NOT NULL o NULL: Indica si el campo no permite almacenar valores nulos o no.
DEFAULT: Permite indicar un valor inicial por defecto si no especificamos ninguno en la
inserción.
AUTO_INCREMENT: Sirve para indicar que es un campo autonumérico. Su valor se
incrementa automáticamente en cada inserción de una fila. Sólo se utiliza en campos de tipo
entero.
UNIQUE KEY: Indica que el campo es una clave secundaria.
PRIMARY KEY: Para indicar que un campo o varios son clave primaria.
ON DELETE y ON UPDATE: Nos permiten indicar el efecto que provoca el borrado o la
actualización de los datos que están referenciados por claves ajenas. Las opciones que
podemos especificar son las siguientes:
RESTRICT: Impide que se puedan actualizar o eliminar las filas que tienen valores referenciados por
claves ajenas. Es la opción por defecto en MySQL.
CASCADE: Permite actualizar o eliminar las filas que tienen valores referenciados por claves ajenas.
SET NULL: Asigna el valor NULL a las filas que tienen valores referenciados por claves ajenas.
NO ACTION: Es una palabra clave del estándar SQL. En MySQL es equivalente a RESTRICT.
SET DEFAULT: No es posible utilizar esta opción cuando trabajamos con el motor de almacenamiento
InnoDB. Puedes encontrar más información en la documentación oficial de MySQL.
Manipulación de tablas
Restricciones sobre las columnas de la tabla:
Ejemplo 1:
Manipulación de tablas
Restricciones sobre las columnas de la tabla:
Ejemplo 2:
Manipulación de tablas
Opciones a tener en cuenta en la creación de las tablas:
AUTO_INCREMENT: Aquí podemos indicar el valor inicial que vamos a
usar en el campo definido como AUTO_INCREMENT.
CHARACTER SET: Especifica el set de caracteres que vamos a utilizar
en la tabla.
COLLATE: Especifica el tipo de cotejamiento que vamos a utilizar en la
tabla.
ENGINE: Especifica el motor de almacenamiento que vamos a utilizar
para la tabla. Los más habituales en MySQL son InnoDB y MyISAM. Por
defecto las tablas se crean con el motor InnoDB.
Manipulación de tablas
Opciones a tener en cuenta en la creación de las tablas:
Ejemplo:
Manipulación de tablas
Eliminar una tabla:
DROP [TEMPORARY] TABLE [IF EXISTS] nombre_tabla [,
nombre_tabla];
Ejemplos:
DROP TABLE nombre_tabla;
DROP TABLE IF EXISTS nombre_tabla;
DROP TABLE nombre_tabla_1, nombre_tabla_2;
Manipulación de tablas
Modificar una tabla:
En muchas ocasiones es necesario modificar los atributos de una tabla,
añadir nuevos campos o eliminar otros. Si la tabla no tiene datos
podemos eliminar la tabla y volver a crearla, pero si se trata de una tabla
que ya contiene datos tenemos que hacer uso de la sentencia ALTER
TABLE.
A continuación se muestra la sintaxis necesaria para la modificación de
una tabla en MySQL.
Manipulación de tablas
Modificar una tabla: sintaxis MySQL.
Manipulación de tablas
Modificar una tabla: sintaxis MySQL.
Manipulación de tablas
Modificar una tabla: sintaxis MySQL.
Manipulación de tablas
Modificar una tabla: sintaxis MySQL.
Manipulación de tablas
Ejemplo: ALTER TABLE <tbl_name> MODIFY
MODIFY nos permite modificar el tipo de dato de una columna y sus atributos.
Suponemos que tenemos la siguiente tabla creada
CREATE TABLE usuario (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(25)
);
Y queremos modificar las columna nombre para que pueda almacenar 50 caracteres y además
que sea NOT NULL. En este caso usaríamos la sentencia:
ALTER TABLE usuario MODIFY nombre VARCHAR(50) NOT NULL;
Después de ejecutar esta sentencia la tabla quedaría así:
CREATE TABLE usuario (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL
);
Manipulación de tablas
Ejemplo: ALTER TABLE <tbl_name> ALTER
ALTER nos permite asignar un valor por defecto a una columna o eliminar el valor por defecto que tenga establecido.
Suponemos que tenemos la siguiente tabla creada
CREATE TABLE usuario (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
sexo ENUM('H', 'M') NOT NULL
);
Y queremos que el valor por defecto de la columna sexo sea M. En este caso usaríamos la sentencia:
ALTER TABLE usuario ALTER sexo SET DEFAULT 'M';
Después de ejecutar esta sentencia la tabla quedaría así:
CREATE TABLE usuario (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
sexo ENUM('H', 'M') NOT NULL DEFAULT 'M'
);
Si ahora quisiéramos eliminar el valor por defecto de la columna sexo, usaríamos la siguiente sentencia:
ALTER TABLE usuario ALTER sexo DROP DEFAULT;
Manipulación de tablas
Ejemplo: ALTER TABLE <tbl_name> ADD
ADD nos permite añadir nuevas columnas a una tabla. Con los
modificadores FIRST y AFTER podemos elegir el lugar de la tabla donde
queremos insertar la nueva columna. FIRST coloca la nueva columna en
primer lugar y AFTER la colocaría detrás de la columna que se
especifique. Si no se especifica nada la nueva columna se añadiría detrás
de la última columna de la tabla.
Suponemos que tenemos la siguiente tabla creada
CREATE TABLE usuario (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
sexo ENUM('H', 'M') NOT NULL
);
Manipulación de tablas
Ejemplo: ALTER TABLE <tbl_name> ADD
Y queremos añadir la columna fecha_nacimiento de tipo DATE:
ALTER TABLE usuario ADD fecha_nacimiento DATE NOT NULL;
En este caso la nueva columna se ha añadido detrás de la última
columna, sexo. La tabla quedaría así:
CREATE TABLE usuario (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
sexo ENUM('H', 'M') NOT NULL,
fecha_nacimiento DATE NOT NULL
);
Manipulación de tablas
Ejemplo: ALTER TABLE <tbl_name> ADD
Suponemos que ahora queremos añadir las columnas apellido1 y apellido2 detrás
de la columna nombre.
ALTER TABLE usuario ADD apellido1 VARCHAR(50) NOT NULL AFTER nombre;
ALTER TABLE usuario ADD apellido2 VARCHAR(50) AFTER apellido1;
Después de ejecutar todas las sentencias la tabla quedaría así:
CREATE TABLE usuario (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
apellido1 VARCHAR(50) NOT NULL,
apellido2 VARCHAR(50),
sexo ENUM('H', 'M') NOT NULL DEFAULT 'M',
fecha_nacimiento DATE NOT NULL
);
Manipulación de tablas
Ejemplo: ALTER TABLE <tbl_name> DROP
DROP nos permite eliminar una columna de la tabla.
Suponemos que tenemos la siguiente tabla creada
CREATE TABLE usuario (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
apellido1 VARCHAR(50) NOT NULL,
apellido2 VARCHAR(50),
sexo ENUM('H', 'M') NOT NULL DEFAULT 'M',
fecha_nacimiento DATE NOT NULL
);
Manipulación de tablas
Ejemplo: ALTER TABLE <tbl_name> DROP
Y queremos eliminar la columna fecha_nacimiento. En este caso
usaríamos la sentencia:
ALTER TABLE usuario DROP fecha_nacimiento;
Después de ejecutar esta sentencia la tabla quedaría así:
CREATE TABLE usuario (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
apellido1 VARCHAR(50) NOT NULL,
apellido2 VARCHAR(50),
sexo ENUM('H', 'M') NOT NULL DEFAULT 'M'
);
Manipulación de tablas
Consultar el listado de tablas disponibles:
SHOW TABLES;
Muestra un listado de todas las tablas que existen en la base de datos con la que
estamos trabajando.
Mostrar información sobre la estructura de una tabla:
DESCRIBE nombre_tabla;
También podemos utilizar:
DESC nombre_tabla;
Esta sentencia se utiliza para mostrar información sobre la estructura de
una tabla.
Mostrar la sentencia SQL de creación de una tabla:
SHOW CREATE TABLE nombre_tabla;
Se puede utilizar para visualizar la sentencia SQL que sería necesaria ejecutar
para crear la tabla que le estamos indicando como parámetro.
Tipos de datos
Números enteros:
Tipos de datos
Números enteros:
ZEROFILL:
Todos los tipos de datos numéricos admiten el atributo ZEROFILL.
Cuando asignamos este atributo a una columna también se le añade de
forma automática el atributo UNSIGNED, de modo que el campo quedaría
como UNISGNED ZEROFILL.
Nota importante sobre INT(11):
INT(11) no quiere decir que queremos guardar un número entero de 11
cifras. El número indicado entre paréntesis tiene utilidad cuando
asignamos el atributo UNSIGNED ZEROFILL. En este caso se completa
con 0 a la izquierda del valor hasta alcanzar el número indicado entre
paréntesis.
Por ejemplo, para una columna declarada como INT(4) ZEROFILL, el
valor 5 será representado como 0005.
Tipos de datos
BIT, BOOL, BOOLEAN, SERIAL:
Tipos de datos
Números en punto flotante (Valores aproximados):
• M indica el número de dígitos en total (la precisión).
• D es el número de cifras decimales.
Por ejemplo, un número declarado como FLOAT(7,4) tendrá 7 dígitos
como máximo y 4 de ellos serán decimales. El rango de números que se
pueden representar en este caso será desde -999.9999 hasta 999.9999.
Tipos de datos
Números en punto fijo (Valores exactos):
En MySQL los tipos de datos DECIMAL y NUMERIC son equivalentes.
Estos tipos de datos se utilizan cuando es necesario guardar los valores exactos
sin redondeos. Se suelen utilizar cuando trabajamos con datos monetarios.
M indica el número de dígitos en total (la precisión). Tiene un rango de 1 a 65.
D es el número de cifras decimales. Tiene un rango de 0 a 30.
Tipos de datos
Fechas y tiempo:
Cadenas de caracteres:
Tipos de datos
Datos binarios:
ENUM y SET:
Tipos de datos
Resumen de los tipos de datos disponibles en MySQL:

Más contenido relacionado

PPTX
Funciones y procedimientos en SQL
PPTX
2 1 1_diseño arquitectónico
KEY
Fundamentos de Bases de Datos - Introducción
PPT
Modelo de datos
PPT
Base de datos
PPT
Unidad 3 Modelamiento De Datos Conceptual
PPTX
Fundamentos de las bases de datos
PPTX
NoSQL bases de datos no relacionales
Funciones y procedimientos en SQL
2 1 1_diseño arquitectónico
Fundamentos de Bases de Datos - Introducción
Modelo de datos
Base de datos
Unidad 3 Modelamiento De Datos Conceptual
Fundamentos de las bases de datos
NoSQL bases de datos no relacionales

La actualidad más candente (20)

PPTX
Crear base de datos mysql command
PPT
Sql database object
PDF
Plsql y paquetes
PPTX
Comandos utilizados en sql
PDF
Dbms lifecycle. ..Database System Development Lifecycle
PPTX
SQL JOIN
PPTX
PPTX
Arquitectura Orientada a Servicios joseadugarte
PPTX
Sql DDL Lenguaje de definición de datos
PPT
SQL : introduction
PDF
Analisis de la independencia logica fisica de datos en un sistema de bases de...
PPT
Lenguaje SQL
PPTX
NORMALIZACIÓN
PDF
Metodologiasad 1
PPTX
Diagramas de caso de uso
PDF
Uso de Excepciones en JAVA
PPT
El modelo relacional
PPTX
SQL Commands
PPT
Modelos de datos
Crear base de datos mysql command
Sql database object
Plsql y paquetes
Comandos utilizados en sql
Dbms lifecycle. ..Database System Development Lifecycle
SQL JOIN
Arquitectura Orientada a Servicios joseadugarte
Sql DDL Lenguaje de definición de datos
SQL : introduction
Analisis de la independencia logica fisica de datos en un sistema de bases de...
Lenguaje SQL
NORMALIZACIÓN
Metodologiasad 1
Diagramas de caso de uso
Uso de Excepciones en JAVA
El modelo relacional
SQL Commands
Modelos de datos
Publicidad

Similar a Clase 2 El lenguaje DDL de SQL (20)

PDF
Modulo de programacion sql unidad II
PDF
54563910 curso-de-mysql
PPT
PPTX
Sesión 12 -Diseño de BD_Ciclo_3.pptx
DOCX
Instrucciones basicas de mySQL
PDF
Unidad IV SQL
PDF
Guía de Sql - Lissette Torrealba
PDF
Comandos mysql
PPT
CreacióN De Objetos En MySQL
PPTX
PPTX
Unidad I- Introducción.pptx
PDF
Parte 08 my sql
PDF
comandos-mysql.pdf
PDF
Comandos en consola de mysql desde el portal
PDF
Informe base de datos basico 2
PPT
PPT
PDF
Comandos del-ddl-y-del-dml-liz
PDF
Comandos del-ddl-y-del-dml-liz
PDF
Portafolio 1 sql
Modulo de programacion sql unidad II
54563910 curso-de-mysql
Sesión 12 -Diseño de BD_Ciclo_3.pptx
Instrucciones basicas de mySQL
Unidad IV SQL
Guía de Sql - Lissette Torrealba
Comandos mysql
CreacióN De Objetos En MySQL
Unidad I- Introducción.pptx
Parte 08 my sql
comandos-mysql.pdf
Comandos en consola de mysql desde el portal
Informe base de datos basico 2
Comandos del-ddl-y-del-dml-liz
Comandos del-ddl-y-del-dml-liz
Portafolio 1 sql
Publicidad

Más de José Ricardo Tillero Giménez (20)

PDF
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
PDF
Guía Ejercicios SQL
PDF
Guía 3 Ejercicios de Normalización de Base de Datos
PDF
Guía 1 Ejercicios MR
PDF
Guía 2 Ejercicios de Normalización de Base de Datos
PDF
Guía 3 Ejercicios MER Extendido
PDF
Guía 2 Ejercicios MER
PDF
Guía 1 Ejercicios MER
PDF
Plan de evaluación BD2021
PDF
Perfil Docente y Asesoría
PDF
Planificación BD2021
PDF
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
PDF
NOTAS FINALES DE REDES AVANZADAS IIN4301
PDF
NOTAS FINALES ELECTIVA II IN2102
PDF
NOTAS FINALES ELECTIVA II IN2101
PDF
Notas definitivas per base de datos
PDF
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
PDF
Guía CISCO de redistribución de protocolos de ruteo
PDF
Manual Basico de jQuery
PLAN DE EVALUACIÓN REDES AVANZADAS II-2021
Guía Ejercicios SQL
Guía 3 Ejercicios de Normalización de Base de Datos
Guía 1 Ejercicios MR
Guía 2 Ejercicios de Normalización de Base de Datos
Guía 3 Ejercicios MER Extendido
Guía 2 Ejercicios MER
Guía 1 Ejercicios MER
Plan de evaluación BD2021
Perfil Docente y Asesoría
Planificación BD2021
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
NOTAS FINALES DE REDES AVANZADAS IIN4301
NOTAS FINALES ELECTIVA II IN2102
NOTAS FINALES ELECTIVA II IN2101
Notas definitivas per base de datos
Guía de Redistribución de protocolos de ruteo RIP, PSPF y EIGRP
Guía CISCO de redistribución de protocolos de ruteo
Manual Basico de jQuery

Último (20)

PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PDF
¿NO HABÉIS LEÍDO?. Por Jonathan Bravo.
PDF
Habilidades sociales en la era digital (25-2))
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PPTX
caso clínico iam clinica y semiología l3.pptx
PDF
Habilidades de comunicación en la era digital (planeación)
PDF
Híper Mega Repaso Histológico Bloque 3.pdf
PDF
revista de historia Clio N|285 2025_.pdf
PPTX
Guía Esencial para Empleadores - Cumplimiento con el IESS
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
Actividad 1 (Habilidades sociales en la era digital)
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
Empieza Con El Porqué - Simon Sinek Ccesa007.pdf
PPTX
Presentación del Seminario Teorías del aprendizaje y problemas de contexto - ...
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
¿NO HABÉIS LEÍDO?. Por Jonathan Bravo.
Habilidades sociales en la era digital (25-2))
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
caso clínico iam clinica y semiología l3.pptx
Habilidades de comunicación en la era digital (planeación)
Híper Mega Repaso Histológico Bloque 3.pdf
revista de historia Clio N|285 2025_.pdf
Guía Esencial para Empleadores - Cumplimiento con el IESS
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
Punto Critico - Brian Tracy Ccesa007.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
Fundamentos_Educacion_a_Distancia_ABC.pdf
Actividad 1 (Habilidades sociales en la era digital)
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
Empieza Con El Porqué - Simon Sinek Ccesa007.pdf
Presentación del Seminario Teorías del aprendizaje y problemas de contexto - ...

Clase 2 El lenguaje DDL de SQL

  • 1. Base de Datos UNIDAD 4: El lenguaje SQL Clase 2: El lenguaje DDL de SQL Ing. Ricardo Tillero
  • 2. Introducción SQL ESTÁNDAR: • El SQL, lenguaje de consulta estructurado, es el lenguaje de datos estándar que utilizan las bases de datos relacionales. EVOLUCIÓN: • 1970: IBM, en su centro de investigación de San José (denominado actualmente Almaden), desarrolló el Sequel (lenguaje de consulta). Fue el prototipo de lo que hoy se conoce como SQL. • 1986: Aparece una primera normalización ANSI, aunque no tiene éxito. • 1987: IBM saca al mercado el SAA-SQL. • 1989: Aparece otra normalización ANSI, y esta vez tiene más éxito, siendo Oracle el primero en utilizarlo. • 1992: Sale al mercado el SQL-2; es lo que hoy día implementan todos los sistemas gestores de bases de datos, y es, asimismo, lo mínimo que se le puede pedir a un sistema de este tipo.
  • 3. Introducción SQL COMPONENTES: todo lenguaje de consulta tiene: • Lenguaje de Definición de Datos (LDD - DDL): sirve para crear todos los objetos y datos que se utilizan normalmente (tablas, vistas, restricciones, etc.) así como las directivas de seguridad. • Lenguaje de Manipulación de Datos (LMD - DML): está orientado principalmente a las consultas; permite insertar datos, consultar (mediante SELECT), borrar, actualizar, entre otras.
  • 4. El lenguaje DDL de SQL El DDL (Data Definition Language) o Lenguaje de Definición de Datos es la parte de SQL dedicada a la definición de los datos. Las sentencias DDL son las siguientes: • CREATE: se utiliza para crear objetos como bases de datos, tablas, vistas, índices, triggers y procedimientos almacenados. • DROP: se utiliza para eliminar los objetos de la base de datos. • ALTER: se utiliza para modificar los objetos de la base de datos. • SHOW: se utiliza para consultar los objetos de la base de datos. Otras sentencias de utilidad que usaremos en esta unidad son: • USE: se utiliza para indicar la base de datos con la que queremos trabajar. • DESCRIBE: se utiliza para mostrar información sobre la estructura de una tabla.
  • 5. Manipulación de Bases de Datos Crear una base de datos: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] nombre_base_datos; • DATABASE y SCHEMA son sinónimos. • IF NOT EXISTS crea la base de datos sólo si no existe una base de datos con el mismo nombre. Ejemplos: • CREATE DATABASE nombre_base_datos; • CREATE DATABASE nombre_base_datos CHARACTER SET utf8; • CREATE DATABASE nombre_base_datos CHARACTER SET utf8 COLLATE utf8_general_ci;
  • 6. Manipulación de Bases de Datos CHARACTER SET y COLLATE • CHARACTER SET: Especifica el set de caracteres que vamos a utilizar en la base de datos. • COLLATE: Especifica el tipo de cotejamiento que vamos a utilizar en la base de datos. Indica el criterio que vamos a seguir para ordenar las cadenas de caracteres. • SHOW CHARACTER SET; Para ver cuáles son los sets de caracteres que tenemos disponibles. • SHOW COLLATION; Para consultar qué tipos de cotejamiento hay disponibles podemos usar. • SHOW COLLATION LIKE 'utf8%‘; Si queremos hacer una consulta más específica sobre los tipos de cotejamiento que podemos usar con utf8.
  • 7. Manipulación de Bases de Datos Eliminar una base de datos: DROP {DATABASE | SCHEMA} [IF EXISTS] nombre_base_datos; DATABASE y SCHEMA son sinónimos. IF EXISTS elimina la la base de datos sólo si ya existe. Ejemplo: DROP DATABASE nombre_base_datos;
  • 8. Manipulación de Bases de Datos Modificar una base de datos: ALTER {DATABASE | SCHEMA} [nombre_base_datos] alter_specification [, alter_especification] ... Ejemplo: ALTER DATABASE nombre_base_datos CHARACTER SET utf8;
  • 9. Manipulación de Bases de Datos Consultar el listado de bases de datos disponibles: SHOW DATABASES; Muestra un listado con todas las bases de datos a las que tiene acceso el usuario con el que hemos conectado a MySQL. Mostrar la sentencia SQL de creación de una base de datos: SHOW CREATE DATABASE nombre_base_datos; Se puede utilizar para visualizar la sentencia SQL que sería necesaria ejecutar para crear la base de datos que le estamos indicando como parámetro.
  • 10. Manipulación de tablas Crear una tabla: a continuación se muestra una versión simplificada de la sintaxis necesaria para la creación de una tabla en MySQL.
  • 11. Manipulación de tablas Restricciones sobre las columnas de la tabla: podemos aplicar las siguientes restricciones sobre las columnas de la tabla: NOT NULL o NULL: Indica si el campo no permite almacenar valores nulos o no. DEFAULT: Permite indicar un valor inicial por defecto si no especificamos ninguno en la inserción. AUTO_INCREMENT: Sirve para indicar que es un campo autonumérico. Su valor se incrementa automáticamente en cada inserción de una fila. Sólo se utiliza en campos de tipo entero. UNIQUE KEY: Indica que el campo es una clave secundaria. PRIMARY KEY: Para indicar que un campo o varios son clave primaria. ON DELETE y ON UPDATE: Nos permiten indicar el efecto que provoca el borrado o la actualización de los datos que están referenciados por claves ajenas. Las opciones que podemos especificar son las siguientes: RESTRICT: Impide que se puedan actualizar o eliminar las filas que tienen valores referenciados por claves ajenas. Es la opción por defecto en MySQL. CASCADE: Permite actualizar o eliminar las filas que tienen valores referenciados por claves ajenas. SET NULL: Asigna el valor NULL a las filas que tienen valores referenciados por claves ajenas. NO ACTION: Es una palabra clave del estándar SQL. En MySQL es equivalente a RESTRICT. SET DEFAULT: No es posible utilizar esta opción cuando trabajamos con el motor de almacenamiento InnoDB. Puedes encontrar más información en la documentación oficial de MySQL.
  • 12. Manipulación de tablas Restricciones sobre las columnas de la tabla: Ejemplo 1:
  • 13. Manipulación de tablas Restricciones sobre las columnas de la tabla: Ejemplo 2:
  • 14. Manipulación de tablas Opciones a tener en cuenta en la creación de las tablas: AUTO_INCREMENT: Aquí podemos indicar el valor inicial que vamos a usar en el campo definido como AUTO_INCREMENT. CHARACTER SET: Especifica el set de caracteres que vamos a utilizar en la tabla. COLLATE: Especifica el tipo de cotejamiento que vamos a utilizar en la tabla. ENGINE: Especifica el motor de almacenamiento que vamos a utilizar para la tabla. Los más habituales en MySQL son InnoDB y MyISAM. Por defecto las tablas se crean con el motor InnoDB.
  • 15. Manipulación de tablas Opciones a tener en cuenta en la creación de las tablas: Ejemplo:
  • 16. Manipulación de tablas Eliminar una tabla: DROP [TEMPORARY] TABLE [IF EXISTS] nombre_tabla [, nombre_tabla]; Ejemplos: DROP TABLE nombre_tabla; DROP TABLE IF EXISTS nombre_tabla; DROP TABLE nombre_tabla_1, nombre_tabla_2;
  • 17. Manipulación de tablas Modificar una tabla: En muchas ocasiones es necesario modificar los atributos de una tabla, añadir nuevos campos o eliminar otros. Si la tabla no tiene datos podemos eliminar la tabla y volver a crearla, pero si se trata de una tabla que ya contiene datos tenemos que hacer uso de la sentencia ALTER TABLE. A continuación se muestra la sintaxis necesaria para la modificación de una tabla en MySQL.
  • 18. Manipulación de tablas Modificar una tabla: sintaxis MySQL.
  • 19. Manipulación de tablas Modificar una tabla: sintaxis MySQL.
  • 20. Manipulación de tablas Modificar una tabla: sintaxis MySQL.
  • 21. Manipulación de tablas Modificar una tabla: sintaxis MySQL.
  • 22. Manipulación de tablas Ejemplo: ALTER TABLE <tbl_name> MODIFY MODIFY nos permite modificar el tipo de dato de una columna y sus atributos. Suponemos que tenemos la siguiente tabla creada CREATE TABLE usuario ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(25) ); Y queremos modificar las columna nombre para que pueda almacenar 50 caracteres y además que sea NOT NULL. En este caso usaríamos la sentencia: ALTER TABLE usuario MODIFY nombre VARCHAR(50) NOT NULL; Después de ejecutar esta sentencia la tabla quedaría así: CREATE TABLE usuario ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(50) NOT NULL );
  • 23. Manipulación de tablas Ejemplo: ALTER TABLE <tbl_name> ALTER ALTER nos permite asignar un valor por defecto a una columna o eliminar el valor por defecto que tenga establecido. Suponemos que tenemos la siguiente tabla creada CREATE TABLE usuario ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(50) NOT NULL, sexo ENUM('H', 'M') NOT NULL ); Y queremos que el valor por defecto de la columna sexo sea M. En este caso usaríamos la sentencia: ALTER TABLE usuario ALTER sexo SET DEFAULT 'M'; Después de ejecutar esta sentencia la tabla quedaría así: CREATE TABLE usuario ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(50) NOT NULL, sexo ENUM('H', 'M') NOT NULL DEFAULT 'M' ); Si ahora quisiéramos eliminar el valor por defecto de la columna sexo, usaríamos la siguiente sentencia: ALTER TABLE usuario ALTER sexo DROP DEFAULT;
  • 24. Manipulación de tablas Ejemplo: ALTER TABLE <tbl_name> ADD ADD nos permite añadir nuevas columnas a una tabla. Con los modificadores FIRST y AFTER podemos elegir el lugar de la tabla donde queremos insertar la nueva columna. FIRST coloca la nueva columna en primer lugar y AFTER la colocaría detrás de la columna que se especifique. Si no se especifica nada la nueva columna se añadiría detrás de la última columna de la tabla. Suponemos que tenemos la siguiente tabla creada CREATE TABLE usuario ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(50) NOT NULL, sexo ENUM('H', 'M') NOT NULL );
  • 25. Manipulación de tablas Ejemplo: ALTER TABLE <tbl_name> ADD Y queremos añadir la columna fecha_nacimiento de tipo DATE: ALTER TABLE usuario ADD fecha_nacimiento DATE NOT NULL; En este caso la nueva columna se ha añadido detrás de la última columna, sexo. La tabla quedaría así: CREATE TABLE usuario ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(50) NOT NULL, sexo ENUM('H', 'M') NOT NULL, fecha_nacimiento DATE NOT NULL );
  • 26. Manipulación de tablas Ejemplo: ALTER TABLE <tbl_name> ADD Suponemos que ahora queremos añadir las columnas apellido1 y apellido2 detrás de la columna nombre. ALTER TABLE usuario ADD apellido1 VARCHAR(50) NOT NULL AFTER nombre; ALTER TABLE usuario ADD apellido2 VARCHAR(50) AFTER apellido1; Después de ejecutar todas las sentencias la tabla quedaría así: CREATE TABLE usuario ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(50) NOT NULL, apellido1 VARCHAR(50) NOT NULL, apellido2 VARCHAR(50), sexo ENUM('H', 'M') NOT NULL DEFAULT 'M', fecha_nacimiento DATE NOT NULL );
  • 27. Manipulación de tablas Ejemplo: ALTER TABLE <tbl_name> DROP DROP nos permite eliminar una columna de la tabla. Suponemos que tenemos la siguiente tabla creada CREATE TABLE usuario ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(50) NOT NULL, apellido1 VARCHAR(50) NOT NULL, apellido2 VARCHAR(50), sexo ENUM('H', 'M') NOT NULL DEFAULT 'M', fecha_nacimiento DATE NOT NULL );
  • 28. Manipulación de tablas Ejemplo: ALTER TABLE <tbl_name> DROP Y queremos eliminar la columna fecha_nacimiento. En este caso usaríamos la sentencia: ALTER TABLE usuario DROP fecha_nacimiento; Después de ejecutar esta sentencia la tabla quedaría así: CREATE TABLE usuario ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(50) NOT NULL, apellido1 VARCHAR(50) NOT NULL, apellido2 VARCHAR(50), sexo ENUM('H', 'M') NOT NULL DEFAULT 'M' );
  • 29. Manipulación de tablas Consultar el listado de tablas disponibles: SHOW TABLES; Muestra un listado de todas las tablas que existen en la base de datos con la que estamos trabajando. Mostrar información sobre la estructura de una tabla: DESCRIBE nombre_tabla; También podemos utilizar: DESC nombre_tabla; Esta sentencia se utiliza para mostrar información sobre la estructura de una tabla. Mostrar la sentencia SQL de creación de una tabla: SHOW CREATE TABLE nombre_tabla; Se puede utilizar para visualizar la sentencia SQL que sería necesaria ejecutar para crear la tabla que le estamos indicando como parámetro.
  • 31. Tipos de datos Números enteros: ZEROFILL: Todos los tipos de datos numéricos admiten el atributo ZEROFILL. Cuando asignamos este atributo a una columna también se le añade de forma automática el atributo UNSIGNED, de modo que el campo quedaría como UNISGNED ZEROFILL. Nota importante sobre INT(11): INT(11) no quiere decir que queremos guardar un número entero de 11 cifras. El número indicado entre paréntesis tiene utilidad cuando asignamos el atributo UNSIGNED ZEROFILL. En este caso se completa con 0 a la izquierda del valor hasta alcanzar el número indicado entre paréntesis. Por ejemplo, para una columna declarada como INT(4) ZEROFILL, el valor 5 será representado como 0005.
  • 32. Tipos de datos BIT, BOOL, BOOLEAN, SERIAL:
  • 33. Tipos de datos Números en punto flotante (Valores aproximados): • M indica el número de dígitos en total (la precisión). • D es el número de cifras decimales. Por ejemplo, un número declarado como FLOAT(7,4) tendrá 7 dígitos como máximo y 4 de ellos serán decimales. El rango de números que se pueden representar en este caso será desde -999.9999 hasta 999.9999.
  • 34. Tipos de datos Números en punto fijo (Valores exactos): En MySQL los tipos de datos DECIMAL y NUMERIC son equivalentes. Estos tipos de datos se utilizan cuando es necesario guardar los valores exactos sin redondeos. Se suelen utilizar cuando trabajamos con datos monetarios. M indica el número de dígitos en total (la precisión). Tiene un rango de 1 a 65. D es el número de cifras decimales. Tiene un rango de 0 a 30.
  • 35. Tipos de datos Fechas y tiempo: Cadenas de caracteres:
  • 36. Tipos de datos Datos binarios: ENUM y SET:
  • 37. Tipos de datos Resumen de los tipos de datos disponibles en MySQL: