Está en la página 1de 35

Base de Datos

2012

SQL Server 2008 Laboratorio 7 Esquemas Ejemplos de la Base de Datos

Esquema de Base de Datos El conjunto de objetos que tiene una cuenta de usuario se denomina esquema del usuario, por lo tanto el nombre del esquema ser tambin el nombre del usuario. Los esquemas de Base de Datos que se utilizaran en los prximos laboratorios sern: SCOTT Se trata de un esquema muy bsico de recursos humanos, cuenta con tan solo 4 tablas. HR Se trata tambin de un esquema de recursos humanos, pero este esquema cuenta con 7 tablas.

Esquema SCOTT Su esquema es el siguiente:


EMP DEPT DEPTNO <pi> Number (2) <M> DNAME Variable characters (14) LOC Variable characters (13) PK_DEPT <pi> DEPT_EMP EMPNO <pi> Number (4) <M> DEPTNO <fi> Number (2) <M> ENAME Variable characters (10) JOB Variable characters (9) MGR Number (4) HIRE_DATE Date SAL Number (7,2) COMM Number (7,2) PK_EMP <pi>

BONUS ENAME JOB SAL COMM Variable characters (10) Variable characters (9) Number (7,2) Number (7,2) SALGRADE GRADE Number LOSAL Number HISAL Number

El siguiente script permite consultar el catalogo de Scott: select * from information_schema.tables;

Consultar el Contenido de una tabla 1

Base de Datos Sintaxis select * from dept; DEPTNO DNAME LOC --------------------------------------- -------------- ------------10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON (4 filas afectadas) Esquema HR

2012

JOBS JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY varchar(10) <pk> varchar(35) numeric(6) numeric(6)

JOB_HISTORY DEPARTMENT_ID START_DATE EMPLOYEE_ID JOB_ID END_DATE numeric(4) datetime numeric(6) varchar(10) datetime <fk2> <pk> <pk,fk3> <fk1>

FK_JOB_HIST_RELATIONS_JOBS

FK_EMPLOYEE_RELATIONS_JOBS

EMPLOYEES EMPLOYEE_ID DEPARTMENT_ID MANAGER_ID JOB_ID FIRST_NAME LAST_NAME EMAIL PHONE_NUMBER HIRE_DATE SALARY COMMISSION_PCT numeric(6) numeric(4) numeric(6) varchar(10) varchar(20) varchar(25) varchar(25) varchar(20) datetime numeric(8,2) numeric(2,2) <pk> <fk1> <fk3> <fk2>

FK_JOB_HIST_RELATIONS_DEPARTME FK_JOB_HIST_RELATIONS_EMPLOYEE

FK_DEPARTME_RELATIONS_EMPLOYEE

DEPARTMENTS FK_DEPARTME_RELATIONS_LOCATION DEPARTMENT_ID numeric(4) <pk> MANAGER_ID numeric(6) <fk1> LOCATION_ID numeric(4) <fk2> DEPARTMENT_NAME varchar(30)

FK_EMPLOYEE_RELATIONS_DEPARTME

LOCATIONS LOCATION_ID COUNTRY_ID STREET_ADDRESS POSTAL_CODE CITY STATE_PROVINCE numeric(4) <pk> char(2) <fk> varchar(40) varchar(12) varchar(30) varchar(25)

FK_EMPLOYEE_RELATIONS_EMPLOYEE

FK_LOCATION_RELATIONS_COUNTRIE

REGIONS REGION_ID numeric <pk> REGION_NAME varchar(25)

FK_COUNTRIE_RELATIONS_REGIONS

COUNTRIES COUNTRY_ID char(2) <pk> REGION_ID numeric <fk> COUNTRY_NAME varchar(40)

Base de Datos select * from information_schema.tables;

2012

Base de Datos

2012

