You are on page 1of 15

Bases de datos

Unidad 3. Diseo

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

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

de

Bases de datos
Unidad 3. Diseo

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

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 Apellido Hino Nombre Mitsuki Direccin Jess 122 Ciudad Guadalajara

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 Apellido Hino Nombre Mitsuki Direccin Jess 122 Ciudad GDL Fecha_Nac 30-10-1965

Bases de datos
Unidad 3. Diseo

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

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


ALTER TABLE ALTER COLUMN column_name datatype table_name

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 DROP COLUMN column_name table_name

Ejemplo para borrar la columna Fecha_Nac de la tabla Personas


ALTER TABLE Personas DROP COLUMN Fecha_Nac

Bases de datos
Unidad 3. Diseo

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

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

Ejemplo de SELECT
P_Id 1 Apellido Hino Nombre Mitsuki Direccin Jess 122 Ciudad Guadalajara

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


SELECT Apellido, Nombre FROM Personas

Quedando el siguiente resultado


Apellido Hino Nombre Mitsuki

Para seleccionar todas las columnas utilizamos la siguiente sintaxis.


SELECT * FROM Personas

Quedando el siguiente resultado


P_Id 1 Apellido Hino Nombre Mitsuki Direccin Jess 122 Ciudad GDL

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 FROM table_name DISTINCT column_name(s)

Bases de datos
Unidad 3. Diseo

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

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 VALUES (value1, value2, value3,...) table_name

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

Bases de datos
Unidad 3. Diseo

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


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

Personas

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 VALUES (5, 'Tjessem', 'Jakob') (P_Id, Apellido, Nombre)

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

Enunciado UPDATE de SQL Este enunciado es usado para actualizar registros en una tabla. Sintaxis para UPDATE de SQL
UPDATE SET column1=value, WHERE some_column=some_value table_name column2=value2,...

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.

Bases de datos
Unidad 3. Diseo

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

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

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 SET Address='Nissestien 67', City='Sandnes' Persons

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

Bases de datos
Unidad 3. Diseo

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

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

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

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 or DELETE * FROM table_name FROM table_name

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

Bases de datos
Unidad 3. Diseo

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

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.

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 LEFT JOIN: Devolver todas

hay al menos una coincidencia en las dos tablas 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

Bases de datos
Unidad 3. Diseo

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

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

10

Bases de datos
Unidad 3. Diseo

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

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

Quedando el siguiente resultado:


Apellido Hansen Hansen Pettersen Pettersen Nombre Ola Ola Kari Kari OrderNo 22456 24562 77895 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 UNION SELECT column_name(s) FROM table_name2 table_name1

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 E_Nombre

11

Bases de datos
Unidad 3. Diseo

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

01 02 03 04

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 UNION SELECT E_Nombre FROM Empleados_Monterrey Empleados_Mxico

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 UNION SELECT column_name(s) FROM table_name2 table_name1 ALL

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

12

Bases de datos
Unidad 3. Diseo

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

Prez, Pedro Snchez, Osvaldo Gonzlez, Alan Talancn, Alejandro Sanabria, Susana Prez, Pedro

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 characters character string. Maximum 1,073,741,824 Storage n

Text Unicode strings: Data type nchar(n) nvarchar(n) nvarchar(max) Ntext Binary types: Data type Bit binary(n) varbinary(n) varbinary(max)

Variable-length character string. Maximum 2GB of text data

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

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

Storage

13

Bases de datos
Unidad 3. Diseo

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

Image Number types: Data type Tinyint Smallint Int Bigint

Variable-length binary data. Maximum 2GB

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 8 bytes 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 5-17 bytes

decimal(p,s)

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.5807 -922,337,203,685,477.5808

4 bytes to 8 bytes

float(n)

Floating precision number data from -1.79E + 308 to 1.79E + 308. 4 or 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: Data type Datetime

Description

Storage

From January 1, 1753 to December 31, 9999 with an accuracy of 8 bytes 3.33 milliseconds From January 1, 0001 to December 31, 9999 with an accuracy of 6-8

datetime2

14

Bases de datos
Unidad 3. Diseo

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

100 nanoseconds Smalldatetime

bytes

From January 1, 1900 to June 6, 2079 with an accuracy of 1 4 bytes minute Store a date only. From January 1, 0001 to December 31, 9999 Store a time only to an accuracy of 100 nanoseconds 3 bytes 3-5 bytes 8-10 bytes

Date Time

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

15

You might also like