Sei sulla pagina 1di 41

SQL

Structured Query Language

Semana 6

15.10.12 Base de Datos 1


Conectandose a Oracle
Su Username es SYSTEM idntico que para crear la base de
datos.
Para tener acceso a Oracle usted tiene que ser registrado en el
Terminal de trabajo mediante una clave.
Para acceder a SQL hay mas de una opcin
Por ejemplo como se indica a continuacin:

15.10.12 Base de Datos 2


Conectandose a Oracle con SQL Plus

Este programa le pedir que introduzca su


nombre de Usuario y contrasea.

Luego de ingresar su nombre de usuario y


contrasea, pulse Intro.

15.10.12 Base de Datos 3


Conectandose a Oracle

Cuando est conectado a SQL usando la conexin de


Oracle habiendo llenado la contrasea mediante un
comando correcto ver algo as:

15.10.12 Base de Datos 4


Conectandose a Oracle
Usted est ahora listo para comenzar el trabajo en el ambiente
SQL.
Para salir con xito digite el comando Exit Quit en el prompt
SQL>

SQL> exit;

NOTA: Hay otras opciones de conexin a un servidor Oracle como


por ejemplo SQL Developer o mediante una pgina web.

15.10.12 Base de Datos 5


Brevemente:
SQL es el lenguaje de consulta universal para bases de
datos.

SQL ANSI 92 es el estndar SQL.

Existen otras variantes que lo extienden como: T-SQL


(Transact-SQL) y PL/SQL (Procedure Language / SQL)

SQL proporciona tres conjuntos bsicos de sentencias:


DDL (Data Definition Language).
DML (Data Manipulation Language).
DCL (Data Control Language).

15.10.12 Base de Datos 6


Lenguaje de Definicin de Datos (DDL)
Este lenguaje se utiliza para la definicin de tablas,
vistas e ndices entre otros en la base de datos.

Comandos:
CREATE para crear objetos
ALTER para modificar la estructura de objetos
DROP para eliminar objetos
TRUNCATE para eliminar todos los registros de una tabla.
COMMENT para agregar comentarios de un objeto al
diccionario de datos
RENAME para cambiar el nombre de un objeto

15.10.12 Base de Datos 7


Lenguaje de Manipulacin de Datos
(DML)
Como su nombre lo indica provee comandos
para la manipulacin de los datos, es decir,
podemos seleccionar, insertar, eliminar y
actualizar datos.

Comandos:
SELECT: Para consultar o Seleccionar datos.
INSERT: Para Insertar datos.
UPDATE: Para actualizar datos.
DELETE: Para eliminar algunos o varios registros.

15.10.12 Base de Datos 8


Lenguaje de Control de Datos (DCL)
Este lenguaje provee comandos para
manipular la seguridad de la base de datos,
respecto al control de accesos y privilegios
entre los usuarios.

Comandos:
GRANT Para otorgar privilegios a un usuario
sobre un objeto.
REVOKE Para quitar privilegios dados a un
usuario sobre un objeto.

15.10.12 Base de Datos 9


Componentes del Lenguaje SQL
Tipos de Datos: SQL posee varios tipos de datos
para almacenar informacin, los tipos de datos
pueden ser:

Number: Numricos (con o sin decimales).


Char o Varchar2: Alfanumricos.
Date: Fecha y Hora
etc.

Adems, la mayora de gestores de BD actuales


soportan el tipo: BLOB (Binary Large OBject), para
almacenar datos grficos.
15.10.12 Base de Datos 10
Componentes del Lenguaje SQL

Dependiendo de cada gestor de bases de


datos en general se pueden tener los
siguientes tipos de datos:
Nmericos Alfanmericos Fecha Lgico BLOB
Integer char(n) Date Bit Image
Numeric(n,m) varchar(n) DateTime Yes/No Text
Decimal(n)
Float

15.10.12 Base de Datos 11


