SQL
Lenguaje declarativo no imperativo basado en conjuntos, es decir relacionalmente completo. |
data types
FLOAT |
INTEGRERS |
CHAR(2) |
'abc ' |
VARCHAR(10) |
'abc' |
NULL |
Selct query
SELECT col1, col2 AS alias
FROM table
JOIN table2 ON table1.col = table2.col
WHERE condition
GROUP BY column_name
HAVING condition
ORDER BY col1 ASC|DESC;
|
FROM: origenes de los datos
WHERE: limita registros donde es verdadero. >, <, =, <>, >=, <=,
LIKE, NOT, IN, BETWEEN etc.
GROUP BY: Especifica el criterio por el cual la tabla va a ser agrupada y calcula los resultados de las funciones estadísticas definidas en la sentencia SELECT.
El HAVING filtra los resultados del group by.
basicos
DDL |
leng de definicion de datos |
create |
CREATETABLE t (id INT, constraint pk_nombre PRIMARY KEY());
|
drop |
alter |
ALTER TABLE tablename ADD columnname datatype;
|
DML |
leng de manipulacion de datos |
select |
insert |
INSERT INTO tablename (col1)VALUES (val);
|
update |
UPDATE tablename SET col1 = val1 WHERE condition;
|
delete |
DELETE FROM tablename WHERE condition;
|
Clave cantidata
Sea una relación R. Entonces una clave candidata de R es un subconjunto de atributos de R, denominado K que cumple con: |
Unicidad: No existen dos tuplas de R con el mismo valor de atributos para K |
Minimalidad: No existe un subconjunto de atributos de K que cumplan con la propiedad de unicidad (Irreductibilidad) |
|
|
joins
SELECT t1., t2.
FROM t1
join_type t2 ON t1.col = t2.col;
|
inner join valores de ambas tablas
left join todos los regitros de la izq y los iguales de la derecha
right join todos los registros de la derecha y los iguales de la izq.
full join todos los registros donde en ambas tablas es igual o no lo es
funciones de agregación
avg(expr) |
promedio de valores en columna |
count(expr) |
contador de valores dentro del grupo |
max(expr) |
maximo valor en registros |
min(expr) |
minimo valor en registros |
sum(expr) |
suma valores dento de grupo |
Operadores de comparación
Between |
Permite comparar contra un rango de valores incluyéndolos. |
Like |
Comparación con máscaras (expresiones regulares). Funciona solo con caracteres |
"---%", "%---", |
Exists |
determina si el resultado de una subconsulta devolvió registros o no. |
In |
SELECT * FROM customers WHERE id IN ( SELECT DISTINCT customer_id FROM orders );
|
views
La vista es como una tabla nueva pero que cada vez que la llamas, lo que hace es ejecutar esa sentencia. . |
Existe por su definición en base a una sentencia Select. |
No posee datos propios, estos se obtienen en el momento de su invocación por la ejecución de la sentencia Select en la definición. |
CREATE VIEW nombre AS SELECT columnas FROM tabla WHERE condicion> date condicion;
|
stored procedures
-- Define a name and parameters
CREATE PROCEDURE Northwind.getEmployee
@LastName nvarchar(50),
@FirstName nvarchar(50)
AS
-- Define the query to be run
SELECT FirstName, LastName, Department
FROM Northwind.vEmployeeDepartment
WHERE FirstName = @FirstName AND LastName = @LastName
AND EndDate IS NULL;
Calling the procedure:
EXECUTE Northwind.getEmployee N'Ackerman', N'Pilar';
|
|
|
Triggers
CREATE TRIGGER BooksDeleteTrigger
ON MyBooksDB.Books
AFTER DELETE
AS
INSERT INTO BooksRecycleBin
SELECT *
FROM deleted;
GO
|
Un trigger, significa que es una acción que voy a definir que se ejecute cuando pase cierta condición. Lo que permite es generar acciones que automaticen procesos.
transacciones
BEGIN TRANSACTION
INSERT INTO DeletedEmployees(EmployeeID, DateDeleted, User)
(SELECT 123, GetDate(), CURRENT_USER);
DELETE FROM Employees WHERE EmployeeID = 123;
COMMIT TRANSACTION
|
grant and revoke
GRANT EXECUTE ON privilegio TO usuario WITH GRANT OPTION (condicional); EXCT agregarMiembro
|
|