base de datos sql cap2-4

Upload: francisco-reyes-valente

Post on 07-Aug-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/20/2019 Base de datos SQL Cap2-4

    1/24

    QuerysQuerys básicos 2básicos 2--11 SQL Server Básico

    Escribiendo sentenciasEscribiendo sentencias

    básicas de SQLbásicas de SQL

    Parte 2Parte 2

     

    Parte 2 SQL-Server Básico

    Página 1 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    2/24

    QuerysQuerys básicos 2básicos 2--22 SQL Server Básico

    Al terminar esta lección, deberá serAl terminar esta lección, deberá sercapaz de hacer lo siguiente :capaz de hacer lo siguiente :

    Listar las capacidades de laListar las capacidades de lainstrucción SELECT de SQLinstrucción SELECT de SQL

    Ejecutar una sentencia básica deEjecutar una sentencia básica deSELECTSELECT

    ObjetivosObjetivos

     

    Parte 2 SQL-Server Básico

    Página 2 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    3/24

    QuerysQuerys básicos 2básicos 2--33 SQL Server Básico

    Capacidades de la instrucción SELECTCapacidades de la instrucción SELECT

    SelecciónSelección ProyecciónProyección

    Tabla 1Tabla 1 Tabla 2Tabla 2

    Tabla 1Tabla 1 Tabla 1Tabla 1JoinJoin

     

    Capacidades de la instrucción SELECT

    Una instrucción SELECT recupera información de la base de datos

    Utilizando esta instrucción puede realizar:

    • Selección: Puede utilizar esta capacidad de SQL para seleccionarrenglones de la tabla que cumplan alguna condición. 

    • Proyección: Puede utilizar esta capacidad de SQL para seleccionarcolumnas de la tabla, puede indicar tantas columnas como lo desee 

    • Join: Puede utilizar esta capacidad para “reunir” datos almacenados endiferentes tablas, creando una liga mediante un atributo que compartan enambas tablas (PK,FK) 

    Parte 2 SQL-Server Básico

    Página 3 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    4/24

    QuerysQuerys básicos 2básicos 2--44 SQL Server Básico

    Una instrucción SELECT básicaUna instrucción SELECT básica

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

    FROM    table;

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

    FROM    table;

    SELECT identificaSELECT identifica queque columnascolumnas

    FROM identificaFROM identifica cualescuales tablastablas

     

    Una Instrucción Select básica

    En su forma mas simple, una instrucción SELECT debe incluir lo siguiente:

    • Una cláusula SELECT, la cual especifica las columnas a ser mostradas.

    • Una cláusula FROM, la cual indica las tablas de donde se tomaran losvalores de las columnas especificadas en la cláusula SELECT.

    Sintaxis:

    SELECT Se indica una lista de una o mas columnasDISTINCT Elimina renglones duplicados

    * Muestra todas las columnasColumn Selecciona la columna indicada

    alias Etiqueta la columna con un nombre diferente al del atributo

    FROM Especifica la tabla que contiene las columnas

    Parte 2 SQL-Server Básico

    Página 4 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    5/24

    QuerysQuerys básicos 2básicos 2--55 SQL Server Básico

    Seleccionando todas las ColumnasSeleccionando todas las Columnas

    deptno dname loc

    --------- -------------- -------------

    10 ACCOUNTING NEW YORK 

    20 RESEARCH DALLAS

    30 SALES CHICAGO

    40 OPERATIONS BOSTON

    SELECT *FROM dept;

     

    Seleccionando todas las columnas

    Para seleccionar todas las columnas de una tabla utilice (*). En el ejemplo, la tablaDEPT contiene tres columnas DEPTNO, DNAME y LOC.

    También puede listar todas las columnas, indicando los nombres de estas en la

    cláusula SELECT. Por ejemplo.

    Select Deptno,Dname,LocFrom Dep.

    Parte 2 SQL-Server Básico

    Página 5 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    6/24

    QuerysQuerys básicos 2básicos 2--66 SQL Server Básico

    Seleccionando Columnas EspecíficasSeleccionando Columnas Específicas

    deptno loc

    --------- -------------

    10 NEW YORK 

    20 DALLAS

    30 CHICAGO

    40 BOSTON

    SELECT deptno, locFROM dept;

     

    Seleccionando columnas especificas

    Puede seleccionar ciertas columnas de la tabla indicando los nombres deestas, en la cláusula SELECT separadas por comas. El ejemplo muestra todos losnúmeros de departamento y localidades de la tabla DEPT.

    Especifique las columnas en el orden en el que se desean que aparezcan en laconsulta. Por ejemplo, para desplegar la localización antes del numero dedepartamento.

    SELECT Loc,DeptFROM Dep;

    Loc Dept.

    -------------- -------------------New Cork 10Dallas 20Chicago 30Boston 40

    Parte 2 SQL-Server Básico

    Página 6 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    7/24

    QuerysQuerys básicos 2básicos 2--77 SQL Server Básico

    Expresiones AritméticasExpresiones Aritméticas

    Cree expresiones con datos tipo NUMERIC YCree expresiones con datos tipo NUMERIC Y

    DATE utilizando operadores aritméticos.DATE utilizando operadores aritméticos.

    Operador 

    +

    -

    *

     /

    Descripción

    Add

    Subtract

    Multiply

    Divide

     

    Expresiones Aritméticas

    Puede modificar la forma en que es mostrada la información de las columnas,ejecutando cálculos. Esto es posible utilizando expresiones aritméticas. Una

    Expresión aritmética debe contener nombres de columnas, valores numéricosconstantes y operadores aritméticos.

    Operadores Aritméticos

     Aquí se muestran los operadores aritméticos disponibles en SQL. Puede utilizarlosen cualquier cláusula de SQL excepto en la cláusula FROM.

    Parte 2 SQL-Server Básico

    Página 7 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    8/24

    QuerysQuerys básicos 2básicos 2--88 SQL Server Básico

    Utilizando Operadores AritméticosUtilizando Operadores Aritméticos

    SELECT ename, sal, sal+300

    FROM emp;

    ename sal

    ---------- --------- ---------

    KING 5000 5300

    BLAKE 2850 3150

    CLARK 2450 2750

    JONES 2975 3275

     MARTIN 1250 1550

     ALLEN 1600 1900

    ...

    (14 row(s) affected)

     

    Utilizando Operadores Aritméticos

    El ejemplo muestra el uso del operador suma para ejecutar un cálculo,aumentando el salario en $300 para cada uno de los empleados.

    Note que la columna del resultado calculado no es una nueva columna en la tablaEMP, es solo para la consulta.

    Parte 2 SQL-Server Básico

    Página 8 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    9/24

    QuerysQuerys básicos 2básicos 2--99 SQL Server Básico

    Precedencia de los OperadoresPrecedencia de los Operadores

    Multiplicación y división tienen la mayorMultiplicación y división tienen la mayor

    prioridad sobre los otros operadores.prioridad sobre los otros operadores.

    Los operadores con igual prioridad sonLos operadores con igual prioridad son

    evaluados de izquierda a derecha.evaluados de izquierda a derecha.

    Los paréntesis son utilizados para forzarLos paréntesis son utilizados para forzar

    la evaluación de prioridad y hacer másla evaluación de prioridad y hacer más

    clara la expresión.clara la expresión.

    ***  / / / +++ _  _  _ 

     

    Precedencia de los operadores

    Si una expresión aritmética contiene más de un operador, la multiplicación ydivisión son evaluadas primero.Si los operadores de una expresión aritmética tienen la misma prioridad laevaluación se efectúa de izquierda a derecha.

    Puede utilizar paréntesis para forzar la evaluación de los operadores con menorprioridad.

    Parte 2 SQL-Server Básico

    Página 9 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    10/24

    QuerysQuerys básicos 2básicos 2--1010 SQL Server Básico

    SELECT ename, sal, 12*sal+100

    FROM emp;

    ename sal

    ---------- --------- ----------

    KING 5000 60100

    BLAKE 2850 34300

    CLARK 2450 29500

    JONES 2975 35800

     MARTIN 1250 15100

     ALLEN 1600 19300

    ...

    (14 row(s) affected)

    Precedencia de los OperadoresPrecedencia de los Operadores

     

    Precedencia de los operadores

    El ejemplo muestra el nombre, salario y una compensación anual de todos losempleados. Se calcula esta compensación como una multiplicación del salariomensual por 12, y agregándole un bono de $100. Note que la multiplicación seevalúa primero.

    Nota: Puede agregar paréntesis en la expresión para mejorar la claridad,(12*sal)+100, sin afectar el resultado de la consulta.

    Parte 2 SQL-Server Básico

    Página 10 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    11/24

  • 8/20/2019 Base de datos SQL Cap2-4

    12/24

    QuerysQuerys básicos 2básicos 2--1212 SQL Server Básico

    Definiendo el ValorDefiniendo el Valor NullNull

    NullNull es un valor que es inaccesible, desconocidoes un valor que es inaccesible, desconocidoo inaplicable.o inaplicable.

    UnUn nullnull no es lo mismo que cero o un espacio enno es lo mismo que cero o un espacio enblanco.blanco.

    SELECT ename, job, comm 

    FROM emp;

    ename job comm 

    ---------- --------- ---------

    KING PRESIDENT

    BLAKE MANAGER 

    ...

    TURNER SALESMAN 0

    ...

    (14 row(s) affected)

     

    Definiendo el valor null

    El valor nulo es la ausencia de valor en un campo o intersección de renglóncolumna, un valor nulo NO es lo mismo que cero o espacios en blanco. El cero esun número y los espacios en blanco son caracteres.

    Las columnas de cualquier tipo pueden contener valores nulos, a menos quedichas columnas hayan sido definidas como NOT NULL  o llaves primarias(PRIMARY KEY) cuando se crea la columna.

    La columna COMM de la tabla EMP, puede notar que solo aquellos que sonSALESMAN (vendedores) pueden tener una comisión. Tuner , que es un vendedorno gana comisión alguna, pero esta columna tiene cero y no un valor nulo.

    Parte 2 SQL-Server Básico

    Página 12 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    13/24

    QuerysQuerys básicos 2básicos 2--1313 SQL Server Básico

    ValoresValores NullNull en Expresionesen Expresiones

    AritméticasAritméticas

    Las Expresiones Aritméticas que contienenLas Expresiones Aritméticas que contienenun valorun valor nullnull sese evaluanevaluan comocomo nullnull..

    SELECT ename, 12*sal+comm

    FROM emp;

    ename

    ---------- -----------

    ....

    KING NULL

     

    Valores Nulos (Continuación) 

    Si el contenido de una columna es nulo dentro de una expresión aritmética, elresultado es NULL. Por ejemplo, si intenta dividir entre cero, obtendrá un error. Sinembargo, si divide un número entre un valor nulo, el resultado es nulo.

    Parte 2 SQL-Server Básico

    Página 13 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    14/24

    QuerysQuerys básicos 2básicos 2--1414 SQL Server Básico

    Definir un ALIAS para las columnasDefinir un ALIAS para las columnas

    Renombra el encabezado de lasRenombra el encabezado de lascolumnascolumnas

    Es útil cuando se utilizan cálculosEs útil cuando se utilizan cálculos

    Va inmediatamente después del nombreVa inmediatamente después del nombre

    de la columna; la palabra AS es opcionalde la columna; la palabra AS es opcional

    y se coloca entre el nombre de lay se coloca entre el nombre de la

    columna y el aliascolumna y el alias

    Se requieren apóstrofes si el aliasSe requieren apóstrofes si el alias

    contiene espacios en blancocontiene espacios en blanco

     

    Definir un ALIAS para las columnas

    Cuando muestra el resultado de una consulta. SQL normalmente utiliza el nombrede la columna desplegada como encabezado. En muchos casos, este nombre deencabezado pudiera no ser descriptivo o ser difícil de entender. Puede cambiar el

    encabezado de una columna utilizando un alias.

    Especifique el alias después de la columna en la cláusula SELECT utilizando unespacio como separador. Si el alias contiene espacios o caracteres especiales(tales como $ o %), o contiene combinación de mayúsculas y minúsculas, debeencerrarlo entre apóstrofos ( ' ' ) o comillas dobles ( " " ).

    Parte 2 SQL-Server Básico

    Página 14 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    15/24

    QuerysQuerys básicos 2básicos 2--1515 SQL Server Básico

    Utilizando AliasUtilizando Alias

    SELECT ename AS name, sal salary

    FROM emp;

    name salary

    ------------- ---------

    ...

    SELECT ename "Name",

    sal*12 "Annual Salary"

    FROM emp;

     Name Annual Salary

    ------------- -------------

    ...

     

    Utilizando Alias

    El primer ejemplo muestra el nombre y el salario de todos los empleados.Note que la palabra AS es opcional y debe ser usada antes del alias de lacolumna. El encabezado de la columna será el mismo que se especifique en elalias.

    El segundo ejemplo muestra el nombre y el salario de todos los empleados, comoANNUAL SALARY contiene espacios debe ir encerrado entre apóstrofos (' ') ocomillas dobles ( " " ).

    Parte 2 SQL-Server Básico

    Página 15 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    16/24

    QuerysQuerys básicos 2básicos 2--1616 SQL Server Básico

    Operador de ConcatenaciónOperador de Concatenación

    Concatena columnas o cadenas deConcatena columnas o cadenas decaracteres a otra columnacaracteres a otra columna

    Se utiliza el operador +Se utiliza el operador +

    Crea una columna resultante que esCrea una columna resultante que esuna cadena de caracteresuna cadena de caracteres

     

    Operador de concatenación

    Puede encadenar columnas con otras columnas, expresiones aritméticas o valoresconstantes utilizando el operador de concatenación (+). Todas las columnasutilizadas con operador ( + ) producen un solo resultado en la misma columna.

    Parte 2 SQL-Server Básico

    Página 16 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    17/24

    QuerysQuerys básicos 2básicos 2--1717 SQL Server Básico

    Utilizando el Operador deUtilizando el Operador de

    ConcatenaciónConcatenación

    SELECT ename + job AS "Employees"

    FROM emp;

    Employees

    -------------------

    KINGPRESIDENT

    BLAKEMANAGER 

    CLARKMANAGER 

    JONESMANAGER 

     MARTINSALESMAN

     ALLENSALESMAN

    ...

    (14 row(s) affected)

     

    Operador de concatenación (Continuación)

    En el ejemplo, las columnas ENAME y JOB son concatenadas, y se le asigna elalias Employees

    La palabra AS antes del alias hace que la sentencia SELECT sea mas fácil deleer.

    Parte 2 SQL-Server Básico

    Página 17 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    18/24

    QuerysQuerys básicos 2básicos 2--1818 SQL Server Básico

    Usando LiteralesUsando Literales

    Employee Details

    -------------------------

    KING is a PRESIDENT

    BLAKE is a MANAGER 

    CLARK is a MANAGER 

    JONES is a MANAGER 

     MARTIN is a SALESMAN

    ...

    (14 row(s) affected)

    Employee Details

    -------------------------

    KING is a PRESIDENT

    BLAKE is a MANAGER 

    CLARK is a MANAGER 

    JONES is a MANAGER 

     MARTIN is a SALESMAN

    ...

    (14 row(s) affected)

    SELECT ename + ' ' + 'is a' + ' ' + job

     AS "Employee Details"

    FROM emp;

     

    Usando literales

    En el ejemplo muestra los nombres y puestos de los empleados en forma maslegible.

    En el siguiente ejemplo, el nombre y el salario de cada empleado son desplegadosdando mas significado al resultado.

    SELECT ename + ’: ’+ ‘ 1 ’ + ‘ Month Salary’ Monthly, salFROM emp

    Monthly SalKing: 1 Month Salary 5000Blank: 1 Month Salary 2850Clark: 1 Month Salary 2450Jones: 1 Month Salary 2975Martin: 1 Month Salary 1250

     Allen: 1 Month Salary 1600

    (14 row(s) selected)

    Parte 2 SQL-Server Básico

    Página 18 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    19/24

    QuerysQuerys básicos 2básicos 2--1919 SQL Server Básico

    Renglones duplicadosRenglones duplicados

    El resultado porEl resultado por defaultdefault de una consulta, sonde una consulta, son

    todos los renglones incluyendo aquellos quetodos los renglones incluyendo aquellos que

    estén repetidos.estén repetidos.

    SELECT deptno

    FROM emp;

    SELECT deptno

    FROM emp;

    deptno

    ---------

    10

    30

    10

    20

    ...

    (14 row(s) affected)

    Renglones Duplicados

     A menos de que indique lo contrario, el resultado de una consulta mostrara todoslos renglones aunque se repitan. El ejemplo anterior muestra el número de

    departamento de los empleados. Puede notar que existen departamentosrepetidos.

    Parte 2 SQL-Server Básico

    Página 19 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    20/24

    QuerysQuerys básicos 2básicos 2--2020 SQL Server Básico

    Eliminando renglones duplicadosEliminando renglones duplicados

    Elimine los renglones duplicados utilizando laElimine los renglones duplicados utilizando la

    palabra DISTINCT en la cláusula SELECT.palabra DISTINCT en la cláusula SELECT.

    SELECT DISTINCT deptno

    FROM emp;

    deptno

    ---------

    10

    20

    30

     

    Eliminación de Renglones Duplicados

    Para eliminar renglones duplicados, incluye la palabra DISTINCT en la cláusulaSELECT, Inmediatamente después de la palabra SELECT En el ejemplo anterior,la tabla EMP tiene catorce registros pero solo existen tres departamentos

    diferentes.

    Puede utilizar DISTINCT antes de varias columnas. El calificador DISTINCTafecta a todas columnas seleccionadas , y el resultado es una combinacióndiferente de las columnas.

    SELECT DISTINCT Deptno,jobFROM emp;

    deptno   job*-*-*-*- *-*-*-*-10 CLERK10 MANAGER10 PRESIDENT20 ANALYST……..(9 row(s) affected

    Parte 2 SQL-Server Básico

    Página 20 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    21/24

    QuerysQuerys básicos 2básicos 2--2121 SQL Server Básico

    PrácticasPrácticas

     – – Seleccionar todos los renglones enSeleccionar todos los renglones endiferentes tablasdiferentes tablas

     – – Ejecutar cálculos aritméticosEjecutar cálculos aritméticos

     – – Otorgue nombres a las columnasOtorgue nombres a las columnas

     

    Parte 2 SQL-Server Básico

    Página 21 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    22/24

    PRACTICA 1 

    1.- Inicie una sesión utilizando el user ID y password indicados por el instructor.2.- ¿La siguiente instrucción SELECT se ejecutara satisfactoriamentefalso/verdadero?

    Select ename,job,sal SalaryFrom emp

    3.- ¿Existen errores en la siguiente instrucción?Falso/verdadero.

    Select empno,ename,Salary x12 Anual Salary

    From emp

    4.- Muestre todos los datos de la tabla DEPTDEPTNO DNAME LOC10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON

    5.- Cree una consulta para mostrar las columnas name, Job, hiredate y el numerode empleados en la primer columna, guarde su consulta SQL con el nombres0q2q05.SQL.

    6.- Ejecute la consulta s0q2q5.SQL.EMPNO ENAME JOB HIREDATE7839 KING PRESIDENT 17-NOV-817698 BLAKE MANAGER 01-MAY-817782 CLARK MANAGER 09-JUN-817566 JONES MANAGER 02-APR-817654 MARTIN SALESMAN 28-SEP-817499 ALLEN SALESMAN 20-FEB-817844 TURNER SALESMAN 08-SEP-817900 JAMES CLERK 03-DEC-817521 WARD SALESMAN 22-FEB-81

    7902 FORD ANALYST 03-DEC-817369 SMITH CLERK 17-DEC-807788 SCOTT ANALYST 09-DEC-827876 ADAMS CLERK 12-JAN-837934 MILLER CLERK 23-JAN-82

    (14 row(s) affected)

    Parte 2 SQL-Server Básico

    Página 22 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    23/24

    7.- Cree una consulta que muestre los puestos sin repetirse del tabal EMP.

    JOB ANALYSTCLERKMANAGER

    PRESIDENTSALESMAN

    Parte 2 SQL-Server Básico

    Página 23 de 24

  • 8/20/2019 Base de datos SQL Cap2-4

    24/24

    8.- Cargue el script s0s2s5.sql cambie el nombre de las columnas como semuestra en el ejemplo, guarde el nuevo script como s0s2s8.sql.

    Emp # Employee Job Hire Date7839 KING PRESIDENT 17-NOV-81

    7698 BLAKE MANAGER 01-MAY-817782 CLARK MANAGER 09-JUN-817566 JONES MANAGER 02-APR-817654 MARTIN SALESMAN 28-SEP-817499 ALLEN SALESMAN 20-FEB-817844 TURNER SALESMAN 08-SEP-817900 JAMES CLERK 03-DEC-817521 WARD SALESMAN 22-FEB-817902 FORD ANALYST 03-DEC-817369 SMITH CLERK 17-DEC-807788 SCOTT ANALYST 09-DEC-82

    7876 ADAMS CLERK 12-JAN-837934 MILLER CLERK 23-JAN-82(14 row(s) affected)

    9.- Muestre el nombre concatenado al puesto (job) separado por una coma y unespacio, y nombra la columna "Employeed and title”.

    Employee and Title--------*----------KING, PRESIDENTBLAKE, MANAGERCLARK , MANAGER

    JONES , MANAGERMARTIN, SALESMAN ALLEN, SALESMANTURNER, SALESMANJAME , CLERKWARS, SALESMANFORD, ANALYSTSMITH, CLERKSCOTT, ANALYST

     ADAMS, CLERKMILLER, CLERK

    (14 row(s) affected)

    Parte 2 SQL Server Básico