Anda di halaman 1dari 24

Escribiendo sentencias

básicas de SQL

Escribiendo Querys básicos 2-


2-1 SQL Server

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-1


Objetivos
• Al terminar esta lección, deberá ser
capaz de hacer lo siguiente :
– Listar las capacidades de la
instrucción SELECT de SQL
– Ejecutar una sentencia básica de
SELECT

Escribiendo Querys básicos 2-


2-2 SQL Server

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-2


Capacidades de la instrucción SELECT

Selección Proyección

Tabla 1 Tabla 1
Join

Tabla 1 Tabla 2
Escribiendo Querys básicos 2-
2-3 SQL Server

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 seleccionar


renglones de la tabla que cumplan alguna condición.
• Proyección : Puede utilizar esta capacidad de SQL para seleccionar
columnas de la tabla, puede indicar tantas columnas tenga la tabla que
desee.
• Join: Puede utilizar esta capacidad para “reunir” datos almacenados en
diferentes tablas, creando una liga mediante un atributo que comparten en
ambas tablas (PK, FK).

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-3


Una instrucción SELECT básica

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


FROM table;

– SELECT identifica que columnas


– FROM identifica cuales tablas

Escribiendo Querys básicos 2-


2-4 SQL Server

Una instrucción SELECT básica


En su forma más simple, una instrucción SELECT debe incluir lo suguiente:
• Una cláusula SELECT, la cual especifica las columnas a ser mostradas
• Una cláusula FROM, la cual indica las tablas donde se tomarán los valores
de las columnas especificadas en la cláusula SELECT.
Sintaxis:
SELECT se indica una lista de una o más columnas.
DISTINCT elimina renglones duplicados.
* muestra todas las columnas.
column selecciona la columna indicada.
alias etiqueta la columna con un nombre diferente del atributo.
FROM especifica la tabla que contiene las columnas.

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-4


Seleccionando todas las Columnas

SELECT *
FROM dept;

deptno dname loc


--------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

Escribiendo Querys básicos 2-


2-5 SQL Server

Seleccionando todas las Columnas


Para seleccionar todas las columnas de una tabla utilice un asterisco (*). En el
ejemplo, la tabla DEPT contiene tres columnas: DEPTNO, DNAME y LOC.
También puede listar todas las columnas de la tabla indicando los nombres de
estas en la cláusula SELECT. Por ejemplo :

SELECT deptno, dname, loc


FROM dept;

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-5


Seleccionando Columnas Específicas

SELECT deptno, loc


FROM dept;

deptno loc
--------- -------------
10 NEW YORK
20 DALLAS
30 CHICAGO
40 BOSTON

Escribiendo Querys básicos 2-


2-6 SQL Server

Seleccionando Columnas Específicas


Puede seleccionar ciertas columnas de la tabla indicando los nombres de estas en
la cláusula SELECT separadas por comas. El ejemplo muestra todos los números
de departamento y localidades de la tabla DEPT.
Especifique las columnas en el orden en el que desea aparezcan en la consulta.
Por ejemplo, para desplegar la localización antes del número de departamento :

SELECT loc, deptno


FROM dept;

loc deptno
------------- ---------
NEW YORK 10
DALLAS 20
CHICAGO 30
BOSTON 40

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-6


Expresiones Aritméticas

Cree expresiones con datos tipo NUMERIC Y


DATE utilizando operadores aritméticos.

Operador Descripción

+ Add

- Subtract

* Multiply

/ Divide

Escribiendo Querys básicos 2-


2-7 SQL Server

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
Expresiones Aritméticas debe contener nombres de columnas, valores numéricos
constantes y operadores aritméticos.

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

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-7


Utilizando 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)

Escribiendo Querys básicos 2-


2-8 SQL Server

Utilizando Operadores Aritméticos


El ejemplo muestra el uso del operador suma para ejecutar un cálculo,
aumentando el salario en $300 para todos los empleados.
Note que la columna del resultado calculado no es una nueva columna en la tabla
EMP, es solo para la consulta.

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-8


Precedencia de los Operadores