SQL Server 2008 Laboratorio 8 Sentencias SQL SELECT Bsicas SQL Fundamentos Data Manipulation Language (DML) Usado para acceder, crear, modificar, o eliminar data en una estructura de base de datos existente. Data Definition Language (DDL) Usado para crear, modificar, o eliminar objetos de base de datos y sus privilegios. Transaction Control Las instrucciones de control de transacciones garantizan la consistencia de los datos, organizando las instrucciones SQL en transacciones lgicas, que se completan o fallan como una sola unidad. Session Control Estas instrucciones permiten controlar las propiedades de sesin de un usuario. La sesin se inicia desde el momento en que el usuario se conecta a la base de datos hasta el momento en que se desconecta. System Control Usadas para manejar las propiedades de la base de datos. TIPO DE DATOS DE SQL SERVER Tipo de Datos bigint, numeric, bit, smallint, decimal, smallmoney, int, tinyint , money Numricos aproximados float, real date, datetime2, datetime, datetimeoffset, smalldatetime, time Fecha y hora Cadenas de caracteres char, text, varchar Cadenas de caracteres nchar, ntext, nvarchar Unicode binary, image, varbinary Cadenas binarias cursor, hierarchyid, sql variant, table, timeestamp, Otros tipos de datos uniqueidentifier, xml Categora Numricos exactos

Base de Datos

2012

OPERADORES ARITMETICOS Propsito Ejemplo Operadores unarios: Usado para representar datos positivos -234.56 y negativos. Para datos positivos, el + es opcional. Suma dos nmeros. Este operador aritmtico de suma + 5+7 tambin puede sumar un nmero, en das, a una fecha. Resta dos nmeros (un operador aritmtico de sustraccin). 56.8-18 Tambin puede restar un nmero, en das, de una fecha. Multiplica dos expresiones (es un operador aritmtico de * 7*5 multiplicacin). Divide un nmero entre otro (es un operador aritmtico de / 8.67/3 divisin). % Devuelve el resto de un nmero dividido entre otro. 12 % 5 = 2 OPERADOR DE CONCATENACION El signo de suma (+) es el operador de concatenacin de cadenas que permite concatenar cadenas. De manera predeterminada, una cadena vaca se interpreta como tal cadena vaca en INSERT o en instrucciones de asignacin con datos de tipo varchar. En la concatenacin de datos de tipo varchar, char o text, la cadena vaca se interpreta como tal cadena vaca. Por ejemplo, 'abc' + '' + 'def' se almacena como 'abcdef'. Sin embargo, si el nivel de compatibilidad es 65, las constantes vacas se tratan como caracteres en blanco y 'abc' + '' + 'def' se almacena como 'abc def'. Ejemplo Barcelona + Campen El Salvador + Campen Resultado BarcelonaCampen El Salvador Campen Operador + -

De la conexin HR, SELECT FIRST_NAME + ' ' + LAST_NAME FROM EMPLOYEES;

OPERADORES DE CONJUNTO Operador Descripcin Devuelve la diferencia entre dos conjuntos y elimina los -(Except) miembros duplicados. Este operador es funcionalmente equivalente a la funcin Except. Devuelve el producto cruzado de dos conjuntos. Este operador *(Crossjoin) es funcionalmente equivalente a la funcin Crossjoin. Devuelve un conjunto en su orden natural, con dos miembros : (Range) especificados como extremos y todos los miembros entre ellos incluidos como miembros del conjunto. Devuelve la unin de dos conjuntos y excluye los miembros + (Union) duplicados. Este operador es funcionalmente equivalente a la funcin Union (MDX).
5

Base de Datos

2012

CONSULTAS SIMPLES EN SQL SERVER Usando la Sentencia SELECT Para los siguientes ejemplos conectarse con la Base de Datos HR. En editor de SQL Server y abrir nueva consulta en SQL Server digitar la siguiente instruccin:
select * from jobs;

Seleccionando Columnas Especificas


select job_title, min_salary from jobs;

Base de Datos

2012

Alias para Nombres de Columnas


select job_title as Titulo, min_salary as "Salario Mnimo" from jobs;

Asegurando Valores Unicos


select distinct department_id from employees;

