Documente Academic
Documente Profesional
Documente Cultură
DOCENTE
PROF. RONALD SANCHEZ MORA
17 DE ABRIL DE 2017
RONALD SANCHEZ MORA
SAN JOSE, COSTA RICA
Introduccin a SQL
Una base de datos es una coleccin de datos que se organiza de una manera
que facilita la facilidad de acceso, as como una gestin y actualizacin
eficientes. Una base de datos se compone de tablas que almacenan
informacin relevante. Por ejemplo, usara una base de datos, si crease un
sitio web como YouTube, que contiene mucha informacin como videos, nombres
de usuario, contraseas, comentarios.
Las bases de datos a menudo contienen mltiples tablas, cada una diseada
para un propsito especfico. Por ejemplo, imagine crear una tabla de
nombres y nmeros de telfono de la base de datos.
Por ejemplo, nuestra tabla contiene un registro para cada nombre en una
gua telefnica. El nmero de identificacin nico sera una buena opcin
para una clave primaria en la tabla, ya que siempre existe la posibilidad
de que ms de una persona tenga el mismo nombre.
Qu es SQL?
Una vez que entienda lo que es una base de datos, entender SQL es fcil. SQL
significa Structured Query Language (Lenguaje de consulta estructurado).
SQL puede:
- insertar, actualizar o eliminar registros en una base de datos.
- Crear nuevas bases de datos, tabla, procedimientos almacenados, vistas.
- Recuperar datos de una base de datos, etc.
Tipos de Variables
Numricos
Carcter
Fecha
Binarios
Binary Se utiliza para almacenar datos binarios de longitud
fija, con una longitud mxima de 8000 bytes.
Varbinary Se utiliza para almacenar datos binarios de longitud
variable, con una longitud mxima de 8000 bytes..Es muy similar a
binary, salvo que varbinary utiliza menos espacio en disco.
Varbinary(max) Igual que varbinary, pero puede almacenar 231-
1 bytes.
Sentencia CREATE:
Para crear una tabla dentro de una base de datos, primero debemos usar:
USE nombre_BD;
La sentencia CREATE TABLE se utiliza para crear una nueva tabla en una
base de datos.
SQL Constraints
Las restricciones de SQL se utilizan para especificar reglas para datos
en una tabla.
SQL Create Constraints (restricciones)
La restriccin UNIQUE garantiza que todos los valores de una columna sean
diferentes. Las restricciones UNIQUE y PRIMARY KEY proporcionan una
garanta de singularidad para una columna o conjunto de columnas. Una
restriccin PRIMARY KEY tiene automticamente una restriccin UNIQUE. Sin
embargo, puede tener muchas restricciones UNIQUE por tabla, pero slo una
restriccin PRIMARY KEY por tabla.
El SQL siguiente crea una PRIMARY KEY en la columna "ID" cuando se crea
la tabla "Personas":CREATE TABLE Persons (
ID int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
SQL PRIMARY KEY on ALTER TABLE: Para crear una restriccin PRIMARY
KEY en la columna "ID" cuando la tabla ya est creada, utilice el
siguiente SQL:
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
DROP a PRIMARY KEY Constraint
Para eliminar una restriccin PRIMARY KEY, utilice el siguiente SQL
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;
Una FOREIGN KEY es una clave utilizada para vincular dos tablas. Una
FOREIGN KEY en una tabla apunta a una PRIMARY KEY en otra tabla. Vea las
dos tablas siguientes:
Tabla "Persons":
Orders Table:
Observe que la columna "PersonID"
en la tabla "Orders" apunta a la
columna "PersonID" en la tabla
"Persons". La columna "PersonID" en
la tabla "Persons" es PRIMARY KEY
en la tabla "Persons". La columna "PersonID" en la tabla "Orders" es una
KEY FOREIGN en la tabla "Orders". La restriccin FOREIGN KEY se utiliza
para evitar acciones que destruirn vnculos entre tablas. La restriccin
FOREIGN KEY tambin evita que se inserten datos no vlidos en la columna
de la foreign key, ya que tiene que ser uno de los valores contenidos en
la tabla a la que apunta.
Practica #1
Sintaxis SELECT
Aqu, column1, column2, ... son los nombres de campo de la tabla de la que
desea seleccionar los datos. Si desea seleccionar todos los campos
disponibles en la tabla, utilice la siguiente sintaxis:
SELECT * FROM table_name;
Sintaxis WHERE
Sintaxis ORDER BY
Ejemplo ORDER BY
Sintaxis UPDATE
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;
Ejemplo
UPDATE Customers
SET ContactName='Juan';
Sintaxis DELETE
Es posible eliminar todas las filas de una tabla sin eliminar la tabla.
Esto significa que la estructura de tabla, los atributos y los ndices
estarn intactos
DELETE FROM table_name; o DELETE * FROM table_name;
SELECT MIN(column_name)
FROM table_name
WHERE condition;
Sintaxis MAX()
SELECT MAX(column_name)
FROM table_name
WHERE condition;
Vamos a crear una segunda tabla llamada product, con los campos, tipo
de dato y sus registros.
La instruccin SQL siguiente encuentra el precio del producto ms barato:
Ejemplo MIN()
COUNT() Syntax
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
AVG() Syntax
SELECT AVG(column_name)
FROM table_name
WHERE condition;
SUM() Syntax
SELECT SUM(column_name)
FROM table_name
WHERE condition;
SELECT COUNT(ProductID)
FROM Products;
Ejemplo de AVG ()
La instruccin SQL siguiente encuentra el precio promedio de todos los
productos:
SELECT AVG(Price)
FROM Products;
Vamos a trabajar con la tabla orderDetails, que se encuentra dentro de
nuestra base de datos SUPER.
Ejemplo SUM( )
SELECT SUM(Quantity)
FROM OrderDetails;
Estos son algunos ejemplos que muestran diferentes operadores LIKE con
comodines '%' y '_':
Descripcion Operdor LIKE
WHERE CustomerName LIKE 'a%' Encuentra cualquier valor que empiece con
"a"
WHERE CustomerName LIKE '%a' Encuentra cualquier valor que termine con
WHERE CustomerName LIKE '_r%' Encuentra cualquier valor que tenga "r"
en la segunda posicin
WHERE CustomerName LIKE 'a_%_%' Encuentra cualquier valor que empiece
por "a" y tenga al menos 3 caracteres de longitud
WHERE ContactName LIKE 'a%o' Encuentra cualquier valor que comience
con "a" y termine con "o".
Vamos a hacer uso de la tabla customers:
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);
Haciendo uso de la tabla customers se va a trabajar con ejemplos usando
el operador IN.
Ejemplo 1:
La instruccin SQL siguiente selecciona todos los clientes que se
encuentran en "Germany", "France" y "UK":
SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');
La instruccin SQL siguiente selecciona todos los clientes que son de los
mismos pases que los proveedores:
BETWEEN Syntax
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
La instruccin SQL siguiente selecciona todos los productos con un precio
ENTRE 10 y 20:
SQL Aliases
Los alias SQL se usan para dar una tabla, o una columna en una tabla, un
nombre temporal. Los alias se utilizan a menudo para hacer que los nombres
de las columnas sean ms legibles. Un alias slo existe para la duracin
de la consulta.
SELECT column_name(s)
FROM table_name AS alias_name;
SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' +
Country AS Address
FROM Customers;
La instruccin SQL siguiente selecciona todos los pedidos del cliente con
CustomerID = 4 (Around the Horn). Utilizamos las tablas "Clientes" y
"rdenes
SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM Customers, Orders
WHERE Customers.CustomerName='Around the Horn' AND
Customers.CustomerID=Orders.CustomerID;
SQL JOIN
Diferentes tipos de SQL JOIN Estos son los diferentes tipos de JOIN en
SQL:
FULL (OUTER) JOIN: Devuelve todos los registros cuando hay una
coincidencia en la tabla izquierda o derecha
SQL INNER JOIN Keyword (Palabra Clave)
SELECT column_name(s)
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;
Nota: La palabra clave INNER JOIN selecciona todas las filas de ambas
tablas siempre que haya una coincidencia entre las columnas. Si hay
registros en la tabla "Orders" que no tienen coincidencias en "Customers",
estos pedidos no se mostrarn.
SELECT column_name(s)
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;
Nota: En algunas bases de datos LEFT JOIN se denomina LEFT OUTER JOIN.
Nota: La palabra clave LEFT JOIN devuelve todos los registros de la tabla
izquierda (clientes), incluso si no hay coincidencias en la tabla derecha
(Orders).
SELECT column_name(s)
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;
Nota: En algunas bases de datos RIGHT JOIN se llama RIGHT OUTER JOIN.
La palabra clave FULL OUTER JOIN devuelve todos los registros cuando hay
una coincidencia en registros de tabla izquierda (tabla1) o derecha
(tabla2).
Nota: FULL OUTER JOIN puede potencialmente devolver conjuntos de
resultados muy grandes.
Nota: La palabra clave FULL OUTER JOIN devuelve todas las filas de la
tabla izquierda (Customers) y todas las filas de la tabla derecha
(Orders). Si hay filas en "Customers" que no tienen coincidencias en
"Orders", o si hay filas en "Orders" que no tienen coincidencias en
"Customers", esas filas tambin aparecern.
SQL Self JOIN
Es una combinacin regular, pero la tabla se une con ella misma.
Sintaxis UNION
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
Ejemplo SQL GROUP BY
Sintaxis EXISTS
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE SupplierId =
Suppliers.supplierId AND Price < 20);
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE SupplierId =
Suppliers.supplierId AND Price = 22);
Los operadores ANY y ALL se utilizan con una clusula WHERE o HAVING. El
operador ANY devuelve true si cualquiera de los valores de subconsulta
cumple con la condicin. El operador ALL devuelve true si todos los valores
de subconsulta cumplen la condicin.
Sintaxis ANY
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name FROM table_name WHERE condition);
Sintaxis ALL
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);
La instruccin SELECT INTO copia los datos de una tabla en una nueva
tabla.
Sintaxis SELECT INTO
Copia todas las columnas dentro de una nueva tabla
SELECT *
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;
La nueva tabla se crear con los nombres de columna y los tipos definidos
en la tabla anterior. Puede crear nuevos nombres de columna utilizando la
clusula AS.
La siguiente instruccin SQL copia slo unas pocas columnas en una nueva
tabla:
Consejo: SELECT INTO tambin se puede utilizar para crear una nueva tabla
vaca usando el esquema de otro. Simplemente agregue una clusula WHERE
que hace que la consulta no devuelva datos:
SELECT * INTO newtable
FROM oldtable
WHERE 1 = 0;
La sentencia INSERT INTO SELECT copia los datos de una tabla y los inserta
en otra tabla.
INSERT INTO SELECT requiere que los tipos de datos en las tablas de origen
y destino coincidan Los registros existentes en la tabla de destino no se
ven afectados