Vous êtes sur la page 1sur 29

Introduccin a SQL

Objetos de la Base de Datos


Objeto

Descripcin

Tabla

Unidad bsica de almacenamiento


compuesta por filas y columnas.

Vista

Representacin lgica de una o ms tablas.

Secuencia

Generador de valores del primary key .

Indice

Mejora los tiempos de acceso a consultas.

Sinnimo

Nombre alternativo para un objecto.

Program unit

Procedimiento, funcin, o paquete de SQL e


instrucciones de PL/SQL .

Introduction-2
Copyright Oracle Corporation, 1996. All rights reserved.

Page 1
1

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
Introduction-3
chequeos acorde con las reglas de negocio.

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

Introduction-4
Copyright Oracle Corporation, 1996. All rights reserved.

Page 2
2

Oracle11: Diagrama General

Server

User Tables

Data
Dictionary

Introduction-5
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.

Introduction-6
Copyright Oracle Corporation, 1996. All rights reserved.

Page 3
3

Interaccin entre el SQL y el SQL*Plus

Server

SQL*Plus

Buffer

SQL and
PL/SQL
Scripts
Introduction-7
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
Introduction-8
Copyright Oracle Corporation, 1996. All rights reserved.

Page 4
4

Comandos del SQL*Plus

Ambiente
Formato
Manipulacin de archivos
Ejecucin
Edicin
Interaccin
Miscelaneas

Introduction-9
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

Introduction-10
Copyright Oracle Corporation, 1996. All rights reserved.

Page 5
5

Artculos genuinos de Alpinismo


S_ITEM

S_CUSTOMER

S_ORD

S_INVENTORY
S_EMP

S_PRODUCT

S_WAREHOUSE

S_DEPT

S_REGION
Introduction-11
Copyright Oracle Corporation, 1996. All rights reserved.

Leccin 1

Seleccionando Filas

Introduction-12
Copyright Oracle Corporation, 1996. All rights reserved.

Page 6
6

Sintaxis del Query Bsico


SELECT [DISTINCT] {*,column [alias],....}
FROM
table;

SELECT identificar qu columnas


FROM identificar qu tablas

Introduction-13
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.

Introduction-14
Copyright Oracle Corporation, 1996. All rights reserved.

Page 7
7

Seleccionando todas las Columnas y


todas las filas
Simplemente el SELECT contiene las siguientes
dos clausulas:

SELECT clusula

Asterisco (*)

indica todas las columnas

FROM clusula
SQL> SELECT
2 FROM

*
s_dept;

Introduction-15
Copyright Oracle Corporation, 1996. All rights reserved.

Seleccionar todas las Columna y filas


SQL> SELECT
2 FROM
ID
-------10
31
32
33
34
35
41
42
43
44
45
50

*
s_dept;

NAME
REGION_ID
------------- ---------Finance
1
Sales
1
Sales
2
Sales
3
Sales
4
Sales
5
Operations
1
Operations
2
Operations
3
Operations
4
Operations
5
Administration
1

12 rows selected.
Introduction-16
Copyright Oracle Corporation, 1996. All rights reserved.

Page 8
8

Seleccionando Columnas especficas


SQL> SELECT
2 FROM

dept_id, last_name, manager_id


s_emp;

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.

Introduction-17
Copyright Oracle Corporation, 1996. All rights reserved.

Expresiones Aritmticas
Para crear expresiones con columnas tipo
NUMBER o DATE use operadores.

Suma

Resta

Multiplicacin *
Divisin

Introduction-18
Copyright Oracle Corporation, 1996. All rights reserved.

Page 9
9

Expresiones Aritmticas
Presente el salario anual de todos los empleados.
SQL> SELECT
2 FROM

last_name, salary * 12, commission_pct


s_emp;

LAST_NAME
SALARY*12 COMMISSION_PCT
------------ ------------ -------------...
Havel
15684
Magee
16800
10
Giljum
17880
12.5
Sedeghi
18180
10
Nguyen
18300
15
Dumas
17400
17.5
Maduro
16800
...
Introduction-19
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.

Introduction-20
Copyright Oracle Corporation, 1996. All rights reserved.

Page 10
10

Precedencia de Operadores
Los parntesis cambian el orden en que la sentencia
es ejecutada.
SQL> SELECT
2 FROM

last_name, salary, 12 * salary + 100


s_emp;
...
Velasquez 2500 30100

SQL> SELECT
2 FROM

last_name, salary, 12 * (salary + 100)


s_emp;
...
Velasquez 2500 31200

Introduction-21
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.

Introduction-22
Copyright Oracle Corporation, 1996. All rights reserved.

Page 11
11

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-23
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
Introduction-24
...
Copyright Oracle Corporation, 1996. All rights reserved.

Page 12
12

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-25
Copyright Oracle Corporation, 1996. All rights reserved.

