Вы находитесь на странице: 1из 101

1

Escribiendo
sentencias SELECT
Bsicas.

SELECT * | {[DISTINCT] columna|expresin [alias],...}


FROM
tabla

SELECT
columnas.

: Es una lista de una o mas

: Selecciona todas las columnas.

DISTINCT

: Suprime las duplicidades.

Columna|expresin
expresiones.
Alias
:
seleccionadas un

: Selecciona columnas o
Da

las

encabezado diferente.

columnas

SELECT * FROM products

Ejercicio 1: Ir a la base de Datos Northwind realizar un select


sobre Tabla Employees

select ProductID,
ProductName,
UnitPrice
from products

ProductId ProductName

UnitPrice

---------- ------------------------------ ------------------1


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Chai
Chang
Aniseed Syrup
Chef Anton's Cajun Seasoning
Chef Anton's Gumbo Mix
Grandma's Boysenberry Spread
Uncle Bob's Organic Dried Pears
Northwoods Cranberry Sauce
Mishi Kobe Niku
Ikura
Queso Cabrales
Queso Manchego La Pastora
Konbu
Tofu
Genen Shouyu
Pavlova
Alice Mutton

18.00
19.00
10.00
22.00
21.35
25.00
30.00
40.00
97.00
31.00
21.00
38.00
6.00
23.25
15.50
17.45
39.00

Ejercicio 2: Ir a la base de Datos Northwind realizar un select sobre Tabla


Employees mostrar solo campos:
LastName, Firstname, Address, City

Operadores
+
*
/

Descripcin
Suma
Resta
Multiplicacin
Divisin

SELECT n_fact,cod_art, precio_u, cantidad, precio_u * cantidad


FROM detalles
n_fact
cod_art
precio_u
cantidad
----------------- ------------------ -------------------- --------------444444444
222
300
50
444444444
555
5000
1
444444444
999
35000
1
666666666
888
5000
1
777777777
999
35000
1
888888888
111
3500
1
888888888
222
350
5
888888888
333
4000
1

15000
5000
35000
5000
35000
3500
1750

(23 row(s) affected)

Ejercicio 3: Ir a la base de Datos Northwind realizar un select


sobre Tabla Products mostrar campos:
ProductName, UnitPrice, UnitsinStock y
UnitPrice*UnitsinStock

La prioridad de los operadores son:


/
*
+
Para quebrar esta prioridad debo utilizar los
parntesis.

SELECT cli_rut AS Rut,


cli_nom Nombre,
cli_ape Apellido
FROM clientes
Rut
Nombre
Apellido
---------- ------------------------------ ---------------------------11111111-1 Cristian
Gonzalez
22222222-2 Rodrigo
Obando
33333333-3 Jonathan
Andrade
44444444-4 Sergio
Jimenez
55555555-5 Cristina
Oyarzun
66666666-6 Angelica
Garca
77777777-7 Jessica
Sigoa
88888888-8 Alejandra
Vasquez
99999999-9 Jocelyme
Asem
(9 row(s) affected)

Ejercicio 4: Ir a la base de Datos Northwind realizar un select


sobre Tabla Products mostrar campos:
ProductName,
UnitPrice,
UnitsinStock y
UnitPrice*UnitsinStock
Posteriormente poner los siguientes alias a las
columnas
NombreProducto
PrecioProducto
UnidadesEnStock
ValorAcumulado

Para concatenar columnas slo de tipo varchar


puedo usar +.
SELECT cli_nom + + cli_ape AS Nombre Completo
FROM

clientes

Nombre Completo
--------------------------------Cristian Gonzalez
Rodrigo Obando
Jonathan Andrade
Sergio Jimenez
Cristina Oyarzun
Angelica garca
Jessica Sigoa
Alejandra Vasquez
Jocelyme Asem
(9 row(s) affected)

Ejercicio 5: Ir a la base de Datos


Northwind realizar un select
sobre Tabla Employees, Mostrar
LastName concatenado con Firstname
con el alias de nombre completo, y
address concatenado con city
concatenado con region y poner el
alias de direccion

Cuando existen datos de tipo numrico se usa


