Esquema general SQL (DDL+DML)

Anuncio
SQL
(Structured Query Language): Lenguaje de Consulta Estructurado
NO es un lenguaje de programación (con SQL no se desarrollan aplicaciones) es el lenguaje base de casi
todos los SGBD (Sistemas Gestores de Bases de Datos).
Con SQL se puede implementar una BD, crear, modificar o borrar sus estructuras, insertar, modificar o
borrar sus datos,… gestionar, en definitiva, una BD.
DDL………………………… Crea modifica o borra las estructuras de la base
(Data Description Language),
Lenguaje de Definición de Datos
de datos. Define sus columnas (atributos) y el
tipo de los mismos.
SQL
DML………………………… Inserta, modifica o borra datos de la BD. Permite
(Data Manipulation Language),
Lenguaje de Manipulación de Datos
la consulta de datos sujetos a determinadas
condiciones.
CREATE……….. Crea tablas, campos e índices
DDL
tiene COMANDOS
ALTER……….…. Modifica las tablas, añadiendo atributos (columnas) o
cambiando la definición de éstos
DROP…….……. Elimina tablas e índices
1
COMANDOS …. : SELECT, INSERT, UPDATE, DELETE
CLAÚSULAS…… : FROM, WHERE, GROUP BY, HAVING, ORDER BY
- LÓGICOS …….: AND, OR, NOT
OPERADORES
DML
-DE COMPARACIÓN..: <, <=, >, >=, =, <>, BETWEEN, LIKE, IN
tiene
-AVG……….………..…… : Promedio de valores
-COUNT…….……….. … : Nº total de registros
FUNCIONES DE
AGREGADO
-SUM……………….…. … : Suma de registros
-MAX……………….…. … : Mayor de los registros
-MIN…………………...… : Mínimo de los registros
Tipo de datos
 TEXTO: Caracteres o dígitos con los que no se opera:
- varchar(x)  cadena de longitud variable (1-255)
- char(x) cadena de longitud fija (1-255)
- text, blob, longtext, longblob  aprox. > 60.000 caracteres
 NUMERO: Dígitos numéricos operables matemáticamente:
-
integer(x) ó int(x)  valores enteros
-
tinyint(x), un subtipo del anterior  de -128 a 127 (0-255, sin signo)
- decimal(t,d) ó numeric(t,d)  valores decimales. Carácter separador:
. (el punto)
t = número total de dígitos
d = número total de dígitos decimales,
si no se pone nada, por defecto, es cero
- integer (x) unsigned ó decimal(t,d) unsigned  entero o decimal sin signo
 FECHA/HORA: Para almacenar fechas u horas. Algunos formatos:
