You are on page 1of 10

Resumen SQL

Una base de datos SQL contiene una o varias tablas. Cada tabla se identifica por un nombre. Cada tabla contiene registros(filas) de datos. Las consultas SQL sirven para obtener un conjunto de resultados de la base de datos. SELECT campo FROM tabla(;) SQL DATA MANIPULATION LANGUAGE(DML) SQL es una sintaxis para realizar consultas, pero el lenguaje tambin incluye sintaxis para actualizar, insertar y borrar registros. SELECT extrae informacin de una base de datos. UPDATE actualiza datos de una BD. DELETE borra datos de una BD. INSERT INTO inserta datos en una BD. SQL DATA DEFINITION LANGUAGE(DDL) DDL es la parte de SQL que permite crear y borrar tablas de una base de datos. Tambin se pueden definir ndices(keys), enlaces entre tablas e imposicin de restricciones entre tablas. CREATE TABLE crea una nueva tabla. ALTER TABLE altera una tabla. DROP TABLE borra una tabla. CREATE INDEX crea un ndice (search key). DROP INDEX borra un ndice. LA SENTENCIA SELECT La sentencia SELECT sirve para seleccionar datos de una tabla. El resultado es almacenado en una tabla de resultado. SELECT column_name(s) FROM table_name por ejemplo: SELECT LastName,FirstName FROM Persons Para seleccionar todas las columnas: SELECT * FROM table_name Para obtener un resultado con valores distintos se usa la sentencia SELECT DISTINCT. SELECT DISTINCT column_name(s) FROM table_name EL MODIFICADOR WHERE Este modificador se usa para especificar un criterio de seleccin. De esta manera se puede obtener un resultado condicional de una tabla. SELECT column FROM table WHERE column operator value

Operador = <> > < >= <= BETWEEN LIKE IN

Descripcin Igual Distinto Mayor Menor Mayor igual Menor igual Entre un rango inclusivo Buscar por un patrn Si sabes el valor exacto que quieres obtener para al menos una de las columnas

SELECT * FROM Persons WHERE City='Sandness' Para los valores condicionales se usan comillas simples. Las comillas simples se usan para valores de texto. Para los valores numricos no se usan comillas de ningn tipo. LA CONDICIN LIKE Se usa para especificar un patrn de bsqueda en una columna. SELECT column FROM table WHERE column LIKE pattern El signo % puede usarse para definir espacios indefinidos antes o despus del patrn de bsqueda. Para seleccionar las personas cuyo nombre empieza por 'o' : SELECT * FROM Persons WHERE FirstName LIKE 'O%' LA SENTENCIA INSERT INTO Esta sentencia se usa para insertar nuevas filas en una tabla. La sintaxis es: INSERT INTO table_name VALUES (value1, value2, ...) INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2,...) LA SENTENCIA UPDATE Esta sentencia se usa para modificar los datos de una tabla. UPDATE table_name SET column_name = new_value WHERE column_name = some_value

LA SENTENCIA DELETE Esta sentencia sirve para eliminar una fila de una tabla. DELETE FROM table_name WHERE column_name = some_value Para borrar todas las filas se usa la sentencia: DELETE FROM table_name o DELETE * FROM table_name CONDICIN ORDER BY Se usa para ordenar el resultado. Ordenar por filas, alfabticamente por compaa. SELECT Company, OrderNumber FROM Orders ORDER BY Company Ordenar por compaa alfabricamente, y por nmero de orden. SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber Ordenar por compaa en orden alfabtico inverso. SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC Ordenar por compaa en orden inverso y por nmero de orden de forma ascendente. SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC MODIFICADORES AND Y OR AND y OR unen dos o ms condiciones en una clausula WHERE. Mostrar las personas con nombre igual a Tove y apellido Svendson. SELECT * FROM Persons WHERE FirstName='Tove' AND LastName='Svendson' Mostrar las personas con el nombre igual a Tove o el apellido Svendson. SELECT * FROM Persons WHERE FirstName='Tove' OR LastName='Svendson' Se pueden combinar AND y OR. Para expresiones complejas se deben usar parntesis. SELECT * FROM Persons WHERE (FirstName='Tove' OR FirstName='Stephen') AND LastName='Svendson' SQL IN El operador IN puede ser usado si se sabe el valor exacto requerido en alguna de las columnas. SELECT column_name FROM table_name WHERE column_name IN (value1, value2,...)