Literal-String de Caracteres : Ejemplo


SQL> SELECT
2
3 FROM

first_name ||' '|| last_name


||', '|| title "Employees"
s_emp;

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
...

Introduction-26
Copyright Oracle Corporation, 1996. All rights reserved.

Page 13
13

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
2
3 FROM

last_name, title,
salary*commission_pct/100 COMM
s_emp;

Introduction-27
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
2
3 FROM

last_name, title,
salary*NVL(commission_pct,0)/100 COMM
s_emp;

Introduction-28
Copyright Oracle Corporation, 1996. All rights reserved.

Page 14
14

Filas Duplicadas

Por default la consulta displaya todas las filas


incluyendo si hay duplicadas.
SQL> SELECT
2 FROM

name
s_dept;

Para Eliminar filas duplicadas use el DISTINCT en


el SELECT.
SQL> SELECT
2 FROM

DISTINCT name
s_dept;

Introduction-29
Copyright Oracle Corporation, 1996. All rights reserved.

DISTINCT con Multiples Columnas

DISTINCT se aplica a todas las columnas incluidas


en el SELECT.
SQL> SELECT
2 FROM

DISTINCT dept_id, title


s_emp;

Cuando DISTINCT se aplica a multiples columnas,


el resultado representa a las distintas
combinaciones de columnas.

Introduction-30
Copyright Oracle Corporation, 1996. All rights reserved.

Page 15
15

SQL*Plus: Vista General

Entrar al SQL*Plus.

Formatee columnas.

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.

Introduction-31
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]]

Introduction-32
Copyright Oracle Corporation, 1996. All rights reserved.

Page 16
16

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-33
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

Introduction-34
Copyright Oracle Corporation, 1996. All rights reserved.

Page 17
17

Comando SET PAUSE

Le permite controlar el scroll de su terminal.


Presionar [Return] despues de cada pausa.

SET PAUSE {OFF|ON| text}

Introduction-35
Copyright Oracle Corporation, 1996. All rights reserved.

Comandos de Archivos SQL*Plus

SAVE filename
GET filename
START filename
@ filename
EDIT filename
SPOOL filename
EXIT

Introduction-36
Copyright Oracle Corporation, 1996. All rights reserved.

Page 18
18

Online Help

Obtiene ayuda en la pantalla en linea para

SQL>

Comandos SQL*Plus
Comandos SQL
Comandos PL/SQL
HELP SELECT

Introduction-37
Copyright Oracle Corporation, 1996. All rights reserved.

Comandos COLUMN : Sintaxis


COL[UMN] [{column|alias} [option]]

CLE[AR] Limpia un formato de columna.

HEA[DING] text o Setea el ttulo de la columna.

FOR[MAT] format o Cambia la presentacin de


una columna usando un modelo de formato.
JUS[TIFY] {alineamiento} Alinea el ttulo de la
columna hacia la izquierda, al centro a hacia la
derecha.

Introduction-38
Copyright Oracle Corporation, 1996. All rights reserved.

Page 19
19

Commando COLUMN: Ejemplos

Crear encabezados de columna


COLUMN last_name HEADING 'Employee|Name' FORMAT A15
COLUMN salary JUSTIFY LEFT FORMAT $99,990.00
COLUMN start_date FORMAT A8 NULL 'Not hired'

Displayar el valor en curso de la columna


LAST_NAME.
COLUMN last_name

Limpiar el valor de la columna LAST_NAME.


COLUMN last_name CLEAR
Introduction-39
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.

Si no hay valor obliga un zero.

Signo de dollar flotante.

Signo de moneda Local.

Posicin del punto decimal.

Separador de unidades de mil.

Introduction-40
Copyright Oracle Corporation, 1996. All rights reserved.

Page 20
20

Resumen
SELECT

[DISTINCT] {*,column[alias],...}

FROM

table;

Use SQL*Plus en un ambiente para

Ejecutar sentencias SQL


Editar sentencias SQL

Introduction-41
Copyright Oracle Corporation, 1996. All rights reserved.

Leccin 2

Limitar la Seleccin de filas

Introduction-42
Copyright Oracle Corporation, 1996. All rights reserved.

Page 21
21

Objetivos

Ordenar las filas de salida usando la clusula


ORDER BY.

Limitar la de bsqueda usando la clusula


WHERE.

Introduction-43
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
2 FROM
3 ORDER BY

last_name, dept_id, start_date


s_emp
last_name;

Introduction-44
Copyright Oracle Corporation, 1996. All rights reserved.

Page 22
22

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
2 FROM
3 ORDER BY

last_name, start_date
s_emp
EMPLOYEE DESC;

Los valores nulos sern presentados:


Al final cuando es orden ascendente.
Al comienzo cuando es descendente.
Introduction-45
Copyright Oracle Corporation, 1996. All rights reserved.

