Sei sulla pagina 1di 32

TALLER DE BASE DE

DATOS

Clase N° 07

09– ABRIL - 2020


CONDICIONES FAVORABLES PARA LA CLASE

Mantén todos tus


sentidos activos

Práctica la puntualidad

Mantén tus dispositivos


electrónicos en silencio

Respeta el turno de
participación
PRESENTACIÓN DE LA CLASE
Aprendizaje Esperado: Crean bases de datos bajo SGBD con un lenguaje de consultas estructurado,
según requerimientos.

Criterios de Evaluación: Describe el ambiente de trabajo de SQL Server.


Manipula bases de datos utilizando comandos DML según requerimientos.

Contenidos: Lenguaje de Consulta SQL: descripción de ambiente de trabajo.


MOMENTO PARA RECORDAR
SINTAXIS
• CREATE DATABASE Nombre_de_la_base_de_datos --Crear una base de datos

• USE Nombre_de_la_base_de_datos --Poner en uso la base de datos

• CREATE TABLE Nombre_de_la_tabla --Crear una tabla

• ALTER TABLE Nombre_de_la_tabla


• ADD nombre_nuevo_campo tipo_dato Nombre_del_campo tipo de dato --Crear un nuevo campo

• ALTER TABLE Nombre_de_la_tabla


• ADD nombre_nuevo_campo tipo_dato
• CONSTRAINT NOMBRERESTRICCION TIPO

• ALTER TABLE Nombre_de_la_tabla


• DROP COLUMN nombre_nuevo_campo tipo_dato
• CONSTRAINT pk_referencia PRIMARY KEY (nombre del campo) --Declarar una llave primaria

• CONSTRAINT pf_referencia FOREIGN KEY (nombre_del_campo) REFERENCES nombre_de_la_tabla (nombre_del_campo) ON DELETE


CASCADE --Declarar llave foranea
• CONSTRAINT pf_referencia FOREIGN KEY (nombre_del_campo) REFERENCES nombre_de_la_tabla (nombre_del_campo) ON DELETE
SET NULL --Declara llave foranea

• INSERT INTO nombre_tabla VALUES(valor1, valor2, valor3) -Insertar datos en una tabla

• SELECT campos FROM nombre_tabla --Consulta de datos


• SELECT campos FROM nombre_tabla INNER JOIN nombre_tabla2 ON nombre_tabla.campo = nombre_tabla2.campo --Consulta compuesta
de datos

• SELECT campos FROM nombre_tabla WHERE campo = valor --Busqueda de un registro.


• SELECT campos FROM nombre_tabla INNER JOIN nombre_tabla2 ON nombre_tabla.campo = nombre_tabla2.campo WHERE campo = valor
--Busqueda compuesta de un registro.

• UPDATE nombre_tabla SET nombre_campo = valor, nombre_campo2 = valor WHERE llave_primaria = valor --Actulizar un registro.

• DELETE FROM nombre_de_la_tabla WHERE llave_primaria = valor --Eliminar un registro


EJEMPLO
CREATE DATABASE Biblioteca

Use Biblioteca

CREATE TABLE Editorial


(
Id_editorial int,
Editorial varchar(100),
constraint pk_ide primary key (Id_editorial)
)
CREATE TABLE Autores
(
Id_autor int,
Nom_autor varchar(100),
constraint pk_ida primary key (Id_autor)
)

CREATE TABLE Socio


(
Cod_socio int,
Nom_socio varchar(200),
Ape_socio varchar(200),
RFC varchar(100),
Dir_socio varchar(500),
Tel_socio varchar(50)
constraint pk_cs primary key (Cod_socio)
)
CREATE TABLE Libros
(
ISBN int,
Titulo_lib varchar(300),
Ano_edicion datetime,
Id_editorial1 int,
constraint pk_isbn primary key (ISBN),
constraint fk_ide1 foreign key (Id_editorial1) REFERENCES Editorial (Id_editorial) ON DELETE CASCADE
)

CREATE TABLE Autores_Lib


(
ISBN1 int,
Id_autor1 int,
constraint fk_isbn1 foreign key (ISBN1) REFERENCES Libros (ISBN) ON DELETE CASCADE,
constraint fk_ida1 foreign key (Id_autor1) REFERENCES Autores (Id_autor) ON DELETE CASCADE
)
CREATE TABLE Prestamo
(
Fecha_pre datetime,
Fecha_ent datetime,
No_ejemplar int,
Deteriorado varchar(5),
Fecha_entregado datetime,
Cod_socio1 int,
ISBN2 int,
constraint fk_cs1 foreign key (Cod_socio1) REFERENCES Socio (Cod_socio)
ON DELETE SET NULL,
constraint fk_isbn2 foreign key (ISBN2) REFERENCES Libros (ISBN) ON
DELETE CASCADE
)
ALTER TABLE Editorial ALTER TABLE Editorial
DROP COLUMN Editorial ADD Editorialbeta varchar(100)

INSERT INTO Editorial VALUES (1, 'Porrua')


