Laboratorio de Bases de Datos
Introducción a SQL sobre Oracle
Luis A. González Ares
[email protected] Lenguaje SQL
Contenido
• Lenguaje SQL sobre Oracle.
− Descripción de las características y elementos fundamentales del lenguaje.
− Ejercicios sobre la sentencia SELECT.
− Otras sentencias DML.
− Sentencias DDL.
− Vistas.
− Indices.
− Seguridad.
− Transacciones.
− Catálogo.
Nota
El presente material es un resumen de lo impartido en las clases de la Facultad de Informática,
que se entrega como documento de apoyo.
Esta obra está bajo una licencia Reconocimiento-NoComercial-SinObraDerivada de Creative
Commons (Attribution-NonCommercial-NoDerivatives).
Introducción a SQL sobre Oracle – Luis Glez. Ares –
[email protected]
1
[email protected] Lenguaje SQL
Introducción a SQL
SQL (Structured Query Language : Lenguaje de Consulta Estructurado)
Acceder a los datos de un SGBD relacional (crear, consultar, modificar).
Evolución:
• SEQUEL (Structured English QUEry Language). IBM para SYSTEM R.
• SQL-86 o SQL1. ANSI e ISO en 1986. Revisado en 1989.
• SQL-92 o SQL-2. 1992.
• SQL:1999, SQL:2003.
Dos vertientes fundamentales en los lenguajes de BD relacionales:
• DDL o LDD (lenguaje de definición de datos).
• DML o LMD (lenguaje de manipulación de datos).
Otras características:
• Aspectos de control (seguridad, transacciones, concurrencia, etc.),
• Posibilidad de incluir SQL en lenguajes de propósito general como C, Pascal, Java, etc.
• Lenguaje no procedural (el qué frente al cómo)
• Actúa sobre un conjunto de registros o filas.
• Base teórica: se fundamenta en el álgebra relacional y en el cálculo relacional.
• Lenguaje para todo tipo de usuarios de un SGBD relacional.
• Trabaja con tablas, columnas y filas, no con relaciones, atributos y tuplas. Una tabla es
• No es un lenguaje de propósito general.
diferente a una relación, ya que puede tener filas repetidas.
Introducción a SQL sobre Oracle – Luis Glez. Ares –
[email protected]
2
[email protected] Lenguaje SQL
SQL*Plus de Oracle
Los fabricantes amplian las características del estándar pero dejan elementos sin implementar.
SQL*Plus: Interface de Oracle que permite ejecutar sentencias SQL y comandos propios.
Entrar en SQL*Plus (servidor oracle o xurxo):
$ sqlplus / [@filename]
Comandos SQL*Plus. Uno por fila:
SQL> DESC[RIBE] emp
Nombre
----------------------------------------- -------- --------------------------
Nulo?
Tipo
EMPNO
ENAME
JOB
MGR
HIREDATE
SAL
COMM
DEPTNO
Sentencias SQL: Multifila y acaban en ;
SQL> SELECT *
FROM
emp;
Salir de SQL*Plus:
SQL> EXIT
NOT NULL NUMBER(4)
VARCHAR2(10)
VARCHAR2(9)
NUMBER(4)
DATE
NUMBER(7,2)
NUMBER(7,2)
NUMBER(2)
Introducción a SQL sobre Oracle – Luis Glez. Ares –
[email protected]
3
[email protected] Lenguaje SQL
SQL*Plus de Oracle (cont.)
Crear el fichero de configuración login.sql y ubicarlo en el directorio de llamada a SQL*Plus.
Por ejemplo:
login.sql
$ cat
def_editor=vi
set pages 50
set feed 1
column empno format
column mgr
column sal
column comm
column deptno format 90
9990
format 9990
format 99,990
format
99,990
SQL*Plus usa un buffer para almacenar la última sentencia SQL ejecutada (no afecta a los
comandos SQL*Plus). Incorpora un editor de líneas elemental para realizar cambios mínimos
en esa sentencia SQL, como visualizarla (LIST), editarla (ED), etc.
Algunas órdenes muy habituales son:
L[IST] [n [m]]
ED[IT] fichero[.sql]
R[UN]
/
SAV[E] fichero[.sql]
GET fichero[.sql]
Visualiza líneas del buffer
Edita un fichero [.sql]
Ejecuta lo almacenado en el buffer
Ejecuta lo almacenado en el buffer
Almacena el buffer en un fichero
Pasa al buffer un fichero
Introducción a SQL sobre Oracle – Luis Glez. Ares –
[email protected]
4
[email protected] Lenguaje SQL
SQL*Plus de Oracle (cont.)
Una lista más amplia de órdenes:
L[IST] [n [m]]
A[PPEND] texto
C[HANGE] /viejo/nuevo/
C[HANGE] /texto/
CL[EAR] BUFF[ER]
DEL
I[NPUT] [texto]
R[UN]
/
[n [m]]
Visualiza líneas del buffer
Añade texto al final de la línea
Cambia una cadena de caracteres por otra
Una forma de "cambiarla"
Elimina los datos del buffer
Suprime líneas
Añade una línea nueva despues de la "actual"
Ejecuta lo almacenado en el buffer
Ejecuta lo almacenado en el buffer
n
n texto
0 texto
SAV[E] fichero[.sql]
GET fichero[.sql]
STA[RT] fichero[.sql]
@fichero[.sql]
ED[IT] fichero[.sql]
SPO[OL] [fichero[.lst]]
SPO[OL] {OFF/OUT}
HELP [tema]
HO[ST] comando
!comando
Nos posiciona en una línea del buffer
Introduce una línea con "texto" como contenido
antes de la línea "n".
Lo mismo, pero antes de la primera línea.
Almacena el buffer en un fichero
Pasa al buffer un fichero
Ejecuta un fichero [.sql]
Idem
Edita un fichero [.sql]
Define un fichero de registro de sesión
Finaliza el registro de la sesión
Ayuda elemental sobre algunos temas
Ejecuta un comando del sistema operativo
Ejecuta un comando del sistema operativo
Introducción a SQL sobre Oracle – Luis Glez. Ares –
[email protected]
5
[email protected] Lenguaje SQL
Sentencias SQL
• Lenguaje de definición de datos: Permite crear, manipular y eliminar estructuras
CREATE TABLE
DROP TABLE
CREATE VIEW
DROP VIEW
ALTER TABLE
CREATE INDEX
. . .
Crea una tabla.
Elimina una tabla.
Crea una vista o tabla virtual.
Elimina una vista.
Modifica la estructura de una tabla.
Crea un índice para una tabla.
• Lenguaje de manipulación de datos: Permite consultar, modificar, introducir y eliminar
datos de las estructuras de una BD relacional.
SELECT
INSERT
UPDATE
DELETE
Obtiene datos de la BD.
Introduce datos.
Actualiza datos.
Borra datos.
• (Oracle) Lenguaje de control de datos: Sentencias que realizan otras funciones, por
ejemplo sobre proceso transaccional, concurrencia, etc.
COMMIT
ROLLBACK
GRANT
REVOKE
. . .
Por ejemplo:
DROP TABLE mitabla;
Confirma una transacción.
Anula una transacción.
Otorga permisos a usuarios en objetos de la BD.
Elimina permisos a usuarios en objetos de la BD.
SELECT empno, ename
FROM
emp;
Introducción a SQL sobre Oracle – Luis Glez. Ares –
[email protected]
6
[email protected] Lenguaje SQL
Tipos de Datos
Cada columna de una tabla tiene un tipo de dato asignado, que determina los valores posibles
y las operaciones permitidas sobre esos valores.
Un tipo de dato puede asignarse a un dominio, con lo que se asignará a cada columna de
ese dominio.
• Tipos de datos numéricos
− Oracle
NUMERIC(m[,n]) o NUMBER(m[,n])
NUMBER(5,2)
Ej.: NUMBER(3)
• Tipos de datos carácter o alfanuméricos
− Oracle
− SQL2
INTEGER o INT, SMALLINT
FLOAT, REAL, DOUBLE PRECISION
DECIMAL(m,n) o DEC(m,n) o NUMERIC(m,n)
− SQL2
CHAR(n) o CHARACTER(n)
CHAR[(n)]
Ej.: CHAR(20)
Ej.: ’micasa’
VARCHAR2[(n)]
LONG
DATE
Ej.: ’06-JAN-2002’
Ej.: ’06-JAN-2002 13:21’
• Tipos de datos temporales
− Oracle
CHAR
’A’
VARCHAR(n), CHARVARYING(n), CHARACTER VARYING(n)
− SQL2
YEAR, MONTH, DAY
HOUR, MINUTE, SECOND
DATE
TIME
TIMESTAMP
INTERVAL
Introducción a SQL sobre Oracle – Luis Glez. Ares –
[email protected]
7
[email protected] Lenguaje SQL
Tablas de los ejemplos
Tenemos una tabla de empleados (EMP) y otra de departamentos (DEPT).
SQL> DESC[RIBE] emp
Tipo
Nulo?
Nombre
----------------------------------------- -------- --------------------------
EMPNO
ENAME
JOB
MGR
HIREDATE
SAL
COMM
DEPTNO
VARCHAR2(10)
VARCHAR2(9)
NUMBER(4)
DATE
NUMBER(7,2)
NUMBER(7,2)
NUMBER(2)
NOT NULL NUMBER(4)
SQL> DESCRIBE dept
Nombre
----------------------------------------- -------- -------------
DEPTNO
DNAME
LOC
VARCHAR2(14)
VARCHAR2(13)
NOT NULL NUMBER(2)
Nulo?
Tipo
Los datos de cada tabla se obtienen con la sentencia SELECT:
SQL> SELECT *
FROM
emp;
SQL> SELECT *
FROM
dept;
Introducción a SQL sobre Oracle – Luis Glez. Ares –
[email protected]
8
[email protected] Lenguaje SQL
Tablas de los ejemplos(cont.)
SQL> SELECT *
FROM
emp
JOB
MGR HIREDATE
SAL
EMPNO ENAME
COMM DEPTNO
----- ---------- --------- ----- -------- ------- ------- ------
20
30
30
20
30
30
10
20
10
30
20
30
20
10
7902 17/12/80
7698 20/02/81
7698 22/02/81
7839 02/04/81
7698 28/09/81
7839 01/05/81
7839 09/06/81
7566 09/12/82
17/11/81
7698 08/09/81
7788 12/01/83
7698 03/12/81
7566 03/12/81
7782 23/01/82
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS
7900 JAMES
7902 FORD
7934 MILLER
CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDENT
SALESMAN
CLERK
CLERK
ANALYST
CLERK
800
1,600
1,250
2,975
1,250
2,850
2,450
3,000
5,000
1,500
1,100
950
3,000
1,300
300
500
1,400
0
SQL> SELECT *
FROM
dept
DEPTNO DNAME
------ -------------- -------------
LOC
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS
NEW YORK
DALLAS
CHICAGO
BOSTON
Introducción a SQL sobre Oracle – Luis Glez. Ares –
[email protected]
9
[email protected] Lenguaje SQL
Valores nulos
El valor nulo NULL representa la ausencia de información, o bien por desconocimiento del
dato, o bien porque no procede.
Debe diferenciarse de cualquier otro valor, entre ellos del valor 0 si se trata de un dato
numérico, y de la cadena de caracteres vacía, si es un dato de tipo carácter.
Una columna de una tabla podrá admitir valores nulos (NULL) o no (NOT NULL). Por defecto
admite nulos.
Una forma de indicar la no admisión de valores nulos:
CREATE TABLE emp(
VARCHAR2(4) NOT NULL,
VARCHAR2(15) NOT NULL,
VARCHAR2(9),
VARCHAR2(4),
empno
ename
job
mgr
hiredate DATE,
sal
comm
deptno
NUMBER(7,2),
NUMBER(7,2),
VARCHAR2(2)
)
Incluyendo un valor nulo en una fila:
INSERT INTO emp VALUES(’1245’, ’José’, ’Analista’, NULL,
’12-Jan-1997’, 34000, 300.05, ’12’)
INSERT INTO emp VALUES(’1245’, ’José’, ’Analista’, NULL,
TO_DATE(’12/01/1997’, ’dd/mm/yyyy’), 34000, 300.05, ’12’)
Introducción a SQL sobre Oracle – Luis Glez. Ares –
[email protected]
10
[email protected] Lenguaje SQL
Expresiones
Una expresión es la formulación de una secuencia de operaciones, o sea, una combinación de
operadores, operandos y paréntesis, que, cuando se ejecuta, devuelve un único valor como
resultado.
Los operandos pueden ser constantes, no
Comentarios de: Laboratorio de Bases de Datos - Introducción a SQL sobre Oracle (0)
No hay comentarios