Académique Documents
Professionnel Documents
Culture Documents
Objetivos
Al terminar esta leccin, deber ser capaz de hacer lo siguiente : Listar las capacidades de la instruccin SELECT de SQL Ejecutar una sentencia bsica de SELECT
Tabla 1
Join
Tabla 1
Tabla 1
Querys bsicos 2-3 2-
Tabla 2
SQL Server Bsico
Capacidades de la instruccin SELECT Una instruccin SELECT recupera informacin de la base de datos Utilizando esta instruccin puede realizar: Seleccin: Puede utilizar esta capacidad de SQL para seleccionar renglones de la tabla que cumplan alguna condicin. Proyeccin: Puede utilizar esta capacidad de SQL para seleccionar columnas de la tabla, puede indicar tantas columnas como lo desee Join: Puede utilizar esta capacidad para reunir datos almacenados en diferentes tablas, creando una liga mediante un atributo que compartan en ambas tablas (PK,FK)
Una Instruccin Select bsica En su forma mas simple, una instruccin SELECT debe incluir lo siguiente: Una clusula SELECT, la cual especifica las columnas a ser mostradas. Una clusula FROM, la cual indica las tablas de donde se tomaran los valores de las columnas especificadas en la clusula SELECT.
Se indica una lista de una o mas columnas Elimina renglones duplicados Muestra todas las columnas Selecciona la columna indicada Etiqueta la columna con un nombre diferente al del atributo Especifica la tabla que contiene las columnas
SELECT * FROM dept; deptno --------10 20 30 40 dname -------------ACCOUNTING RESEARCH SALES OPERATIONS loc ------------NEW YORK DALLAS CHICAGO BOSTON
Seleccionando todas las columnas Para seleccionar todas las columnas de una tabla utilice (*). En el ejemplo, la tabla DEPT contiene tres columnas DEPTNO, DNAME y LOC. Tambin puede listar todas las columnas, indicando los nombres de estas en la clusula SELECT. Por ejemplo.
Seleccionando columnas especificas Puede seleccionar ciertas columnas de la tabla indicando los nombres de estas, en la clusula SELECT separadas por comas. El ejemplo muestra todos los nmeros de departamento y localidades de la tabla DEPT. Especifique las columnas en el orden en el que se desean que aparezcan en la consulta. Por ejemplo, para desplegar la localizacin antes del numero de departamento.
SELECT Loc,Dept FROM Dep; Loc -------------New Cork Dallas Chicago Boston Lic. Oscar Fabela Cano Parte 2 SQL-Server Bsico Pgina 6 de 6 Dept. ------------------10 20 30 40
Expresiones Aritmticas
Cree expresiones con datos tipo NUMERIC Y DATE utilizando operadores aritmticos.
Operador + * / Descripcin Add Subtract Multiply Divide
Expresiones Aritmticas Puede modificar la forma en que es mostrada la informacin de las columnas, ejecutando clculos. Esto es posible utilizando expresiones aritmticas. Una Expresin aritmtica debe contener nombres de columnas, valores numricos constantes y operadores aritmticos. Operadores Aritmticos Aqu se muestran los operadores aritmticos disponibles en SQL. Puede utilizarlos en cualquier clusula de SQL excepto en la clusula FROM.
Utilizando Operadores Aritmticos El ejemplo muestra el uso del operador suma para ejecutar un clculo, 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 tabla EMP, es solo para la consulta.
/ +
Multiplicacin y divisin tienen la mayor prioridad sobre los otros operadores. Los operadores con igual prioridad son evaluados de izquierda a derecha. Los parntesis son utilizados para forzar la evaluacin de prioridad y hacer ms clara la expresin.
Precedencia de los operadores Si una expresin aritmtica contiene ms de un operador, la multiplicacin y divisin son evaluadas primero. Si los operadores de una expresin aritmtica tienen la misma prioridad la evaluacin se efecta de izquierda a derecha. Puede utilizar parntesis para forzar la evaluacin de los operadores con menor prioridad.
Precedencia de los operadores El ejemplo muestra el nombre, salario y una compensacin anual de todos los empleados. Se calcula esta compensacin como una multiplicacin del salario mensual por 12, y agregndole un bono de $100. Note que la multiplicacin se evala primero. Nota: Puede agregar parntesis en la expresin para mejorar la claridad, (12*sal)+100, sin afectar el resultado de la consulta.
Utilizando Parntesis
SELECT ename, sal, 12*(sal+100) FROM emp; ename sal ---------- --------- ----------KING 5000 61200 BLAKE 2850 35400 CLARK 2450 30600 JONES 2975 36900 MARTIN 1250 16200 ... (14 row(s) affected)
Utilizando parntesis Puede modificar las reglas de evaluacin utilizando parntesis para indicar el orden que se evaluaran los operadores. El ejemplo muestra el nombre, salario y una compensacin anual para los empleados. La compensacin se calcula como salario mensual mas un bono mensual, multiplicado por 12. Debido a que los parntesis tienen mayor prioridad sobre la multiplicacin.
Definiendo el valor null El valor nulo es la ausencia de valor en un campo o interseccin de rengln columna, un valor nulo NO es lo mismo que cero o espacios en blanco. El cero es un nmero y los espacios en blanco son caracteres. Las columnas de cualquier tipo pueden contener valores nulos, a menos que dichas 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 son SALESMAN (vendedores) pueden tener una comisin. Tuner, que es un vendedor no gana comisin alguna, pero esta columna tiene cero y no un valor nulo.
Valores Nulos (Continuacin) Si el contenido de una columna es nulo dentro de una expresin aritmtica, el resultado es NULL. Por ejemplo, si intenta dividir entre cero, obtendr un error. Sin embargo, si divide un nmero entre un valor nulo, el resultado es nulo.
Definir un ALIAS para las columnas Cuando muestra el resultado de una consulta. SQL normalmente utiliza el nombre de la columna desplegada como encabezado. En muchos casos, este nombre de encabezado pudiera no ser descriptivo o ser difcil de entender. Puede cambiar el encabezado de una columna utilizando un alias. Especifique el alias despus de la columna en la clusula SELECT utilizando un espacio como separador. Si el alias contiene espacios o caracteres especiales (tales como $ o %), o contiene combinacin de maysculas y minsculas, debe encerrarlo entre apstrofos ( ' ' ) o comillas dobles ( " " ).
Utilizando Alias
SELECT ename AS name, sal salary FROM emp; name salary ------------- --------... SELECT ename "Name", sal*12 "Annual Salary" FROM emp; Name Annual Salary ------------- ------------...
Querys bsicos 2-15 2-
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 la columna. El encabezado de la columna ser el mismo que se especifique en el alias. El segundo ejemplo muestra el nombre y el salario de todos los empleados, como ANNUAL SALARY contiene espacios debe ir encerrado entre apstrofos (' ') o comillas dobles ( " " ).
Operador de Concatenacin
Concatena columnas o cadenas de caracteres a otra columna Se utiliza el operador + Crea una columna resultante que es una cadena de caracteres
Operador de concatenacin Puede encadenar columnas con otras columnas, expresiones aritmticas o valores constantes utilizando el operador de concatenacin (+). Todas las columnas utilizadas con operador ( + ) producen un solo resultado en la misma columna.
Employees ------------------KINGPRESIDENT BLAKEMANAGER CLARKMANAGER JONESMANAGER MARTINSALESMAN ALLENSALESMAN ... (14 row(s) affected)
Operador de concatenacin (Continuacin) En el ejemplo, las columnas ENAME y JOB son concatenadas, y se le asigna el alias Employees La palabra AS antes del alias hace que la sentencia SELECT sea mas fcil de leer.
Usando Literales
SELECT ename + ' ' + 'is a' + ' ' + job AS "Employee Details" FROM emp; Employee Details Employee Details ------------------------------------------------KING is a PRESIDENT KING is a PRESIDENT BLAKE is a MANAGER BLAKE is a MANAGER CLARK is a MANAGER CLARK is a MANAGER JONES is a MANAGER JONES is a MANAGER MARTIN is a SALESMAN MARTIN is a SALESMAN ... ... (14 row(s) affected) (14 row(s) affected)
Usando literales En el ejemplo muestra los nombres y puestos de los empleados en forma mas legible. En el siguiente ejemplo, el nombre y el salario de cada empleado son desplegados dando mas significado al resultado.
SELECT ename + : + 1 + Month Salary Monthly, sal FROM emp Monthly King: Blank: Clark: Jones: Martin: Allen: Sal 5000 2850 2450 2975 1250 1600
1 1 1 1 1 1
Month Salary Month Salary Month Salary Month Salary Month Salary Month Salary
Renglones duplicados
El resultado por default de una consulta, son todos los renglones incluyendo aquellos que estn repetidos.
SELECT SELECT FROM FROM deptno deptno emp; emp;
Renglones Duplicados A menos de que indique lo contrario, el resultado de una consulta mostrara todos los renglones aunque se repitan. El ejemplo anterior muestra el nmero de departamento de los empleados. Puede notar que existen departamentos repetidos.
deptno --------10 20 30
Eliminacin de Renglones Duplicados Para eliminar renglones duplicados, incluye la palabra DISTINCT en la clusula SELECT, Inmediatamente despus 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 DISTINCT afecta a todas columnas seleccionadas , y el resultado es una combinacin diferente de las columnas.
SELECT DISTINCT Deptno,job FROM emp; deptno job *-*-*-**-*-*-*10 CLERK 10 MANAGER 10 PRESIDENT 20 ANALYST .. (9 row(s) affected Lic. Oscar Fabela Cano Parte 2 SQL-Server Bsico Pgina 20 de 20
Prcticas
Seleccionar todos los renglones en diferentes tablas Ejecutar clculos aritmticos Otorgue nombres a las columnas
PRACTICA 1 1.- Inicie una sesin utilizando el user ID y password indicados por el instructor. 2.- La siguiente instruccin SELECT se ejecutara satisfactoriamente falso/verdadero? Select ename,job,sal Salary From emp 3.- Existen errores en la siguiente instruccin? Falso/verdadero. Select empno,ename, Salary x12 Anual Salary From emp 4.- Muestre todos los datos de la tabla DEPT DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 5.- Cree una consulta para mostrar las columnas name, Job, hiredate y el numero de empleados en la primer columna, guarde su consulta SQL con el nombre s0q2q05.SQL. 6.- Ejecute la consulta s0q2q5.SQL. EMPNO ENAME JOB HIREDATE 7839 KING PRESIDENT 17-NOV-81 7698 BLAKE MANAGER 01-MAY-81 7782 CLARK MANAGER 09-JUN-81 7566 JONES MANAGER 02-APR-81 7654 MARTIN SALESMAN 28-SEP-81 7499 ALLEN SALESMAN 20-FEB-81 7844 TURNER SALESMAN 08-SEP-81 7900 JAMES CLERK 03-DEC-81 7521 WARD SALESMAN 22-FEB-81 7902 FORD ANALYST 03-DEC-81 7369 SMITH CLERK 17-DEC-80 7788 SCOTT ANALYST 09-DEC-82 7876 ADAMS CLERK 12-JAN-83 7934 MILLER CLERK 23-JAN-82 (14 row(s) affected) Lic. Oscar Fabela Cano Parte 2 SQL-Server Bsico Pgina 22 de 22
7.- Cree una consulta que muestre los puestos sin repetirse del tabal EMP. JOB ANALYST CLERK MANAGER PRESIDENT SALESMAN
8.- Cargue el script s0s2s5.sql cambie el nombre de las columnas como se muestra en el ejemplo, guarde el nuevo script como s0s2s8.sql. Emp # Employee 7839 KING 7698 BLAKE 7782 CLARK 7566 JONES 7654 MARTIN 7499 ALLEN 7844 TURNER 7900 JAMES 7521 WARD 7902 FORD 7369 SMITH 7788 SCOTT 7876 ADAMS 7934 MILLER (14 row(s) affected) Job PRESIDENT MANAGER MANAGER MANAGER SALESMAN SALESMAN SALESMAN CLERK SALESMAN ANALYST CLERK ANALYST CLERK CLERK Hire Date 17-NOV-81 01-MAY-81 09-JUN-81 02-APR-81 28-SEP-81 20-FEB-81 08-SEP-81 03-DEC-81 22-FEB-81 03-DEC-81 17-DEC-80 09-DEC-82 12-JAN-83 23-JAN-82
9.- Muestre el nombre concatenado al puesto (job) separado por una coma y un espacio, y nombra la columna "Employeed and title. Employee and Title --------*---------KING, PRESIDENT BLAKE, MANAGER CLARK , MANAGER JONES , MANAGER MARTIN, SALESMAN ALLEN, SALESMAN TURNER, SALESMAN JAME , CLERK WARS, SALESMAN FORD, ANALYST SMITH, CLERK SCOTT, ANALYST ADAMS, CLERK MILLER, CLERK (14 row(s) affected)