41
Tomando como referencia el libro de C.J.Date Introducción a los Sistemas de Bases de Datos. 1

sql-121116112433-phpapp01

Embed Size (px)

Citation preview

Page 1: sql-121116112433-phpapp01

Tomando como referencia el libro de C.J.Date

Introducción a los Sistemas de Bases de Datos.

1

Page 2: sql-121116112433-phpapp01

SQL

“Structured Query Language”

•Las consultas más simple SQL requieren tuplas que satisfagan alguna condición.

Estas consultas simples, como la mayoría de las consultas SQL utilizan tres palabras reservadas, SELECT, FROM y WHERE.

2

Page 3: sql-121116112433-phpapp01

La cláusula SELECT indica los atributos de las tuplas que se desean consultar. Esto es similar a una proyección en algebra relacional.

(* indica “todos los atributos”).

3

Page 4: sql-121116112433-phpapp01

La cláusula FROM hace referencia a la(s) relacion(es) sobre las cuales se refiere la consulta.

La cláusula WHERE es una condición, tal como una condición de selección en álgebra relacional.

4

Page 5: sql-121116112433-phpapp01

Antes de comenzar a realizar consultas en SQL, se debe definir la base de datos y las relaciones que la conforman.

Es importante que antes de continuar haber leído como acceder al monitor de mysql de la guía de ejercicios e investigar los tipos de datos soportados por Mysql.

5

Page 6: sql-121116112433-phpapp01

Definiendo una base de datos en SQL

6

Suponer que se desea definir o crear la base de datos Empresa.Lo primero que se debe hacer desde el monitor de mysql es crear la base de datos y ponerla en uso para comenzar a definir las relaciones (tablas)mysql> Create database Empresa;

El comando Create database literalmente indica Crear la base de datos Si se quiere visualizar si existe la base de datos escribir el comando:Mysql> show databases; Se deben listar las bases de datos existentes y entre ellas Empresa.

Page 7: sql-121116112433-phpapp01

7

Estas son las relaciones que conformarán la base de datos Empresa

Page 8: sql-121116112433-phpapp01

Definiendo la tabla proveedor. Antes de empezar a definir las tablas, se debe poner en uso la base de datos a la

que pertenecen Mysql> use Empresa;

CREATE TABLE nombre_table( lista de atributos (nombre y tipo del atributo), llaves o restricciones);

Para indicar el término de una orden o comando en mysql se escribe ;

Create table Proveedor( Vno varchar(3) not null primary key, Vnombe varchar(20), Status int, Ciudad varchar(15));

Si la llave primaria es simple su definición puede ir en la misma línea de la definición del atributo seleccionado para ser llave. RECUERDEN QUE LAS LLAVES PRIMARIAS NO ACEPTAN VALORES NULOS, POR ESO LA DECLARACIÓN NOT NULL

Cuando se utilizan tipos de datos carácter se escribe entre paréntesis la longitud de los mismos.

8

Page 9: sql-121116112433-phpapp01

Definiendo la tabla parte: Create table Parte( Pno varchar(3) not null primary key, Pnombre varchar(12), Color varchar (10), Peso int, Ciudad varchar(15));

9

Page 10: sql-121116112433-phpapp01

Definiendo la tabla Suministra:

10

Create table Suministra(Vno varchar(3) not null,Pno varchar(3) not null,Cant int,Primary key (Vno,Pno),Foreign key (Vno) references Proveedor(Vno),Foreign Key (Pno) references Parte(Pno));

Observar que la llave primaria al ser compuesta se define después de la definición de los atributos .En esta tabla existen dos llaves foráneas que son primarias: la primera en la relación Proveedor y la segunda en la relación Parte.

Page 11: sql-121116112433-phpapp01

Insertando datos en las realciones La sentencia Insert es una solicitud

para insertar una tupla.

Insert into nombre_tabla (lista atributos) values (lista de valores);

11

Page 12: sql-121116112433-phpapp01