Para saber la fecha del servidor basta con hacer:


SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS [CurrentDate]; 7

Base de Datos

2012

Con esto, obtendremos en el campo CurrentDate la fecha en formato DD/MM/YYYY. Si queremos saber la hora, podemos hacer:
SELECT CONVERT(VARCHAR(8), GETDATE(), 108) AS [CurrentTime];

Operadores de Comparacin Igualdad ( = )


select first_name + ' ' + last_name, department_id from employees where department_id = 90;

Diferente ( =, <>)
select first_name + ' ' + last_name, commission_pct from employees where commission_pct <> .35;

Menor que ( < )


select first_name + ' ' + last_name, commission_pct from employees where commission_pct < .15;

Base de Datos

2012

Mayor que ( > )


select first_name + ' ' + last_name, commission_pct from employees where commission_pct > .35;

Menor o Igual que ( <= )


select first_name + ' ' + last_name, commission_pct from employees where commission_pct <= .15;

Mayor o Igual que ( >= )


select first_name + ' ' + last_name, commission_pct from employees where commission_pct >= .35;

Base de Datos

2012

ANY o SOME Compara un valor escalar con un conjunto de valores de una sola columna.
select first_name + ' ' + last_name, department_id from employees where department_id <= any (Select department_id from employees where department_id = 10 or department_id =15 or department_id=20 or department_id = 25);

ALL

OPERADORES LOGICOS NOT


select first_name, department_id from employees where not (department_id >= 30);

AND
select first_name, salary from employees where last_name = 'Smith' and salary > 7500;

10

Base de Datos

2012

OR
select first_name, last_name from employees where first_name = 'Kelly' or last_name = 'Smith';

OTROS OPERADORES IN y NOT IN


select first_name, last_name, department_id from employees where department_id in (10, 20, 90);

select first_name, last_name, department_id from employees where department_id not in (10, 30, 40, 50, 60, 80,90, 110, 100);

BETWEEN
select first_name, last_name, salary from employees where salary between 5000 and 6000;

11

Base de Datos

2012

EXISTS
select first_name, last_name, department_id from employees e where exists (select 1 from departments d where d.department_id = e.department_id and d.department_name = 'Administration');

IS NULL y IS NOT NULL


select last_name, department_id from employees where department_id is null;

12

Base de Datos

2012

LIKE
select first_name, last_name from employees where first_name like 'Su%' and last_name not like 'S%';

ORDENANDO FILAS
select first_name, last_name from employees where department_id = 90 order by first_name;

select first_name + ' ' + last_name "Employee Name" from employees where department_id = 90 order by last_name;

select first_name, hire_date, salary, manager_id mid from employees where department_id in (110,100) order by mid asc, salary desc, hire_date;

13

Base de Datos

2012

select distinct 'Region ' + str(region_id) from countries order by 'Region ' + str(region_id);

select first_name, hire_date, salary, manager_id mid from employees where department_id in (110,100) order by 4, 2, 3;

ORDENANDO NULOS
select last_name, commission_pct from employees where last_name like 'A%' order by commission_pct asc;

14

Base de Datos

2012

USANDO EXPRESIONES La Expresin CASE Caso 1 Formato CASE <expresin> WHEN <Valor1> THEN <Valor de Retorno 1> WHEN <Valor2> THEN <Valor de Retorno 2> WHEN <Valor3> THEN <Valor de Retorno 3> ... ... [ELSE <Valor de Retorno>] END
select country_name, region_id, case region_id when 1 then 'Europa' when 2 then 'America' when 3 then 'Asia' else 'Otro' end as continente from countries where country_name like 'I%';

Caso 2 Formato CASE WHEN <Condicin1> THEN <Valor de Retorno 1> WHEN <Condicin2> THEN <Valor de Retorno 2> WHEN <Condicin3> THEN <Valor de Retorno 3> ... ... [ELSE <Valor de Retorno>] END
select first_name, department_id, salary, case 15

