Está en la página 1de 16

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN

Actividad 4. Ejercicio: Funciones bsicas de SQL y lgebra relacional


El propsito de esta actividad es que comiences a aplicar las funciones bsicas 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 aplicacin, 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 bsicas del lgebra relacional y aplcalas en la base de datos. 4. Guarda la actividad con el nombre BDD_U3_A4_XXYZ y envala a tu facilitador(a) para recibir retroalimentacin.

Instrucciones DDL de SQL CREATE, DROP y ALTER


CREATE DATABASE Este enunciado es usado para crear una base de datos. Sintaxis para CREATE DATABASE de SQL CREATE DATABASE basededatos_nombre Ejemplo de CREATE DATABASE Queremos 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 SQL CREATE TABLE tabla_nombre ( columna_nombre1 data_type, columna_nombre2 data_type, columna_nombre3 data_type, ) Ejemplo de CREATE TABLE Queremos crear una tabla llamada Personas que contiene 5 columnas: P_Id, Apellido, Nombre, Direccin y Ciudad. CREATE TABLE Personas ( P_Id int, Apellido varchar(255), Nombre varchar(255), Direccin varchar(255), Ciudad varchar(255) )

Unidad 3 Actividad 4

Pgina 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 nmero. Los campos o columnas de nombre, direccin, ciudad son del tipo varchar con una longitud mxima de 255 caracteres. La tabla vacia de Personas luce como sigue: P_Id Apellido Nombre Direccin Ciudad

DROP DATABASE Este enunciado es usado para borrar una base o un ndice. Sintaxis para DROP INDEX para MySQL
DROP INDEX table_name.index_name

Sintaxis para DROP TABLE para MySQL


DROP DATABASE database_name

Sintaxis para borrar los datos dentro de la tabla y no la tabla.


TRUNCATE TABLE table_name

ALTER TABLE Este enunciado es usado para agregar, borrar o modificar columnas o campos en una tabla existente. Sintaxis para ALTER TABLE para SQL
ALTER TABLE table_name ADD column_name datatype

Ejemplo de ALTER TABLE


P_Id 1 2 3 Apellido Hansen Svendson Pettersen Nombre Ola Tove Kari Direccin Timoteivn 10 Borgvn 23 Storgt 20 Ciudad Sandnes Sandnes Stavanger

Unidad 3 Actividad 4

Pgina 2

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


Queremos agregar un campo o columna a nuestra tabla llamado Fecha_Nac usando el siguiente enunciado.
ALTER TABLE Personas ADD 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 P_Id 1 2 3 Apellido Hansen Svendson Pettersen Nombre Ola Tove Kari Direccin Timoteivn 10 Borgvn 23 Storgt 20 Ciudad Sandnes Sandnes Stavanger Fecha_Nac 30-10-1965 23-11-1965 01-09-1996

Sintaxis para cambiar el tipo de dato de una columna en una tabla


ALTER TABLE table_name ALTER COLUMN column_name datatype

Ejemplo para cambiar el tipo de dato de la columna Fecha_Nac de la tabla Personas


ALTER TABLE Persons ALTER COLUMN Fecha_Nac year La columna Fecha_Nac cambia ahora al tipo de dato de ao con 2 o dgitos.

Sintaxis para borrar una columna con ALTER TABLE para SQL
ALTER TABLE table_name DROP COLUMN column_name

Ejemplo para borrar la columna Fecha_Nac de la tabla Personas


ALTER TABLE Personas DROP COLUMN Fecha_Nac

Unidad 3 Actividad 4

Pgina 3

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


Instrucciones DML de SQL SELECT, INSERT, UPDATE y
DELETE

Enunciado SELECT de SQL Este 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
SELECT column_name(s) FROM table_name SELECT * FROM table_name

Ejemplo de SELECT
P_Id 1 2 3 Apellido Hansen Svendson Pettersen Nombre Ola Tove Kari Direccin Timoteivn 10 Borgvn 23 Storgt 20 Ciudad Sandnes Sandnes Stavanger

Queremos seleccionar las columnas de Nombre y Apellido de la tabla anterior.


SELECT Apellido, Nombre FROM Personas

Quedando el siguiente resultado


Apellido Hansen Svendson Pettersen Nombre Ola Tove Kari