_
* / +
– Multiplicación y división tienen la mayor
prioridad sobre los otros operadores.
– Los operadores con igual prioridad son
evaluados de izquierda a derecha.
– Los paréntesis son utilizados para forzar
la evaluación de prioridad y hacer más
clara la expresión.

Escribiendo Querys básicos 2-


2-9 SQL Server

Precedencia de los Operadores


Si una expresión aritmética contiene más de un operador, la multiplicación y
división son evaluadas primero. Si los operadores de una expresión aritmética
tienen la misma prioridad la evaluación se efectúa de izquierda a derecha.
Puede utilizar paréntesis para forzar la evaluación de los operadores con menor
prioridad.

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-9


Precedencia de los Operadores

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)

Escribiendo Querys básicos 2-


2-10 SQL Server

Precedencia de los Operadores


El ejemplo muestra el nombre, salario y una compensación anual de todos los
empleados. Se calcula esta compensación como una multiplicación de del salario
mensual por 12, y agregándole un bono de $100. Note que la multiplicación se
evalú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.

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-10


Utilizando Paréntesis

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)

Escribiendo Querys básicos 2-


2-11 SQL Server

Utilizando Paréntesis
Puede modificar las reglas de evaluación utilizando paréntesis para indicar el
orden en que se evaluarán los operadores.
El ejemplo muestra el nombre, salario y una compensación anual para los
empleados. La compensación se calcula como el salario mensual mas un bono
mensual, multiplicado por 12. Debido a que los paréntesis tienen mayor
prioridad sobre la multiplicación.

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-11


Definiendo el Valor Null
– Null es un valor que es inaccesible, desconocido
o inaplicable.
– Un null no es lo mismo que cero o un espacio en
blanco.

SELECT ename, job, comm


FROM emp;

ename job comm


---------- --------- ---------
KING PRESIDENT
BLAKE MANAGER
...
TURNER SALESMAN 0
...
(14 row(s) affected)

Escribiendo Querys básicos 2-


2-12 SQL Server

Definiendo el Valor Null


El valor nulo es la ausencia de valor en un campo o intersección de renglón
columna, un valor nulo no es lo mismo que cero o espacios en blanco. El cero es
un número y los espacios en blanco son caracteres.
Las columnas de cualquier tipo pueden contener valores nulos, a menos que
dichas columnas hayan sido definidas cono 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 comisión. Turner, que es un
vendedor no gana comisión alguna, pero esta columna tiene cero y no un valor
nulo.

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-12


Valores Null en Expresiones
Aritméticas
Las Expresiones Aritméticas que contienen
un valor null se evaluan como null.

SELECT ename, 12*sal+comm


FROM emp;

ename
---------- -----------
....
KING NULL

Escribiendo Querys básicos 2-


2-13 SQL Server

Valores Nulos (continuación)


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

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-13


Definir un ALIAS para las columnas

– Renombra el encabezado de las


columnas
– Es útil cuando se utilizan cálculos
– Va inmediatamente después del nombre
de la columna; la palabra AS es opcional
y se coloca entre el nombre de la
columna y el alias
– Se requieren apóstrofos si el alias
contiene espacios en blanco

Escribiendo Querys básicos 2-


2-14 SQL Server

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 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 un
espacio como separador. Si el alias contiene espacios o caracteres especiales
(tales como $ o %), debe encerrarlo entre apóstrofos (‘‘) o comillas dobles (“ “).

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-14


Utilizando Alias
SELECT ename AS name, sal salary
FROM emp;

name salary
------------- ---------
...

SELECT ename "Name",


sal*12 "Annual Salary"
FROM emp;

Name Annual Salary


------------- -------------
...

Escribiendo Querys básicos 2-


2-15 SQL Server

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 apóstrofos (‘ ‘) o
comillas dobles (“ “).
Nota: utilice AS para darle más claridad a la consulta.

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-15


Operador de Concatenación

– Concatena columnas o cadenas de


caracteres a otra columna
– Se utiliza el operador +
– Crea una columna resultante que es
una cadena de caracteres

Escribiendo Querys básicos 2-


2-16 SQL Server

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

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-16


Utilizando el Operador de
Concatenación

SELECT ename + job AS "Employees"


FROM emp;