Componentes del Lenguaje SQL
Operadores:
Aritmticos + Suma
- Resta
* Producto
/ Divisin
** ^ Potencia
Relacionales < Menor que
<= Menor o igual que
> Mayor que
>= Mayor o igual que
<> != Distinto
!< No menor que
!> No mayor que
AND
Lgicos Los operadores lgicos permiten comparar expresiones lgicas
OR
devolviendo siempre un valor verdadero o falso. Los
NOT
operadores lgicos se evalan de izquierda a derecha.
Concatenacin + Se emplea para unir datos de tipo alfanumrico.
15.10.12 Base de Datos 12
Componentes del Lenguaje SQL
Funciones Agregadas: permiten realizar
clculos sobre datos de las tablas.
Estas funciones se incorporan en las consultas
SELECT y retornan un nico valor al operar
sobre un grupo de registros.
Algunas:
MAX() Devuelve el valor mximo.
MIN() Devuelve el valor mnimo.
SUM() Devuelve el valor de la sumatoria
COUNT() Devuelve el nmero de filas
AVG() Devuelve el promedio de los valores del campo
15.10.12 Base de Datos 13
Componentes del Lenguaje SQL
Predicados: son condiciones que se indican
en la clausula WHERE de una consulta SQL.
BETWEEN...AND Comprueba que el valor de un campo est dentro de
un intervalo
LIKE Compara un campo con una cadena alfanumrica.
LIKE admite el uso de caracteres comodines
ALL Seala a todos los elementos de la seleccin de la
consulta
ANY Indica que la condicin se cumplir si la comparacin
es cierta para al menos un elemento del conjunto.
EXISTS Devuelve un valor verdadero si el resultado de una
subconsulta devuelve resultados.
IN Comprueba si un campo se encuentra dentro de un
determinado rango. El rango puede ser una sentencia
SELECT.
15.10.12 Base de Datos 14
Componentes del Lenguaje SQL
Caracteres Comodines: es un carcter que
representa cualquier otro carcter o cadena de
caracteres.
Aunque no son propios de SQL, vale la pena
recordarlos:

Si se desea reemplazar cero un solo carcter:


? (signo de interrogacin) _ (guin bajo)
Si se desea reemplazar cero o varios caracteres:
* (Asterisco) % (Porcentaje)
Si se desea reemplazar un dgito cualquiera (0-9)
# (signo de nmero)

15.10.12 Base de Datos 15


Componentes del Lenguaje SQL
Nomenclatura: la mayora de la sintaxis de
SQL se basa en el estndar, Extended BackusNaur
Form.
Smbolo Significado

<> Encierran parmetros de una orden que el usuario debe


sustituir al escribir dicha orden por los valores que
queramos dar a los parmetros.
[] Indica que su contenido es opcional.
{} Indica que su contenido puede repetirse una o ms
veces.
| Separador de expresiones. Se debe poner al menos uno
de la lista.
15.10.12 Base de Datos 16
Creacin de tablas con SQL en Oracle
CREATE TABLE <nombre_tabla>
(
<nombre_campo> <tipo_datos(tamao)>
[null | not null] [default <valor_por_defecto>]
{,<nombre_campo> <tipo_datos(tamao)>
[null | not null] [default <valor_por_defecto>]}
[, constraint <nombre>
primary key (<nombre_campo>)] }
[, constraint <nombre>
foreign key (<nombre_campo>
{,<nombre_campo>})
references <tabla_referenciada> ( <nombre_campo>
{,<nombre_campo>} ) ]
);
15.10.12 Base de Datos 17
Componentes del Lenguaje SQL
Nomenclatura, por ejemplo:
CREATE TABLE <nombre_tabla>
(
<nombre_campo> <tipo_datos>,
{<nombre_campo> <tipo_datos>}
);

Se aplica la notacin:
CREATE TABLE tbEmpresa
(
Idkit char(5),

nombre varchar2(55),
ubicacion varchar2(255),
.
.
);

15.10.12 Base de Datos 18


Creacin de tablas, Ejemplo 1
CREATE TABLE Autos
(
matricula char(8) not null,
marca varchar2(50),
modelo varchar2(25),
color varchar2(15) not null,
num_kms numeric(14,2) default 0,
constraint Autos_PK primary key (matricula)
);

15.10.12 Base de Datos 19


Creacin de tablas, Ejemplo 2
CREATE TABLE Proveedor
(
Id_Prov numeric(6) not null,
Nom_Prov varchar2(50) not null,
Correo_Prov varchar2(50),
CONSTRAINT Proveedor_PK
PRIMARY KEY (Id_Prov, Nom_Prov)
);