las comillas simples.
SELECT nom_art , cuesta , precio_u FROM articulos
nom_art
precio_u
------------------------------ -------- -------------------Mouse
cuesta 3000
Cds
cuesta 350
Pad Mouse
cuesta 4000
Disquete
cuesta 1000
Parlantes
cuesta 5000
Microfonos
cuesta 3500
Impresora
cuesta 40000
Teclado
cuesta 5000
Scanner
cuesta 35000
(9 row(s) affected)

SELECT rut_cli FROM facturas


cli_rut
---------11111111-1
11111111-1
22222222-2
22222222-2
33333333-3
33333333-3
44444444-4
55555555-5
66666666-6
77777777-7
88888888-8
99999999-9
(12 row(s) affected)

SELECT DISTINCT cli_rut FROM facturas


cli_rut
---------11111111-1
22222222-2
33333333-3
44444444-4
55555555-5
66666666-6
77777777-7
88888888-8
99999999-9
(9 row(s) affected)

Ejercicio 6: Ir a la base de Datos Northwind realizar un


select sobre Tabla Employees, Mostrar
Los distintos valores que tiene la columna country

Cree una consulta que muestre los siguiente:


Mi codigo es employee_id, y me llamo
FirstName y LastName en la tabla Employees

Muestre de la tabla Order details todos los


codigos de producto (productid) que se han
vendido sin duplicidades.

Restringiendo y
ordenando
datos.

SELECT *| {[DISTINCT] columna|expresin [alias],...}


FROM tabla WHERE condicin(es)

WHERE

: Restringe a las filas que cumplen una


condicin.

Condicin

: Es una composicin de nombres de


columnas, expresiones, constantes, y
operadores de comparacin.

SELECT employeid, lastname, fisrtname, title FROM employees

SELECT employeeid, lastname, firstname, title


FROM employees
where employeeid=7

SELECT employeeid, lastname, firstname, title


FROM employees
where title="sales representative"

Operador
=
>
>=
<
<=
<>

Significado
Igual a
Mayor que
Mayor o igual que
Menor que
Menor o igual que
Distinto

SELECT employeeid, lastname, firstname, title


FROM employees
where employeeid >3

Operador

Significado

BETWEEN ... AND ...


Entre dos valores
(incluido a ambos)
IN (conjunto)

Igual a cualquiera de
los valores de la lista

LIKE

Igual a una muestra


de caracteres

SELECT employeeid, lastname, firstname, title


FROM employees
where employeeid between 5 and 8

SELECT cli_nom, cli_ape


FROM clientes
WHERE cli_nom IN (Jessica , Alejandra)
cli_nom
cli_ape
------------------------------ -----------------------------Jessica
Sigoa
Alejandra
Vasquez
(2 row(s) affected)

SELECT employeeid, lastname, firstname, title


FROM employees
where title in ("sales manager", "sales representative")

Smbolo

Descripcin

%
secuencia
caracteres.

Representa cualquier
de cero o ms

Representa un caracter.

SELECT employeeid, lastname, firstname, title


FROM employees
where lastname like D%

SELECT employeeid, lastname, firstname, title


FROM employees
where lastname like %a

SELECT employeeid, lastname, firstname, title


FROM employees
where lastname like _a%

Operador
AND

OR
componente es
NOT

Significado

Retorna True si ambos


componentes de
comparacin son true
Retorna verdadero al
menos
Retorna true si la
condicin es false.

un
true

SELECT employeeid, lastname, firstname, title


FROM employees
where employeeid>2 and lastname like C%

SELECT employeeid, lastname, firstname, title


FROM employees
where employeeid > 7 or title=Sales Representative

SELECT employeeid, lastname, firstname, title


FROM employees
where title Not In (Sales Representative, Inside Sales
Coordinator)

SELECT employeeid, lastname, firstname, title


FROM employees
Order By lastname

SELECT employeeid, lastname, firstname, title


FROM employees
Order by lastname desc

Crear una consulta que despliegue toda la


informacin de la tabla customers que cumpla con
la pais=Mxico y cuyo nombre de compaa termina
en a

Consulta que despliegue el nombre compaia y


nombre de contacto de la tabla customers que
cumpla con Concattitle=Sales Representative

Ordenar la tabla customers


descendiente por ciudad

en

customers

Muestre a todos los concatname cuyo nombre o


apellido tengan una a como segunda letra
(ordenados en forma ascendente) de la tabla
customers