Mostrar las personas con apellido Hansen o Petersen. SELECT * FROM Persons WHERE LastName IN ('Hansen', 'Pettersen') SQL BETWEEN BETWEEN... AND selecciona un rango de datos entre dos valores. Estos valores pueden ser nmeros, texto o datos. SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2 Mostrar las personas alfabticamente entre (e incluyendo) Hansen y excluyendo Pettersen SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen' Este operador es tratado de distintas maneras en cada base de datos. En algunas bases de datos una persona con el apellido Hansen o Pettersen puede no ser mostrada, y en otra s. Por tanto es necesario probar cmo trata esta condicin la base de datos a usar. Mostrar las personas fuera del rango anterior con el operador NOT. SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Hansen' AND 'Pettersen' SQL ALIAS En SQL se pueden usar alias para los nombres de las columnas y de las tablas. SELECT column AS column_alias FROM table SELECT column FROM table AS table_alias Muestra la tabla con la cabecera Familia en vez de Apellido y Nombre en vez de FirstName. SELECT LastName AS Family, FirstName AS Name FROM Persons Cambia el nombre de la tabla de Personas a Empleados SELECT LastName, FirstName FROM Persons AS Employees SQL JOIN Joins and Keys A veces tenemos que seleccionar datos desde una o ms tablas para obtener el resultado completo. Para ello tenemos que realizar un join. Las tablas en una base de datos pueden estar relacionadas unas con otras por medio de claves(keys). Una clave primaria es una columna con un nico valor para cada fila. Cada clave primaria debe ser nica en la tabla. El propsito es relacionar datos entre tablas sin repetir los datos en cada tabla. En una columna con clave primaria no pueden existir dos elementos con el mismo nombre. Este valor distingue dos registros aunque sean iguales.

Con la clave principal se puede hacer referencia a un registro concreto de otra tabla sin necesidad de aadir todos los datos en la tabla. Para seleccionar datos de dos tablas llamando a las dos tablas: SELECT Employees.Name, Orders.Product FROM Employees, Orders WHERE Employess.Employee_ID=Orders.Employee_ID (Employees y Orders son nombres de tabla, despus del punto viene el nombre de la columna) Para obtener datos de una tabla a partir de una bsqueda en la otra tabla. SELECT Employees.Name FROM Employees, Orders WHERE Employees.Employee_ID=Orders.Employee_ID AND Orders.Product='Printer' Para seleccionar datos de dos tablas con JOIN SELECT field1, field2, field3 FROM first_table INNER JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield Con esta estructura se obtienen todas las filas de ambas tablas donde hay una coincidencia. Si hay filas en una que no coinciden con la otra no se mostrarn. SELECT field1, field2, field3 FROM first_table LEFT JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield Con esta estructura se obtienen todas las filas de la primera tabla incluso si no hay coincidencias con la segunda tabla. Si hay algunas filas de la primera tabla que no coincide con la segunda, se mostrarn tambin. SELECT field1, field2, field3 FROM first_table RIGHT JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield Con esta sentencia se obtienen las filas de la segunda tabla, incluso si no hay coincidencias con la primera tabla. SELECT Employees.Name FROM Employees INNER JOIN Orders ON Employees.Employee_ID=Orders.Employee_ID WHERE Orders.Product='Printer' SQL UNION and UNION ALL El comando UNION es usado para seleccionar informacin relacionada de dos tablas como el comando JOIN. Sin embargo, cuando se usa el comando UNION todas las columnas seleccionadas deben ser del mismo tipo. Adems slo se seleccionan valores distintos. SQL statement 1 UNION SQL statement 2 Si se quieren mostrar todos los valores aunque sean iguales en las dos tablas se usa el comando UNION ALL.

SQL Statement1 UNION SQL Statement2 SQL CREATE DATABASE, TABLE E INDEX Para crear una base de datos: CREATE DATABASE database_name Para crear una tabla: CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, ... ) El tipo de dato puede ser: varchar, int,.... Para especificar una longitud mxima para alguna columna se pone entre parntesis: int(5) integer(size), int(size), smallint(size), tinyint(size), decima(size,d), numeric(size,d), char(size), varchar(size), date(yyyymmdd) Los ndices se crean en una tabla para localizar filas de manera ms rpida y eficiente. Es posible crear un ndice e una o ms columnas de una tabla cada uno con un nombre distinto. Los usuarios no pueden ver los ndices, ya que slo se usan para acelerar las consultas. La actualizacin de una tabla que contiene ndices toma ms tiempo que actualizar una sin ndices, ya que los ndices deben actualizarse tambin. Por eso es una buena idea crear ndices slo en las columnas que se usan a menudo para realizar bsquedas. Para crear un ndice nico en una tabla (no pueden existir dos valores iguales en una columna), se utiliza: CREATE UNIQUE INDEX index_name ON table_name (column_name) donde el nombre de columna indica la columna o columnas que se quieren indexar. Si se quiere que el ndice est ordenado en orden descendente se aade dentro del parntesis el modificador DESC. SQL DROP INDEX, TABLE Y DATABASE Para borrar un ndice de una tabla: DROP INDEX index_name ON table_name(SQLJet y Access) DROP INDEX table_name.index_name(MS SQL) DROP INDEX index_name(IBM) ALTER TABLE table_name DROP INDEX index_name Para borrar una tabla o base de datos: DROP TABLE table_name DROP DATABASE database_name Para borrar los datos de una tabla, pero no borrar la tabla en s:

