Introducción al lenguaje SQL.
1. Tipos de datos.
2. Creación, comprobación y eliminación de una base de datos.
3. Creación y comprobación de una tabla.
4. Descripción de una tabla.
5. Inserción de filas en una tabla.
6. Consulta de datos en una tabla.
7. Actualización de datos en una tabla.
8. Borrado de filas de una tabla.
9. Eliminación de una tabla.
Introducción a SQL Página 1 de 12
1. Tipos de datos.
De los distintos tipos de datos que se manejan en una base de datos relacional, los
cuatro más importantes son:
VARCHAR(tamaño): Pueden contener cualquier dato alfanumérico en
mayúsculas o minúsculas, más signos especiales tales como +, -, $, etc... La
longitud máxima es de 255.
Ejemplo: VARCHAR(15)-- Almacena hasta 15 caracteres.
INT: Entero cuyo valor oscila entre -217483648 y 214783647.
Ejemplo: INT-- Almacena un número entero.
FLOAT(L[,D]): Número real o con punto flotante, es decir, con decimales. Con
L se indica la longitud total de dígitos numéricos y con D, en caso de
especificarla, se indica cuantos decimales hay del total de dígitos.
Ejemplo:
FLOAT(3,2) - 3 dígitos totales, de los cuales 2 son decimales.
FLOAT(7) - 7 dígitos enteros, sin decimales.
DATE: Puede contener cualquier valor de fecha.
Ejemplo: DATE -- Almacena cualquier valor de fecha con el formato
‘aaaa-mm-dd’.
2. Creación, activación, comprobación y eliminación de una base de datos
Un sistema gestor de bases de datos puede almacenar más de una base de datos.
Cada base de datos puede contener una o más tablas de datos relacionadas o no entre sí.
Dentro de un sistema gestor de bases de datos, lo primero que se debe hacer es crear una
base de datos en la que poder almacenar las distintas tablas con las que trabajemos.
Para crear una base de datos utilizaremos la instrucción CREATE DATABASE.
Formato: CREATE DATABASE nombre_base_datos;
Ejemplo: create database practica;
Si la base de datos no existía con anterioridad se creará y si existía con anterioridad se
producirá un error.
De entre todas las bases de datos creadas debemos especificar una como activa o en uso
y para ello utilizaremos la instrucción USE.
Introducción a SQL Página 2 de 12
Formato: USE nombre_base_datos;
Ejemplo: use practica;
Para eliminar una base de datos del sistema gestor de bases de datos y con ella todas sus
tablas, se utilizará le instrucción DROP DATABASE.
Formato: DROP DATABASE nombre_base_datos;
Ejemplo: drop database practica;
3. Creación y comprobación de una tabla.
Únicamente podremos crear tablas en la base de datos activa o en uso.
Para crear una tabla con lenguaje SQL, se utiliza la instrucción CREATE TABLE.
Formato:
CREATE TABLE nombre_tabla(
nombre_col1 tipo_col1 restricciones_del_campo1,
[nombre_col2 tipo_col2 restricciones_del_campo2,
...],
restricciones de la tabla);
Restricciones del campo:
PRIMARY KEY: clave primaria.
UNIQUE: claves alternativas
NOT NULL: Obligatoriedad. En caso de especificarse indica que la
columna en cuestión no admite valores nulos, con lo que dicha columna será
obligatoria. En caso de no especificarse (o especificarse NULL), indicará
que la columna en cuestión si admite nulos, o lo que es lo mismo, no es una
columna de obligada escritura.
FOREING KEY: clave ajena. CONSTRAINT nom_restriccion FOREING
KEY (atributo) REFERENCES tabla (clave_primaria)
ON DELETE CASCADE|SET NULL|NO ACTION|SET DEFAULT
ON UPDATE CASCADE|SET NULL|NO ACTION|SET DEFAULT
Ejemplo1: Creación de una tabla sencilla donde únicamente encontramos campos
obligatorios o no obligatorios.
create table prueba(
codigo int not null,
descripcion varchar(35) not null,
precio float(4,2) not null,
descuento int,
caducidad date not null
);
Introducción a SQL Página 3 de 12
Ejemplo2: Creación de tabla zona y personas, de modo que en las personas tenemos
el código de zona en la que vive.
CREATE TABLE zonas(
Cod_zona INT primary key,
Nombre VARCHAR(15));
Ó también
CREATE TABLE zones (
Cod_zona INT,
Nombre VARCHAR(15),
CONSTRAINT cp_cod_zona PRIMARY KEY(cod_zona));
CREATE TABLE personas(
Dni VARCHAR(10) PRIMARY KEY,
Nombre VARCHAR(30),
Dirección VARCHAR(30),
Población VARCHAR(30),
Cod_zona INT,
CONSTRAINT ca_cod_zona FOREING KEY (cod_zona) REFERENCES
zones(cod_zona) on delete no action on update cascade);
4. Descripción de una tabla.
Únicamente podremos describir tablas de la base de datos activa o en uso.
Para describir una tabla con lenguaje SQL, se utiliza la instrucción DESCRIBE.
Formato: DESCRIBE nombre_tabla;
Ejemplo: DESCRIBE prueba;
5. Inserción de filas en una tabla.
Para insertar filas en una tabla con lenguaje SQL, se utiliza la instrucción INSERT.
Formato:
INSERT INTO nombre_tabla [(col1, col2, ...)]
VALUES (valor1[, valor2, ...]);
Ejemplo:
insert into prueba
values(1,'Leche entera calcio',1.25,4,'2006/12/21');
Introducción a SQL Página 4 de 12
Los datos tipo carácter y tipo fecha han de ser especificados entre comillas simples, ya
que en caso contrario se producirán errores.
Ejemplo:
insert into prueba
values(1,Leche entera calcio,1.25,4,'2006/12/21');- Error, ya que no se ha
especificado un valor tipo carácter entre comillas.
Para especificar la inserción únicamente en algunas columnas de la tabla, indicaremos a
continuación del nombre de la tabla las columnas donde se realizará la inserción,
separadas por comas y encerradas entre paréntesis, teniendo en cuenta que el orden en
que se especifiquen las columnas se debe corresponder con el orden en que colocan los
valores. En las columnas no especificadas se le asignará el valor NULL.
Ejemplo:
insert into prueba (codigo, descripción, precio, caducidad)
values(2,'Yogurt Natural azucarado pack 4',0.85,'2005/10/15');
Cuando una columna está definido permite nulos, también se puede insertar el valor
nulo en dicha columna especificándolo en la inserción.
Ejemplo:
insert into prueba
values(2,'Yogurt Natural azucarado pack 4',0.85,null,'2005/10/15');
6. Consulta de datos de una tabla.
Todas las consultas son realizadas con una única instrucción, la instrucción SELECT.
El usuario utilizará la instrucción SELECT con nivel de complejidad apropiado para la
obtención de la información solicitada.
Las consultas simples son muy sencillas de realizar.
El grado potencial de complejidad es muy elevado.
Los datos pueden ser representados en un orden determinado y bajo un nombre de
columna determinado.
Formato:
*
SELECT { }
exp_col1[, exp_col2, ...]
FROM nom_tabla1[, nom_tabla2, ...]
[WHERE predicado]
[ORDER BY exp_col1[ASC/DESC][,
exp_col2[ASC/DESC],...]];
Donde:
Introducción a SQL Página 5 de 12
Las dos únicas palabras clave que deben especificarse obligatoriamente son
SELECT y FROM.
*
SELECT { }
exp_col1[, exp_col2, ...] sirve para elegir ciertas columnas o valores
derivados de ellas.
FROM nom_tabla1[, nom_tabla2, ...] especifica la lista de tablas de las que sacar la
información, aunque por el momento, sólo se harán consultas de una única tabla.
Ejemplo:
select * from prueba;
select codigo, descripcion from prueba;
select precio * 2 from prueba; Columna derivada de la multiplicación del
precio * el valor 2.
Todas las columnas pueden estar modificadas por paréntesis y por operadores. De entre
los operadores podemos destacar los aritméticos:
+ Suma
- Resta
* Multiplicación
/ División
% Módulo
Introducción a SQL Página 6 de 12
Ejemplo:
select precio * 2 from prueba;
Cuando se consulta la base de datos, los nombres de las columnas se usan como
cabecera de presentación. Si éste resulta demasiado largo, corto o indescriptible, puede
cambiarse en la misma instrucción SELECT por otro nombre llamado ALIAS de
columna, el cual se especificará entre comillas dobles a continuación de la columna o
expresión de columna.
Ejemplo:
select precio – ((precio * descuento)/100) “precio final” from prueba;
Importante: El valor correspondiente a la segunda fila aparece como nulo por
que cualquier valor operado con el valor nulo resulta nulo y el descuento del
articulo de la segunda fila es nulo.
WHERE predicado especifica el criterio de búsqueda de información. Las filas a
seleccionar deben cumplir una o varias condiciones. La complejidad del criterio de
búsqueda puede llegar a ser muy elevada.
Las condiciones que deben cumplir las filas para ser seleccionadas se especifican en
el predicado de la cláusula WHERE.
Ejemplo:
select precio – ((precio * descuento)/100) “precio final” from prueba where
descuento is not null;
select * from prueba where codigo >= 3;
select * from prueba where descripcion like 'Y%';
Introducción a SQL Página 7 de 12
Predicados con comparación de valor general:
Se utilizan los caracteres =, >, <, ^ y , para conocer si un dato es igual, distinto,
mayor, menor, mayor o igual y menor o igual que otro dato. Pueden usarse con
datos tipo numérico.
Ejemplo:
v1 = v2 (¿v1 es igual que v2?)
v1 > v2 (¿v1 es mayor que v2?)
v1 < v2 (¿v1 es menor que v2?)
v1 >= v2 (¿v1 es mayor o igual que v2?)
v1 <= v2 (¿v1 es menor o igual que v2?)
v1 = v2 (¿v1 es distinto que v2?)
v1 ^= v2 (¿v1 es distinto que v2?)
v1 <> v2 (¿v1 es distinto que v2?)
Predicados de comparación de nulidad:
Se utilizan las palabras clave IS NULL para conocer si un dato es nulo, e IS
NOT NULL para saber si el dato es no nulo. Pueden usarse con cualquier tipo
de dato.
Ejemplo:
v1 IS NULL (¿v1 tiene un valor nulo?)
v1 IS NOT NULL (¿v1 no tiene valor nulo?)
Predicados de comparación de cadenas de caracteres:
El lenguaje SQL hace distinción entre letras mayúsculas y minúsculas, aunque
por sencillez, en los ejemplos, únicamente usamos letras mayúsculas.
Se utilizan las palabras clave LIKE y NOT, así como los caracteres ‘%’ y ’_’.
Pueden usarse solamente con datos tipo carácter.
LIKE Comparación de igualdad entre cadenas.
NOT Negación.
% Cualquier carácter desde la posición donde se especifique hasta el final.
_ Cualquier carácter para una única posición.
Ejemplo:
Introducción a SQL Página 8 de 12
descripcion LIKE ‘Queso’ (¿descripción es ‘Queso’?)
descripcion LIKE ‘Y%’ (¿descripción empieza por ‘Y’?)
descripcion NOT LIKE ‘Y%’ (¿descripción no empieza por ‘Y’?)
descripcion LIKE ‘%u%’ (¿descripción contiene la ‘u’?)
descripcion like '_u%' (¿descripción contiene la letra ‘u’ en segundo lugar?)
etc.
Predicados de comparación con listas de valores:
Se utilizan las palabras clave IN, BETWEEN, AND y NOT. Pueden usarse con
cualquier tipo de dato.
IN (valor1,valor2[valor3,...])
Para saber si el dato se encuentra en una lista de valores.
BETWEEN valor1 AND valor2
Para saber si el dato se encuentra entre un rango de valores, ambos
incluidos.
Ejemplo:
descuento IN (1,2,3,4) (¿descuento es 1, 2, 3 ó 4?)
descuento NOT IN (1,2,3,4) (¿descuento es distinto de 1, de 2, de 3 y de 4?)
piso BETWEEN 1 AND 8 (¿piso está entre 1 y 8 ambos incluidos)
descuento NOT BETWEEN 2 AND 4 (¿descuento mayor que 4 y menor que 2?)
Predicados compuestos:
Un predicado compuesto es un conjunto de dos o más predicados de cualquiera
de las clases anteriores unidos por los operadores lógicos.
Se utilizan las palabras clave OR (o) y AND (y). El valor OR también se puede
representar por || y el valor AND por &&.
Para evaluar un predicado compuesto se evaluará en primer lugar los predicados
encerrados entre paréntesis, en caso de existir, después los predicados enlazados
por AND y por último los predicados enlazados por OR.
No es conveniente abusar de los operadores lógicos sin utilizar los paréntesis, ya
que pueden aparecer errores.
Ejemplo:
descuento IN (1,2,3) AND descripción LIKE ‘Y%’ (¿el descuento es 1, 2 ó 3 y
además la descripción empieza por ‘Y’?)
v1 > v2 AND v1 < v3 AND v3 > v4 (¿v1 es mayor que v2 y además v1 menor
que v3 y además v3 mayor que v4?)
v1 = v2 OR v3 > v4 OR V1 = V4 (¿v1 es igual que v2 o v3 mayor que v4 o v1
igual que v4?)
Introducción a SQL Página 9 de 12
v1 > v3 AND v2 = v5 OR v3 > v5 (¿v1 mayor que v3 y v2 igual que v5, o bien,
v3 mayor que v5?)
ORDER BY exp_col1[ASC/DESC][,
exp_col2[ASC/DESC],...] especifica el criterio de ordenación basado en los
valores recuperados o de otros derivados de ellos.
Aunque por defecto la secuencia es ascendente, se puede especificar una secuencia
descendente.
Ejemplo:
select * from prueba order by precio;
select * from prueba order by precio asc; Produce el mismo resultado que en el
caso anterior.
select * from prueba order by precio desc;
El valor del ORDER BY puede contener expresiones de columnas.
Ejemplo:
select * from prueba order by precio+descuento desc;
Introducción a SQL Página 10 de 12
Nota: Recordar que cualquier valor operado con null es considerado como null y de
valor menor frente a cualquier otro valor.
7. Actualización de datos en una tabla.
Para actualizar filas en una tabla con lenguaje SQL, se utiliza la instrucción UPDATE.
Formato:
UPDATE nombre_tabla
SET columna1=valor1[, columna2=valor2, ...]
[WHERE predicado];
SET columna1=valor1[, columna2=valor2, ...] indica las columnas que se
actualizarán y cuales son sus nuevos valores.
WHERE predicado especifica el criterio que se ha de seguir para las filas que han de
cambiar su valor. En caso de omitirse, la actualización afectará a todas las filas de la
tabla.
Ejemplo:
update prueba set caducidad='2005-11-15' where descuento is null;
select * from prueba;
update prueba set precio = 10.23;
select * from prueba;
Introducción a SQL Página 11 de 12
8. Borrado de las filas de una tabla.
Para borrar filas de una tabla con lenguaje SQL, se utiliza la instrucción DELETE.
Formato:
DELETE FROM nombre_tabla
[WHERE predicado];
WHERE predicado especifica el criterio que se ha de seguir para las filas que se van
a borrar de la tabla. ¡¡¡Cuidado!!!, ya que en caso de omitirse se borrarán todas
las filas de la tabla.
Ejemplo:
delete from prueba where codigo = 2;
select * from prueba;
delete from prueba; Se borrarán todas las filas de la tabla.
Nota: Cuando se borran todas las filas de la tabla mediante la instrucción
DELETE no se borra la tabla, sólo las filas.
9. Eliminación de una tabla.
Para borrar completamente una tabla, es decir, eliminar su definición y todas sus filas de
la base de datos, utilizaremos la instrucción DROP TABLE.
Formato:
DROP TABLE nombre_tabla;
Ejemplo:
Drop table prueba; Elimina la definición de la tabla conjuntamente con todas sus
filas.
Introducción a SQL Página 12 de 12