Para seleccionar todas las columnas utilizamos la siguiente sintaxis.


SELECT * FROM Personas

Quedando el siguiente resultado


P_Id 1 2 3 Apellido Hansen Svendson Pettersen Nombre Ola Tove Kari Direccin Timoteivn 10 Borgvn 23 Storgt 20 Ciudad Sandnes Sandnes Stavanger

Unidad 3 Actividad 4

Pgina 4

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


En algunas tablas, algunas columnas pueden contener valores duplicados. Esto no es un problema, sin embargo, algunas veces quisiramos 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 1 2 3 Apellido Hansen Svendson Pettersen Nombre Ola Tove Kari Direccin Timoteivn 10 Borgvn 23 Storgt 20 Ciudad Sandnes Sandnes 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 SQL Este enunciado es usado para insertar o agregar nuevos registros o renglones en una tabla. Sintaxis para INSERT INTO de SQL Hay 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_name VALUES (value1, value2, value3,...)

La segunda forma especfica ambos, es decir, el nombre la columna y los valores a ser insertados
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)

Unidad 3 Actividad 4

Pgina 5

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


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 1 2 3 Apellido Hansen Svendson Pettersen Nombre Ola Tove Kari Direccin Timoteivn 10 Borgvn 23 Storgt 20 Ciudad Sandnes Sandnes Stavanger

Ahora queremos insertar un Nuevo rengln en la tabla Personas. Usamos la siguiente sintaxis: INSERT INTO Personas VALUES (4,'Nilsen', 'Johan', 'Bakken 2', 'Stavanger')

Quedando el siguiente resultado:


P_Id 1 2 3 4 Apellido Hansen Svendson Pettersen Nilsen Nombre Ola Tove Kari Johan Direccin Timoteivn 10 Borgvn 23 Storgt 20 Bakken 2 Ciudad Sandnes Sandnes Stavanger 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 rengln, 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 1 2 3 4 5 Apellido Hansen Svendson Pettersen Nilsen Tjessem Nombre Ola Tove Kari Johan Jakob Direccin Timoteivn 10 Borgvn 23 Storgt 20 Bakken 2 Ciudad Sandnes Sandnes Stavanger Stavanger

Unidad 3 Actividad 4

Pgina 6

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


Enunciado UPDATE de SQL Este enunciado es usado para actualizar registros en una tabla. Sintaxis para UPDATE de SQL
UPDATE table_name SET 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 debern ser actualizados. S se omite el comando WHERE, todos los registros sern actualizados.
P_Id 1 2 3 4 5 Apellido Hansen Svendson Pettersen Nilsen Tjessem Nombre Ola Tove Kari Johan Jakob Direccin Timoteivn 10 Borgvn 23 Storgt 20 Bakken 2 Ciudad Sandnes Sandnes Stavanger Stavanger

Ahora queremos actualizar el registro 5 de Tjessem Jakob en la tabla anterior con la siguiente sintaxis:
UPDATE Persons SET Address='Nissestien 67', City='Sandnes' WHERE LastName='Tjessem' AND FirstName='Jakob'

Quedando el siguiente resultado:


P_Id 1 2 3 4 5 Apellido Hansen Svendson Pettersen Nilsen Tjessem Nombre Ola Tove Kari Johan Jakob Direccin Timoteivn 10 Borgvn 23 Storgt 20 Bakken 2 Nissestien 67 Ciudad Sandnes Sandnes Stavanger Stavanger Sandnes

Unidad 3 Actividad 4

Pgina 7

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


Advertencia para UPDATE de SQL Seamos cuidadosos cuando actualizamos registros, debido a que si omitimos el comando WHERE, el ejemplo que hicimos anteriormente resultar como sigue:
UPDATE Persons SET Address='Nissestien 67', City='Sandnes'

Quedando el siguiente resultado:


P_Id 1 2 3 4 5 Apellido Hansen Svendson Pettersen Nilsen Tjessem Nombre Ola Tove Kari Johan Jakob Direccin Nissestien 67 Nissestien 67 Nissestien 67 Nissestien 67 Nissestien 67 Ciudad Sandnes Sandnes Sandnes Sandnes Sandnes

Enunciado DELETE de SQL Este enunciado es usado para borrar registros en una tabla. Sintaxis para UPDATE de SQL
DELETE FROM table_name WHERE some_column=some_value