15.10.12 Base de Datos 20


Creacin de tablas, Ejemplo 3
CREATE TABLE Producto (
Id_Prod numeric(10) not null,
Id_Prov numeric(6) not null,
Nom_Prod varchar2(50) not null,
Pre_Prod numeric(10) not null,
CONSTRAINT Producto_PK
PRIMARY KEY (IdProd, Id_Prov, Nom_Prov),
CONSTRAINT Producto_FK FOREIGN KEY (Id_Prov, Nom_Prov)
REFERENCES Proveedor
);

15.10.12 Base de Datos 21


Algunas Aclaraciones
Despus de crear las tablas del ejemplo 2 y 3, cul
seria el orden de eliminacin?
DROP TABLE <nombre_tabla>;

Cul es la diferencia entre char, varchar, varchar2?


char(n): Se usa para almacenar cadenas de longitud fija. Si la
longitud de la cadena es menor que n, el espacio restante
NO es liberado.
varchar2(n): Se usa para almacenar cadenas de longitud
variable. Si la longitud de la cadena es menor que n, el
espacio restante es liberado.
varchar(n): funciona igual que varchar2; sin embargo, no es
recomendado usarlo, dado que Oracle lo tiene reservado
para usos futuros.

15.10.12 Base de Datos 22


Modificacin de tablas con SQL en
Oracle
ALTER TABLE <table_name>
add [CONSTRAINT constraint_name
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ...
column_n);;

Permite:
Aadir campos a la estructura inicial de una tabla.
Aadir restricciones y referencias.

Nota: para ver los atributos de una tabla, se usa el comando

DESCRIBE <nombre_tabla>;
15.10.12 Base de Datos 23
Modificacin de tablas, ejemplo 1.
-- Veamos los campos de la tabla Producto antes de
modificarla.
DESCRIBE Producto;

-- Se agregan dos campos:


ALTER TABLE Producto ADD Uni_Med char(2) default kg;
ALTER TABLE Producto ADD calidad number(10) default 5;

-- Veamos los campos de la tabla Producto despus de


modificarla.
DESC Producto;

15.10.12 Base de Datos 24


Modificacin de tablas

-- Veamos los campos de la tabla Producto antes de


modificarla.
DESCRIBE Producto;

-- Se elimina un campo:
ALTER TABLE Producto DROP COLUMN calidad;

-- Veamos los campos de la tabla Producto despus


de modificarla.
DESC Producto;
15.10.12 Base de Datos 25
Modificacin de tablas
-- Ahora se desea que el campo CALIDAD haga parte de la
clave primaria de la tabla Producto.

-- Consultar las columnas que pertenecen a la clave primaria


de la tabla PRODUCTO.
SELECT COLUMN_NAME FROM user_cons_columns ucc
JOIN user_constraints uc
ON ucc.constraint_name=uc.constraint_name
WHERE ucc.TABLE_NAME = 'PRODUCTO' AND
uc.CONSTRAINT_NAME = 'PRODUCTO_PK' ;

-- Las tablas en rojo son del sistema.

15.10.12 Base de Datos 26


Modificacin de tablas
-- Modificar la clave primaria de PRODUCTO.
ALTER TABLE Producto DROP CONSTRAINT PRODUCTO_PK;

ALTER TABLE Producto ADD CONSTRAINT Producto_PK


PRIMARY KEY (Id_Prod, Id_Prov, Nom_Prov, calidad);

-- Se comprueba si efectivamente se hizo el cambio.


SELECT COLUMN_NAME FROM user_cons_columns ucc
JOIN user_constraints uc
ON ucc.constraint_name=uc.constraint_name
WHERE ucc.TABLE_NAME = 'PRODUCTO' AND
uc.CONSTRAINT_NAME = 'PRODUCTO_PK' ;

15.10.12 Base de Datos 27


Modificacin de Tablas
En la siguiente direccin pueden encontrarse
ms ejemplos sobre el uso de ALTER.
http://www.techonthenet.com/sql/tables/alter_table.php

Por ejemplo, cambiar el nombre de un campo:

ALTER TABLE <table_name> RENAME COLUMN


<old_name> to <new_name>;

15.10.12 Base de Datos 28


DML
Data Manipulation Language

Semana 7

15.10.12 Base de Datos 29


Lenguaje Manipulacin

Sus instrucciones constan de: LOCALIZACIN + ACCIN


Dos tipos de instrucciones: recuperacin y actualizacin

Acciones de actualizacin: insercin, borrado, modificacin


Tres instrucciones: INSERT, DELETE, UPDATE

Accin de recuperacin: seleccin


Instrucciones: SELECT

15.10.12 Base de Datos 30


Insercin de tuplas

INSERT INTO <tabla>


[(<columna> [{,<columna>}]) ]
{ VALUES(<expresin> [{,<expresin>}])
| <subquery> }

Ejemplos:
INSERT INTO stock VALUES(turron,299,AG-23);
INSERT INTO stock (nombre,cod_barras)
VALUES(turron,AG-23);
INSERT INTO stock (nombre,precio,cod_barras)
SELECT (name, price*change, barcode)
FROM products, euro_cot
WHERE euro_cot.name=peseta;
15.10.12 Base de Datos 31
Borrado y Modificacin

DELETE [FROM] <tabla> [<alias>]


[WHERE <condicin>]
Ejemplos:
DELETE stocks;
DELETE FROM stocks WHERE f_caducidad<SYSDATE;

UPDATE <tabla> SET


{<columna> = {<expresin>|<subquery>}
| (<columna> [{,<columna>}])=<subquery> }
[WHERE <condicin>]
Ejemplos:
UPDATE gente SET edad=25 WHERE nombre=Javi;
UPDATE stock s SET precio =
SELECT s.precio*b.change FROM euro_cot b
WHERE b.name=peseta;

15.10.12 Base de Datos 32


Control Transaccional
En Oracle, los cambios que se operan sobre el contenido de la Base
se realizan sobre transacciones.
Una transaccin es un conjunto de operaciones que se ejecutan
conjuntamente sobre la Base
Al actualizar la Base, los cambios slo tendrn lugar si se perpetra la
transaccin (en otro caso, se pierden)

Para que una transaccin se perpetre: COMMIT;

Para que una transaccin se elimine: ROLLBACK;


(este comando se asemeja a una operacin deshacer)

15.10.12 Base de Datos 33


Consulta: la sentencia SELECT
SELECT [ALL|DISTINCT] <lista de seleccin>
FROM <clusula de origen>
[WHERE <condicin> ]
[GROUP BY <expresin> [HAVING <condicion>]]
[{UNION|UNION ALL|MINUS|INTERSECT} <query>]
[ORDER BY <expresin> [ASC|DESC]] ;

La clusula FROM crea una tabla resultado (denominada rea de trabajo)


La clusula WHERE filtra las tuplas de esa tabla (segn una condicin)
La lista de seleccin describe qu informacin se desea obtener (proyeccin)
La clusula ORDER BY ordena los resultados (segn una clave de ordenacin)
Los operadores de consulta (UNION,...) combinan consultas (compatibles)
y la clusula GROUP BY, agrupa campos cuando se usa funciones.

15.10.12 Base de Datos 34


Sentencia SELECT Clusula FROM
La clusula From contiene una tabla (con o sin alias), o varias
tablas combinadas. Las combinaciones se revisan a continuacin:
Producto Cartesiano:
... FROM Gente CROSS JOIN Clientes FROM Gente, Clientes
Combinacin natural:
... FROM Gente [NATURAL] JOIN Clientes
[USING <columnas> | ON <col_a>=<col_b> [AND...]]

... FROM X NATURAL JOIN Y...


Combinacin Natural por todos los campos que se llamen igual en ambos
esquemas
... FROM X NATURAL JOIN Y USING (<columnas>)...
Combinacin Natural por los campos especificados, que han de llamarse
Igual en ambas tablas
... FROM X JOIN Clientes ON <condicin>...
Combinacin por la condicin especificada (puede ser natural, si es de
igualdad)

15.10.12 Base de Datos 35


