Gestión de Datos – Unidad IV
186
Juan Manuel Garcia Iannini – German Darío Colato
Lenguaje Estructurado de
Consulta (SQL)
Introducción
• Structured Query Language (SQL)
• El Lenguaje de Definición de Datos (LDD - DDL)
• El Lenguaje de Manipulación de Datos (LMD -
DML)
Structured Query Language (SQL)
● Lenguaje declarativo de acceso a bases de datos que combina construcciones del
álgebra relacional y el cálculo relacional.
● Originalmente desarrollado en los '70 por IBM en su Research Laboratory de San José a
partir del cálculo de predicados creado por Codd.
● Lenguaje estándar de facto en los SGBD comerciales
● Estándares:
– SEQUEL(Structured English QUEry Language), IBM 1976
– SQL-86 (ANSI SQL)
– SQL-89 (SQL1)
– SQL-92 (SQL2), gran revisión del estándar
– SQL:1999 (SQL3), Añade disparadores, algo de OO, ...
– SQL:2003. Añade XML, secuencias y columnas autonuméricas
El Lenguaje de Definición de Datos (LDD - DDL)
• Proporciona comandos para la creación, borrado y modificación
de esquemas relacionales
• Definición de estructuras programáticas
• Autorización
• Definición de usuarios y privilegios
• Utiliza tres sentencias básicas
CREATE
ALTER
DROP
SQL – DDL
Schema
• Un schema es un conjunto interrelacionado de objetos de
bases de datos.
• Dentro de un schema se almacenan
• Tablas
• Columnas de tablas
• Tipos de datos de las columnas
• Índices
• Claves
• Vistas
• Procedimientos almacenados
• Funciones
SQL – DDL
Schema
Atención
● MySQL toma como sinónimos schema y database
● Otros productos de base de datos establecen una distinción.
Por ejemplo, en el producto de base de datos Oracle, un schema sólo representa una parte de un
diagrama de base de datos: las tablas y otros objetos propiedad de un único usuario
SQL – DDL
Schema Creacion:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
Ejemplos:
CREATE DATABASE Universidad;
CREATE SCHEMA Universidad;
Schema Eliminación:
Se utiliza la sentencia DROP
Sintaxis general – DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
** Atención ** – La ejecución del comando borra la BD incluyendo todo lo contenido dentro de ella
SQL – DDL
Creación de Tablas:
Ejemplo:
CREATE TABLE tbl_name (
campo1 tipo,
campo2 tipo,
campoN tipo
);
CREATE TABLE alumno (
DNI int(11) NOT NULL,
Apellido varchar(45) DEFAULT NULL,
Nombre varchar(45) DEFAULT NULL
PRIMARY KEY (DNI));
SQL – DDL
Creación de Tablas:
Ejemplo:
CREATE TABLE IF NOT EXISTS Provincia (
NombreProvincia VARCHAR(45) NULL, Este ejemplo genera las PK y
idProvincia INT(11) NOT NULL, FK en ambas tablas.
PRIMARY KEY (idProvincia));
CREATE TABLE IF NOT EXISTS Localidad (
idLocalidad INT NOT NULL, ** Tener en cuenta que se debe
LocalidadNombre VARCHAR(45) NULL, Provincia_idProvincia generar primero la tabla que
INT(11) NOT NULL,
tiene la PK a la cual hace
PRIMARY KEY (idLocalidad, Provincia_idProvincia), INDEX
fk_Localidad_Provincia_idx (Provincia_idProvincia ASC), referencia la FK **
CONSTRAINT fk_Localidad_Provincia
FOREIGN KEY (Provincia_idProvincia)
REFERENCES Provincia (idProvincia));
SQL – DDL
Modificación de Tablas:
• Añadir un campo
ALTER TABLE alumno add pais varchar(30);
• Modificar el tipo de dato de un campo
ALTER TABLE alumno MODIFY pais VARCHAR(20);
• Borrar un campo
ALTER TABLE alumno DROP pais
SQL – DDL
Modificación de Tablas:
• Añadir una clave primaria
ALTER TABLE alumno add primary key (DNI);
• Borrar una clave primaria
ALTER TABLE alumno drop primary key
• Añadir una clave foránea
ALTER TABLE miTabla ADD FOREIGN KEY (campodemiTabla) REFERENCES
otraTabla(Id) ;
• Borrar una clave foránea
ALTER TABLE mitabla drop foreign key nombre_indic
SQL – DDL
Eliminación de Tablas:
• Se utiliza el comando DROP:
Sintaxis general – DROP nombretabla;
• Esta sentencia elimina la tabla y todo la información contenida en ella.
• No hay forma de recuperar, salvo que se restaure un backup
• Si la tabla esta relacionada con otras, se deben deshabilitar las claves foráneas
correspondientes
Lenguaje de Manipulación de Datos (LMD - DML)
SQL – DML
Inserción de Datos:
• Se utiliza la instrucción INSERT
• Sintaxis general
INSERT INTO tabla (lista_de_campos) VALUES (lista_de_valores)
** Importante **
• Declarar la lista de campos
• La ubicación de los valores debe ser correspondiente con la lista de los campos
SQL – DML
Inserción de Datos:
** Ejemplo **
• Se utiliza la instrucción INSERT
INSERT INTO alumno (DNI, Apellido, Nombre) VALUES
(23923770,’JOSE’,’PEREZ’);
• Sintaxis general
INSERT INTOINTO
INSERT tablaalumno
(lista_de_campos) VALUES (lista_de_valores)
VALUES (23923770,’JOSE’,’PEREZ’);
** Importante **
• Declarar la lista de campos
• La ubicación de los valores debe ser correspondiente con la lista de los campos
SQL – DML
Actualización de Datos:
• Se utiliza la instrucción UPDATE
• Sintaxis general
UPDATE tabla SET CAMPO = VALOR, CAMPOn = VALORn WHEREl ista_de_condiciones
** Importante **
• La instrucción funciona correctamente sin el WHERE (filtrado) pero actualizará todos los
registros de la tabla
SQL – DML
Actualización de Datos:
• Se utiliza la instrucción UPDATE
• Sintaxis general
** Ejemplo **
UPDATE tabla SET CAMPO = VALOR, CAMPOn = VALORn WHEREl ista_de_condiciones
UPDATE alumno
SET apellido = ‘GONZALES’
** Importante ** WHERE DNI = 23923770;
• La instrucción funciona correctamente sin el WHERE (filtrado) pero actualizará todos los
registros de la tabla
SQL – DML
Eliminación / Borrado de Datos:
• Se utiliza la instrucción DELETE
• Sintaxis general
DELETE FROM tabla WHERE campo = valor
** Importante **
• Importante no olvidar la condicion del WHERE. Sino borrará todos los datos de la tabla
SQL – DML
Eliminación / Borrado de Datos:
• Se utiliza la instrucción DELETE
• Sintaxis general
** Ejemplo ** FROM tabla WHERE campo = valor
DELETE
DELETE FROM alumno WHERE DNI = 23923770;
** Importante **
• Importante no olvidar la condicion del WHERE. Sino borrará todos los datos de la tabla
Dudas