Download - 1. Clase SQL Select
-
1Page 1
Introduccin a SQL
Introduction-2
Copyright Oracle Corporation, 1996. All rights reserved.
Descripcin
Unidad bsica de almacenamiento
compuesta por filas y columnas.
Representacin lgica de una o ms tablas.
Generador de valores del primary key .
Mejora los tiempos de acceso a consultas.
Nombre alternativo para un objecto.
Procedimiento, funcin, o paquete de SQL e
instrucciones de PL/SQL .
Objetos de la Base de Datos
Objeto
Tabla
Vista
Secuencia
Indice
Sinnimo
Program unit
-
2Page 2
Introduction-3
Copyright Oracle Corporation, 1996. All rights reserved.
Restricciones de la Base de Datos
Integridad
El primary key no pude ser NULO y su valor debe ser nico. Un campo NULO denota ausencia de valor.
Referencial
Los valores de las llaves Foraneas deben relacionarse con una clave primaria o deben ser nulas.
Los valores que ingresan a una columna deben ser del mismo tipo que la definicin del dato.
Slo a los usuarios autorizados.
Los valores de las columnas deben tener chequeos acorde con las reglas de negocio.
Introduction-4
Copyright Oracle Corporation, 1996. All rights reserved.
Que es Oracle?
Oracle es una compaa de base de datos que ofrece productos y servicios a las necesidades de la tecnologa informtica.
El RDBMS de Oracle es llamado Servidor Oracle11.
Designa las reas de almacenamiento
Recuperacin rpida de datos
Seguridad de la Base de Datos
Base de datos distribuida e integridad a travs de la red
Configuracin Cliente -Servidor
-
3Page 3
Introduction-5
Copyright Oracle Corporation, 1996. All rights reserved.
Server
Oracle11: Diagrama General
User TablesData
Dictionary
Introduction-6
Copyright Oracle Corporation, 1996. All rights reserved.
SQL, SQL*Plus y PL/SQL
SQL
Un lenguaje de comandos para lograr la comunicacin con el Servidor Oracle11
SQL*Plus
Una herramienta de Oracle que reconoce y ejecuta instrucciones del SQL y PL/SQL
PL/SQL
Un lenguaje de procedimiento de Oracle que extiende las instrucciones del SQL con tratamientos repetitivos y alternativos.
-
4Page 4
Introduction-7
Copyright Oracle Corporation, 1996. All rights reserved.
Interaccin entre el SQL y el SQL*Plus
SQL*Plus
SQL and
PL/SQL
Scripts
Buffer
Server
Introduction-8
Copyright Oracle Corporation, 1996. All rights reserved.
Comandos del SQL
Recuperacin de datos
SELECT
Lenguaje de Manipulacin de Datos (DML)
INSERT, UPDATE, DELETE
Lenguaje de definicin de Datos (DDL)
CREATE, ALTER, DROP, RENAME, TRUNCATE
Control de transaccin
COMMIT, ROLLBACK, SAVEPOINT
Lenguaje de Control de Datos (DCL)
GRANT, REVOKE
-
5Page 5
Introduction-9
Copyright Oracle Corporation, 1996. All rights reserved.
Comandos del SQL*Plus
Ambiente
Formato
Manipulacin de archivos
Ejecucin
Edicin
Interaccin
Miscelaneas
Introduction-10
Copyright Oracle Corporation, 1996. All rights reserved.
EL CURSO ES TEORICO-PRACTICO
En el siguiente digarama ER se presenten las entidades del caso
Tienda de artculos deportivos para alpinismo
-
6Page 6
Introduction-11
Copyright Oracle Corporation, 1996. All rights reserved.
Artculos genuinos de Alpinismo
S_WAREHOUSES_PRODUCT
S_INVENTORY
S_ITEM S_ORD
S_REGION
S_DEPT
S_EMP
S_CUSTOMER
Introduction-12
Copyright Oracle Corporation, 1996. All rights reserved.
Leccin 1
Seleccionando Filas
-
7Page 7
Introduction-13
Copyright Oracle Corporation, 1996. All rights reserved.
Sintaxis del Query Bsico
SELECT identificar qu columnas
FROM identificar qu tablas
SELECT [DISTINCT] {*,column [alias],....}
FROM table;
Introduction-14
Copyright Oracle Corporation, 1996. All rights reserved.
Escribiendo Comandos SQL
Cada comando puede estar en una o ms lineas.
Puede usar tabulaciones y sangras para darle mayor legibilidad.
No est permitido el uso de abreviaciones ni palabras separadas.
Los comandos no reconocen maysculas ni minsculas.
Los comandos SQL se almacenan dentro del buffer SQL.
-
8Page 8
Introduction-15
Copyright Oracle Corporation, 1996. All rights reserved.
Seleccionando todas las Columnas y
todas las filasSimplemente el SELECT contiene las siguientes
dos clausulas:
SELECT clusula
Asterisco (*) indica todas las columnas
FROM clusula
SQL> SELECT *
2 FROM s_dept;
Introduction-16
Copyright Oracle Corporation, 1996. All rights reserved.
Seleccionar todas las Columna y filas
SQL> SELECT *
2 FROM s_dept;
ID NAME REGION_ID-------- ------------- ----------
10 Finance 131 Sales 132 Sales 233 Sales 334 Sales 435 Sales 541 Operations 142 Operations 243 Operations 344 Operations 445 Operations 550 Administration 1
12 rows selected.
-
9Page 9
Introduction-17
Copyright Oracle Corporation, 1996. All rights reserved.
Seleccionando Columnas especficas
Listar el nombre de las columnas en la clusula del SELECT.
Separar las columnas usando una coma.
Especificar las columnas en el orden que Ud. desea que aparezcan.
SQL> SELECT dept_id, last_name, manager_id
2 FROM s_emp;
Introduction-18
Copyright Oracle Corporation, 1996. All rights reserved.
Expresiones Aritmticas
Para crear expresiones con columnas tipo NUMBER o DATE use operadores.
Suma +
Resta -
Multiplicacin *
Divisin /
-
10
Page 10
Introduction-19
Copyright Oracle Corporation, 1996. All rights reserved.
Presente el salario anual de todos los empleados.
Expresiones Aritmticas
SQL> SELECT last_name, salary * 12, commission_pct
2 FROM s_emp;
LAST_NAME SALARY*12 COMMISSION_PCT------------ ------------ --------------...Havel 15684Magee 16800 10Giljum 17880 12.5Sedeghi 18180 10Nguyen 18300 15Dumas 17400 17.5Maduro 16800...
Introduction-20
Copyright Oracle Corporation, 1996. All rights reserved.
Precedencia de los Operadores
La multiplicacin y divisin tienen prioridad sobre las sumas y restas
Si los operadores tienen la misma prioridad son evaluados de izquierda a derecha.
Emplee parntesis para modificar las prioridades as como para darle mayor claridad.
-
11
Page 11
Introduction-21
Copyright Oracle Corporation, 1996. All rights reserved.
Precedencia de Operadores
Los parntesis cambian el orden en que la sentencia es ejecutada.
SQL> SELECT last_name, salary, 12 * (salary + 100)
2 FROM s_emp;
... Velasquez 2500 31200
SQL> SELECT last_name, salary, 12 * salary + 100
2 FROM s_emp;
... Velasquez 2500 30100
Introduction-22
Copyright Oracle Corporation, 1996. All rights reserved.
Alias de Columna
Un alias de columna renombra su encabezado.
Especifquelo cuando efecta clculos con columnas
Debe ir inmediatamente despues de la columna
Debe existir un espacio entre el nombre de la columna y el alias
Es necesario ponerlo entre comillas si el alias contiene espacios, caracteres especiales o desea diferenciar las maysculas de las minsculas.
-
12
Page 12
Introduction-23
Copyright Oracle Corporation, 1996. All rights reserved.
Operador de Concatenacin
El operador de concatenacin es representado por dos barras verticales (||).
Asocia columnas con una sarta de caracteres y/o con otras columnas.
La columnna resultante es de tipo caracter
Introduction-24
Copyright Oracle Corporation, 1996. All rights reserved.
Operador de Concatenacin: Ejemplo
Displaye los nombres de los empleados con el encabezado Employees.
SQL> SELECT first_name||last_name
Employees
2 FROM s_emp;Employees
-------------------------------------------------
CarmenVelasquez
LaDorisNgao
MidoriNagayama
MarkQuick-To-See
AudryRopeburn
MollyUrguhart
...
-
13
Page 13
Introduction-25
Copyright Oracle Corporation, 1996. All rights reserved.
Literal o String de Caracteres
Un literal es un caracter, una expresin o un dato numrico incluido en la lista del SELECT .
Las fechas y los caracteres literales deben estar encerrados dentro de quotes.
Cada sarta de caracteres se presentarn una vez por cada fila que recupere.
Introduction-26
Copyright Oracle Corporation, 1996. All rights reserved.
Literal-String de Caracteres : Ejemplo
Employees
--------------------------------------------
Carmen Velasquez, President
LaDoris Ngao, VP, Operations
Midori Nagayama, VP, Sales
Mark Quick-To-See, VP, Finance
Audry Ropeburn, VP, Administration
Molly Urguhart, Warehouse Manager
...
SQL> SELECT first_name ||' '|| last_name
2 ||', '|| title "Employees"
3 FROM s_emp;
-
14
Page 14
Introduction-27
Copyright Oracle Corporation, 1996. All rights reserved.
Manejo de Valores Nulos
NULL es un valor invaluable, intransferible, irreconocible, e inaplicable.
NULL no es lo mismo que cero o espacio.
Una expresin aritmtica que contenga nulo ser evaluada como nulo.
SQL> SELECT last_name, title,
2 salary*commission_pct/100 COMM
3 FROM s_emp;
Introduction-28
Copyright Oracle Corporation, 1996. All rights reserved.
Funcin NVL
Convierte el NULO al valor que seale con el NVL.
Los tipos de datos: date, character y number.
Debe existir correlacin con el tipo de dato .
NVL (start_date, '01-JAN-95')
NVL (title, 'No Title Yet')
NVL (salary, 1000)
SQL> SELECT last_name, title,
2 salary*NVL(commission_pct,0)/100 COMM
3 FROM s_emp;
-
15
Page 15
Introduction-29
Copyright Oracle Corporation, 1996. All rights reserved.
Filas Duplicadas
Por default la consulta displaya todas las filas incluyendo si hay duplicadas.
Para Eliminar filas duplicadas use el DISTINCT en el SELECT.
SQL> SELECT DISTINCT name
2 FROM s_dept;
SQL> SELECT name
2 FROM s_dept;
Introduction-30
Copyright Oracle Corporation, 1996. All rights reserved.
DISTINCT con Multiples Columnas
DISTINCT se aplica a todas las columnas incluidas en el SELECT.
Cuando DISTINCT se aplica a multiples columnas, el resultado representa a las distintas
combinaciones de columnas.
SQL> SELECT DISTINCT dept_id, title
2 FROM s_emp;
-
16
Page 16
Introduction-31
Copyright Oracle Corporation, 1996. All rights reserved.
SQL*Plus: Vista General
Entrar al SQL*Plus.
Describa la estructura de la tabla.
Ingrese la sentencia SQL desde el SQL*Plus.
Edite sus sentencias SQL.
Grabe las sentencias SQL en un archivo.
Ejecute las sentencias del archivo grabado.
Cargue los comandos del archivo al buffer de edicin.
Formatee columnas.
Introduction-32
Copyright Oracle Corporation, 1996. All rights reserved.
Entrar al SQL*Plus
Desde un ambiente windows
Double-click al cono.
Ingrese su username y password.
Desde la linea de comandos
sqlplus [username[/password]]
-
17
Page 17
Introduction-33
Copyright Oracle Corporation, 1996. All rights reserved.
Displayar la estructura de la Tabla
La sentencia SQL*Plus DESCRIBE displaya la estructura de una tabla (nombre de columna, columnas NOT NULL y tipo de datos).
SQL> DESCRIBE s_dept
NOT NULL son columna que debe contener data.
Ejemplos de tipo de columna y longitud
NUMBER (p,s)
VARCHAR2(s)
DATE
CHAR(s)
Introduction-34
Copyright Oracle Corporation, 1996. All rights reserved.
Editar Comandos SQL*Plus
A[PPEND] texto
C[HANGE] / antiguo/ nuevo
CL[EAR] BUFF[ER]
DEL
I[NPUT] texto
L[IST] n
n texto
-
18
Page 18
Introduction-35
Copyright Oracle Corporation, 1996. All rights reserved.
Comando SET PAUSE
Le permite controlar el scroll de su terminal.
Presionar [Return] despues de cada pausa.
SET PAUSE {OFF|ON| text}
Introduction-36
Copyright Oracle Corporation, 1996. All rights reserved.
Comandos de Archivos SQL*Plus
SAVE filename
GET filename
START filename
@ filename
EDIT filename
SPOOL filename
EXIT
-
19
Page 19
Introduction-37
Copyright Oracle Corporation, 1996. All rights reserved.
Online Help
Obtiene ayuda en la pantalla en linea para
Comandos SQL*Plus
Comandos SQL
Comandos PL/SQL
SQL> HELP SELECT
Introduction-38
Copyright Oracle Corporation, 1996. All rights reserved.
Comandos COLUMN : Sintaxis
CLE[AR] Limpia un formato de columna.
FOR[MAT] format o Cambia la presentacin de una columna usando un modelo de formato.
HEA[DING] text o Setea el ttulo de la columna.
JUS[TIFY] {alineamiento} Alinea el ttulo de la columna hacia la izquierda, al centro a hacia la derecha.
COL[UMN] [{column|alias} [option]]
-
20
Page 20
Introduction-39
Copyright Oracle Corporation, 1996. All rights reserved.
Commando COLUMN: Ejemplos
Crear encabezados de columna
Displayar el valor en curso de la columna LAST_NAME.
Limpiar el valor de la columna LAST_NAME.
COLUMN last_name HEADING 'Employee|Name' FORMAT A15
COLUMN salary JUSTIFY LEFT FORMAT $99,990.00
COLUMN start_date FORMAT A8 NULL 'Not hired'
COLUMN last_name
COLUMN last_name CLEAR
Introduction-40
Copyright Oracle Corporation, 1996. All rights reserved.
Formatos de Mscara de Columnas
Columnas caracter y date
El ancho depende del nmero de caracteres.
Columnas Number
9 Suprime los ceros no significativos.
0 Si no hay valor obliga un zero.
$ Signo de dollar flotante.
L Signo de moneda Local.
. Posicin del punto decimal.
, Separador de unidades de mil.
-
21
Page 21
Introduction-41
Copyright Oracle Corporation, 1996. All rights reserved.
Resumen
Use SQL*Plus en un ambiente para
Ejecutar sentencias SQL
Editar sentencias SQL
SELECT [DISTINCT] {*,column[alias],...}
FROM table;
Introduction-42
Copyright Oracle Corporation, 1996. All rights reserved.
Leccin 2
Limitar la Seleccin de filas
-
22
Page 22
Introduction-43
Copyright Oracle Corporation, 1996. All rights reserved.
Objetivos
Ordenar las filas de salida usando la clusula ORDER BY.
Limitar la de bsqueda usando la clusula WHERE.
Introduction-44
Copyright Oracle Corporation, 1996. All rights reserved.
La clsula ORDER BY
Clasifique filas con la clusula ORDER BY.
ASC orden ascendente, por default.
DESC orden descendente.
Ponga la clsula ORDER BY al final del SELECT.
SQL> SELECT last_name, dept_id, start_date
2 FROM s_emp
3 ORDER BY last_name;
-
23
Page 23
Introduction-45
Copyright Oracle Corporation, 1996. All rights reserved.
La clusula ORDER BY
Por default la clasificacin es ascendente.
El orden de puede ser revertido usando DESC.
Puede ordenarse por expresiones o alias.
SQL> SELECT last_name, start_date
2 FROM s_emp
3 ORDER BY EMPLOYEE DESC;
Los valores nulos sern presentados:
Al final cuando es orden ascendente.
Al comienzo cuando es descendente.
Introduction-46
Copyright Oracle Corporation, 1996. All rights reserved.
Clasificacin por Mltiples Columnas
Puede ordenar por su ubicacin relativa.
SQL> SELECT last_name, dept_id, salary
2 FROM s_emp
3 ORDER BY dept_id, salary DESC;
SQL> SELECT last_name, salary * 12
2 FROM s_emp
3 ORDER BY 2;
Puede clasificar por mltiples columnas.
La ubicacin en el ORDER BY define el criterio de clasificacin.
Se puede clasificar por una columna que no est en la lista del SELECT.
-
24
Page 24
Introduction-47
Copyright Oracle Corporation, 1996. All rights reserved.
Limitando las Filas Seleccionadas
Para limitar las filas que han de retornar use la clusula WHERE
La clusula permite limitar las filas del FROM.
La Condicin consiste de:
Nombre de Columna, expresin o constante
Operador de Compacin
Literal
SQL> SELECT last_name, dept_id, salary
2 FROM s_emp
3 WHERE dept_id = 42;
Introduction-48
Copyright Oracle Corporation, 1996. All rights reserved.
Strings de caracteres y fechas
Una cadena de caracteres o un campo date debe estar encerrado entre quotes.
Los valores numricos no requieren encerrarse dentro de quotes.
Se diferencian las maysculas y minsculas.
El formato por default en los date es 'DD-MON-YY'.
SQL> SELECT first_name, last_name, title
2 FROM s_emp
3 WHERE last_name = 'Magee';
-
25
Page 25
Introduction-49
Copyright Oracle Corporation, 1996. All rights reserved.
Operadores de Compacin y Lgicos
Operadores de comparacin lgica
= > >= <
-
26
Page 26
Introduction-51
Copyright Oracle Corporation, 1996. All rights reserved.
Operadores SQL BETWEEN e IN
Use el operador BETWEEN para consultar por valores incluidos dentro de un rango.
SQL> SELECT id, name, region_id
2 FROM s_dept
3 WHERE region_id IN (1,3);
SQL> SELECT first_name, last_name, start_date
2 FROM s_emp
3 WHERE start_date BETWEEN '09-may-91'
4 AND '17-jun-91';
Use el IN para limitar una variable categrica.
Introduction-52
Copyright Oracle Corporation, 1996. All rights reserved.
Operador SQL LIKE
Puede emplear el operador LIKE para ejecutar una bsqueda similar a un conjunto de valores.
Las condiciones de bsqueda puede contener comodines.
"%" denota ninguno o muchos caracteres.
"_" denota un solo carcter en esa ubicacin.
SQL> SELECT last_name
2 FROM s_emp
3 WHERE last_name LIKE 'M%';
-
27
Page 27
Introduction-53
Copyright Oracle Corporation, 1996. All rights reserved.
Operador SQL LIKE
El operador LIKE puede emplearse como un atajo para algunas comparaciones.
Puede combinar el patrn de bsqueda.
Para efectuar la bsqueda debe usar el comodn "%" o "_".
SQL> SELECT last_name
2 FROM s_emp
3 WHERE last_name LIKE '_a%';
SQL> SELECT last_name, start_date
2 FROM s_emp
3 WHERE start_date LIKE '%91';
Introduction-54
Copyright Oracle Corporation, 1996. All rights reserved.
Operador SQL IS NULL
Para consultar si una columna es nula use el operador IS NULL.
No debe usar el operador =
SQL> SELECT id, name, credit_rating
2 FROM s_customer
3 WHERE sales_rep_id IS NULL;
-
28
Page 28
Introduction-55
Copyright Oracle Corporation, 1996. All rights reserved.
Condiciones Mltiples
Emplear criterios de pertenencia complejos.
Combine condiciones con operadores AND o OR.
AND todas las condiciones deben ser verdadero.
OR require que alguna condicin sea verdadera.
SQL> SELECT last_name, salary, dept_id, title
2 FROM s_emp
3 WHERE dept_id = 41
4 AND title = 'Stock Clerk';
SQL> SELECT last_name, salary, dept_id, title
2 FROM s_emp
3 WHERE dept_id = 41
4 OR title = 'Stock Clerk';
Introduction-56
Copyright Oracle Corporation, 1996. All rights reserved.
Reglas de Precedencia de operadores
booleanos
Order Evaluated Operator
1 All comparison operators.
2 AND
3 OR
Puede modificar las reglas de precedencia de los
operadores booleanos usando parntesis.
-
29
Page 29
Introduction-57
Copyright Oracle Corporation, 1996. All rights reserved.
Presente la informacin para los empleados del departmento 44 que ganen 1000 o ms, asi como a los empleados del departmento 42.
SQL> SELECT last_name, salary, dept_id
2 FROM s_emp
3 WHERE salary >= 1000
4 AND dept_id = 44
5 OR dept_id = 42;
Reglas de Precedencia: Ejemplos
SQL> SELECT last_name, salary, dept_id
2 FROM s_emp
3 WHERE salary >= 1000
4 AND (dept_id = 44
5 OR dept_id = 42);
Presente la informacin para los empleados del
departmento 44 o 42 que ganen 1000 o ms.
Introduction-58
Copyright Oracle Corporation, 1996. All rights reserved.
Resumen
SELECT [DISTINCT] {*, column [alias], ...}
FROM table
[WHERE condition(s)]
[ORDER BY {column, expr, alias} [ASC|DESC]];