Employees
-------------------
KINGPRESIDENT
BLAKEMANAGER
CLARKMANAGER
JONESMANAGER
MARTINSALESMAN
ALLENSALESMAN
...
(14 row(s) affected)

Escribiendo Querys básicos 2-


2-17 SQL Server

Operador de Concatenación (continuación)


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 más fácil de
leer.

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-17


Usando Literales

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


AS "Employee Details"
FROM emp;

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)

Escribiendo Querys básicos 2-


2-18 SQL Server

Usando Literales
El ejemplo muestra los nombres y puestos de los empleados en forma más
legible.
En el siguiente ejemplo, el nombre y el salario de cada empleado son
desplegados dando más significado al resultado.

SELECT ename + ': '+'1'+' Month salary' Monthly, sal


FROM emp;

Monthly sal
---------------------- --------------
KING: 1 Month salary 5000
BLAKE: 1 Month salary 2850
CLARK: 1 Month salary 2450
JONES: 1 Month salary 2975
MARTIN: 1 Month salary 1250
ALLEN: 1 Month salary 1600
TURNER: 1 Month salary 1500
...
(14 row(s) selected)

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-18


Renglones duplicados
El resultado por default de una consulta, son
todos los renglones incluyendo aquellos que
estén repetidos.
SELECT deptno
FROM emp;

deptno
---------
10
30
10
20
...
(14 row(s) affected)

Escribiendo Querys básicos 2-


2-19 SQL Server

Renglones duplicados
A menos de que indique lo contrario, el resultado de una consulta mostrará todos
los renglones aunque se repitan. El ejemplo anterior muestra el número de
departamento de los empleados. Puede notar que existen departamentos
repetidos.

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-19


Eliminando renglones duplicados
Elimine los renglones duplicados utilizando la
palabra DISTINCT en la cláusula SELECT.

SELECT DISTINCT deptno


FROM emp;

deptno
---------
10
20
30

Escribiendo Querys básicos 2-


2-20 SQL Server

Eliminando renglones duplicados


Para eliminar renglones duplicados, incluye la palabra DISTINCT en la cláusula
SELECT 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 DISTINCT
afecta a todas las columnas seleccionadas, y el resultado es una combinación
diferente de las columnas.

SELECT DISTINCT deptno, job


FROM emp;

deptno job
------ ---------
10 CLERK
10 MANAGER
10 PRESIDENT
20 ANALYST
...
(9 row(s) affected)

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-20


Prácticas

– Seleccionar todos los renglones en


diferentes tablas
– Ejecutar cálculos aritméticos
– Otorgue nombres a las columnas

Escribiendo Querys básicos 2-


2-21 SQL Server

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-21


Práctica 2
1. Inicie una sesión utilizando el user ID y password indicados por el instructor.
2. ¿La siguiente instrucción SELECT se ejecutará satisfactoriamente?
Falso/Verdadero

SELECT ename, job, sal Salary


FROM emp;

3. ¿Existen errores en la siguiente instrucción?


Falso/Verdadero

SELECT empno, ename


salary x 12 ANNUAL 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 ename, job, hiredate y el número de
empleado, con el número de empleado en la primer columna, guarde su consulta SQL
con el nombre s02q05.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)

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-22


Práctica 2 (continua)
6. Cree una consulta que muestre los puestos sin repetirse de la tabla EMP.
JOB
-----------
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN

7. Cargue el script s02q05.sql Cambie el nombre de las columnas como se muestra


en el ejemplo, guarde el nuevo script como s02q07.sql :

Emp # Employee Job Hire Date


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

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-23


Práctica 2 (continúa)
8. Muestre el nombre concatenado al puesto (job) separado por una coma y un espacio, y
nombre la columna “Employee and Title”.

Employee and Title


-------------------
KING, PRESIDENT
BLAKE, MANAGER
CLARK, MANAGER
JONES, MANAGER
MARTIN, SALESMAN
ALLEN, SALESMAN
TURNER, SALESMAN
JAMES, CLERK
WARD, SALESMAN
FORD, ANALYST
SMITH, CLERK
SCOTT, ANALYST
ADAMS, CLERK
MILLER, CLERK
(14 row(s) affected)

M.C. Mario Hernández Hernández Introducción a SQL-Server 2-24