TRUNCATE TABLE table_name SQL ALTER TABLE Se usa para aadir o eliminar columnas a una tabla existente: ALTER TABLE table_name ADD column_name datatype ALTER TABLE table_name DROP COLUM column_name SQL FUNCTIONS SQL dispone de multitud de funciones predefinidas para conteo y clculos. SELECT function(column) FROM table Funciones acumulativas Operan sobre una coleccin de valores pero devuelve un solo valor. Si se usa entre otras expresiones dentro de SELECT, se debe usar una seccin GROUP BY AVG(column), COUNT(column), COUNT(*), MAX(column), MIN(column), SUM(column), COUNT(DISTINC column) Funciones escalares Operan sobre un valor simple y devuelve un valor simple basado en el valor de entrada. SQL GROUP BY AND HAVINGN GROUP BY se aade a una sentencia SQL para aadir funciones acumulativas devolviendo la acumulacin de todos los valores de la columna cada vez que se invoca. Sin dicho modificador no es posible encontrar el resultado de cada uno de los grupos de valores. SELECT column, SUM(column) FROM table GROUP BY column HAVING se aade a un modificador WHERE para poder usar funciones acumulativas. SELECT column, SUM(column) FROM table GROUP BY column HAVING SUM(column) condition value SQL SELECT INTO Se usa para crear copias de seguridad de tablas o para archivar registros. SELECT column_name(s) INTO newtable [IN esternaldatabase] FROM source SQL CREATE VIEW Crea una tabla virtual basada en el resultado de un SELECT. Una vista(view) contiene las filas y columnas de la consulta de la misma manera que una tabla real. Los campos en una vista son provenientes de una o varias tablas de la base de datos. Se pueden aadir todo tipo de modificadores. CREATE VIEW view_name AS SELECT column_name(s) FROM table_name

WHERE condition Para llamar a una vista: SELECT * FROM view_name

AND / OR

SELECT column_name(s)

ALTER TABLE (add column) ALTER TABLE (drop column) AS (alias for column) AS (alias for table) BETWEEN

CREATE DATABASE CREATE INDEX CREATE TABLE

CREATE UNIQUE INDEX CREATE VIEW

DELETE FROM

FROM table_name WHERE condition AND|OR condition ALTER TABLE table_name ADD column_name datatype ALTER TABLE table_name DROP COLUMN column_name SELECT column_name AS column_alias FROM table_name SELECT column_name FROM table_name AS table_alias SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2 CREATE DATABASE database_name CREATE INDEX index_name ON table_name (column_name) CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, ....... ) CREATE UNIQUE INDEX index_name ON table_name (column_name) CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition DELETE FROM table_name (Note: Deletes the entire table!!) or DELETE FROM table_name WHERE condition

DROP DATABASE DROP INDEX DROP TABLE GROUP BY

HAVING

IN

DROP DATABASE database_name DROP INDEX table_name.index_name DROP TABLE table_name SELECT column_name1,SUM(column_name2) FROM table_name GROUP BY column_name1 SELECT column_name1,SUM(column_name2) FROM table_name GROUP BY column_name1 HAVING SUM(column_name2) condition value SELECT column_name(s)

INSERT INTO

FROM table_name WHERE column_name IN (value1,value2,..) INSERT INTO table_name VALUES (value1, value2,....) or INSERT INTO table_name (column_name1, column_name2,...) VALUES (value1, value2,....)

LIKE

ORDER BY

SELECT SELECT * SELECT DISTINCT SELECT INTO (used to create backup copies of tables)

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern SELECT column_name(s) FROM table_name ORDER BY column_name [ASC|DESC] SELECT column_name(s) FROM table_name SELECT * FROM table_name SELECT DISTINCT column_name(s) FROM table_name SELECT * INTO new_table_name FROM original_table_name or SELECT column_name(s) INTO new_table_name FROM original_table_name

TRUNCATE TABLE (deletes only the data inside the table) UPDATE

TRUNCATE TABLE table_name

WHERE

UPDATE table_name SET column_name=new_value [, column_name=new_value] WHERE column_name=some_value SELECT column_name(s) FROM table_name WHERE condition

You might also like