Este documento presenta las instrucciones básicas de SQL y álgebra relacional. Explica las instrucciones DDL como CREATE, DROP y ALTER que se usan para crear, eliminar y modificar bases de datos y tablas. También explica las instrucciones DML como SELECT, INSERT, UPDATE y DELETE y cómo se usan para seleccionar, insertar, actualizar y eliminar datos de las tablas. Finalmente, menciona dos operaciones básicas del álgebra relacional.
Original Description:
Original Title
Actividad-4-Funciones Basicas de SQL y Algebra_jarh
Este documento presenta las instrucciones básicas de SQL y álgebra relacional. Explica las instrucciones DDL como CREATE, DROP y ALTER que se usan para crear, eliminar y modificar bases de datos y tablas. También explica las instrucciones DML como SELECT, INSERT, UPDATE y DELETE y cómo se usan para seleccionar, insertar, actualizar y eliminar datos de las tablas. Finalmente, menciona dos operaciones básicas del álgebra relacional.
Este documento presenta las instrucciones básicas de SQL y álgebra relacional. Explica las instrucciones DDL como CREATE, DROP y ALTER que se usan para crear, eliminar y modificar bases de datos y tablas. También explica las instrucciones DML como SELECT, INSERT, UPDATE y DELETE y cómo se usan para seleccionar, insertar, actualizar y eliminar datos de las tablas. Finalmente, menciona dos operaciones básicas del álgebra relacional.
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.
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
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