Ejemplo:

12

Insert into Proveedor (Vno, Vnombre, Status, Ciudad) values (‘V1’, ‘Suárez’, 20, ‘Guadalajara’);

Nota: Si ya conocemos los atributos de la relación y el orden en que están definidos la consulta puede quedar de la siguiente manera:Insert into Proveedor values (‘V1’, ‘Suárez’, 20, ‘Guadalajara’);

Page 13: sql-121116112433-phpapp01

Insertar datos en Parte

13

Insert into Parte (Pno, Pnombre, Color, Peso, Ciudad) values (‘P1’, ‘Tuerca’, ‘Rojo’, 12, ‘Guadalajara’);OInsert into Parte values (‘P1’, ‘Tuerca’, ‘Rojo’, 12, ‘Guadalajara’);

Observar como los datos alfanuméricos van entre comillas simples.

Page 14: sql-121116112433-phpapp01

Insertar datos en Suministra

14

Insert into Suministra (Vno, Pno, Cant) values (‘V1’, ‘P1’, 300);

O

Insert into Suministra values (‘V1’, ‘P1’, 300);

Page 15: sql-121116112433-phpapp01

Load Data Infile

Otra manera de introducir datos a las tablas, es creando un archivo txt, el cual debe ser almacenado en la carpeta bin de mysql, este archivo contendrá las tuplas de una relación, el conjunto de valores de los atributos deberán ir en el orden definidos separados por tabulador.

15

Page 16: sql-121116112433-phpapp01

Ejemplo: Load Data Infile “datosProveedor.txt” into

table Proveedor;

Crear el archivo txt con 5 filas, cada valor debe estar separado por tabulador, guardar el archivo txt con el nombre datosProveedr.txt en la carpeta BIN de Mysql.

El archivo lo pueden crear desde el bloc de notas.

16

Page 17: sql-121116112433-phpapp01

17

Deben estar en el orden correcto, tal como se muestra en la tabla.

Es importante que la base de datos este en USO.mysql> use Empresa;mysql>Load Data Infile “datosProveedor.txt” into table Proveedor;

Page 18: sql-121116112433-phpapp01

Actualizando datos En ciertas situaciones se puede desear

cambiar un valor en una tupla sin cambiar todos los valores en la tupla. Para este propósito puede usarse la sentencia Update, se pueden elegir las tuplas que se van a actualizar usando una consulta.

Update nombre_tabla set conjunto de atributos a modificar where condición;

18

Page 19: sql-121116112433-phpapp01

Ejemplos: Suponer que el proveedor Camacho se

traslada a la ciudad de Xalapa

Update Proveedor set ciudad=‘Xalapa’ where Pnombre=‘Camacho’;

El peso del tornillo azul ha sido modificado a 14 libras:

Update Parte set Peso=14 where Pnombre=‘Tornillo’ and Color=‘Azul’;

19

Page 20: sql-121116112433-phpapp01

Para comprobar los cambios se efectúan las

siguientes consultas desde el monitor de mysql.

A) mysql> Select *

> From Proveedor

> Where Pnombre= ‘Camacho’;

Y

b) mysql> Select *

> From Parte

> Where Pnombre=‘Tornillo’ and Color=‘Azul’;

20

Page 21: sql-121116112433-phpapp01

Borrando tuplas Delete from R where C;

Ejemplo: El proveedor Camacho ha dejado de trabajar

para la empresa:

Delete from Proveedor where Pnombre=‘Camacho’;

21

Page 22: sql-121116112433-phpapp01

Si se desea corroborar que se ha borrado al proveedor Camacho,

Realizar la siguiente consulta:

mysql> Select Vnombre From Proveedor;

22

Page 23: sql-121116112433-phpapp01

Delete from Proveedor;

Si se ejecuta esta consulta se borran todas las tuplas de la relación Proveedor.

23

Page 24: sql-121116112433-phpapp01

Consultas Obtener los datos de los proveedores que