INSERT INTO Editorial VALUES (2, 'Trillas')
INSERT INTO Editorial VALUES (3, 'Oceano')
INSERT INTO Editorial VALUES (4, 'Fondo de Cultura Ecónomica')
INSERT INTO Editorial VALUES (5, 'Harper')
INSERT INTO Editorial VALUES (6, 'Editorial Planeta')
SELECT * FROM Editorial
SELECT Editorialbeta FROM Editorial
SELECT * FROM Editorial WHERE Editorialbeta = 'Porrua'
SELECT Editorialbeta FROM Editorial WHERE Id_editorial = 4
INSERT INTO Autores VALUES (1, 'Gabriel Garcia Marquez')
INSERT INTO Autores VALUES (2, 'Octavio Paz')
INSERT INTO Autores VALUES (3, 'Paulo Coelho')
SELECT * FROM Autores
SELECT Nom_autor FROM Autores
SELECT Nom_autor FROM Autores WHERE Nom_autor = 'Octavio Paz'
INSERT INTO Socio VALUES (100, 'Francisco', 'Gomez', 'REG123123DFH12', 'Calle 12', '12345678')
INSERT INTO Socio VALUES (101, 'Jose', 'Martinez', 'JOMA3456789hf89', 'Avenida 1256', '87654321')
INSERT INTO Socio VALUES (102, 'Edith', 'Perez', 'EDPE1234567ha90', 'Parados 123', '56781234')
SELECT * FROM Socio

DELETE FROM Socio WHERE Cod_socio = 100


INSERT INTO Libros VALUES (123456789, 'El laberinto de la soledad', '01/01/1950', 4)
INSERT INTO Libros VALUES (987654321, '100 años de soledad', '01/01/1967', 5)
INSERT INTO Libros VALUES (567891234, 'El Alquimista', '01/01/1988', 6)

SELECT * FROM Libros


DELETE FROM Libros WHERE ISBN = 567891234
MOMENTO PARA CONOCER
SINTAXIS
• CREATE DATABASE Nombre_de_la_base_de_datos --Crear una base de datos

• USE Nombre_de_la_base_de_datos --Poner en uso la base de datos

• CREATE TABLE Nombre_de_la_tabla --Crear una tabla

• ALTER TABLE Nombre_de_la_tabla


• ADD nombre_nuevo_campo tipo_dato Nombre_del_campo tipo de dato --Crear un nuevo campo

• ALTER TABLE Nombre_de_la_tabla


• ADD nombre_nuevo_campo tipo_dato
• CONSTRAINT NOMBRERESTRICCION TIPO

• ALTER TABLE Nombre_de_la_tabla


• DROP COLUMN nombre_nuevo_campo tipo_dato
• CONSTRAINT pk_referencia PRIMARY KEY (nombre del campo) --Declarar una llave primaria

• CONSTRAINT pf_referencia FOREIGN KEY (nombre_del_campo) REFERENCES nombre_de_la_tabla (nombre_del_campo) ON DELETE CASCADE --Declarar llave
foranea
• CONSTRAINT pf_referencia FOREIGN KEY (nombre_del_campo) REFERENCES nombre_de_la_tabla (nombre_del_campo) ON DELETE SET NULL --Declara llave
foranea

• INSERT INTO nombre_tabla VALUES(valor1, valor2, valor3) -Insertar datos en una tabla

• SELECT campos FROM nombre_tabla --Consulta de datos


• SELECT campos FROM nombre_tabla INNER JOIN nombre_tabla2 ON nombre_tabla.campo = nombre_tabla2.campo --Consulta
compuesta de datos

• SELECT campos FROM nombre_tabla WHERE campo = valor --Búsqueda de un registro.


• SELECT campos FROM nombre_tabla INNER JOIN nombre_tabla2 ON nombre_tabla.campo = nombre_tabla2.campo WHERE
campo = valor --Búsqueda compuesta de un registro.

• UPDATE nombre_tabla SET nombre_campo = valor, nombre_campo2 = valor WHERE llave_primaria = valor --Actulizar un registro.

• DELETE FROM nombre_de_la_tabla WHERE llave_primaria = valor --Eliminar un registro


CONSULTAS COMPUESTAS - COMANDO INNER-JOIN

• En el modelo de bases de datos relacionales, se recurre a las sentencias JOIN de SQL para
consultar diferentes tablas de bases de datos.
• Un join es una operación que relaciona dos o más tablas para obtener un resultado que
incluya datos (campos y registros) de ambas; las tablas participantes se combinan según los
campos comunes a ambas tablas.
• Hay tres tipos de combinaciones:
1. combinaciones internas (inner join o join),
2. combinaciones externas y
3. combinaciones cruzadas.
• También es posible emplear varias combinaciones en una consulta "select", incluso puede
combinarse una tabla consigo misma.
• La combinación interna emplea "join", que es la forma abreviada de "inner join". Se emplea
para obtener información de dos tablas y combinar dicha información en una salida.
COMANDO INNER-JOIN

La sintaxis básica es la siguiente:

SELECT Campos
FROM Tabla1 JOIN Tabla2
ON Condiciondecombinacion;

