You are on page 1of 13

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

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 Apellido Nombre Direccin 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 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 Apellido Nombre Direccin 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 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

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 Apellido Nombre Direccin 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 Direccin 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 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 Apellido Nombre Direccin Ciudad
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 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,...)




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


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 Apellido Nombre Direccin 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 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 Apellido Nombre Direccin 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









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 Apellido Nombre Direccin 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 Personas
WHERE Apellido='Tjessem' AND Nombre='Jakob'



Quedando el siguiente resultado:
P_Id Apellido Nombre Direccin 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 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 Apellido Nombre Direccin 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 an 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 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
Ejemplo de INNER JOIN

La tabla Personas
P_Id Apellido Nombre Direccin 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.OrderNo
FROM Personas
INNER JOIN Ordenados
ON Personas.P_Id=Ordenados.P_Id
ORDER BY Personas. Apellido


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 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 E_Nombre
01 Urbieta, Arturo
02 Castro, Leticia
03 Prez, Pedro
04 Snchez, Osvaldo

Tabla de Empleados_Monterrey
E_ID E_Nombre
01 Gonzlez, Alan
02 Talancn, Alejandro
03 Sanabria, Susana
04 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

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
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:
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
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)
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