1. Clase SQL Select

Embed Size (px)

DESCRIPTION

Clase SQL Select

Citation preview

  • 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]];