- date (fecha)  formato “YYYY-MM-DD” (de 1000-01-01 a 9999-12-31)
2
- time (fecha)  formato “HH:MM:SS” (de -838:59:59 a 838:59:59)
- datatime (fecha y hora)  formato “YYYY-MM-DD HH:MM:SS”
(de 1000-01-01 00:00:00 a 9999-12-31 23:59:59)
- year (año):
year(2)  formato “YY” (de 1970 a 2069)
year(4)  formato “YYYY” (de 1901 a 2155)
Separadores: “ / “, “ – “, “ . “
- Si ingresamos '2006-2-1' (mes y día de 1 dígito), lo toma como '2006-02-01'.
- Si ingresamos '20060201' (cadena sin separador), lo toma como '2006-02-01'.
- Si ingresamos 20060201 (numérico), lo toma como '2006-02-01'.
- Si ingresamos '20060201153021' (cadena sin separadores), lo toma como '2006-02-01 15:30:21'.
- Si ingresamos '200602011530' (cadena sin separadores con un dato faltante) no lo reconoce como
datatime y almacena ceros.
- Si ingresamos '2006023' (cadena sin separadores con un dato faltante) no lo reconoce como fecha y
almacena ceros.
- Si ingresamos '2006-02-01 11:30:21' (valor datetime) en un campo 'date', toma sólo la parte de la
fecha, la hora se corta, se guarda '2006-02-01'.
DDL
CREAR UNA TABLA:
CREATE TABLE nombre_tabla (
nombre_columna1 tipo_columna1,
nombre_columna2 tipo_columna2,
……
,
nombre_ columna_n tipo columna_n [ opcional]
);
BORRAR UNA TABLA:
DROP TABLE nombre_tabla;
- No se puede borrar una tabla si está abierta
- No se puede borrar la tabla si hay otras que referencien a la que se pretende borrar
(se infringen reglas de integridad referencial)
3
MODIFICAR UNA TABLA:
Añadir una columna:
ALTER TABLE nombre_tabla ADD COLUMN nombre_nueva_columna tipo_nueva_columna;
Borrar una columna:
ALTER TABLE nombre_tabla DROP COLUMN nombre_columna_a_borrar;
(
e
(
RESTRICCIONES
e
s
RESTRICCIÓN: característica adicional que tiene una columna o una combinación dec columnas. Pueden ser:
r
i de la definición de la
 Restricción de tipo 1 (restricción a nivel de columna): Aparece dentro
b
columna después del tipo de dato. Afecta a esa columna.
i
 Restricción de tipo 2 (restricción a nivel de tabla): Se define después
de definir todas las
r
columnas de la tabla. A afecta a una columna o a una combinación de columnas.
c
TIPOS:
o
l
 Restricción PRIMARY KEY: restricción de clave primaria
u
m
 Restricción UNIQUE: restricción de unicidad
n
 Restricción NOT NULL: restricción de obligatoriedad
e
s
 Restricción de clave foránea (FOREIGN KEY): restricción de integridad referencial
o
p
c
i
o
n
a
l
)
DEFINIR UNA RESTRICCIÓN: se definen al definir la tabla:
1.- Restricción de clave primaria (primary key)
 Sintaxis a nivel de columna (tipo 1):
nombre_columna tipo_columna PRIMARY KEY
c
r
i
b
CONSTRAINT nombre_restriccion PRIMARY KEY (columna/s_que_son_clave_primaria)
i
r
Es opcional
 Sintaxis a nivel de tabla (tipo 2):
c
o
l
u
4
2.- Restricción de unicidad (unique)
 Sintaxis a nivel de columna (tipo 1):
nombre_columna tipo_columna UNIQUE
 Sintaxis a nivel de tabla (tipo 2):
CONSTRAINT nombre_restriccion UNIQUE (columna/s_que_no_permiten_valores_duplicados)
3.- Restricción de obligatoriedad (not null)
 Solo se define a nivel de columna (tipo 1). Sintaxis:
nombre_columna tipo_columna NOT NULL
4.- Restricción de integridad referencial (foreign key)
 Sintaxis a nivel de tabla (tipo 2):
CONSTRAINT nombre_restriccion FOREIGN KEY (nombre_columna/s) REFERENCES nombre_tabla2
(columna_a_la_que_referencia)
PARA AÑADIR UNA RESTRICCIÓN A UNA COLUMNA DE UNA TABLA (nombre_tabla) YA CREADA:
ALTER TABLE nombre_tabla ADD CONSTRAINT [PRIMARY KEY/UNIQUE] (nombre_columna);
Ejemplo:
ALTER TABLE tab1 ADD CONSTRAINT c1 UNIQUE (col 3);
Aquí, se añade a la tabla tab1, previamente creada, en su columna llamada col 3, una
restricción de tipo UNIQUE (no permite duplicados) llamada c1.
ALTER TABLE tab1 ADD CONSTRAINT c2 FOREIGN KEY (col 4) REFERENCES tab2
(columna_a_la_que_referencia);
Aquí, se añade a la tabla tab1, previamente creada, en su columna llamada col 4, una
restricción de tipo FOREIGN KEY (clave foránea) llamada c2.
5
PARA BORRAR UNA RESTRICCIÓN DE UNA COLUMNA DE UNA TABLA (nombre_tabla) YA CREADA:
ALTER TABLE nombre_tabla DROP [PRIMARY KEY/INDEX (si es unique)/FOREIGN KEY]
nombre_restricción
Ejemplo:
ALTER TABLE tab1 DROP FOREIGN KEY c1;
Aquí, se borra la restricción creada anteriormente.
INDICES
INDICE: estructura de datos que permite recuperar las filas de una tabla de forma más rápida, además de
proporcionar una ordenación distinta a la que la tabla tenga.
Se definen sobre una columna o grupo de columnas:
--- Sobre una columna: p.e. definir un índice sobre una columna población de una tabla clientes, permite recuperar los
cliente (los registros) ordenados alfabéticamente por el nombre de la población.
--- Sobre varias columnas: se ordenan alfabéticamente por la primera columna, y dentro de un mismo valor de la
primera columna se ordenan alfabéticamente por la segunda columna y así sucesivamente.
PARA CREAR UN INDICE:
Ejemplo:
CREATE INDEX i_editorial ON libros (editorial ASC);
Se crea el índice de nombre i_editorial en la columna editorial de la tabla libros.
Ordena los libros según la editorial, por orden alfabético ascendente (ASC).
Si se indica DESC el orden es descendente. Si no se indica nada por defecto asume ASC
La tabla quedará indexada por el campo editorial
PARA BORRAR UN INDICE:
Ejemplo:
DROP INDEX i_editorial ON clientes;
Se elimina el índice anteriormente creado.
6
Descargar