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…) [CREATE/DROP/ALTER]
DML –> Data Manipulating Lang. Consulta/ Borrado/ Modificación/ Inserción de datos [INSERT/UPDATE/DELETE/TRUNCATE]
DCL –> Data Control Lang. Control sobre permisos, transacciones [GRANT/REVOKE]. TCL–> Transacciones [ROLLBACK/COMMIT/SAVEPOINT/RELEASE SAVEPOINT]
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]
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]
¿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 datos] [atributos] ==>
ALTER TABLE tabla1 ADD COLUMN precio FLOAT(6,2) NOT NULL,
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,
ALTER TABLE [nombreTabla] ADD COSTRAINT [nombreCostraint] [type of constraint] [campo] [(info adicional)] ==>
ALTER TALBE tabla1 ADD CONTRAINT fk_id_tabla2 FOREING KEY(id_tabla2) REFERENCE tabla2(id)
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)
- INSERT INTO [nombreTabla] (col1, col2, col3….) SELECT col1, col2, col3…. FROM [tabla2]
Como se hace correctamente una sentencia DELETE
DELETE FROM [nombreTabla] WHERE [condición]
Como se hace correctamente una sentencia UPDATE
UPDATE [nombreTabla] SET [nombreCol] = [valor] WHERE [condición]
Como se hace correctamente una sentencia SELECT
SELECT col1, col2, col3…. FROM [nombreTabla] WHERE [condición] (GROUP BY [col1] HAVING [condicion] ORDER BY col1 ASC/DESC)
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 grupo]
FROM nombreTabla
GROUP BY col1
HAVING min(col2) > 5
Cómo ordenamos una select
SELECT col1, col2, col3 …. FROM nombreTabla ORDER BY col1 [ASC / DESC]
NOTA: La ordenación por defecto es ASC