Realizar consulta que muestre todo el contenido


de la tabla products que cumpla con productid
entre 4 y 13,categoryid mayor que 4, unitinstock
mayores que 20 y ordenar por nombre de
producto en forma ascendente

Select Anidados

Select
employees.first_name,employees.salary,departments.department_nam
from
employees, departments

El producto cartesiano es un tipo de composicin de


tablas,
aplicando el producto cartesiano a dos tablas se
obtiene una
tabla con lascolumnasde laprimera tablaunidasa
lascolumnasde la segunda tabla, y las filas de la
tabla
resultante sontodas las posibles
concatenacionesdefilasde
laprimera tablacon filas de lasegunda tabla.
La sintaxis es la siguiente:

Select *
from nombre_de las tablas
Ejemplo:

Select *
from employees, departments

Se tiene la siguiente situacin:


SELECT *
From Employees, departments
WHERE
employees.department_id=department.department_id
Combinamos todos los departamentos con todos los empleados
pero luego
seleccionamos los que cumplan que el department_id del
employees sea igual al
department_id del department, por lo tanto quedamos con los
departamentos
que corresponde al Empleado.
Las columnas que aparecen en la clusula WHERE se llamancolumnas de
emparejamientoya que permiten emparejar las filas de las dos
tablas.Normalmente una de las columnas es clave principal.

SELECT tabla1.columna, tabla2.clolumna


FROM tabla1, tabla2
WHERE tabla1.columna = tabla2.columna

Select
employees.first_name,employees.salary,departments.department_nam
from
employees, departments
where employees.department_id = departments.department_id

Usando alias para las tablas.


Select
a.first_name,a.salary,b.department_name
from
Employees a , departments b
where a.department_id = b.department_id

Select
a.first_name,a.salary,b.department_name
from
Employees a , departments b
where a.department_id = b.department_id and
a.department_id>100

Select
a.first_name,a.salary,b.department_name
from
Employees a , departments b
where a.department_id = b.department_id and
a.department_id between 50 and 100

ElINNER JOINes otro tipo de composicin de tablas,


permiteemparejar filasde distintas tablas de
formams eficienteque con el producto Cartesiano.
Puesto que en vez de hacer el producto cartesiano
completo, selecciona la filas que cumplen la condicin
de emparejamiento, para cada fila de una de las
tablasbusca directamenteen la otra tablalas filas
quecumplen la condicin.
La sintaxis es la siguiente:

select *
from employees emp inner join jobs trab on EMP.JOB_ID=TRAB.JOB_ID