Nota: Observamos el comando WHERE en la sintaxis DELETE. El comando WHERE especifica cual registro o registros debern ser borrados. Si omitimos el comando WHERE, todos los registros sern borrados.
P_Id 1 2 3 4 5 Apellido Hansen Svendson Pettersen Nilsen Tjessem Nombre Ola Tove Kari Johan Jakob Direccin Timoteivn 10 Borgvn 23 Storgt 20 Bakken 2 Nissestien 67 Ciudad Sandnes Sandnes Stavanger Stavanger Sandnes

Ahora queremos borrar el registro de la persona "Tjessem, Jakob" de la tabla PERSONAS con la siguiente sintaxis:
DELETE FROM Personas WHERE Apellido='Tjessem' AND Nombre='Jakob'

Unidad 3 Actividad 4

Pgina 8

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


Quedando el siguiente resultado:
P_Id 1 2 3 4 Apellido Hansen Svendson Pettersen Nilsen Nombre Ola Tove Kari Johan Direccin Timoteivn 10 Borgvn 23 Storgt 20 Bakken 2 Ciudad Sandnes Sandnes Stavanger Stavanger

Podemos borrar todos los registros con la siguiente sintaxis:


DELETE FROM table_name or DELETE * FROM table_name

Advertencia para DELETE de SQL Seamos cuidadosos cuando borramos registros ya que no podemos deshacer este comando.

Operaciones bsicas de Algebra relacional


Palabra clave JOIN de SQL Esta KEYWORD es usada para (QUERY) buscar datos de 2 o ms tablas, basado en una relacin 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 combinacin de columnas) con un nico valor para cada rengln. Cada valor de la llave primaria debe ser nico dentro de la tabla. El propsito es vincular o enlazar los datos en conjunto, a travs de tablas, sin repetir todos los datos en cada tabla.
P_Id 1 2 3 Apellido Hansen Svendson Pettersen Nombre Ola Tove Kari Direccin Timoteivn 10 Borgvn 23 Storgt 20 Ciudad Sandnes Sandnes 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 an si ellas tienen el mismo nombre.

Unidad 3 Actividad 4

Pgina 9

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


Ahora tenemos otra tabla llamada Ordenados.
O_Id 1 2 3 4 5 OrderNo 77895 44678 22456 24562 34764 P_Id 3 3 1 1 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 relacin 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 derecha RIGHT JOIN: Devolver todas las filas de la tabla de la derecha, incluso si no hay coincidencias en la tabla de la izquierda FULL JOIN: Devolver filas cuando hay un coincidencia en una de la tablas

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_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name

Unidad 3 Actividad 4

Pgina 10

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


Ejemplo de INNER JOIN La tabla Personas
P_Id 1 2 3 Apellido Hansen Svendson Pettersen Nombre Ola Tove Kari Direccin Timoteivn 10 Borgvn 23 Storgt 20 Ciudad Sandnes Sandnes Stavanger

La tabla Ordenados
O_Id 1 2 3 4 5 OrderNo 77895 44678 22456 24562 34764 P_Id 3 3 1 1 15

Ahora queremos listar a todas las personas con cualquier orden con la siguiente sintaxis:
SELECT Personas. Apellido, Personas. Nombre, Ordenados.OrderNo FROM Personas INNER JOIN Ordenados ON Personas.P_Id=Ordenados.P_Id ORDER BY Personas. Apellido

Quedando el siguiente resultado:


Apellido Hansen Hansen Pettersen Pettersen Nombre Ola Ola Kari Kari OrderNo 22456 24562 77895 44678

Unidad 3 Actividad 4

Pgina 11

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


El operador UNION de SQL El operador SQL UNION es usado para combinar el resultado de 2 o ms instrucciones SELECT. Notamos que cada instruccin SELECT dentro de la UNION debe tener el mismo nmero de columnas. Tambin, las columnas en cada instruccin SELECT deben estar en el mismo orden. Sintaxis para UNION de SQL
SELECT column_name(s) FROM table_name1 UNION SELECT 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_Mxico E_ID 01 02 03 04 E_Nombre Urbieta, Arturo Castro, Leticia Prez, Pedro Snchez, Osvaldo