Base de Datos when salary < 6000 then 'Bajo' when salary < 10000 then 'Regular' when salary >= 10000 then 'Alto' end as Categora from employees where department_id <= 30 order by first_name;

2012

16

Base de Datos

2012

SQL Server 2008 Laboratorio 9

FUNCIONES PARA VALORES NULOS FUNCION IS NULL


select ename, sal, comm, (sal + comm) as neto from emp;

select ename, sal, comm, sal + isnull(comm,0) as neto from emp;

17

Base de Datos

2012

FUNCIONES DE CADENA Funcin ASCII Descripcin Devuelve el valor de cdigo ASCII del carcter situado mas a la izquierda de una expresin de caracteres. Convierte un cdigo ASCII int en un carcter. Busca el valor expression2 de expression1 y devuelve su posicin inicial si se localiza. Ejemplo
select ascii(ename) from emp;

CHAR CHARINDEX

select first_name + ' '+ Last_name, + char(38) from EMPLOYEES; DECLARE @document varchar(64) SELECT @document = 'Ejemplo numero uno' + 'practicando sql' SELECT CHARINDEX('sql', @document)

Resultado = 31 DIFFERENCE Devuelve un valor entero que SELECT @document = indica la diferencia entre los 'Ejemplo numero uno' + valores de SOUNDEX de dos 'practicando sql' expresiones de caracteres.

LEFT

LEN

Devuelve la parte izquierda de una cadena de caracteres con el nmero de caracteres especificado. Devuelve el nmero de caracteres de la expresin de cadena especificada, excluidos los espacios en blanco finales. Devuelve una expresin de caracteres despus de convertir en minsculas los datos de caracteres en maysculas. Devuelve el carcter Unicode correspondiente al cdigo entero dado, tal como se define en el estndar Unicode.

SELECT difference ('sql', @document) Resultado: 1 SELECT LEFT('abcdefg',2) Resultado: ab

Select len(first_name) as Num_Caracter, First_Name From EMPLOYEES where First_Name = 'Nancy'

Resultado: 5 LOWER
Select lower(first_name) as Num_Caracter, First_Name From EMPLOYEES where First_Name = 'Nancy' DECLARE @cad nchar(8) SET @cad = N'e@si' SELECT UNICODE(SUBSTRING(@cad, 2, 1)), NCHAR(UNICODE(SUBSTRING(@ cad, 2, 1))) SELECT REPLACE('abcdefghicde','c de','xxx');

NCHAR

REPLACE

Reemplaza todas las instancias de un valor de cadena especificado por otro valor de cadena.

18

Base de Datos

2012

REVERSE

Devuelve un valor de cadena select first_name, reverse(first_name) as invertido.

RIGHT

Devuelve la parte derecha de una cadena de caracteres con el nmero de caracteres especificado. Devuelve una cadena de caracteres despus de truncar todos los espacios en blanco finales.

RTRIM

STR

STUFF

SUBSTRING

UNICODE

UPPER

Devuelve datos de caracteres convertidos a partir de datos numricos. La funcin STUFF inserta una cadena en otra. Elimina una longitud determinada de caracteres de la primera cadena a partir de la posicin de inicio y, a continuacin, inserta la segunda cadena en la primera, en la posicin de inicio. Devuelve parte de una expresin de caracteres, binaria, de texto o de imagen. Para obtener ms informacin acerca de los tipos de datos vlidos de SQL Server que se pueden usar con esta funcin Devuelve el valor entero, segn la definicin del estndar Unicode, para el primer carcter de la expresin de entrada. Devuelve una expresin de caracteres con datos de caracteres en minsculas convertidos a maysculas.

