PL SQL
PL SQL
INTRODUCCION AL SQL
se ha pretendido introducir y explicar los comandos mas utilizados con sus opciones más útiles, dejando los
detalles más específicos a los manuales de referencia.
TERMINOLOGIA
SQL (Structured Query languaje o Lenguaje de Consultas Estructurado) es el que permite la comunicación
con un Sistema Gestor de Bases de Datos. A continuación se mostraran algunos Sistemas que trabajan con
SQL.
El SQL es un lenguaje unificado, lo utilizan todo tipo de usuarios, desde el administrador de la base de
datos, hasta el usuario final, permite la realización de cualquier consulta de datos.
Las sentencias de SQL se clasifican como parte del DDL o del DML.
DDL Lenguaje de Definición de Datos: Son las sentencias SQL que permiten definir los objetos de la Base
de Datos.
DML Lenguaje de manipulación de datos: Son las sentencias SQL que permiten manejar la base de datos.
Siempre que se realiza alguna operación en la base de datos, no se realiza directamente sobre la tabla sino
sobre una copia local de esta. De tal manera que si queremos que los resultados de estas operaciones se
trasladen a la base de datos, hay que confirmar dicha operación con el comando commit. Si no queremos
que estos resultados modifiquen la base de datos (Deshacer) se utiliza el comando rollback, aunque hay que
hacer la claridad que algunas sentencias SQL no pueden volverse atrás.
CREACION
basdatos.tripod.com/SQL.html 1/15
7/2/2020 PL/SQL
El primer paso en cualquier base de datos es la definición de los objetos básicos donde se agrupará la
información. Los objetos básicos con que trabaja SQL son las tablas. Una tabla es un conjunto de celdas
agrupadas en filas y columnas.
Nombre de la tabla (longitud máxima 30 caracteres y debe comenzar con carácter alfabético)
Nombre de cada columna
Tipo y tamaño de los datos almacenados en cada columna
Información adicional, restricciones, etc.
La sintaxis del comando SQL que permite crear una tabla es el siguiente.
TIPOS DE COLUMNAS
RESTRICCIONES
Las restricciones se utilizan para garantizar que los datos cumplan unas condiciones especificas. SQL
maneja las siguientes.
basdatos.tripod.com/SQL.html 2/15
7/2/2020 PL/SQL
NOT NULL Obliga a que la columna tenga un valor no nulo. Los valores nulos son
diferentes de 0 y el espacio en blanco.
UNIQUE Evita valores repetidos en una columna, admitiendo valores nulos.
CHECK Verifica que se cumpla una condición especifica
DEFAULT Estable un valor por defecto para esta columna, si no se le asigna ninguno.
PRIMARY KEY Establece columna o conjunto de columnas que hacen parte de la clave
primaria. Solo puede existir una clave primaria por tabla. Puede ser referenciada como clave foránea
por otras tablas.
FOREIGN KEY Establece que el contenido de esta columna será uno de los valores
contenidos en una columna de otra tabla o de la misma. Se puede obligar que cuando una fila de la
tabla maestra sea borrada, todas las filas de la tabla detalle cuya clave foránea coincida con la clave
borrada se borren tambien.
Ejemplos.
DESCRIBE
Comando SQL muy útil para conocer la estructura de una tabla, las columnas que la forman, su tipo y sus
restricciones.
Ejemplo :
DESC estudiante
Cod_Est number(8)
Nom_Est not null varchar2(35)
Car_est number(3)
Pat_est number(8)
Otros_datos varchar(40)
MODIFICACION
basdatos.tripod.com/SQL.html 3/15
7/2/2020 PL/SQL
Una vez creada una tabla puede ocurrir que se necesita una columna adicional o modificar una existente.
Esta operación se realiza con el comando ALTER TABLE.
Tambien es posible modificar una tabla añadiendo o eliminando restricciones. El Comando es el siguiente:
ELIMINACION DE TABLAS
EL comando para eliminar físicamente una tabla de la estructura de la base de datos es:
Con la estructura de la tabla ya definida se pueden insertar los datos, modificarlos o borrarlos de la tabla.
Esto se realiza con el lenguaje DML. Recuerde que todas estas sentencias requieren la orden commit para
actualizar las tablas o rollback para deshacer los cambios efectuados.
INSERCION
ACTUALIZACION
BORRADO
SELECCIÓN
La selección de los datos en SQL se hace mediante la sentencia select. Consta de cuatro partes:
basdatos.tripod.com/SQL.html 4/15
7/2/2020 PL/SQL
La sentencia select seguida de la descripccion de lo que se desea ver, los nombres de las columnas a
seleccionar. Obligatorio.
La clausula from seguida de la especificacion de las tablas de las que se ha de obtener los datos.
Obligatorio.
La clausula where seguida por un criterio de selección, es decir, una condicion. Opcional.
La clausula order by seguida por el criterio de ordenacion. Opcional
Sintaxis:
SELECT {* | {nombre-columna(s),}
FROM {nombre-tabla(s),}
[WHERE condicion]
[ORDER BY {expresion | nombre-columna [ASC | DESC]}];
OFICINA
PRODUCTO
CLIENTE
80 JUAN 150,000 95
81 PEDRO 120,000 96
82 ANA 130,000 96
VENDEDOR
PEDIDOS
1 80 101 5 7,500
2 81 101 6 9,000
3 81 102 5 11,000
4 82 103 4 32,000
basdatos.tripod.com/SQL.html 5/15
7/2/2020 PL/SQL
basdatos.tripod.com/SQL.html 6/15
7/2/2020 PL/SQL
SQRT (l) Calcula la raíz cuadrada de l Select sqrt (36) from dual;
Resultado = 6
CONSULTAS SIMPLES
SELECT nombre
FROM oficina
WHERE región = ' CENTRO' ;
SELECT *
FROM vendedor
WHERE ventas > meta ;
SELECT director
FROM oficina;
110
115
120
120
Como el código 120 tiene las oficinas 030 y 040 a cargo aparecera 2 veces. Esto se soluciona utilizando la
clausula DISTINTC.
basdatos.tripod.com/SQL.html 7/15
7/2/2020 PL/SQL
Mostrar los Clientes con el respectivo nombre del vendedor que lo atiende.
Mostrar ventas realizadas indicando nombres del cliente y del producto en vez de los códigos.
CONSULTAS SUMATORIAS
COUNT {* | (nombre- Cuenta numero de filas Select count (*) from oficina;
columna)} Cuenta el numero de oficinas.
AVG (nombre-columna) Calcula el promedio de todos los Select avg(meta) from vendedor;
valores de la columna Calcula promedio de la meta
SUM (nombre-columna) Calcula suma de los valores de Select sum(valor) from pedidos
la columna Calcula suma de todas las ventas
realizadas.
SELECT count(codven)
FROM vendedor
WHERE ventas > meta;
basdatos.tripod.com/SQL.html 8/15
7/2/2020 PL/SQL
Para rompimientos de control se utiliza la cláusula group by . Si la consulta solicitada requiere que algún
conjunto de filas cumpla con una condición, se utiliza el comando having en vez del where.
Cliente Total
7,500
20,000
32,000
De la tabla de pedidos mostrar el promedio de compras de aquellos clientes que realizaron en total pedidos
superiores a los $ 15,000
SUBCONSULTAS
Otra de las facilidades que nos permite SQL es incluir una o mas consultas dentro de una consulta, como se
muestra a continuación.
Mostrar el total de compras de aquellos clientes que han realizado mas de 2 compras
Mostrar clientes que son atendidos por vendedores de las oficinas región Centro
SELECT codcli
FROM cliente
WHERE codven IN (SELECT codven
FROM vendedor
basdatos.tripod.com/SQL.html 9/15
7/2/2020 PL/SQL
SELECT codcli
FROM cliente, vendedor, oficina
WHERE cliente.codven = vendedor.codcli
AND vendedor.codofi = oficina.codofi
AND oficina.region = ' CENTRO ';
INDICES
Los índices en SQL almacenan valores y punteros a las filas donde los valores se producen.
Ej;
La sentencia no dice si existe índice sobre la columna nombre y la consulta se llevara a cabo, exista índice o
no. Si no existe, hay que recorrer secuencialmente la tabla producto fila por fila. Si Existe examina el índice y
sigue al puntero para encontrar la(s) fila(s).
La búsqueda en índices es muy rápida, pasar del índice a la fila tambien es muy rápido ya que el índice
informa al DBMS en que lugar del disco esta localizada la fila. Tiene la desventaja de que ocupa espacio
adicional y que existirán tiempos adicionales en las operaciones INSERT y UPDATE.
Sintaxis:
VISTAS
Una vista es una consulta que esta permanentemente almacenada en la base de datos y a la que se le asigna
un nombre. Es como una tabla virtual. No puede ser modificada, gasta espacio pero es muy veloz para
consultas y se actualiza automáticamente.
Sintaxis:
basdatos.tripod.com/SQL.html 10/15
7/2/2020 PL/SQL
SEGURIDAD SQL
Siempre que un usuario crea una tabla, se convierte en el dueño. Si quiere añadir o quitar permisos sobre
una tabla determinada a otros usuarios debe definir estos con la cláusula GRANT.
Sintaxis:
Como ya hemos visto, con SQL se puede crear la estructura de la base de datos, se pueden actualizar
estos, pero la herramienta más poderosa es para crear informes refinados, rápidos y bien formateados.
Permitiendo un manejo sencillo sobre los títulos, cabeceras de columnas, subtotales y totales. Es el uso más
común de SQL, consultas e impresión de informes.
PRINCIPALES COMANDOS
Ejemplo:
basdatos.tripod.com/SQL.html 11/15
7/2/2020 PL/SQL
SET HEADSEP !
COLUMN nombre HEADING ' Nombre ! Producto ' format a18 word -wrapped à siga en la
siguiente línea
COLUMN cantidad HEADING ' Unidades '
COLUMN valor HEADING ' Valor ! Venta '
BREAK ON nompro SKIP 2 à salte 2 líneas antes de imprimir subtotales
COMPUTE SUM OF valor ON nompro
SET LINESIZE 80
SET PAGESIZE 50
ESCOBAS 5 7,500
9,000
sub 16,500
CEPILLOS 5 11,000
Sub 11,000
Sub 32,000
Tot 59,500
CURSORES
Introcción a cursores PL/SQL
El área de contexto es la memoria designada para procesar una instrucción SQL, la cual incluye
Un cursor es un manejador o apuntador para el área de contexto. Por medio de éste un programa PL/SQL
puede controlar el área de contexto.
Los cursores implícitos son creados por Oracle para manejar alguna instrucción SQL y no son declarados
por el programador.
Los cursores explícitos son aquellos qwe se declaran, generalmente por medio de una consulta SQL.
CURSOR nombre_cursor IS
instrucción_SELECT
instrucción_SELECT
9. Abrir el cursor
La sintaxis es:
OPEN nombre_cursor;
CLOSE nombre_cursor;
basdatos.tripod.com/SQL.html 13/15
7/2/2020 PL/SQL
OPEN nombre_cursor;
LOOP
END LOOP;
CLOSE nombre_cursor;
Por medio de un ciclo WHILE LOOP. La instrucción FECTH aparece dos veces.
OPEN nombre_cursor;
END LOOP;
CLOSE nombre_cursor;
basdatos.tripod.com/SQL.html 14/15
7/2/2020 PL/SQL
Por medio de un ciclo FOR LOOP. Es la forma más corta ya que el cursor es implicitamente se ejecutan las
instrucciones OPEN, FECTH y CLOSE.
END LOOP;
basdatos.tripod.com/SQL.html 15/15