Clasificacin por Mltiples Columnas

Puede ordenar por su ubicacin relativa.


SQL> SELECT
2 FROM
3 ORDER BY

last_name, salary * 12
s_emp
2;

Puede clasificar por mltiples columnas.


SQL> SELECT
2 FROM
3 ORDER BY

last_name, dept_id, salary


s_emp
dept_id, salary DESC;

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.

Introduction-46

Copyright Oracle Corporation, 1996. All rights reserved.

Page 23
23

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
2 FROM
3 WHERE

last_name, dept_id, salary


s_emp
dept_id = 42;

Introduction-47
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
2 FROM
3 WHERE

first_name, last_name, title


s_emp
last_name = 'Magee';

Introduction-48
Copyright Oracle Corporation, 1996. All rights reserved.

Page 24
24

Operadores de Compacin y Lgicos

Operadores de comparacin lgica


= > >= < <=

Operadores de comparacin SQL

BETWEEN ... AND...


IN(lista)
LIKE
IS NULL

Operadores booleanos o lgicos

AND
OR
NOT
Introduction-49
Copyright Oracle Corporation, 1996. All rights reserved.

Expresiones Negativas
Para excluir filas que Ud. no desea presentar
fcilmente puede eliminarlas.

Operadores de comparacin lgica


!= <> ^=

Operadores SQL

NOT BETWEEN
NOT IN
NOT LIKE
IS NOT NULL
Introduction-50
Copyright Oracle Corporation, 1996. All rights reserved.

Page 25
25

Operadores SQL BETWEEN e IN

Use el operador BETWEEN para consultar por


valores incluidos dentro de un rango.

SQL> SELECT
2 FROM
3 WHERE
4

first_name, last_name, start_date


s_emp
start_date BETWEEN '09-may-91'
AND '17-jun-91';

Use el IN para limitar una variable categrica.


SQL> SELECT
2 FROM
3 WHERE

id, name, region_id


s_dept
region_id IN (1,3);

Introduction-51
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
2 FROM
3 WHERE

last_name
s_emp
last_name LIKE 'M%';

Introduction-52
Copyright Oracle Corporation, 1996. All rights reserved.

Page 26
26

Operador SQL LIKE

El operador LIKE puede emplearse como un atajo


para algunas comparaciones.
SQL> SELECT
2 FROM
3 WHERE

Puede combinar el patrn de bsqueda.


SQL> SELECT
2 FROM
3 WHERE

last_name, start_date
s_emp
start_date LIKE '%91';

last_name
s_emp
last_name LIKE '_a%';

Para efectuar la bsqueda debe usar el comodn


"%" o "_".

Introduction-53
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;

Introduction-54
Copyright Oracle Corporation, 1996. All rights reserved.

Page 27
27

Condiciones Mltiples

Emplear criterios de pertenencia complejos.


Combine condiciones con operadores AND o OR.
AND todas las condiciones deben ser verdadero.

SQL>
2
3
4

SELECT
FROM
WHERE
AND

last_name, salary, dept_id, title


s_emp
dept_id = 41
title = 'Stock Clerk';

OR require que alguna condicin sea verdadera.


SQL>
2
3
4

SELECT
FROM
WHERE
OR

last_name, salary, dept_id, title


s_emp
dept_id = 41
title = 'Stock Clerk';

Introduction-55
Copyright Oracle Corporation, 1996. All rights reserved.

Reglas de Precedencia de operadores


booleanos
Puede modificar las reglas de precedencia de los
operadores booleanos usando parntesis.
Order Evaluated

Operator

All comparison operators.

AND

OR

Introduction-56
Copyright Oracle Corporation, 1996. All rights reserved.

Page 28
28

Reglas de Precedencia: Ejemplos

Presente la informacin para los empleados del


departmento 44 que ganen 1000 o ms, asi como a los
empleados del departmento 42.
SQL>
2
3
4
5

SELECT
FROM
WHERE
AND
OR

last_name, salary, dept_id


s_emp
salary >= 1000
dept_id = 44
dept_id = 42;

Presente la informacin para los empleados del


departmento 44 o 42 que ganen 1000 o ms.
SQL>
2
3
4
5

SELECT
FROM
WHERE
AND
OR

last_name, salary, dept_id


s_emp
salary >= 1000
(dept_id = 44
dept_id = 42);

Introduction-57
Copyright Oracle Corporation, 1996. All rights reserved.

Resumen
SELECT
FROM
[WHERE
[ORDER BY

[DISTINCT] {*, column [alias], ...}


table
condition(s)]
{column, expr, alias} [ASC|DESC]];

Introduction-58
Copyright Oracle Corporation, 1996. All rights reserved.

Page 29
29

Vous aimerez peut-être aussi