nombre from employees where department_id = 90; select first_name, right(first_name,2) as nombre from employees where department_id = 30 DECLARE @cadena varchar(60); SET @cadena = 'Esta es una prueba,'; SELECT @cadena + ' para comprobar funcion'; SELECT RTRIM(@cadena) + ' para comprobar funcion'; SELECT STR(123.4385, 6, 2); SELECT STUFF('abcdef', 3 , 2, 'ijklmn'); Se elimina 2 caracteres de la primera cadena y a partir de la posicin 3 se inserta la segunda cadena. SELECT First_Name, Last_Name, SUBSTRING(First_Name, 1, 1) AS Inicial FROM Employees where department_id = 30 ORDER BY Last_Name; DECLARE @cadena nchar(12) SET @cadena = N'@rroz' SELECT UNICODE(@cadena), NCHAR(UNICODE(@cadena)) SELECT UPPER(Last_Name) + ', ' + First_Name AS Nombre FROM Employees ORDER BY Last_Name;

19

Base de Datos

2012

select upper( first_name + ' ' + last_name) from employees where department_id = 30;

20

Base de Datos

2012

FUNCIONES NUMERICAS

Funcin ABS

ACOS

ASIN

ATAN

ATN2

CEILING

COS

COT

DEGREES

EXP FLOOR

LOG LOG10 PI POWER


21

Descripcin Funcin matemtica que devuelve el valor absoluto positivo de una expresin numrica especfica. Funcin matemtica que devuelve el ngulo, en radianes, cuyo coseno es la expresin float especificada; tambin se denomina arco coseno. Devuelve el ngulo, expresado en radianes, cuyo seno es la expresin float especificada. Tambin se denomina arco seno. Devuelve el ngulo en radianes cuya tangente es una expresin de tipo float especificada. Tambin se denomina arcotangente. Devuelve el ngulo (en radianes) formado por el eje X positivo y la lnea que se extiende desde el origen al punto (y, x), donde x e y son los valores de las dos expresiones de punto flotante especificadas. Devuelve el entero ms pequeo mayor o igual que la expresin numrica especificada. Es una funcin matemtica que devuelve el coseno trigonomtrico del ngulo especificado, expresado en radianes, en la expresin dada. Una funcin matemtica que devuelve la cotangente trigonomtrica del ngulo especificado, expresada en radianes, en la expresin float especificada. Devuelve el ngulo correspondiente en grados para un ngulo especificado en radianes. Devuelve el valor exponencial de la expresin float especificada. Devuelve el entero ms grande que sea menor o igual que la expresin numrica especificada. Devuelve el logaritmo natural de la expresin float especificada. Devuelve el logaritmo en base 10 de la expresin float especificada. Devuelve el valor constante de PI. Devuelve el valor de la expresin

Ejemplo
SELECT ABS(-1.0) = 1,0

SELECT ACOS(-1)= 3,14159265358979;

SELECT ASIN(-1) 1,5707963267949;

SELECT ATAN(60) 1,55413120308096

SELECT ATN2(60,120) = 0,463647609000806

SELECT CEILING(30.56987)= 31 SELECT COS(30) 0,154251449887584 =

SELECT COT(30) = 0,156119952161659

SELECT 1718

DEGREES(30)

SELECT EXP(30) = 10686474581524,5 SELECT FLOOR(56.23) = 56 SELECT LOG(10) = 2,30258509299405 SELECT LOG10(10) = 1 SELECT PI() = 3,14159265358979 SELECT POWER(2,3) = 8

Base de Datos

2012

Funcin RADIANS RAND ROUND SIGN SIN

Descripcin especificada elevada a la potencia indicada. Devuelve los radianes de una expresin numrica en grados. Devuelve un valor float pseudoaleatorio de 0 a 1. ambos excluidos. Devuelve un valor numrico, redondeado a la longitud o precisin especificadas. Devuelve el signo positivo (+1), cero (0) o negativo (-1) de la expresin especificada. Devuelve el seno trigonomtrico del ngulo dado, en radianes, en una expresin float numrica aproximada. Devuelve la raz cuadrada del valor de tipo flotante especificado. Devuelve el cuadrado del valor de tipo flotante especificado. Devuelve la tangente de la expresin de entrada.

