Publicado el 11 de Julio del 2017
725 visualizaciones desde el 11 de Julio del 2017
145,2 KB
28 paginas
INDICE
Continuacion SQL
Indice
1. Continuacion del SQL como DML (Lenguaje de Manipulacion de Datos)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.
1.2. Borrado de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Modicacion de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Insercion de datos
2. SQL como DDL (Lenguaje de Denicion de Datos)
2.3.1. Alteracion de atributos
2.1. Creacion de tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1. Denicion de atributos . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2. Denicion de restricciones . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Borrado de Tablas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3. Modicion (Alteracion) de Tablas . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
2.4. Creacion de ndices con SQL . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5. Vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1. Creacion de Vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.2. Borrado de vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.3. Ventajas del uso de vistas . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.4. Consultas sobre vistas . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.5. Actualizacion de vistas . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.6. With check option . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6. Seguridad y permisos (en Oracle) . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.1. Los conceptos de \Role" y \PUBLIC" . . . . . . . . . . . . . . . . . .
2.6.2. Gestion de permisos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.3. Permisos globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7. Transacciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3. El catalogo
Laboratorio de Bases de Datos
1
1
2
2
2
3
3
4
7
7
7
9
10
11
12
13
13
14
19
20
20
21
21
23
26
i
1. Continuacion del SQL como DML (Lenguaje de
Manipulacion de Datos)
1.1.
Insercion de datos
Para insertar datos en una tabla, usaremos la sentencia INSERT, que tiene la siguiente
sintaxis:
INSERT INTO <nombre_tabla> [(<lista campos>)] VALUES (<lista valores>)
La lista de campos (atributos de la tabla) es opcional. Si se omite, es lo mismo que si se
incluyese la lista de todos los atributos de la tabla, siguiendo el orden denido en la sentencia
de creacion de la tabla. Si se incluye, pueden indicarse solo una parte de los campos (o todos)
en el mismo o distinto orden de la denida en la creacion de la tabla. As, las dos sentencias
siguientes son equivalentes:
INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
VALUES (8555, ’Jose’, ’ANALISTA’, 7369, ’12-FEB-02’, 3000, 300,10);
INSERT INTO EMP VALUES (8555, ’Jose’, ’ANALISTA’, 7369, ’12-FEB-02’, 3000, 300,10);
La lista de valores, por supuesto, debe contener tantos valores como atributos hay en
la lista de campos, y corresponderse un al tipo del atributo correspondiente. Por supuesto,
el valor NULL puede ser usado, si el campo correspondiente fue denido aceptando valores
nulos.
Si se usa la lista de campos, podemos variar el orden de los campos, o omitir alguno de
ellos. En los campos omitidos se insertaran nulos, o el valor por defecto (se as se denio para
el campo). Por ejemplo, las siguientes tres sentencias tambien seran equivalentes.
INSERT INTO DEPT(DEPTNO,DNAME) VALUES(50,’COMPRAS’);
INSERT INTO DEPT (DNAME,DEPTNO) VALUES (’COMPRAS’,50);
INSERT INTO DEPT VALUES (50,’COMPRAS’, NULL);
Ademas de esta forma de insertar datos, que se realiza siempre de tupla en tupla, tambien
se pueden insertar varias tuplas con una sentencia, obteniendo los datos mediante una
sentencia SELECT (una consulta) sobre una o mas tablas. La sintaxis general es la siguiente:
INSERT INTO <nombre_tabla> [(<lista de campos>)]
<Sentencia SELECT>
La unica restriccion es que la sentencia select debe seleccionar el mismo numero de
atributos que campos hay en la lista de campos, y ser union-compatibles. Como en el metodo
anterior, si en la lista de campos se omite, se asume que el select devuelve una lista con todos
los atributos de la tabla en el mismo orden que el establecido en la creacion de la tabla. Por
ejemplo, supongamos que tenemos una tabla COPIA_DEPT que tiene exactamente la misma
estructura que a tabla DEPT. La siguiente sentencia servira para insertar varias tuplas en la
tabla DEPT a partir de una consulta.
INSERT INTO DEPT (DEPTNO, DNAME, LOC)
SELECT C.DEPTNO, DNAME, LOC
FROM COPIA_DEPT C, EMP E
WHERE C.DEPTNO=E.DEPTNO
1
Laboratorio de Bases de Datos
1.2. Borrado de datos
El borrado de datos se realiza mediante la sentencia DELETE, que borra tuplas de una
tabla. La sintaxis general es:
DELETE FROM <nombre_tabla>
[WHERE <Condicion>]
Donde la Condicion es cualquier condicion valida en SQL, es decir, cualquier condicion que
podramos poner en la clausula WHERE de una sentencia SELECT. Por ejemplo,
DELETE FROM EMP
WHERE SAL > 1500
AND JOB <> ’MANAGER’
Es importante indicar que la sentencia DELETE borra siempre tuplas completas, nunca
determinados atributos de una tupla. La clausula WHERE es opcional, y se no se utiliza, se
borraran todas las tuplas de la tabla.
1.3. Modicacion de Datos
La sentencia UPDATE permite modicar los valores almacenados en una tabla, es decir,
cambiar el valor que hay en un atributo de una tupla por otro valor. Su sintaxis es:
UPDATE <nombre_tabla>
SET <atributo_1> = <expre1>
[,<atributo_2>=<expre2>...]
WHERE <Condicion>
Un ejemplo,
UPDATE EMP
SAL = SAL*1.06,
SET
JOB = ’ANALYST’
WHERE EMPNO = 7369
La sentencia de actualizacion examina todas las tuplas que satisfagan a condicion impuesta
en la clausula WHERE (si no se indica, los cambios afectaran a todas las tuplas de la tabla).
Para cada una de estas las, el atributo tomara el nuevo valor, que puede ser una constante
(como en JOB = ’ANALYST’) o una expresion. Las expresiones pueden contener atributos de
la tabla que se esta actualizando, incluso el mismo nombre de atributo que esta a la izquierda
del igual. En este caso, el valor del atributo a la derecha del igual es el valor de dicho atributo
antes de realizarse la actualizacion. Es decir, la asignacion SAL=SAL*1.06 indica que el salario
actual se va incrementar en un 6 % respecto al salario anterior.
2. SQL como DDL (Lenguaje de Denicion de Datos)
Hasta ahora hemos utilizado el
lenguaje SQL como un DML (Data Manipulation
Language) o Lenguaje de Manipulacion de Datos, es decir, para añadir, borrar, modicar o
consultar datos. Pero ademas el SQL puede utilizarse como DDL (Data Denicion Language)
o Lenguaje de Denicion de Datos; esto es, podemos utilizar SQL para crear, modicar o
borrar diferentes objetos de bases de datos como tablas, vistas o ndices.
2
2.1 Creacion de tablas
2.1. Creacion de tablas
La sentencia SQL de creacion de tablas es CREATE TABLE, y en ella se denen por un lado
los atributos que componen la tabla, y por otro las restricciones que afectan a la tabla, tales
como claves primarias o externas. La sintaxis general de la sentencia de creacion se compone
de una lista (separada por comas) de deniciones de atributos seguida opcionalmente de una
lista de deniciones de restricciones:
CREATE TABLE <nombre_tabla>(
<definicion atributo 1>,
<definicion atributo 2>,
...
<definicion atributo n>,
<definicion restriccion 1>,
<definicion restriccion 2>,
...
<definicion restriccion m>
);
A continuacion veremos como realizar cada una de estas deniciones.
2.1.1. Denicion de atributos
Una denicion de atributo describe el nombre y tipo de datos asociados al atributo,
as como si admite o no valores nulos, valores por defecto y restricciones asociadas al atributo.
La sintaxis general es la siguiente:
<nombre_atributo> <tipo> [DEFAULT <valor>] [NOT [NULL]] [<restriccion>]
Donde
<nombre_atributo> es el nombre del atributo.
<tipo> es el tipo del atributo, que sera uno de los tipos de datos vistos anteriormente.
DEFAULT <valor> indica el valor por defecto que almacenara el campo si se inserta una
tupla sin indicar un valor para ese atributo (si no se indica un valor por defecto, se
insertara un valor nulo). <valor> sera, evidentemente, una constante del tipo denido
para el atributo. Existen algunos valores predenidos para algunos tipos de datos. As,
tenemos valores como SYSDATE, que nos da la fecha actual, o USER que es un string que
nos da el nombre del usuario (en el caso de Oracle). Tambien se puede usar el valor NULL
para cualquier tipo de datos, siempre que el atributo lo admita. Sin embargo, hacer esto
no tiene demasiado sentido, ya que es el comportamiento por defecto si no se indica un
valor DEFAULT.
[NOT] NULL indica si el atributo acepta valores nulos (NULL) o no los acepta (NOT NULL). Si
no se indica nada se supone que s los acepta.
Comentarios de: Continuación SQL (1)