viven en Guadalajara:

Select * From Proveedor Where Ciudad=‘Guadalajara’;

Recuerden que el Select es el proyectar del álgebra (si se pone el * indica que se quiere consultar la tupla completa)

24

Page 25: sql-121116112433-phpapp01

El resultado de la consulta es:

Vno Pnombre Status Ciudadad

V1 Suárez 20 Guadalajara

V4 López 20 Guadalajara

25

Page 26: sql-121116112433-phpapp01

Obtener los suministros (Suministra) cuya cantidad esté entre 300 y 750 inclusive.

Select * From Suministra Where cant>= 300 and cant<= 750;

26

Page 27: sql-121116112433-phpapp01

El resultado de la consulta es:

Vno Pno Cant

V1 P1 300

V1 P3 400

V2 P1 300

V2 P2 400

V3 P2 400

V4 P4 300

V4 P5 400

27

Page 28: sql-121116112433-phpapp01

Obtener todas las ocurrencias de Parte.Color y Parte.Ciudad

Select distinct Color, Ciudad From Parte;

Observar que en esta consulta no hay una condición.

28

Page 29: sql-121116112433-phpapp01

El resultado de la consulta es:

Color Ciudad

Rojo Guadalajara

Verde Monterrey

Azul México

29

Page 30: sql-121116112433-phpapp01

JOIN

El concepto de tabla reunida (o relación reunida) se incorporó en SQL para que los usuarios pudieran especificar una tabla resultante de una operación de reunión en la claúsula FROM de una consulta.

Recuerden que para realizar el JOIN debe existir un atributo en común entre las tablas participantes.

30

Page 31: sql-121116112433-phpapp01

Obtener el nombre de los proveedores que suministran la pieza con el código P4.

Select Vnombre From Proveedor JOIN Suministra ON

Proveedor.Vno= Suministra.Vno Where Suministra.Pno=‘P4’;

31

Page 32: sql-121116112433-phpapp01

El resultado de la condición Where es:

Vno Pno Cant

V1 P4 200

V4 P4 300

32

El resultado del JOIN es:

Vno Vnombre Status Ciudad Pno Cant

V1 Suárez 20 Guadalajara P4 200

V4 López 20 Guadalajara P4 300

Page 33: sql-121116112433-phpapp01

Y el resultado de Select:

Vnombre

Suárez

López

33

Page 34: sql-121116112433-phpapp01

LIKE

MySQL posee capacidades estándar para utilizar patrones así como también una forma de patrones basada en expresiones regulares extendidas

Los patrones SQL permiten emplear el carácter '_' para representar coincidencia con un carácter individual y '%' .

34

Page 35: sql-121116112433-phpapp01

Encontrar los nombres de los proveedores cuya ciudad donde radican comience con G.

Select Vnombre From Proveedor Where Ciudad LIKE ‘G%’;

35

Page 36: sql-121116112433-phpapp01

El resultado de la consulta es:

Vnombre

Suárez

López

36

Page 37: sql-121116112433-phpapp01

Encontrar los nombres de los proveedores que contengan la letra u

Select Vnombre From Proveedor Where Vnombre LIKE ‘%u%’;

37

Page 38: sql-121116112433-phpapp01

El resultado de la consulta es:

38

Vnombre

Suárez

Velázquez

Page 39: sql-121116112433-phpapp01

Encontrar los nombres de los proveedores que contengan exactamente 5 caracteres Utilizando el guion (_) por cada carácter .

Select Vnombre From Proveedor Where Vnombre LIKE ‘_____’;

39

Page 40: sql-121116112433-phpapp01

El resultado de la consulta es:

Vnombre

López

40

Page 41: sql-121116112433-phpapp01

Esta presentación es una pauta para iniciar con el lenguaje SQL. Recuerden que tienen una guía de ejercicios y una antología. Así como cualquier libro de bases de datos que se encuentra en la bibliografía básica del programa o un libro de mysql.

41