Ejemplo
SELECT RADIANS(1e-307) = 0 SELECT RAND(0.5) = 0,943597390424144 SELECT ROUND(352.5858965478, 4) = 352,5859000000 SELECT SIGN(-356) = -1 SELECT SIN(60) = 0,304810621102217 SELECT SQRT(36) = 6 SELECT SQUARE(8) = 64 SELECT TAN(35) 0,473814720414451 = -

SQRT SQUARE TAN

FUNCIONES DE FECHA Funcin CURRENT_TI MESTAMP Valor devuelto Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se est ejecutando. El ajuste de zona horaria no est incluido. Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se est ejecutando. El ajuste de zona horaria no est incluido. Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se est ejecutando. La fecha y hora se devuelven como una hora universal coordinada (UTC). Devuelve una cadena de caracteres que representa el datepart especificado de la fecha especificada. Ejemplo
SELECT CURRENT_TIMESTAMP = 05/12/2009 18:06:37 SELECT GETDATE() = 05/12/2009 18:09:12

GETDATE

GETUTCDAT E

SELECT GETUTCDATE() = 06/12/2009 0:09:55;

DATENAME

DATEPART

Devuelve un entero que representa el datepart especificado del date especificado.

SELECT DATENAME(hour, '2009-12-05') ,DATENAME(minute, '2009-12-05') ,DATENAME(second, '2009-12-05'); SELECT DATEPART(hour, '2007-06-01') ,DATEPART(minute, '2007-06-01') ,DATEPART(second, '2007-06-01');

22

Base de Datos

2012

Funcin DAY MONTH YEAR

Valor devuelto Ejemplo Devuelve un entero que representa la parte del SELECT YEAR(2009), MONTH(2009), da de date especificado.
DAY(2009);

Devuelve un entero que representa la parte del SELECT YEAR(2009), MONTH(2009), mes de un date especificado. Devuelve un entero que representa la parte del ao de un date especificado.
DAY(2009); SELECT YEAR(2009), MONTH(2009), DAY(2009);

23

Base de Datos SQL Server 2008 Laboratorio 10

2012

Totalizando Datos y Funciones de Grupo

FUNCIONES DE GRUPO AVG Devuelve el promedio de los valores de un grupo. Los valores NULL se pasan por alto. Puede ir seguida de la clusula OVER.
select avg(salary) from employees where department_id = 30;

COUNT Devuelve el nmero de elementos de un grupo. COUNT funciona como COUNT_BIG. La nica diferencia entre ambas funciones est en los valores devueltos. COUNT siempre devuelve un valor de tipo de datos int. COUNT_BIG siempre devuelve un valor de tipo de datos bigint. Puede ir seguida de la clusula OVER.
select count(*) from departments;

select count(distinct department_id) from employees;

MAX Devuelve el valor mximo de la expresin. Puede ir seguida de la clusula OVER.


select max(salary) from employees where department_id = 80;

MIN Devuelve el valor mnimo de la expresin. Puede ir seguida de la clusula OVER.


select min(salary) from employees where department_id = 80;

24

Base de Datos

2012

SUM Devuelve la suma de todos los valores o slo de los valores DISTINCT de la expresin. SUM slo puede utilizarse con columnas numricas. Los valores Null se pasan por alto. Puede ir seguida de la OVER (clusula de Transact-SQL).
select sum(salary) from employees where department_id = 80;

GROUP BY Agrupa un conjunto de filas seleccionado en un conjunto de filas de resumen de acuerdo con los valores de una o ms columnas o expresiones. Cantidad de empleados por departamento.
select department_id as Departamento, count(*) as Empleados from employees group by department_id;

Cantidad de empleados por puesto de trabajo en los departamentos 50 y 80.


select department_id as Departamento, job_id as puesto, count(*) as Empleados from employees where department_id in (50,80) group by department_id, job_id; 25

Base de Datos

2012

Cantidad de empleados que han ingresado por ao.

HAVING Especifica una condicin de bsqueda para un grupo o agregado. HAVING slo se puede utilizar con la instruccin SELECT. Normalmente, HAVING se utiliza en una clusula GROUP BY. Cuando no se utiliza GROUP BY, HAVING se comporta como una clusula WHERE.

