sql-121116112433-phpapp01

Post on 04-Jan-2016

4 views 0 download

Transcript of sql-121116112433-phpapp01

Tomando como referencia el libro de C.J.Date

Introducción a los Sistemas de Bases de Datos.

1

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

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

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

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

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.

7

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

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

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

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.

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

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’);

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.

Insertar datos en Suministra

14

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

O

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

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

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

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;

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

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

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

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

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

Realizar la siguiente consulta:

mysql> Select Vnombre From Proveedor;

22

Delete from Proveedor;

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

23

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

El resultado de la consulta es:

Vno Pnombre Status Ciudadad

V1 Suárez 20 Guadalajara

V4 López 20 Guadalajara

25

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

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

26

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

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

El resultado de la consulta es:

Color Ciudad

Rojo Guadalajara

Verde Monterrey

Azul México

29

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

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

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

Y el resultado de Select:

Vnombre

Suárez

López

33

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

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

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

35

El resultado de la consulta es:

Vnombre

Suárez

López

36

Encontrar los nombres de los proveedores que contengan la letra u

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

37

El resultado de la consulta es:

38

Vnombre

Suárez

Velázquez

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

El resultado de la consulta es:

Vnombre

López

40

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