Tabla de Empleados_Monterrey E_ID 01 02 03 04 E_Nombre Gonzlez, Alan Talancn, Alejandro Sanabria, Susana Prez, Pedro

Ahora queremos listar a todos los empleados de Mxico y Monterrey con la siguiente sintaxis y empleando la instruccin SELECT. SELECT E_Nombre FROM Empleados_Mxico UNION SELECT E_Nombre FROM Empleados_Monterrey

Unidad 3 Actividad 4

Pgina 12

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


Quedando el siguiente resultado: E_Nombre Urbieta, Arturo Castro, Leticia Prez, Pedro Snchez, Osvaldo Gonzlez, Alan Talancn, Alejandro Sanabria, Susana Nota: Este comando no puede ser usado para listar a todos los empleados de Monterrey y Mxico. 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 SQL
SELECT column_name(s) FROM table_name1 UNION ALL SELECT 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 instruccin SELECT en la UNION.
SELECT E_Nombre FROM Empleados_Mxico UNION ALL SELECT E_Nombre FROM Empleados_Monterrey

Quedando el siguiente resultado: E_Nombre Urbieta, Arturo Castro, Leticia Prez, Pedro Snchez, Osvaldo Gonzlez, Alan Talancn, Alejandro Sanabria, Susana Prez, Pedro

Unidad 3 Actividad 4

Pgina 13

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN SQL Server Data Types
Character strings: Data type char(n) varchar(n) varchar(max) Description Fixed-length character string. Maximum 8,000 characters Variable-length character string. Maximum 8,000 characters Variable-length character string. Maximum 1,073,741,824 characters Variable-length character string. Maximum 2GB of text data Storage n

Text

Unicode strings: Data type nchar(n) nvarchar(n) nvarchar(max) Ntext Description Fixed-length Unicode data. Maximum 4,000 characters Variable-length Unicode data. Maximum 4,000 characters Variable-length Unicode data. Maximum 536,870,912 characters Variable-length Unicode data. Maximum 2GB of text data Storage

Binary types: Data type Bit binary(n) varbinary(n) varbinary(max) Image Description Allows 0, 1, or NULL Fixed-length binary data. Maximum 8,000 bytes Variable-length binary data. Maximum 8,000 bytes Variable-length binary data. Maximum 2GB Variable-length binary data. Maximum 2GB Storage

Unidad 3 Actividad 4

Pgina 14

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


Number types: Data type Tinyint Smallint Int Bigint Description Allows whole numbers from 0 to 255 Allows whole numbers between -32,768 and 32,767 Storage 1 byte 2 bytes

Allows whole numbers between -2,147,483,648 and 2,147,483,647 4 bytes Allows whole numbers between -9,223,372,036,854,775,808 and 9,223,372,036,854,775,807 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 8 bytes

decimal(p,s)

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 Money

Monetary data from -214,748.3648 to 214,748.3647 Monetary data from -922,337,203,685,477.5808 to 922,337,203,685,477.5807

4 bytes 8 bytes

float(n)

Floating precision number data from -1.79E + 308 to 1.79E + 308. 4 or 8 bytes 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. Floating precision number data from -3.40E + 38 to 3.40E + 38 4 bytes

Real

Date types:

Unidad 3 Actividad 4

Pgina 15

Bases de datos / Actividad 4 Unidad 3 / Arturo Urbieta Reyes BDD_U2_A4_ARUR_EN


Data type Datetime Description From January 1, 1753 to December 31, 9999 with an accuracy of 3.33 milliseconds From January 1, 0001 to December 31, 9999 with an accuracy of 100 nanoseconds From January 1, 1900 to June 6, 2079 with an accuracy of 1 minute Store a date only. From January 1, 0001 to December 31, 9999 Store a time only to an accuracy of 100 nanoseconds Storage 8 bytes

datetime2

6-8 bytes 4 bytes

Smalldatetime

Date Time

3 bytes 3-5 bytes 8-10 bytes

Datetimeoffset

The same as datetime2 with the addition of a time zone offset

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 sql_variant Description Stores up to 8,000 bytes of data of various data types, except text, ntext, and timestamp Stores a globally unique identifier (GUID) Stores XML formatted data. Maximum 2GB Stores a reference to a cursor used for database operations Stores a result-set for later processing

uniqueidentifier xml cursor table

Unidad 3 Actividad 4

Pgina 16