Sei sulla pagina 1di 37

Fundamentos de bases de datos

Lenguaje de Consulta
Unidad VI
Definición e historia del SQL
 SQL significa Lenguaje de consulta estructurado.
 Se desarrolló en la década de los años setenta en IBM para
permitir a los usuarios el uso de instrucciones estandarizadas
en diversas bases de datos.
 La intención fue crear un lenguaje que no estuviese basado en
ningún otro lenguaje de programación, pero que pudiera ser
utilizado de manera indistinta en cualesquiera de ellos para
actualizar y consultar la información de las bases de datos.
Clasificación de las instrucciones en
SQL
 Las instrucciones SQL se encuentran organizadas en dos
grandes categorías:

 Las instrucciones DDL (Lenguaje de definición de datos) le


permiten definir tablas, índices y relaciones en la base de datos.
 Las instrucciones DML (Lenguaje de manipulación de datos)
se utilizan para seleccionar , clasificar, contar y calcular la
información almacenada en las tablas.
Comandos DDL y DML
 Sentencias DDL
COMANDO DESCRIPCIÓN
CREATE Utilizado para crear nuevas tablas, campos e índices
DROP Empleado para eliminar tablas e índices
Utilizado para modificar las tablas agregando campos o cambiando
ALTER
la definición de los campos

 Sentencias DML
COMANDO DESCRIPCIÓN
Utilizado para consultar registros de la base de datos que satisfagan
SELECT
un criterio determinado
Utilizado para cargar lotes de datos en la base de datos en una única
INSERT
operación
Utilizado para modificar los valores de los campos y registros
UPDATE
especificados
DELETE Utilizado para eliminar registros de una tabla de una base de datos
Creación de bases de datos
 Para crear una base de datos se utiliza la sentencia create
database, por ejemplo:
create database practica1;

 En caso de que la base de datos ya exista, se muestra un


mensaje de error.
Creación de bases de datos
 Para asegurarse que una BD no exista antes de crearla, se
puede hacer uso de la clausula IF NOT EXISTS, por
ejemplo:
create database if not exists practica1;

 En caso de que la base de datos ya exista, en lugar de


presentar un mensaje de error, se muestra un warning.
Seleccionando bases de datos
 Después de crear una BD se debe seleccionar para trabajar
con ella. Para ello se utiliza la sentencia USE de la siguiente
manera:
use practica1;

 Es decir, después del comando use se debe especificar el


nombre de la base de datos con la cual se vaya a trabajar.
Mostrando y borrando bases de datos
 No todos los administradores de BD prefieren trabajar de
manera gráfica, algunos utilizan el modo de comando sobre
todo cuando realizan sesiones remotas.
 Si se desea conocer todas las Bases de datos existentes en un
determinado equipo, utilizar la sentencia:
show databases;
Mostrando y borrando bases de datos
 Si se desea eliminar una determinada BD se puede utilizar:
drop database practica1;

 Si se desea asegurar de que la BD exista antes de que sea


eliminada, puede utilizar la clausula if not exists de la
siguiente manera:
drop database if not exists practica1;
Tipos de datos soportados
 Leer el documento en la dirección:

http://www.tododebian.es/contenidos/Documentacion/tipos
%20de%20datos%20en%20mysql.pdf
Creación de tablas
Crear la tabla alumnos con la siguiente estructura:
CAMPO TIPO TAMAÑO RESTRICCIONES Descripción

matricula varchar 3 Llave primaria Matricula del alumno

nombre varchar 20 Nombre del alumno

fnac Date Fecha de nacimiento del alumno

prom tinyInt Promedio del alumno

creditos smallInt Not null Créditos cursados por el alumno

Quedando en SQL de la siguiente manera:


create table alumnos(matricula VARCHAR(3) primary key,
nombre VARCHAR(20), fnac DATE, prom TINYINT,
creditos SMALLINT not null);
Inserción de registros
Inserción de registros
insert into alumnos (matricula,nombre,fnac,prom,creditos) values ('123','Juan
Pérez','19780428',100,255);
insert into alumnos (nombre,matricula,prom,fnac,creditos) values ('Ana
Orozco','124',95,'19790322',250);
insert into alumnos values ('125','Juan Pérez','19770101',51,185);
insert into alumnos values ('126','Ana Alamilla','19770101',60,200);
insert into alumnos values ('127','Luis Mena','19810101',65,200);
insert into alumnos values ('128','Mario Mena','19801212',85,100);
insert into alumnos values ('129','Juan Pérez','19770101',51,185);
insert into alumnos (matricula,fnac,prom,creditos) values ('131','19810224',88,150);

Esto provocaría error:


- insert into alumnos values ('129',Carlos Avila','19780101',84,200);
Y
- insert into alumnos values ('130',Carlos Avila','19780101',84);
Selección de campos específicos
 Habrán ocasiones en que se desee mostrar sólo determinados
atributos de la relación.

 La sentencia a utilizar es Select y la sintaxis es:


select campo(s) from tabla(s)

 Por ejemplo:
select * from alumnos;
select matricula,nombre,fnac,prom,creditos from alumnos;
select matricula from alumnos;
select matricula,nombre,fnac from alumnos;

 Esto equivale a la operación PROYECTAR del algebra relacional.


Selección de filas específicas
 También habrán ocasiones en que se desee mostrar sólo
determinadas tuplas de una relación, es decir, aquellas que
cumplan con una condición.
 La sentencia a utilizar es Select pero se le agregaría la clausula
where, la sintaxis es:
select campo(s) from tabla(s) where condición
 Por ejemplo:
select * from alumnos where fnac=’19770101’;
 La sentencia select junto con la clausula where equivalen a
una operación SELECCIONAR en el algebra relacional.
Seleccionar campos y filas específicas
 Un solo SELECT puede combinar operaciones selección y
proyección del algebra relacional:

select matricula,nombre,fnac from alumnos where creditos>180;

Proyecto los atributos que son Selecciono las filas de la


de mi interés dentro de la relación alumnos que cumplan
relación alumnos. con la condición creditos>180
Selección de valores únicos
 Omite los registros que contienen datos duplicados en los campos
seleccionados.

 SELECT DISTINCT(nombre) FROM Alumnos;


Ordenación de las filas
 A veces se desea que la información que se vaya a mostrar pueda estar
ordenada de acuerdo a algún campo específico.
 La sintaxis es:
select campos from tabla(s) [where condicion] order by
campo;
 Por ejemplo:
select * from alumnos order by nombre;
Ordenación de las filas
 El ordenamiento de las filas puede ser ascendente o
descendente, cuando NO se especifica el tipo de
ordenamiento por default es ascendente.
 Por ejemplo:
Select * from alumnos order by creditos;
Select * from alumnos order by prom desc;
Select * from alumnos order by nombre asc, prom desc;
Operadores utilizados en MySQL
 LÓGICOS
and, or, not
select campo(s) from tabla(s) where condicion1 and condicion2

 DE COMPARACIÓN
<, >, <=, >=, =, <>, between, like, in
 Between es utilizado para especificar un intervalo de valores
 Like utilizado en la comparación de un patrón
 In utilizado para especificar los valores de los registros a
seleccionar
Operadores Between, Like e In
 UTILIZANDO BETWEEN

 Esto seleccionará a los alumnos con promedio entre 85 y 100


inclusive
select * from alumnos where prom between 85 and 100;

 Equivale a:
select * from alumnos where prom>=85 and prom<=100;
Operadores Between, Like e In
 UTILIZANDO LIKE

 Esto seleccionará a los alumnos cuyo nombre empieza con J


select * from alumnos where nombre like 'J%';
 Esto seleccionará a los alumnos cuyo nombre incluya una U
en medio en el nombre
select * from alumnos where nombre like '%u%';
 Esto seleccionará a los alumnos cuyo nombre incluya una U
como segundo carácter en el nombre
select * from alumnos where nombre like ‘_u%';
 Los operadores utilizados con like son % (un conjunto de
caracteres) y _ (un solo caracter).
Operadores Between, Like e In
 UTILIZANDO IN
 Muestra todos (*) los datos de los alumnos con matricula
123, 124 Y 125.
select * from alumnos where matricula in ('123','124','125');

 Equivale a:
select * from alumnos where matricula='123' or matricula='124' or matricula='125';
Funciones de cadena
 RIGHT.- Permite obtener un numero especifico de
caracteres a la derecha de una cadena. La sintaxis es:
right(nombrecampo, numdecaracteres)
 LEFT.- Permite obtener un numero especifico de caracteres
a la izquierda de una cadena. La sintaxis es:
left(nombrecampo,numdecaracteres)
 MID.- Permite obtener cierto número de caracteres de una
cadena a partir de una posición. La sintaxis es:
mid(nombrecampo,posición,numerodecaracteres)
Funciones de cadena
 Ejemplos de left, right y mid:
 select left(nombre,3) from alumnos;
 select right (nombre,1) from alumnos where creditos>150;
 select nombre from alumnos where mid(nombre,2,1)='u';
Funciones matemáticas
Función Descripción
AVG Utilizada para calcular el promedio de los valores de un campo
determinado

COUNT Utilizada para devolver el total de registros de una relación

SUM Utilizada para devolver la suma de todos los valores de un campo


determinado

MAX Utilizada para devolver el valor más alto de un campo especificado

MIN Utilizada para devolver el valor más bajo de un campo especificado


Funciones matemáticas

• select avg(prom) from alumnos;


• select count(creditos) from alumnos;
• Select count(fnac) as total from alumnos;
Agrupamiento de registros

 Select fnac,count(matricula) as total_alumnos from alumnos


group by fnac;
 SELECT fnac,sum(creditos) as total_creditos from alumnos
group by fnac;
Agrupamiento de registros

 SELECT fnac,sum(creditos) as total_creditos from alumnos


group by fnac;

 SELECT fnac,sum(creditos) as total_creditos from alumnos


group by fnac having sum(creditos)>250;
Actualización de registros
 Si se desea actualizar(modificar) la información perteneciente
a uno o varios registros se utiliza el comando update con la
sintaxis:
update tabla set campo_a_modificar=nuevo_valor where condición
 Por ejemplo:
update alumnos set nombre='Juan Pérez' where matricula='131';
Borrado de registros
 Para eliminar uno o varios registros de una tabla se utiliza la
sentencia delete:
delete from tabla where condición
 Por ejemplo:
delete from alumnos;
delete from alumnos where nombre=‘Juan
Pérez’ and prom>90;
Inner Join
TABLA1 TABLA2
ID NOMBRE ID NÚMERO
5 Juan 3 30
6 Pedro 4 30
7 José 5 50
8 Fernando 6 60

select * from tabla1 inner join tabla2 on tabla1.id=tabla2.id;

ID NOMBRE ID NÚMERO
5 Juan 5 50
6 Pedro 6 60
Inner Join
TABLA1 TABLA2
ID NOMBRE ID NÚMERO
5 Juan 3 30
6 Pedro 4 30
7 José 5 50
8 Fernando 6 60

select * from tabla1 inner join tabla2 using(id);

ID NOMBRE NÚMERO
5 Juan 50
6 Pedro 60
Inner Join
TABLA1 TABLA2
ID NOMBRE ID NÚMERO
5 Juan 3 30
6 Pedro 4 30
7 José 5 50
8 Fernando 6 60
select nombre from tabla1 inner join tabla2 using(id);
ó
select nombre from tabla1 inner join tabla2 on
tabla1.id=tabla2.id;
NOMBRE
Juan
Pedro
Left Join
TABLA1 TABLA2
ID NOMBRE ID NÚMERO
5 Juan 3 30
6 Pedro 4 30
7 José 5 50
8 Fernando 6 60
select * from tabla1 left join tabla2 using(id);
ID NOMBRE NÚMERO
5 Juan 50
6 Pedro 60
7 José NULL
8 Fernando NULL
Right Join
TABLA1 TABLA2
ID NOMBRE ID NÚMERO
5 Juan 3 30
6 Pedro 4 30
7 José 5 50
8 Fernando 6 60
select * from tabla1 right join tabla2 using(id);
ID NÚMERO NOMBRE
3 30 NULL
4 40 NULL
5 50 Juan
6 60 Pedro
Bibliografía utilizada

Potrebbero piacerti anche