Upload
tanianava
View
169
Download
3
Embed Size (px)
Citation preview
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
Actividad 4. Ejercicio: Funciones básicas de SQL y álgebra relacional
El propósito de esta actividad es que comiences a aplicar las funciones básicas de SQL, y las operaciones elementales del álgebra relacional, para saber en qué casos se utilizan cada una de ellas. Instrucciones:1. En un documento de texto, enlista las instrucciones DDL y su aplicación, así como un ejemplo de cada una de ellas. 2. En la segunda cuartilla del documento, menciona para qué sirven los comandos DML de SQL y muestra el uso de cada una de ellas. 3. Selecciona dos de las operaciones básicas del álgebra relacional y aplícalas en la base de datos. 4. Guarda la actividad con el nombre BDD_U3_A4_XXYZ y envíala a tu facilitador(a) para recibir retroalimentación.
Instrucciones DDL de SQL CREATE, DROP y ALTER
CREATE DATABASEEste enunciado es usado para crear una base de datos.
Sintaxis para CREATE DATABASE de SQLCREATE DATABASE basededatos_nombre
Ejemplo de CREATE DATABASEQueremos crear una base de datos llamada “Personal”
CREATE DATABASE Personal
CREATE TABLE (TABLAS)Este enunciado es utilizado para crear tablas en una base de datos
Sintaxis para CREATE TABLE de SQLCREATE TABLE tabla_nombre
(columna_nombre1 data_type,
columna_nombre2 data_type,columna_nombre3 data_type,
)Ejemplo de CREATE TABLEQueremos crear una tabla llamada “Personas” que contiene 5 columnas: P_Id, Apellido, Nombre, Dirección y Ciudad.
CREATE TABLE Personas(P_Id int,Apellido varchar(255),Nombre varchar(255),Dirección varchar(255),Ciudad varchar(255))
Unidad 3 Actividad 4 Página 1
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
La columna P_Id es del tipo INTEGER y contendrá un número. Los campos o columnas de nombre, dirección, ciudad son del tipo varchar con una longitud máxima de 255 caracteres.
La tabla vacia de “Personas” luce como sigue:
P_Id Apellido Nombre Dirección Ciudad
DROP DATABASEEste enunciado es usado para borrar una base o un índice.
Sintaxis para DROP INDEX para MySQLDROP INDEX table_name.index_name
Sintaxis para DROP TABLE para MySQLDROP DATABASE database_name
Sintaxis para borrar los datos dentro de la tabla y no la tabla.TRUNCATE TABLE table_name
ALTER TABLEEste enunciado es usado para agregar, borrar o modificar columnas o campos en una tabla
existente.
Sintaxis para ALTER TABLE para SQLALTER TABLE table_nameADD column_name datatype
Ejemplo de ALTER TABLE
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
Queremos agregar un campo o columna a nuestra tabla llamado “Fecha_Nac” usando el siguiente enunciado.
ALTER TABLE PersonasADD Fecha_Nac date
Notamos que la nueva columna es del tipo DATE y va a almacenar una fecha. Para referencia a los tipos de datos de SQL ir al final del documento en donde encontrará los tipos de datos para SQL SERVER; cabe aclarar que los tipos de datos para Microsoft Access, MySQL y SQL Server
Unidad 3 Actividad 4 Página 2
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
P_Id Apellido Nombre Dirección Ciudad Fecha_Nac
1 Hansen Ola Timoteivn 10 Sandnes 30-10-1965
2 Svendson Tove Borgvn 23 Sandnes 23-11-1965
3 Pettersen Kari Storgt 20 Stavanger 01-09-1996
Sintaxis para cambiar el tipo de dato de una columna en una tablaALTER TABLE table_nameALTER COLUMN column_name datatype
Ejemplo para cambiar el tipo de dato de la columna Fecha_Nac de la tabla PersonasALTER TABLE Persons
ALTER COLUMN Fecha_Nac yearLa columna Fecha_Nac cambia ahora al tipo de dato de año con 2 o dígitos.
Sintaxis para borrar una columna con ALTER TABLE para SQLALTER TABLE table_nameDROP COLUMN column_name
Ejemplo para borrar la columna Fecha_Nac de la tabla PersonasALTER TABLE Personas
DROP COLUMN Fecha_Nac
Instrucciones DML de SQL SELECT, INSERT, UPDATE y DELETE
Enunciado SELECT de SQLEste enunciado es usado para seleccionar datos de una base de datos, el resultado es
almacenado en una tabla llamada result-set.
Sintaxis para SELECT de SQL
Unidad 3 Actividad 4 Página 3
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
SELECT column_name(s)FROM table_name
SELECT * FROM table_name
Ejemplo de SELECT
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
Queremos seleccionar las columnas de Nombre y Apellido de la tabla anterior.
SELECT Apellido, Nombre FROM Personas
Quedando el siguiente resultado
Apellido Nombre
Hansen Ola
Svendson Tove
Pettersen Kari
Para seleccionar todas las columnas utilizamos la siguiente sintaxis.
SELECT * FROM Personas
Quedando el siguiente resultado
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
En algunas tablas, algunas columnas pueden contener valores duplicados. Esto no es un problema, sin embargo, algunas veces quisiéramos listas solamente los diferentes (distinct) valores de la tabla
La palabra clave DISTINCT puede ser usada para regresar solamente valores distintos (diferentes), utilizamos la siguiente sintaxis.
SELECT DISTINCT column_name(s)FROM table_name
Ejemplo de SELECT DISTINCT
P_Id Apellido Nombre Dirección Ciudad
Unidad 3 Actividad 4 Página 4
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
Ahora queremos seleccionar solamente los valores distintos de la columna llamada “Ciudad” de la base anterior utilizando la siguiente sintaxis:
SELECT DISTINCT Ciudad FROM Personas
Quedando el siguiente resultado
Ciudad
Sandnes
Stavanger
Enunciado INSERT INTO de SQLEste enunciado es usado para insertar o agregar nuevos registros o renglones en una tabla.
Sintaxis para INSERT INTO de SQLHay 2 formas de insertar datos a la tabla.
La primera forma no especifica los nombres de las columnas donde el dato será insertado, solamente sus valores
INSERT INTO table_nameVALUES (value1, value2, value3,...)
La segunda forma específica ambos, es decir, el nombre la columna y los valores a ser insertados
INSERT INTO table_name (column1, column2, column3,...)VALUES (value1, value2, value3,...)
Ejemplo de INSERT INTO sin especificar los nombres de las columnas donde el dato será insertado, solamente sus valores
Nosotros tenemos la siguiente tabla “Personas”
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
Ahora queremos insertar un Nuevo renglón en la tabla “Personas”.
Usamos la siguiente sintaxis:
Unidad 3 Actividad 4 Página 5
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
INSERT INTO PersonasVALUES (4,'Nilsen', 'Johan', 'Bakken 2', 'Stavanger')
Quedando el siguiente resultado:P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
Ejemplo de INSERT INTO en donde se especifican ambos, es decir, el nombre la columna y los valores a ser insertados; vamos a agregar un nuevo renglón, pero solamente agregaremos el “P_Id”, “Apellido” y “Nombre”.
INSERT INTO Personas (P_Id, Apellido, Nombre)VALUES (5, 'Tjessem', 'Jakob')
Quedando el siguiente resultado:
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
5 Tjessem Jakob
Enunciado UPDATE de SQLEste enunciado es usado para actualizar registros en una tabla.
Sintaxis para UPDATE de SQLUPDATE table_nameSET column1=value, column2=value2,...WHERE some_column=some_value
Nota: Observamos el comando WHERE en la sintaxis UPDATE. El comando WHERE especifica cual registro o registros deberán ser actualizados. Sí se omite el comando WHERE, todos los registros serán actualizados.
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
Unidad 3 Actividad 4 Página 6
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
5 Tjessem Jakob
Ahora queremos actualizar el registro “5” de Tjessem Jakob en la tabla anterior con la siguiente sintaxis:
UPDATE PersonsSET Address='Nissestien 67', City='Sandnes'WHERE LastName='Tjessem' AND FirstName='Jakob'
Quedando el siguiente resultado:
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
5 Tjessem Jakob Nissestien 67 Sandnes
Advertencia para UPDATE de SQLSeamos cuidadosos cuando actualizamos registros, debido a que si omitimos el comando WHERE, el ejemplo que hicimos anteriormente resultará como sigue:
UPDATE PersonsSET Address='Nissestien 67', City='Sandnes'
Quedando el siguiente resultado:
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Nissestien 67 Sandnes
2 Svendson Tove Nissestien 67 Sandnes
3 Pettersen Kari Nissestien 67 Sandnes
4 Nilsen Johan Nissestien 67 Sandnes
5 Tjessem Jakob Nissestien 67 Sandnes
Unidad 3 Actividad 4 Página 7
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
Enunciado DELETE de SQLEste enunciado es usado para borrar registros en una tabla.
Sintaxis para UPDATE de SQLDELETE FROM table_nameWHERE some_column=some_value
Nota: Observamos el comando WHERE en la sintaxis DELETE. El comando WHERE especifica cual registro o registros deberán ser borrados. Si omitimos el comando WHERE, todos los registros serán borrados.
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
5 Tjessem Jakob Nissestien 67 Sandnes
Ahora queremos borrar el registro de la persona "Tjessem, Jakob" de la tabla “PERSONAS” con la siguiente sintaxis:
DELETE FROM PersonasWHERE Apellido='Tjessem' AND Nombre='Jakob'
Quedando el siguiente resultado:
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
Podemos borrar todos los registros con la siguiente sintaxis:DELETE FROM table_name
or
DELETE * FROM table_name
Advertencia para DELETE de SQLSeamos cuidadosos cuando borramos registros ya que no podemos deshacer este comando.
Unidad 3 Actividad 4 Página 8
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
Operaciones básicas de Algebra relacional
Palabra clave JOIN de SQL
Esta KEYWORD es usada para (QUERY) buscar datos de 2 o más tablas, basado en una relación entre ciertas columnas en esas tablas.
Las tablas en una base de datos son frecuentemente relacionadas unas con otras con llaves.
Una llave primaria es una columna (o combinación de columnas) con un único valor para cada renglón. Cada valor de la llave primaria debe ser único dentro de la tabla. El propósito es vincular o enlazar los datos en conjunto, a través de tablas, sin repetir todos los datos en cada tabla.
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
Notamos que la columna P_Id es la llave primaria de la tabla “Personas”. Esto significa que 2 renglones NO pueden tener el mismo P_Id. El P_Id distingue a 2 personas aún si ellas tienen el mismo nombre.
Ahora tenemos otra tabla llamada “Ordenados”.
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
La llave primaria es la columna O_Id y la columna P_Id se refiere a las personas en la tabla “Personas” sin usar sus nombres.
Notamos que la relación entre las tablas es P_Id.
La Keyword de SQL JOIN se puede usar de diferentes formas:
JOIN: Devolver filas cuando hay al menos una coincidencia en las dos tablas LEFT JOIN: Devolver todas las filas de la tabla de la izquierda, incluso si no hay
coincidencias en la tabla de la derechaRIGHT JOIN: Devolver todas las filas de la tabla de la derecha, incluso si no hay coincidencias en la tabla de la izquierdaFULL JOIN: Devolver filas cuando hay un coincidencia en una de la tablas
Unidad 3 Actividad 4 Página 9
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
Ejemplo: con JOIN = INNER JOIN
La keyword INNER JOIN regresa una fila cuando hay al menos una coincidencia en ambas tablas.
Sintaxis para INNER JOIN de SQL
SELECT column_name(s)FROM table_name1INNER JOIN table_name2ON table_name1.column_name=table_name2.column_name
Ejemplo de INNER JOIN
La tabla “Personas”
P_Id Apellido Nombre Dirección Ciudad
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
La tabla “Ordenados”
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
Ahora queremos listar a todas las personas con cualquier orden con la siguiente sintaxis:
SELECT Personas. Apellido, Personas. Nombre, Ordenados.OrderNoFROM PersonasINNER JOIN OrdenadosON Personas.P_Id=Ordenados.P_IdORDER BY Personas. Apellido
Unidad 3 Actividad 4 Página 10
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
Quedando el siguiente resultado:
Apellido Nombre OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
El operador UNION de SQL
El operador SQL UNION es usado para combinar el resultado de 2 o más instrucciones SELECT.Notamos que cada instrucción SELECT dentro de la UNION debe tener el mismo número de columnas. También, las columnas en cada instrucción SELECT deben estar en el mismo orden. Sintaxis para UNION de SQL
SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2
Nota: El operador UNION selecciona solamente distintos valores por default. Para permitir valores duplicados, usar UNION ALL.
Ejemplo de UNION SQL
Tabla de “Empleados_México”
E_ID E_Nombre
01 Urbieta, Arturo
02 Castro, Leticia
03 Pérez, Pedro
04 Sánchez, Osvaldo
Tabla de “Empleados_Monterrey”
E_ID E_Nombre
Unidad 3 Actividad 4 Página 11
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
01 González, Alan
02 Talancón, Alejandro
03 Sanabria, Susana
04 Pérez, Pedro
Ahora queremos listar a todos los empleados de México y Monterrey con la siguiente sintaxis y empleando la instrucción SELECT.
SELECT E_Nombre FROM Empleados_MéxicoUNIONSELECT E_Nombre FROM Empleados_Monterrey
Quedando el siguiente resultado:
E_Nombre
Urbieta, Arturo
Castro, Leticia
Pérez, Pedro
Sánchez, Osvaldo
González, Alan
Talancón, Alejandro
Sanabria, Susana
Nota: Este comando no puede ser usado para listar a todos los empleados de Monterrey y México. En el ejemplo anterior nosotros tenemos 2 empleados con el mismo nombre, y solamente uno de ellos será listado. El comando UNION selecciona solamente valores distintos.
Sintaxis para UNION ALL de SQLSELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2
Nota: Los nombres de las columnas resultantes de la UNION son siempre iguales a los nombres de las columnas de la primera instrucción SELECT en la UNION.
SELECT E_Nombre FROM Empleados_MéxicoUNION ALL
SELECT E_Nombre FROM Empleados_Monterrey
Quedando el siguiente resultado:
E_Nombre
Unidad 3 Actividad 4 Página 12
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
Urbieta, Arturo
Castro, Leticia
Pérez, Pedro
Sánchez, Osvaldo
González, Alan
Talancón, Alejandro
Sanabria, Susana
Pérez, Pedro
SQL Server Data Types
Character strings:
Data type Description Storage
char(n) Fixed-length character string. Maximum 8,000 characters n
varchar(n) Variable-length character string. Maximum 8,000 characters
varchar(max) Variable-length character string. Maximum 1,073,741,824 characters
Text Variable-length character string. Maximum 2GB of text data
Unicode strings:
Data type Description Storage
nchar(n) Fixed-length Unicode data. Maximum 4,000 characters
nvarchar(n) Variable-length Unicode data. Maximum 4,000 characters
nvarchar(max) Variable-length Unicode data. Maximum 536,870,912 characters
Ntext Variable-length Unicode data. Maximum 2GB of text data
Binary types:
Unidad 3 Actividad 4 Página 13
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
Data type Description Storage
Bit Allows 0, 1, or NULL
binary(n) Fixed-length binary data. Maximum 8,000 bytes
varbinary(n) Variable-length binary data. Maximum 8,000 bytes
varbinary(max) Variable-length binary data. Maximum 2GB
Image Variable-length binary data. Maximum 2GB
Number types:
Data type Description Storage
Tinyint Allows whole numbers from 0 to 255 1 byte
Smallint Allows whole numbers between -32,768 and 32,767 2 bytes
Int Allows whole numbers between -2,147,483,648 and 2,147,483,647 4 bytes
Bigint Allows whole numbers between -9,223,372,036,854,775,808 and 9,223,372,036,854,775,807
8 bytes
decimal(p,s) Fixed precision and scale numbers.
Allows numbers from -10^38 +1 to 10^38 –1.
The p parameter indicates the maximum total number of digits that can be stored (both to the left and to the right of the decimal point). p must be a value from 1 to 38. Default is 18.
The s parameter indicates the maximum number of digits stored to the right of the decimal point. s must be a value from 0 to p. Default value is 0
5-17 bytes
numeric(p,s) Fixed precision and scale numbers.
Allows numbers from -10^38 +1 to 10^38 –1.
The p parameter indicates the maximum total number of digits that can be stored (both to the left and to the right of the decimal point). p must be a value from 1 to 38. Default is 18.
The s parameter indicates the maximum number of digits stored to the right of the decimal point. s must be a value from 0 to p. Default value is 0
5-17 bytes
Smallmoney Monetary data from -214,748.3648 to 214,748.3647 4 bytes
Unidad 3 Actividad 4 Página 14
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
Money Monetary data from -922,337,203,685,477.5808 to 922,337,203,685,477.5807
8 bytes
float(n) Floating precision number data from -1.79E + 308 to 1.79E + 308.
The n parameter indicates whether the field should hold 4 or 8 bytes. float(24) holds a 4-byte field and float(53) holds an 8-byte field. Default value of n is 53.
4 or 8 bytes
Real Floating precision number data from -3.40E + 38 to 3.40E + 38 4 bytes
Date types:
Data type Description Storage
Datetime From January 1, 1753 to December 31, 9999 with an accuracy of 3.33 milliseconds
8 bytes
datetime2 From January 1, 0001 to December 31, 9999 with an accuracy of 100 nanoseconds
6-8 bytes
Smalldatetime From January 1, 1900 to June 6, 2079 with an accuracy of 1 minute 4 bytes
Date Store a date only. From January 1, 0001 to December 31, 9999 3 bytes
Time Store a time only to an accuracy of 100 nanoseconds 3-5 bytes
Datetimeoffset The same as datetime2 with the addition of a time zone offset 8-10 bytes
timestamp Stores a unique number that gets updated every time a row gets created or modified. The timestamp value is based upon an internal clock and does not correspond to real time. Each table may have only one timestamp variable
Other data types:
Data type Description
sql_variant Stores up to 8,000 bytes of data of various data types, except text, ntext, and timestamp
uniqueidentifier Stores a globally unique identifier (GUID)
Unidad 3 Actividad 4 Página 15
Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN
xml Stores XML formatted data. Maximum 2GB
cursor Stores a reference to a cursor used for database operations
table Stores a result-set for later processing
Unidad 3 Actividad 4 Página 16