SQL Flashcards
¿Qué significan las siglas ACID?
A tomicity (que se traten varias sentencias como una unidad de trabajo)
C onsistency (que no se queden cosas a medias)
I solation (unidades de trabajo)
D durability (información grabada)
Puerto de Oracle
1521
Puerto SQL Server
1433
Puerto Postgresql
5432
Puerto MySql/MariaDB
3306
Puerto Informix
9089
Subleguajes dentro de SQL (clasificación de los comandos)
DDL –> Data Definition Lang. Creación/Borrado/Eliminación de objetos (tablas…)
DML –> Data Manipulating Lang. Consulta/ Borrado/ Modificación/ Inserción de datos
DCL –> Data Control Lang. Control sobre permisos, transacciones
Comandos DCL ()
GRANT –> Dar permisos
REVOKE –> Quitar permisos
COMMIT/ROLLBACK –> Confirmar o deshacer cambios en una TX
SAVEPOINT –> Para no deshacer todo (RELEASE SAVEPOINT)
SET TRANSACTION/START TRANSATION –>Configuración e inicio de una TX
Comandos DDL
CREATE
DROP
ALTER
Se aplica para
TABLE / INDEX / VIEW / PROCEDURE / SEQUENCE / FUNCTION / TYPE / TRIGGER /DOMAIN /SCHEMA / ROLE
Comandos DML
SELECT
UPDATE
INSERT
DELETE
MERGE
TRUNCATE (no Tx)
Sentencia DELETE
DELETE FROM <tabla> WHERE <condiciones></condiciones></tabla>
Para que sirve SAVEPOINT y como se libera
SAVEPOINT <nombre> Sirve para 'guardar partida' y que no se haga un ROLLBACK de todo lo ejectuado. El punto de salvado hay que liberarlo cuando corresponda con RELEASE SAVEPOINT <nombre></nombre></nombre>
¿Cómo crearias una tabla?
CREATE TABLE nombreTabla
(
id CHAR(4) NOT NULL,
id_table2 CHAR(4) NOT NULL,
nombre VARCHAR(40) NOT NULL,
zip CHAR(6) NOT NULL,
….
CONSTRAINT pk_id PRIMARY KEY (id),
CONSTRAINT fk_id_table2 FOREING KEY (id_table2) REFERENCE table2 (id) [ON DELETE/UPDATE CASCADE],
CONSTRAINT uniq_zip UNIQUE (zip),
CONSTRAINT chk_zip CHECK(zip LIKE ‘[0-9][0-9][0-9][0-9][0-9][A-Z]’),
)
Cómo modificarias una tabla
ALTER TABLE nombreTabla <cosa que queramos modificar/añadir>
ALTER TABLE <nombreTabla>ADD COLUMN <nombreCol> <tipo> <atributos> ==>
ALTER TABLE tabla1 ADD COLUMN precio FLOAT(6,2) NOT NULL,</atributos></tipo></nombreCol></nombreTabla>
ALTER TABLE <nombreTabla>ALTER COLUMN <nombreColum> [SET DEFAULT valor | SET NOT NULL | SET DATA TYPE <tipo_datos>] ==>
ALTER TABLE tabla1 ALTER COLUMN precio SET DATA TYPE NUMBER(10),
ALTER TABLE tabla1 ALTER COLUMN precio SET DEFAULT 10,</tipo_datos></nombreColum></nombreTabla>
ALTER TABLE <nombreTabla>ADD COSTRAINT <nombreCostraint> <type> <campo> [<info>] ==>
ALTER TALBE tabla1 ADD CONTRAINT fk_id_tabla2 FOREING KEY(id_tabla2) REFERENCE tabla2(id)</info></campo></type></nombreCostraint></nombreTabla>
Cómo damos y quitamos permisos en SQL
GRANT y REVOKE
(GRANT-ON-TO) (REVOKE-ON-FROM)
GRANT SELECT, INSERT, DELETE ON tabla1 TO user1 [WITH GRANT OPTION]
REVOKE DELETE ON tabla1 FROM user1
Como dirias que se borre / actualice en cascada
CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
CONSTRAINT fk_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id)
ON DELETE CASCADE
);
Niveles de aislamiento
Como se hace correctamente una sentencia INSERT
INSERT INTO <nombreTabla> (col1, col2, col3....) VALUES (val1, val2, val3)</nombreTabla>
Como se hace correctamente una sentencia DELETE
DELETE FROM <nombreTabla> WHERE <condición></condición></nombreTabla>
Como se hace correctamente una sentencia UPDATE
UPDATE <nombreTabla> SET <nombreCol> = <valor> WHERE <condición></condición></valor></nombreCol></nombreTabla>
Como se hace correctamente una sentencia SELECT
SELECT col1, col2, col3…. FROM <nombreTabla> WHERE <condición></condición></nombreTabla>
Cómo se usa LIKE
SELECT * FROM nombreTabla WHERE col1 LIKE ‘%texto%’
Cómo agrupamos en una SELECT
SELECT col1, min(col2), max(col3), avg(col4), count(col5)…..<de>
FROM nombreTabla
GROUP BY col1
HAVING min(col2) > 5</de>
Cómo ordemanamos una select
SELECT col1, col2, col3 …. FROM nombreTabla ORDER BY col1 <ASC / DESC>
Qué hace y cómo se usa DISTINCT
Afecta a todas las columnas de una select. Evita campos repetidos y te muestra solo una fila de cada ocurrencia.
SELECT DISTINCT col1, col2, col3 …. FROM nombreTabla WHERE <condicion></condicion>
Qué operadores tenemos para subconsultas
SELECT <cols> FROM <tabla> WHERE EXISTS (<subquery>)</subquery></tabla></cols>
SELECT <cols> FROM <tabla> WHERE col1 [NOT] IN (select col1 from...)</tabla></cols>
SELECT <cols> FROM <tabla> WHERE col1 <operartor[<>=]> [ANY/SOME/ALL] (select col1 from...)</tabla></cols>
Clases de JOIN
CROSS JOIN –> Multiplica las dos tablas. Es lo mismo que poner select …. from tabla1, tabla2
INNER JOIN –> Muestra las tuplas de las tablas coincidentes en el campo que se determine como pivote
LEFT [OUTER] JOIN –> Cómo inner pero mostrando todos los datos de la tabla 1 (a la izquierda) y dejando los datos de la tabla 2 a null si no hay ocurrencias
RIGHT [OUTER] JOIN –> Cómo inner pero mostrando todos los datos de la tabla 2 (a la derecha) y dejando los datos de la tabla 1 a null si no hay ocurrencias
FULL [OUTER] JOIN –> Cómo inner pero mostrando todos los datos de la tabla 1 y la tabla2 (a izquierda y derecha) y dejando los datos de a null si no hay ocurrencias en alguna de las tablas