tabla1ytabla2: Sonespecificaciones de tabla(nombre de tabla con alias o


no, nombre de consulta guardada.
Pueden ser las dos lamisma tabla,en este caso es obligatorio
definir al menos unaliasde tabla.

col1, col2: Son lascolumnas de emparejamiento.


Lascolumnasdeemparejamientodeben contener lamisma
clase de datos.

comp: Representa cualquier operador decomparacin( =, <,>, <=, >=, o <> )


y se utiliza para establecer la condicin de emparejamiento.
Se pueden definirvarias condicionesde emparejamientounida
por los operadoresANDyORponiendo cada condicin
entreparntesis.

select *
from employees emp inner join jobs trab on EMP.JOB_ID=TRAB.JOB_ID
and salary >10000
_______________________________________
select *
from employees emp inner join jobs trab on EMP.JOB_ID=TRAB.JOB_ID
or trab.job_title in ('President', 'Accountant')
_______________________________________
select *
from employees emp inner join jobs trab on EMP.JOB_ID=TRAB.JOB_ID
and (trab.job_title in ('President', 'Accountant')
or emp.salary between 2000 and 10000)

Se puedencombinar msdedos tablas.


En este caso hay quesustituiren la sintaxis unatablapor
unINNER JOIN completo.
Por ejemplo:
select * from employees emp
inner join jobs trab on EMP.JOB_ID=TRAB.JOB_ID
inner join departments depto on
depto.department_id=emp.department_id
Tambin se puede escribir:
SELECT *
FROM jobs trab INNER JOIN (employees emp INNER JOIN
departments depto ON emp.department_id =depto.department_id)
ON trab.job_id = emp.job_id

select * from employees emp inner join jobs trab on emp.job_id=trab.job_id


inner join departments depto ondepto.department_id=emp.department_id
and depto.department_id in (50,80,100)
and emp.salary>100000

SELECT products.productid,
products.productname,
categories.categoryid, categories.categoryname
FROM products, categories
WHERE products.categoryid=categories.categoryid
productid productname
categoryid categoryname
----------- ---------------------------------------- ----------- --------------1
Chai
1
Beverages
2
Chang
1
Beverages
3
Aniseed Syrup
2
Condiments
4
Chef Anton's Cajun Seasoning
2
Condiments
5
Chef Anton's Gumbo M
2
Condiments
6
Grandma's Boysenberry Sad
2
Condiments
7
Uncle Bob's Organic Dried Ps
7
Produce
8
Northwoods Cranberry Sauce
2
Condiments
9
Mishi Kobe Niku
6
Meat/Poultry
10
Ikura
8
Seafood
11
Queso Cabrales
4
Dairy Products
12
Queso Manchego La Pastora
4
Dairy Products
13
Konbu
8
Seafood
14
Tofu
7
Produce
15
Genen Shouyu
2
Condiments

Usando alias para las tablas.


SELECT a.productid, a.productname, b.categoryid,
b.categoryname
FROM products as A, categories as B
Where a.categoryid=b.categoryid
productid productname
categoryid categoryname
----------- ---------------------------------------- ----------- --------------1
Chai
1
Beverages
2
Chang
1
Beverages
3
Aniseed Syrup
2
Condiments
4
Chef Anton's Cajun Seasoning
2
Condiments
5
Chef Anton's Gumbo M
2
Condiments
6
Grandma's Boysenberry Sad
2
Condiments
7
Uncle Bob's Organic Dried Ps
7
Produce
8
Northwoods Cranberry Sauce
2
Condiments
9
Mishi Kobe Niku
6
Meat/Poultry
10
Ikura
8
Seafood
11
Queso Cabrales
4
Dairy Products
12
Queso Manchego La Pastora
4
Dairy Products
13
Konbu
8
Seafood
14
Tofu
7
Produce
15
Genen Shouyu
2
Condiments

SELECT a.productid, a.productname, b.categoryid,


b.categoryname
FROM products as A, categories as B
Where a.categoryid=b.categoryid and b.categoryid=1
productid productname
categoryid categoryname
----------- ---------------------------------------- ----------- --------------1
Chai
1
Beverages
2
Chang
1
Beverages
24
Guaran Fantstica
1
Beverages
34
Sasquatch Ale
1
Beverages
35
Steeleye Stout
1
Beverages
38
Cte de Blaye
1
Beverages
39
Chartreuse verte
1
Beverages
43
Ipoh Coffee
1
Beverages
67
Laughing Lumberjack Lager
1
Beverages
70
Outback Lager
1
Beverages
75
Rhnbru Klosterbier
1
Beverages
76
Lakkalikri
1
Beverages

SELECT a.productid, a.productname, b.categoryid,b.categoryname


FROM products as A, categories as B
WHERE a.categoryid=b.categoryid and b.categoryid
between 3 and 8
productid productname
categoryid categoryname
----------- ---------------------------------------- ----------- --------------16
Pavlova
3
Confections
19
Teatime Chocolate Biscuits
3
Confections
20
Sir Rodney's Marmalade
3
Confections
21
Sir Rodney's Scones
3
Confections
25
NuNuCa Nu-Nougat-Creme
3
Confections
26
Gumbr Gummibrchen
3
Confections
27
Schoggi Schokolade
3
Confections
47
Zaanse koeken
3
Confections
48
Chocolade
3
Confections
49
Maxilaku
3
Confections
50
Valkoinen suklaa
3
Confections
62
Tarte au sucre
3
Confections
68
Scottish Longbreads
3
Confections

Funciones de Grupo.

AVG.
COUNT.
MAX.
MIN.
SUM.

SELECT [columna, ] funcin_de_grupo(columna), ...


FROM tabla
[WHERE condicin]
[GROUP BY columna]
[ORDER BY columna]

SELECT AVG(precio_u) FROM articulos

---------------------------------------10761.111111
(1 row(s) affected)

SELECT COUNT(cli_rut) FROM clientes

----------9
(1 row(s) affected)

SELECT MAX(precio_u) FROM articulos

-------------------40000
(1 row(s) affected)

SELECT MIN(precio_u) FROM articulos

-------------------350
(1 row(s) affected)

SELECT SUM(cantidad) FROM detalles

---------------------------------------94
(1 row(s) affected)

SELECT COUNT(cod_ciu) , cod_ciu


FROM clientes
Server: Msg 8118, Level 16, State 1, Line 1
Column 'clientes.cod_ciu' is invalid in the select list because it is not contained in
an aggregate function and there is no GROUP BY clause.

SELECT COUNT(cod_ciu) , cod_ciu


FROM clientes
GROUP BY cod_ciu
cod_ciu
----------- ----------3
14
3
27
3
28
(3 row(s) affected)

SELECT COUNT(cod_art) , cod_art


FROM detalles
GROUP BY cod_art
WHERE COUNT(cod_art) < 3
Server: Msg 156, Level 15, State 1, Line 4
Incorrect syntax near the keyword 'WHERE'.

SELECT columna, funcin_de_grupo


FROM tabla
[WHERE condicin]
[GROUP BY columna]
[HAVING condicin_de_grupo]
[ORDER BY columna]

SELECT COUNT(cod_art) TOTAL , cod_art


FROM detalles
GROUP BY cod_art
HAVING COUNT(cod_art) < 3
TOTAL
cod_art
----------- -------------------2
444
2
555
1
777
2
888
(4 row(s) affected)

Creacin
Manipulacin
tablas.

y
de

CREATE TABLE tabla


(columa tipo_dato [, ...])

... Fecha_ingreso DATETIME DEFAULT (getdate()), ...

Este valor por defecto, hace que cada vez que se agregue
CREATE TABLE pru
(cod int,
fecha datetime DEFAULT(getdate()),
primary key(cod))
INSERT INTO pru (cod, fecha)
VALUES (111, default)

CREATE TABLE dept


(deptno int,
depto varchar(15),
primary key(deptno))
CREATE TABLE emple
(emple_rut VARCHAR(10),
emple_nom VARCHAR(20),
emple_Ape VARCHAR(20),
emple_sue NUMERIC, deptno int,
PRIMARY KEY(emple_rut),
FOREIGN KEY(deptno) REFERENCES dept(deptno))

ALTER TABLE agrega, o elimina columnas.

ALTER TABLE tabla


ADD (columna tipo_dato [DEFAULT expresin])
ALTER TABLE tabla
DROP COLUMN (columna tipo_dato [DEFAULT expresin])

ALTER TABLE emple


ADD emple_dir varchar(20)

Agrega una columna llamada emple_dir a la tabla emple.

ALTER TABLE emple


DROP COLUMN emple_dir

Borra la columna emple_dir de la tabla emple.

DROP TABLE pru

Borra la tabla pru completa (incluyendo datos y estructura).

Manipulando
columnas.

INSERT INTO tabla [(columna [, columna...])]


VALUES (valor [, valor...])

La sentencia con la clusula VALUES agrega slo una fila a la


tabla.

INSERT INTO dept(deptno,depto)


VALUES (1004, Informtica)
INSERT INTO emple (emple_rut, emple_nom,deptno)
VALUES (13526221-8, Camilo, 1004)
INSERT INTO emple
VALUES (13968000-8, Jocelyme, NULL, NULL, 1004)

INSERT INTO empleado (emp_rut, emp_nom,emp_dir,


emp_fec_nac,emp_sue, cod_Depto, cod_car, cod_ciu)
VALUES ('13968000-6',
'Jocelyme', 'Quelln 301',
getdate(), 500000, 1003, 2003, 27)

INSERT INTO emple (emple_rut, emple_nom, deptno)


SELECT emp_rut, emp_nom, cod_Depto
FROM empleado
WHERE cod_Depto=1004

UPDATE tabla
SET columna = valor [, columna= valor, ...]
[WHERE condicin]

Modifica ms de una fila al mismo tiempo.

UPDATE emple
SET emple_ape='Asem'
WHERE emple_rut='13968000-8'

Modifica slo a la fila o filas que cumplen con la condicin


del WHERE.
UPDATE emple
SET emple_sue=500000

Cuando se omite el WHERE todas las filas de la tabla son


modificadas.

UPDATE emple
SET emple_sue = (SELECT emp_sue
FROM empleado
WHERE emp_rut='11111111-1'),
emple_ape =
(SELECT emp_ape
FROM empleado
WHERE emp_nom= 'Jessica')
WHERE emple_nom = 'Jessica'

UPDATE emple
SET emple_sue = (SELECT emp_sue
FROM empleado
WHERE emp_ape='Obando')
WHERE emple_rut =
(SELECT
emp_rut
FROM empleado
WHERE emp_nom='Angelica')

DELETE [FROM] tabla


[WHERE condicin]

Usando la sentencia DELETE


desde una tabla especfica.

remueves filas existentes

DELETE FROM emple


WHERE emple_nom='Camilo'

Con la sentencia WHERE se borran filas especficas.


DELETE FROM emple

Borra todas las filas de la tala cuando se omite la clusula


WHERE.

DELETE FROM emple


WHERE deptno =
(SELECT cod_depto
FROM departamento
WHERE nom_depto like 'Admi%')

Subconsultas
consultas
variables.

y
con

Para definir una variable se hace de la


siguiente forma:

DECLARE @NOMBRE_VARIABLE VARCHAR(30)


SET @NOMBRE_VARIABLE = Cristian

SELECT emp_rut
FROM empleado
WHERE emp_nom = @NOM_VARIABLE

Muestre el nombre y apellido de todas las


personas que viven en Puerto Montt.

DECLARE @CIUDAD INT


SET @CIUDAD=(SELECT cod_ciu FROM ciudad WHERE
nom_ciu = 'Puerto Montt')
SELECT emp_nom, emp_ape, cod_ciu
FROM empleado
WHERE COD_CIU = @CIUDAD

El ejercicio anterior tambin se puede


hacer utilizando subconsultas.

SELECT emp_nom, emp_ape, cod_ciu


FROM empleado
WHERE COD_CIU = (SELECT cod_ciu
FROM ciudad
WHERE nom_ciu = 'Puerto Montt')

Cuando la subconsulta retorna ms de un


valor
se
utilizan
los
siguientes
operadores.

Operador

Significado

IN

Igual a cualquiera de la lista.

ANY
Compara una columna con cada valor
retornado por
la subconsulta
ALL
valores

Compara

una

columna

con

retornados por la subconsulta.

todos

los

SELECT emp_nom, emp_ape, emp_salary


FROM empleado
WHERE emp_sue IN (SELECT MIN(emp_sue)
FROM empleado
GROUP BY cod_depto)

SELECT emp_nom, emp_ape, emp_salary


FROM empleado
WHERE emp_sue IN
(600000,250000,200000,300000,250000)

SELECT emp_rut, emp_nom, cod_depto, emp_sue


FROM empleado
WHERE emp_sue < ANY
(SELECT emp_sue
FROM empleado
WHERE
cod_depto=1005)
AND cod_depto <> 1005

SELECT emp_rut, emp_nom, cod_depto, emp_sue


FROM empleado
WHERE emp_sue < ALL
(SELECT emp_sue
FROM empleado
WHERE
cod_depto=1005)
AND cod_depto <> 1005

Muestre el nombre, apellido de todos los


empleados
que
trabajan
en
el
departamento de Administracin.
Muestre el nombre y apellido de todos los
empleados que ganan ms que el menor
sueldo y menos que el promedio de los
sueldos.

Muestre el numero de todas las facturas en


las que ha comprado el cliente Rodrigo.
Muestre
todos los artculos que ha
comprado el cliente Rodrigo.
Muestre el nombre de los clientes que han
comprado Mouse.

Cree una tabla libros con los siguientes


campo:
Cod_lib int
Nom_lib
Fecha_ing

Clave Primaria
varchar(20)
Fecha del sistema

Cree una tabla socios con los siguientes


campos:
Rut_soc
Nom_soc
Ape_soc

varchar(10)
varchar(30)
varchar(30)

Agregue 3 libros a la tabla.


Agregue 3 socios
Agregue a la tabla libros el campo edit_lib
varchar(30).
Agregue a la tabla socios el campo dir_soc
varchar(30).
Modifique la editorial de los 3 libros que agreg
Modifique la direccin de los 3 socios que agreg.
Elimine el campo fecha_ing de libros

Вам также может понравиться