SELECT *
FROM tabla1 INNER JOIN tabla2
WHERE/ON tabla1.columna1 = tabla2.columna1
COMANDO INNER-JOIN
EJEMPLO IMPLEMENTACIÓN INNER-JOIN

CREATE DATABASE EjemploIner


Use EjemploIner

CREATE TABLE departamento


(
dep int,
departamento varchar(10),
constraint pk_idd primary key (dep)
)
EJEMPLO IMPLEMENTACIÓN INNER-JOIN

CREATE TABLE personas


(
per int,
nombre varchar(10),
apellido1 varchar(10),
apellido2 varchar(10),
dep int,
constraint pk_per primary key (per),
constraint fk_idp foreign key (dep) REFERENCES departamento (dep) ON DELETE CASCADE
)
COMANDO INNER JOIN
• Cargamos los siguientes datos en las tablas en vista diseño

SELECT nombre, apellido1, departamento FROM personas


INNER JOIN departamento
ON personas.dep = departamento.dep
DIAGRAMA ENTIDAD-RELACIÓN BIBLIOTECA
EJEMPLO 2 INNER-JOIN CASO BIBLIOTECA
CREATE TABLE Autores_Lib
(
ISBN1 int,
Id_autor1 int,
constraint fk_isbn1 foreign key (ISBN1) REFERENCES Libros (ISBN) ON DELETE CASCADE,
constraint fk_ida1 foreign key (Id_autor1) REFERENCES Autores (Id_autor) ON DELETE
CASCADE
)

INSERT INTO Autores_Lib VALUES (123456789, 2)


INSERT INTO Autores_Lib VALUES (987654321, 1)
INSERT INTO Autores_Lib VALUES (567891234, 3) /*no es posible que modifiquemos el registro
del código ISBN 567891234 ya que fue eliminado en un ejercicio anterior*/
EJEMPLO 2 INNER-JOIN CASO BIBLIOTECA
CREATE TABLE Prestamo
(
Fecha_pre datetime,
Fecha_ent datetime,
No_ejemplar int,
Deteriorado varchar(5),
Fecha_entregado datetime,
Cod_socio1 int,
ISBN2 int,
constraint fk_cs1 foreign key (Cod_socio1) REFERENCES Socio (Cod_socio) ON DELETE SET
NULL,
constraint fk_isbn2 foreign key (ISBN2) REFERENCES Libros (ISBN) ON DELETE CASCADE
)
EJEMPLO 2 INNER-JOIN CASO BIBLIOTECA
INSERT INTO Prestamo VALUES ('12/12/12', '19/12/12', 2, 'No', '', 101, 987654321)
INSERT INTO Prestamo VALUES ('13/12/12', '20/12/12', 1, 'Si', '', 100, 123456789) /*no es
posible que modifiqueos el registro del código 100 ya que fue eliminado en un ejercicio anterior
*/
INSERT INTO Prestamo VALUES ('14/12/12', '21/12/12', 2, 'No', '', 102, 123456789)

SELECT * FROM Prestamo


EJEMPLO 2 INNER-JOIN CASO BIBLIOTECA
SELECT Cod_socio, Nom_socio, Tel_socio, Fecha_pre, Fecha_ent, No_ejemplar,
Fecha_entregado, Titulo_lib, Editorialbeta
FROM Socio INNER JOIN Prestamo ON Socio.Cod_socio = Prestamo.Cod_socio1
INNER JOIN Libros ON Libros.ISBN = Prestamo.ISBN2
INNER JOIN Editorial ON Libros.Id_editorial1 = Editorial.Id_editorial where Cod_socio = 102
EJEMPLO 2 INNER-JOIN CASO BIBLIOTECA
UPDATE Prestamo SET Fecha_pre = ‘21/12/20', Fecha_ent = ‘21/12/20', No_ejemplar = 4, Deteriorado =
'No', Fecha_entregado = ‘20/12/20', Cod_socio1 = 101, ISBN2 = 987654321 WHERE Cod_socio1 = 101

UPDATE Prestamo SET Fecha_entregado = '19/12/12'


WHERE Cod_socio1 = 100 /*no es posible que modifiquemos el registro del codigo 100 ya que fue
eliminado en un ejercicio anterior*/

UPDATE Prestamo SET Fecha_entregado = '20/12/12', ISBN2 = 567891234


WHERE Cod_socio1 = 102
MOMENTO PARA APLICAR
MICROSOFT SQL SERVER MANAGEMENT STUDIO
Para la base de datos Biblioteca Implemente las consultas en SQL para entregar la siguiente
información:
1. Todos los campos de la tabla:
1. Editorial
2. Autores
3. Socio
4. Libros
5. Prestamo
2. Todos los datos del autor y libro cuyo estado es ‘deteriorado

3. Autores de cuyos títulos existen mas de cuatro copias


4. Socios que tiene un préstamo por la copia de código ISBN 987654321
MOMENTO PARA RETROALIMENTAR
MUCHAS GRACIAS

Potrebbero piacerti anche