SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado)...

25
SQL (I) Tema 3

Transcript of SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado)...

Page 1: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

SQL (I)

Tema 3

Page 2: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

¿Qué es SQL?

SQL: Structured Query Language (lenguaje de consultas estructurado)

Específico para bases de datos relacionales

No es imperativo, es declarativo

Page 3: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Funciones de SQL

Definición de datos (LDD) Manipulación de datos (LMD) Control de acceso (LCD) Gestión de

Integridad Concurrencia

Page 4: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Instrucciones SQL

LDD Create Alter Drop

LMD Select Insert Update Delete

Page 5: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Instrucciones SQL

LCD Grant Revoke

Gestión de la integridad Commit Rollback

Page 6: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Tipos de datos

Alfanuméricos Numéricos Fecha Binarios Otros

CHAR NUMBER DATE RAW ROWID

VARCHAR2 FLOAT LONG RAW

VARCHAR BLOB

NCHAR CLOB

NVARCHAR2 NLOB

LONG BFILE

Page 7: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Create Table

CREATE TABLE nombre_tabla(COLUMNA TIPO

[NOT NULL][UNIQUE][PRIMARY KEY][DEFAULT valor][REFERENCES Nomtabla][columna[,columna]][ON DELETE CASCADE]][CHECK condicion],

COLUMNA TIPO [NOT NULL],. . .

{CONSTRAINT nombre_clave_primaria PRIMARY KEY (columnas_clave)}{CONSTRAINT nombre_clave_foránea

FOREIGN KEY(columnas_clave) REFERENCES tabla_detalle( columnas_clave )

{ON DELETE CASCADE} } ){TABLESPACE tablespace_de_creación}{STORAGE( INITIAL XX{K|M} NEXT XX{K|M} )}

Page 8: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Create Table

Ejemplo:

CREATE TABLE FACTURA(REFERENCIA VARCHAR2(10) NOT NULL,DESCRIPCION VARCHAR2(50),C_PAIS NUMBER(3),C_CLIENTE NUMBER(5),IMPORTE NUMBER(12),

CONSTRAINT PK_FACTURA PRIMARY KEY( REFERENCIA ),CONSTRAINT FK_CLIENTE FOREIGN

KEY(C_PAIS,C_CLIENTE) REFERENCES CLIENTE( C_PAIS, C_CLIENTE)

ON DELETE CASCADE )TABLESPACE tab_facturasSTORAGE( INITIAL 1M NEXT 500K );

Page 9: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Create Index

CREATE {UNIQUE} INDEX nombre_índiceON tabla( columnas_indexadas ){TABLESPACE tab_indices}{STORAGE( INITIAL XX{K|M} NEXT XX{K|M} )}

Ejemplo:

CREATE INDEX ind_factura_clienteON FACTURA( C_PAIS, C_CLIENTE )TABLESPACE tab_factura_indSTORAGE( INITIAL 500K NEXT 500K );

Page 10: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Drop

DROP tipo_objeto objeto_a_borrar.

Ejemplo:

DROP TABLE FACTURA;

DROP SEQUENCE COD_CLIENTE;

DROP SYNONYM BILL;

DROP VIEW TOTAL_FACTURA_CLIENTE;

DROP TABLESPACE tab_indices;

Page 11: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Truncate

TRUNCATE nombre_tabla {DROP|REUSE STORAGE}

Ejemplo:

TRUNCATE FACTURA DROP STORAGE;

TRUNCATE CLIENTE;

Page 12: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Alter

ALTER tipo_objeto nombre_objetoCláusulas específicas de cada tipo de ALTER;

Ejemplo:

ALTER TABLE nombretabla [ADD (columna[,columna]...) [MODIFY (columna[,columna]...) [DROP COLUMN (columna[,columna]...) [ADD CONSTRAINT restriccion] [ADD CONSTRAINT restriccion];

Page 13: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Create Sequence

CREATE SEQUENCE nombre_secuencia{START WITH entero}{INCREMENT BY entero}{MAXVALUE entero | NOMAXVALUE}{MINVALUE entero | NOMINVALUE }{CYCLE | NOCYCLE};

Page 14: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Create Sequence

Ejemplo:

CREATE SEQUENCE REF_FACTURASTART WITH 1INCREMENT BY 1MAXVALUE 999999MINVALUE 1;

CREATE SEQUENCE COD_CLIENTEINCREMENT BY 10;CREATE SEQUENCE COD_PAISINCREMENT BY 10CYCLE;

Page 15: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Operadores en SQL

Aritméticos

Concatenación

Page 16: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Operadores en SQL (II)

Lógicos

Page 17: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Insert

Sintaxis 1:INSERT INTO tabla{( campos )}

VALUES( lista de valores );

Sintaxis 2:INSERT INTO tabla{( campos )}

SELECT . . .

Page 18: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Insert

Ejemplos:INSERT INTO FACTURAVALUES( 'A111', 'Factura nueva', 1, 5, 50000 );

INSERT INTO FACTURA( C_PAIS, REFERENCIA, IMPORTE, C_CLIENTE, DESCRIPCIPCION )

VALUES( 1, 'A111', 50000, 5, 'Factura nueva' );

INSERT INTO FACTURA( REFERENCIA, IMPORTE )VALUES( 'A111', 50000 );

INSERT INTO FACTURA( C_PAIS, C_CLIENTE )SELECT C_PAIS, C_CLIENTEFROM CLIENTE;

Page 19: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Select

Sintaxis:

SELECT {DISTINCT} columnas

FROM tabla{,tabla,...|INNER JOIN tabla2 ON tabla.columna=tabla2.columna}

{WHERE condición}

{GROUP BY agrupación}

{HAVING condición agrupada}

{ORDER BY ordenación};

Page 20: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Select

Ejemplos From:FROM FACTURA FACFROM FACTURA FAC, CLIENTE CLIFROM DUALFROM ( SELECT C_CLIENTE FROM FACTURA ) CLIENTE_FAC

Ejemplos Where:WHERE FACTURA.REFERENCIA = 'AA3455'WHERE FACTURA.C_CLIENTE IS NULLWHERE C_CLIENTE BETWEEN '12' AND '20'WHERE C_CLIENTE IS NULL ANDREFERENCIA IN ('AA23344', 'BB23345')WHERE C_CLIENTE != 55 ORREFERENCIA LIKE 'AA%5_'

Page 21: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Select

Ejemplos Order byORDER BY REFERENCIA ASC

ORDER BY REFERENCIA DESC, C_CLIENTE DES, IMPORTE ASC

ORDER BY C_CLIENTE

ORDER BY 1, C_CLIENTE, 2

ORDER BY TRUNC( '1-JAN-2001'+1, 'MON' )

ORDER BY 1.1+3-5/44.3 -- no tiene sentido ordenar por una cte.

Page 22: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Select

Ejemplo producto cartesianoSELECT *

FROM pedidos,clientes

WHERE pedidos.clie=clientes.numclie

Ejemplo Inner JoinSELECT *

FROM pedidos INNER JOIN clientes

ON pedidos.clie = clientes.numclie

Page 23: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Delete

Sintaxis:DELETE {FROM} tabla {WHERE condición};

Ejemplos:DELETE FROM FACTURA WHERE REFERENCIA = 'A111';

DELETE FACTURA;

DELETE FACTURA WHERE C_PAIS = 1 AND C_CLIENTE = 5;

DELETE FROM FACTURA WHERE REFERENCIA NOT IN ( SELECT REFERENCIA FROM FACTURA WHERE C_CLIENTE = 4 );

DELETE FROM FACTURA WHERE C_CLIENTE != 4;

Page 24: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Update

Sintaxis:

UPDATE tabla

SET campo = valor,

campo = valor,

. . .

{WHERE condición};

Page 25: SQL (I) Tema 3. ¿Qué es SQL? SQL: Structured Query Language (lenguaje de consultas estructurado) Específico para bases de datos relacionales No es imperativo,

Update

Ejemplos:

UPDATE FACTURASET IMPORTE = 1000WHERE C_PAIS = 1 AND C_CLIENTE = 5;

UPDATE FACTURASET IMPORTE = IMPORTE * 0.5WHERE C_PAIS = 1 AND C_CLIENTE = 5;

UPDATE FACTURA F1SET IMPORTE = ( SELECT AVG(IMPORTE) * 1.10FROM FACTURA F2 WHERE F1.C_PAIS = F2.C_PAIS ANDF1.C_CLIENTE = F2.C_CLIENTE );

UPDATE FACTURA F1SET IMPORTE = ( SELECT AVG(F2.IMPORTE) + F1.IMPORTEFROM FACTURA F2 WHERE F1.C_PAIS = F2.C_PAIS ANDF1.C_CLIENTE = F2.C_CLIENTE );