Consulta: Sentencia SELECT
<lista de seleccin>: Proyeccin de la Consulta
Se trata de una lista con los datos que se desea obtener

Los elementos de la lista separados por comas.

Ha de ser posible obtenerlas del rea de trabajo (From).

Puede incluir:
Atributos del esquema de relacin del rea de trabajo, o el comodn (%)
Variables del sistema, como por ejemplo SYSDATE
Pseudo-columnas, tal como por ejemplo ROWNUM
Funciones de agregacin, si se ha establecido criterio de agrupacin
Expresiones construidas a partir de lo anterior

15.10.12 Base de Datos 36


Sentencia SELECT
Clusula WHERE
Selecciona tuplas siguiendo una condicin, que puede ser:
una comparacin (=, !=, <, >, <=, >=) de expresiones
- pueden ser listas de expresiones o una subquery
- la segunda puede ir cuantificada (SOME, ANY, ALL)
test de inclusin (en conjunto o subquery):
<expr> [NOT] IN {<expr_list>|subquery}
test de inclusin (en rango):
<expr> [NOT] BETWEEN <expr> AND <expr>
test de valor nulo:
<expr> IS [NOT] NULL
test de semejanza:
<expr_caracteres> [NOT] LIKE <patrn>
test de existencia:
EXISTS subquery
operacin lgica (NOT, AND, OR) sobre otras condiciones

15.10.12 Base de Datos 37


Sentencia SELECT Ejemplos
SELECT * FROM EMPLEADOS;
SELECT SYSDATE FROM DUAL;
SELECT COUNT(X) FROM FACTURAS;
SELECT rownum, nombre FROM ALUMNOS;

SELECT * FROM LIBROS


MINUS
SELECT * FROM NOVELAS;

SELECT * FROM PERSONAS JOIN COCHES;

SELECT *
FROM PERSONAS p, COCHES c
WHERE p.DNI=c.DNI;

SELECT marca, modelo


FROM COCHES
WHERE precio < 10000000;

SELECT ttulo FROM LIBROS WHERE rownum<=5;

38 Base de Datos 15.10.12


Sentencia SELECT
REA de TRABAJO
El rea de trabajo es una tabla que el gestor crea para operar.
Es una tabla temporal, y despus de la consulta ser destruida.
Introducir en ella las tuplas de las tablas en la clusula FROM
y excluyendo aquellas que no verifican la clusula WHERE
y de la que se podrn proyectar cualesquiera atributos que contenga
Dado que es una tabla, se podr utilizar a su vez en una clusula
FROM de una consulta superior (anidando consultas en el
origen, como se hace en el lgebra Relacional):

SELECT A.Nombre, A.Apellidos, B.edad


FROM PERSONAS A NATURAL JOIN
(SELECT MAX(edad) edad FROM PERSONAS) B
WHERE equipo=ALIANZA;

15.10.12 Base de Datos 39


Sentencia SELECT
Clusula GROUP BY
La operacin de agrupamiento
- comienza como una consulta normal, creando un rea de trabajo
* sobre una tabla (FROM), excluyendo segn un criterio (WHERE)
* se crear una primera rea de trabajo con un conjunto de
tuplas
- agrupa las tuplas originales en subconjuntos (segn un criterio)
- crea una nueva rea de trabajo, con una tupla por cada subconjunto
- puede excluir tuplas de esta segunda rea de trabajo siguiendo un
criterio para el rea agrupada (HAVING)

De esta rea slo se podrn proyectar


atributos pertenecientes al criterio (expresin) de agrupamiento
funciones de agregacin sobre cualquier otro atributo
pseudocolumnas, variables, constantes, etc.

15.10.12 Base de Datos 40


Sentencia SELECT
Clusula GROUP BY

[GROUP BY <expresin> [HAVING <condicin>]]

La expresin de agrupamiento es ese criterio para hacer subconjuntos


La clusula HAVING excluye subconjuntos que no cumplan la condicin

Ejemplo:
SELECT color,COUNT(X),MAX(talla),MIN(talla),AVG(precio)
FROM CAMISAS
WHERE tejido=ALGODON
GROUP BY color HAVING COUNT(X)>5 AND rownum<10;

15.10.12 Base de Datos 41

Potrebbero piacerti anche