SQL Flashcards
Definir la estructura de SQL
SQL esta divido en 3 partes:
(1) Lenguaje de manipulacion de datos: brinda instrucciones que permiten hacer consultas a la base de datos, y sentencias CRUD para manipularlas
(2) Lenguaje de definicion de datos: brinda instrucciones para definir esquemas de bases de datos, como por ejemplo crear tablas
(3) Lenguaje de control de datos: contiene instrucciones que permite manipular los permisos sobre las bases de datos y sus objetos
Definir Select
SELECT select_list
[ FROM table_source ]
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
Diferencia entre HAVING y GROUP BY en SQL
La cláusula GROUP BY especifica una consulta sumaria. En lugar de producir una fila de resultados por cada fila de datos de la base de datos, una consulta sumaria agrupa todas las filas similares y luego produce una fila sumaria de resultados para cada grupo. BUEN EJEMPLO: https://www.programiz.com/sql/group-by
La cláusula HAVING trabaja muy similarmente a la cláusula WHERE, y se utiliza para considerar sólo aquellos grupos que satisfagan la condición dada en la cláusula HAVING. La clausula WHERE no puede ser utilizada con funciones agregadas (COUNT, AVG, etc), pero HAVING si.
SELECT Student, AVG(score) AS average FROM Marks GROUP BY Student
HAVING average > 70
Definir otros operadores DML SQL
- UNION: (debe ser union-compatible)
query UNION [ ALL ] query - INTERSECT: (debe ser union-comptaible)
query INTERSECT query - EXCEPT: (debe ser union compatible)
query EXCEPT query - INSERT: (el select opcional de values debe ser union compatible con dest)
INSERT INTO table [ (field1[, field2[ ,… ]]) ] VALUES [.(value1 [, value2 [,…]]) ]
Si se quiere insertar mas de un registro, se hace con un SELECT:
INSERT INTO table [ (field1[, field2[ ,… ]]) SELECT (…)
- UPDATE:
UPDATE table SET field1 = value1 [, field2 = value2 [,…]] [WHERE cond]
El ultimo WHERE funciona para seleccionar que registros se deben actualizar
- DELETE:
DELETE FROM table [ WHERE cond ] - JOIN:
table1 [ NATURAL ] { { LEFT | RIGHT | FULL } OUTER | INNER } JOIN table2 [ ON cond ] [ USING (col1 [, col2 [,…]]) ]
Definir operador CREATE TABLE
CREATE TABLE table
(field type [size] [NOT NULL] [index1]
[,fieldN typeN [size] [NOT NULL] [indexN] [,…]]
[, ligaduraIntegridad1 [,…]]
[, ligaduraIntegridadN [,…]])
Explicar ligadura de integridad
Es una clausula CONSTRAINT que define una restriccion a crear. Puede ser:
- PRIMARY KEY
- UNIQUE
- CHECK
- FOREIGN KEY (integridad referencial)
etc
Definir clausula constraint para indice unico
CONSTRAINT name
{ PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES extern_table [(extern_field)]}
Definir clausula CONSTRAINT para indice multiple
COSNTRAINT name
{
PRIMARY KEY (key1 [, key2 [,…]])
| NOT NULL (notnull1 [, notnull2 [,…]])
| CHECK cond
| FOREIGN KEY (ref1 [, ref2 [,…]]) REFERENCES ext_table [ (field1 [, field2 [,…]]) ] [ ON DELETE action ] [ ON UPDATE action]
}
UNIQUE (uniq1 [, uniq2 [,…]])
Definir ALTER TABLE
ALTER TABLE table {
ADD
{ COLUMN field type [(size)] [NOT NULL]} | constraintClause }
|DROP
{ { COLUMN field | CONSTRAINT constraint } }
}
DROP { COLUMN field | CONSTRAINT clause }
Definir clausula DROP
DROP { TABLE table | VIEW view | INDEX index ON table }
Definir tipos de indices (en CONSTRAINT)
- PRIMARY KEY: genera un indice primario para el campo o los campos especificados. Debe ser UNICOS Y NO NULOS, y cada table puede contener una sola tabla primeria.
- UNIQUE: Genera un indice de clabe unica, de esta forma se generan las clabes secundarias o candidatas
- CHECK: Es para especificar una condicion que deben cumplir los datos de una table
- FOREIGN KEY: genera un indice externo, tomando como valor del indice los campos contenidos en otras tables
Explicar las opciones posibles de la clausula ON DELETE/ON UPDATE en integridad referencial
Ejemplo: https://stackoverflow.com/questions/6720050/foreign-key-constraints-when-to-use-on-update-and-on-delete
CASCADE: Al borrar o actualizar un registro en la tabla padre y automáticamente borra o actualiza los registros coincidentes en la tabla hija.
SET NULL/SET DEFAULT: Al borrar o actualizar un registro en la tabla padre y establece en NULL la o las columnas de clave foránea en la tabla hija. Esto solamente es válido si las columnas de clave foránea no han sido definidas como NOT NULL.
RESTRICT/NO ACTION: Rechaza la operación de eliminación o actualización en la tabla padre. NO ACTION y RESTRICT son similares en tanto omiten la cláusula ON DELETE u ON UPDATE.
Explicar la creacion de dominos en SQL
CREATE DOMAIN name [ AS ] dataType
[ DEFAULT defaultValue ]
[ NOT NULL ]
[ CHECK cond ]
Explicar inidices en SQL
Un indice esta basado en una o mas columnas de la tabla, y su funcion es order el contenida de las columnas especificadas y mejorar el acceso a la informacion contenida, haciendolo mas eficiente y rapido.
IMPORTANTE: conforme los registros se anexan, cambian o eliminan, el sistema de administracion de base de datos actualiza automaticamente el indice para reflejar los cambios
CREATE [ UNIQUE ] INDEX indice ON table (field1 [ASC|DEC] [, field2 [ASC|DESC] [,…]])
[ WITH { PRIMARY |DISALLOW NULL |IGNORE NULL } ]
Definir vistas. Ejemplificar
Son relaciones que no forman parte del modelo logico de la base de datos que son visibles a los usuarios como tables virtuales.
CREATE VIEW name AS query
CREATE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName
FROM Customers
WHERE Country = ‘Brazil’;