Departamentos que tienen ms de 10 empleados.


select department_id as Departamento, count(*) as Empleados from employees group by department_id having count(*) > 10;

26

Base de Datos

2012

SQL Server 2008 Laboratorio 11 Consultas Multitablas Qu es un Join? Usando combinaciones (joins), se pueden recuperar datos desde dos o ms tablas basados en relaciones lgicas entre las tablas. Las combinaciones indican cmo el SQL Server utilizar los datos de una tabla para seleccionar las filas en otra tabla. Consultas Simples Script 11.1 Consultar los pases por regin.
select regions.region_id, region_name, country_name from regions, countries where regions.region_id = countries.region_id;

Para esta consulta nos dar un total de 25 campos.

27

Base de Datos

2012

Consultas Complejas
Script 11.2

Consultar los departamentos que se encuentran fuera de EEUU, y su respectiva ciudad.


select locations.location_id, city, department_name from locations, departments where (locations.location_id = departments.location_id) and (country_id != 'US');

Uso de Alias Los alias simplifican la referencia a las columnas de las tablas que se utilizan en una consulta. Script 11.3 Consultar los pases de Asia.
select r.region_id, r.region_name, c.country_name from regions r, countries c where (r.region_id = c.region_id) and (r.region_name = 'Asia');

Inner Join con el operador (=)


Script 11.4 select e.first_name, e.last_name, e.department_id, d.department_name from employees e inner join departments d on e.department_id=d.department_id where d.department_name = 'IT' 28

Base de Datos order by e.FIRST_NAME;

2012

Inner Join con el operador (>)


Script 11.5 select e.first_name, e.last_name, e.department_id, d.department_name from employees e inner join departments d on e.department_id>d.department_id where d.department_name = 'IT' order by e.FIRST_NAME;

Para esta consulta nos darn un total de 46 campos. Inner Join con el operador (<>)
Script 11.6 select e.first_name, h.employee_id, j.job_title from employees e inner join job_history h on e.employee_id=h.employee_id inner join jobs j on h.JOB_ID = j.JOB_ID where h.JOB_ID<>e.JOB_ID order by first_name;

29

Base de Datos

2012

OUTER JOIN Combinacin externa se subdivide en 3 sub categoras las cuales son left, right y full. Combinacin externa utiliza estos nombres de categora como palabras clave que se pueden especificar en la clusula FROM. Left Outer Join Todos estos ejemplos producen el mismo resultado.
Script 11.7 select c.country_name, l.city from countries c left outer join locations l on c.country_id = l.country_id; select c.country_name, l.city from countries c left join locations l on c.country_id = l.country_id;

30

Base de Datos

2012

Para esta consulta nos darn un total de 34 campos.

31

Base de Datos

2012

Right Outer Join


Script 8.8 select c.country_name, l.city from locations l right outer join countries c on l.country_id = c.country_id;

Para esta consulta nos darn un total de 34 campos. Full Outer Join Script 8.9
select e.employee_id, e.last_name, d.department_id, d.department_name from employees e full outer join departments d on e.department_id = d.department_id;

32

Base de Datos

2012

Para esta consulta nos darn un total de 123 campos.

33

Base de Datos

2012

Cross Join Si dos tablas en una consulta no tienen ninguna condicin de combinacin, entonces SQL Server devuelve su producto cartesiano. SQL Server combina cada fila de una tabla con cada fila de la otra tabla. Un producto cartesiano genera muchas filas y es siempre raramente til. Por ejemplo, el producto cartesiano de dos tablas, cada uno con 100 filas, tiene 10.000 filas.

Script 8.10
select region_name, country_name from regions cross join countries; select region_name, country_name from regions, countries;

Para esta consulta nos darn un total de 100 campos.

34

Base de Datos

2012

Los puestos de trabajo de los que solo hay un empleado en la empresa.


select job_id as Puesto, count(*) as Empleados from employees group by job_id having count(*) = 1;

35

También podría gustarte