Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5.1 Qu es el SQL?
El SQL (Structured query language), lenguaje de consulta estructurado, es un
lenguaje surgido de un proyecto de investigacin de IBM para el acceso a bases de
datos relacionales. Actualmente se ha convertido en un estndar de lenguaje de bases
de datos, y la mayora de los sistemas de bases de datos lo soportan, desde sistemas para
ordenadores personales, hasta grandes ordenadores.
Por supuesto, a partir del estndar cada sistema ha desarrollado su propio SQL que
puede variar de un sistema a otro, pero con cambios que no suponen ninguna
complicacin para alguien que conozca un SQL concreto, como el que vamos a ver aqu
correspondiente al Access2000.
Como su nombre indica, el SQL nos permite realizar consultas a la base de datos.
Pero el nombre se queda corto ya que SQL adems realiza funciones de definicin,
control y gestin de la base de datos. Las sentencias SQL se clasifican segn su
finalidad dando origen a tres lenguajes o mejor dicho sublenguajes:
El DDL (Data DescriptionLanguage), lenguaje de definicin de datos, incluye
rdenes para definir, modificar o borrar las tablas en las que se almacenan los
datos y de las relaciones entre estas. (Es el que ms varia de un sistema a otro)
El DCL (Data Control Language), lenguaje de control de datos, contiene
elementos tiles para trabajar en un entorno multiusuario, en el que es
importante la proteccin de los datos, la seguridad de las tablas y el
establecimiento de restricciones en el acceso, as como elementos para coordinar
la comparticin de datos por parte de usuarios concurrentes, asegurando que no
interfieren unos con otros.
El DML (Data ManipulationLanguage), lenguaje de manipulacin de datos,
nos permite recuperar los datos almacenados en la base de datos y tambin
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
BENITO
LUIS
LOPEZ
PEREZ
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
BENITO
LUIS
LOPEZ
PEREZ
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
BENITO
Si queremos insertar una nueva fila en la tabla personas, lo podemos hacer con
cualquiera de las dos sentencias siguientes:
INSERT INTO personas
VALUES ('PEDRO', 'RUIZ', 'GONZALEZ')
INSERT INTO personas (nombre, apellido1, apellido2)
VALUES ('PEDRO', 'RUIZ', 'GONZALEZ')
Cualquiera de estas sentencias anteriores produce que se inserte una nueva fila en la
tabla personas, quedando as dicha tabla:
Nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
BENITO
PEDRO
RUIZ
GONZALEZ
5.3.1.3 UPDATE
La sentencia UPDATE se utiliza para modificar valores en una tabla.
La sintaxis de SQL UPDATE es:
UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE columna3 = valor3
La clusula SET establece los nuevos valores para las columnas indicadas.
La clusula WHERE sirve para seleccionar las filas que queremos modificar.
Ojo: Si omitimos la clusula WHERE, por defecto, modificar los valores en todas las
filas de la tabla.
Ejemplo del uso de SQL UPDATE
Nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
BENITO
PEDRO
RUIZ
GONZALEZ
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
5.3.1.4 DELETE
La sentencia DELETE sirve para borrar filas de una tabla.
La sintaxis de SQL DELETE es:
DELETE FROM nombre_tabla
WHERE nombre_columna = valor
Si queremos borrar todos los registros o filas de una tabla, se utiliza la sentencia:
DELETE * FROM nombre_tabla;
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
Las columnas 'nombre', 'apellido1' y 'apellido2' son de tipo 'varchar', es decir, acepta
valores alfanumricos hasta una longitud mxima de 255 caracteres.
La columna 'dep' es de tipo 'int', es decir, acepta slo nmeros.
5.4.1.2 ALTER
La sentencia SQL ALTER se utiliza para aadir, eliminar o modificar columnas de una
tabla.
Sintaxis SQL ALTER
Para aadir una nueva columna a una tabla
ALTER TABLE nombretabla
ADD nombrecolumnatipodatocolumna
Para borrar una columna de una tabla
ALTER TABLE nombretabla
DROP COLUMN nombrecolumna
Para modificar el tipo de dato de una columna de una tabla
ALTER TABLE nombretabla
ALTER COLUMN nombrecolumnatipodatocolumna
Ejemplos de SQL ALTER
per
Nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
Dada la siguiente tabla de 'personas', queremos aadir una nueva columna, denominada
'fechadenacimiento'
ALTER TABLE personas
ADD fechadenacimiento date
per nombre
apellido1 apellido2
ANTONIO PEREZ
Fechadenacimiento
GOMEZ
PEDRO
RUIZ
GONZALEZ
Nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
5.4.1.3 DROP
La sentencia DROP se utiliza para borrar definitivamente un ndice, tabla o base de
datos.
DROP INDEX
Sintaxis DROP INDEX para MySQL
ALTER TABLE nombretabla
DROP INDEX nombreindice
Sintaxis DROP INDEX para DB2 y ORACLE
DROP INDEX nombreindice
Sintaxis DROP INDEX para ACCESS
DROP INDEX nombreindice
ON nombretabla
Sintaxis DROP INDEX para SQLSERVER
DROP INDEX nombretabla.nombreindice
DROP TABLE
5.5.1.2CONDICIONES DE SELECCIN
Las condiciones de seleccin son las condiciones que pueden aparecer en la clusula
WHERE.
En SQL tenemos cinco condiciones bsicas:
el test de comparacin
el test de rango
el test de pertenencia a un conjunto
el test de valor nulo
el test de correspondencia con patrn.
El test de comparacin.
Compara el valor de una expresin con el valor de otra. La sintaxis es la siguiente:
10
= igual que
<> distinto de
< menor que
<= menor o igual
> mayor que
>= mayor o igual
Por ejemplo:
Seleccionar las personas cuyo nombre sea ANTONIO
SELECT * FROM personas
WHERE nombre = 'ANTONIO'
Nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
BENITO
En la tabla personas
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
BENITO
LUIS
LOPEZ
PEREZ
11
apellido1
apellido2
ANTONIO
GARCIA
BENITO
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
BENITO
apellido1
apellido2
ANTONIO
GARCIA
BENITO
5.5.3 ORDER BY
Se utiliza para especificar el criterio de ordenacin de la respuesta a la consulta. Por
defecto la ordenacin es ascendente (ASC), aunque se puede especificar un orden
descendente con la utilizacin del comando (DES). La ordenacin se puede establecer
sobre el contenido de columnas o sobre expresiones con columnas.
SELECT nombre_columna(s)
FROM nombre_tabla
ORDER BY nombre_columna(s) ASC|DESC
Por ejemplo, en la tabla personas:
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
12
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
BENITO
apellido1
LUIS
LOPEZ
ANTONIO
GARCIA
ANTONIO
PEREZ
apellido1
ANTONIO
PEREZ
ANTONIO
GARCIA
LUIS
LOPEZ
5.5.4 BETWEEN
El operador BETWEEN se utiliza en la clusula WHERE para seleccionar valores entre
un rango de datos.
Sintaxis de SQL BETWEEN
SELECT columna
FROM tabla WHERE columna
BETWEEN valor1 AND valor2
13
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
apellido1
apellido2
ANTONIO
GARCIA
RODRIGUEZ
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
PEDRO
RUIZ
GONZALEZ
14
La sintaxis es la siguiente:
nombre
apellido1
apellido2
Dep
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
Departamento
ADMINISTRACION
INFORMATICA
COMERCIAL
apellido1
Departamento
ANTONIO
PEREZ
ADMINISTRACION
ANTONIO
GARCIA
INFORMATICA
PEDRO
RUIZ
INFORMATICA
15
nombre
apellido1
apellido2
Dep
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
dep
Departamento
ADMINISTRACION
INFORMATICA
COMERCIAL
apellido1
Departamento
ANTONIO
PEREZ
ADMINISTRACION
ANTONIO
GARCIA
INFORMATICA
PEDRO
RUIZ
16
per
Nombre
apellido1
apellido2
Dep
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
Departamento
ADMINISTRACION
INFORMATICA
COMERCIAL
apellido1
Departamento
ANTONIO
PEREZ
ADMINISTRACION
ANTONIO
GARCIA
INFORMATICA
COMERCIAL
Aunque no exista ninguna persona del departamento 'COMERCIAL' (3), esta fila
aparecer con las otras columnas en blanco
5.7 Funciones de Agregacin
5.7.1 Funcin AVG()
Esta funcin retorna el valor promedio de una columna numrica.
En SQL la sintaxis es de la siguiente manera:
SELECT AVG(nombre_columna)
FROM nombre_tabla
17
descripcin
precio
Computadora
800
Teclado
30
Impresora
150
SELECT AVG(precio)
FROM PRODUCTO
Promedio
326
precio
Computadora
800
Teclado
30
Impresora
150
18
SELECT COUNT(*)
FROM PRODUCTO
Num_filas
3
precio
Computadora
800
Teclado
30
Impresora
150
19
precio
Computadora
800
Teclado
30
Impresora
150
20
precio
Computadora
800
Teclado
30
Impresora
150
Cometido
Cuenta el nmero de filas
agrupadas.
AVG(col)
Calcula el valor medio de
todos los valores de la
columna col.
MAX(col)
Calcula el valor mximo de
todos los valores de la
columna col.
MIN(col)
Calcula el valor mnimo de
todos los valores de la
columna col.
SUM(col)
Calcula la suma de los
valores de la columna col.
STDDEV(col)
Calcula la desviacin tpica
de los valores de la
columna col sin tener en
cuenta los valores nulos.
VARIANCE(col) Calcula la varianza de los
valores de la columna col
sin tener en cuenta los
valores nulos.
Ejemplo
select count(nombre),oficio
from emp group by oficio;
select avg(salario),oficio
from emp group by oficio;
select max(salario),oficio
from emp group by oficio;
select min(salario),oficio
from emp group by oficio;
select sum(salario), oficio
from emp group by oficio;
select stddev(salario), oficio
from emp group by oficio;
select variance(salario),
oficio from emp group by
oficio;
21
Cometido
Ejemplo
Resultado
Calcula el valor absoluto select
abs(-15)
15
de n.
from dual;
CEIL(n)
Calcula el valor entero select
ceil(15.7)
16
inmediatamente superior o from dual;
igual a n.
FLOOR(n)
Calcula el valor entero select floor(15.7)
15
inmediatamente inferior o from dual;
igual a n.
MOD(m,n)
Calcula el resto resultante select mod(11,4)
3
de dividir m entre n.
from dual;
POWER(m,n) Calcula la potencia n- select power(3,2)
9
esima de m.
from dual;
ROUND(m,n) Calcula el redondeo de m a select
123.5
n decimales. Si n<0 el round(123.456,1)
redondeo se efecta a por from dual;
la izquierda del punto
decimal.
SQRT(n)
Calcula la raz cuadrada de select sqrt(4) from
2
n.
dual;
TRUNC(m,n) Calcula m truncado a n select
123.4
decimales (n puede ser trunc(123.456,1)
negativo).
from dual;
SIGN(n)
Calcula el signo de n, select
sign(-12)
-1
devolviendo -1 si n<0, 0 si from dual;
n=0 y 1 si n>0.
ASCII(cad)
CONCAT(cad1,cad2)
Cometido
Devuelve el
carcter
cuyo valor
codificado
es n.
Devuelve el
valor ascii
de cad.
Devuelve
cad1
concatenada
con cad2.
Esta
funcin es
Ejemplo
select
dual;
chr(65)
from
Resultado
A
65
select
concat(concat(nombre,'
es '),oficio) from emp;
Cano es
Presidente, etc.
22
esquivalente
al operador
||.
LOWER(cad)
Devuelve la
cadena cad
con todas
sus
letras
convertidas
a
minsculas.
UPPER(cad)
Devuelve la
cadena cad
con todas
sus
letras
convertidas
a
maysculas.
INITCAP(cad)
Devuelve
cad con el
primer
caracter en
maysculas.
LPAD(cad1,n,cad2)
Devuelve
cad1
con
longitud n,
y ajustada a
la derecha,
rellenando
por
la
izquierda
con cad2.
RPAD(cad1,n,cad2)
Devuelve
cad1
con
longitud n,
y ajustada a
la izquierda,
rellenando
por
la
derecha con
cad2.
REPLACE(cad,ant,nue) Devuelve
cad en la
que
cada
ocurrencia
de la cadena
ant ha sido
sustituida
por
la
cadena nue.
SUBSTR(cad,m,n)
Devuelve la
select
lower('MinUsCulAs')
from dual;
minsculas
select
upper('maYuSCulAs')
from dual;
MAYUSCULAS
select initcap('isabel')
from dual;
Isabel
select
lpad('P',5,'*')
from dual;
****P
select
rpad('P',5,'*')
from dual;
P****
select
replace('digo','i','ie')
from dual;
diego
select
CD
23
LENGTH(cad)
sudcadena
de
cad
compuesta
por
n
caracteres a
partir de la
posicion m.
Devuelve la
longitud de
cad.
substr('ABCDEFG',3,2
) from dual;
select length('cadena')
from dual;
Cometido
Devuelve la
fecha y hora
actuales.
ADD_MONTHS(d,n)
Devuelve la
fecha
d
incrementada
en n meses.
LAST_DAY(d)
Devuelve la
fecha
del
ltimo
da
del mes de d.
MONTHS_BETWEEN(d1, Devuelve la
d2)
diferencia en
meses entre
las fechas d1
y d2.
NEXT_DAY(d,cad)
Devuelve la
fecha
del
primer da de
la
semana
cad despus
de la fecha d.
SYSDATE
Ejemplo
select sysdate from dual;
Resultado
14-MAR97
select add_months(sysdate,4)
from dual;
14-JUL-97
31-MAR97
select
2.43409424
months_between(sysdate,'01JAN-97') from dual;
select
next_day(sysdate,
'sunday') from dual;
16-MAR97
Cometido
Ejemplo
Convierte
la select
cadena cad a un to_number('12345')
nmero,
from dual;
opcionalmente
de acuerdo con
el formato fmto.
Resultado
124345
24
TO_CHAR(d, fmto)
TO_DATE(cad,fmto)
Convierte
la
fecha d a una
cadena
de
caracteres,
opcionalmente
de acuerdo con
el formato fmto.
Convierte
la
cadena cad de
tipo varchar2 a
fecha,
opcionalmente
de acuerdo con
el formato fmto.
select
to_char(sysdate)
from dual;
'14-MAR97'
select
to_date('1- 01-JAN-97
JAN-97')
from
dual;
Con las fechas pueden utilizarse varios formatos. Estos formatos permiten modificar la
presentacin de una fecha. En la siguiente tabla se presentan algunos formatos de fecha
y el resultado que generan.
5.7.11 Tabla Resumida de mascaras de formato numricas
Formato
cc scc
Cometido
Valor del siglo.
y,yyy
sy,yyy
yyyy yyy
yy y
q
ww w
mm
ddd dd
d
hh hh12
hh24
mi
ss sssss
Ejemplo
Resultado
20
select to_char(sysdate,'cc')
from dual;
1,997
select
to_char(sysdate,'y,yyy')
from dual;
1997
select
to_char(sysdate,'yyyy')
from dual;
1
select to_char(sysdate,'q')
from dual;
11
select to_char(sysdate,'ww')
from dual;
Nmero
de
la
semana del ao o del
mes.
Nmero del mes.
select to_char(sysdate,'mm')
from dual;
Nmero del da del select to_char(sysdate,'ddd')
ao, del mes o de la from dual;
semana.
La hora en formato select to_char(sysdate,'hh')
12h. o 24h.
from dual;
Los minutos de la select to_char(sysdate,'mi')
hora.
from dual;
Los segundos dentro select
del minuto, o desde to_char(sysdate,'sssss')
las 0 horas.
from dual;
03
073
12
15
44159
25
Cometido
Ao en Ingls
month o
mon
Ejemplo
Resultado
select
to_char(sysdate,'syear)
from dual;
select
to_char(sysdate,'month')
from dual;
select to_char(sysdate,'day')
from dual;
nineteen
ninety-seven
march
friday
p.m.
a.d.
5.8.1 GROUP BY
26
SELECT nombre_columna1,SUM(nombre_columna)
FROM nombre_tabla
GROUP BY nombre_columna1
descripcin
precio
CintyComp
Computadora
800
Computrom
Teclado
30
NoviCompu
Impresora
150
NoviCompu
Mouse
20
Computrom
Disco Duro
120
Precio_total
800
270
170
5.8.2 HAVING
27
La clusula HAVING se utiliza en SQL, puesto que la palabra clave WHERE no puede
utilizarse con las funciones de agregado en sus condiciones.
En la clusula GROUP BY se colocan las columnas por las que vamos a agrupar. Y en la
clusula HAVING se especifica la condicin que han de cumplir los grupos para pasar al
resultado.
En SQL la sintaxis que se utiliza es de la siguiente manera:
descripcin
precio
CintyComp
Computadora
800
Computrom
Teclado
30
NoviCompu
Impresora
150
NoviCompu
Mouse
20
Computrom
Disco Duro
120
28
fabrica
CintyComp
Precio_total
800
5.9 Subconsultas
Una subconsulta es una sentencia SELECT que aparece dentro de otra
sentencia SELECT que llamaremos consulta principal.
Se puede encontrar en la lista de seleccin, en la clusula WHERE o en la clusula
HAVING de la consulta principal.
Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal
exceptuando que aparece encerrada entre parntesis, no puede contener la
clusula ORDER BY, ni puede ser la UNION de varias sentencias SELECT, adems
tiene algunas restricciones en cuanto a nmero de columnas segn el lugar donde
aparece en la consulta principal. Estas restricciones las iremos describiendo en cada
caso.
Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta se ejecuta
por cada fila de la consulta principal.
Se aconseja no utilizar campos calculados en las subconsultas, ralentizan la consulta.
Las consultas que utilizan subconsultas suelen ser ms fciles de interpretar por el
usuario.
Un ejemplo de esto ocurre cuando queremos conocer los nombres de los empleados
cuyo salario est por encima de la media:
SQL> select nombre from emp
2 where salario > (select avg(salario) from emp);
NOMBRE
Cano
Roncal
Prez
Sastre
29
Yuste
Recio
.
La consulta ms interna calcula el salario medio, y la consulta ms externa lo utiliza
para seleccionar los nombres que ganan ms que la media.
El valor de comparacin puede ser un valor simple, como en el ejemplo anterior, o un
conjunto de valores. Hay que tener en cuenta este detalle ya que el tipo de operador a
utilizar vara. En el primer caso se puede utilizar un operador de comparacin de
carcter aritmtico (<, >, etc.). Y en el segundo uno de tipo lgico (IN).
Las subconsultas pueden devolver ms de una columna, y se habrn de comparar de
manera consecuente:
Las columnas de la clusula WHERE de la consulta principal deben estar
agrupadas por parntesis.
Las columnas encerradas entre parntesis deben coincidir en nmero y tipo de
datos con los datos que devuelve la subconsulta.
El nivel de anidamiento de subconsultas es ilimitado.
Se puede utilizar una subconsulta para insertar valores en una tabla en el momento de la
creacin de la misma con la clusula AS.
30
Se suele utilizar subconsultas en las clusulas WHERE o HAVING cuando los datos que
queremos visualizar estn en una tabla pero para seleccionar las filas de esa tabla
necesitamos un dato que est en otra tabla.
En una clusula WHERE / HAVING tenemos siempre una condicin y la subconsulta
acta de operando dentro de esa condicin.
En el ejemplo anterior se compara contrato con el resultado de la subconsulta. Hasta
ahora las condiciones estudiadas tenan como operandos valores simples (el valor
contenido en una columna de una fila de la tabla, el resultado de una operacin
aritmtica...) ahora la subconsulta puede devolver una columna entera por lo que es
necesario definir otro tipo de condiciones especiales para cuando se utilizan con
subconsultas.
31
INSERTINTOFABRICANTES(codigo,nombre)
VALUES (1,'PcComputer')
INSERTINTOFABRICANTES(codigo,nombre)
VALUES (2,'FDG Tecnology')
INSERTINTOFABRICANTES(codigo,nombre)
VALUES (3,'Computrom')
INSERTINTOFABRICANTES(codigo,nombre)
VALUES (4,'NoviCompu')
INSERTINTOFABRICANTES(codigo,nombre)
VALUES (5,'CintyComp')
Insertar 30 artculos
INSERTINTOARTICULOS(codigo_articulo,nombre,precio,codigo)
VALUES (001,'Teclado Inalambrico',25.00,1)
INSERTINTOARTICULOS(codigo_articulo,nombre,precio,codigo)
VALUES (002,'Mouse Inalambrico',10.00,2)
codigo_articulo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
codigo
1
2
3
4
5
2
4
1
3
5
3
1
2
5
4
1
3
4
2
nombre
Teclado Inalambrico
Mouse Inalambrico
NoteBooK Asus
Disco Duro Externo 1TB
Mp3 Sony 4GB
Camara Canon 15MPX
Parlantes
Inpresora Lexmar B/N Color
Pendrive HP 16 GB
Samsung Table
Samsung Galaxy S4
XBOx 360 Controller
NoteBook HP Compag
Teclado
LG Monitor 15.6
Philips Televisor 42
Camara Samsung 14Mxp
Impresora 3 en 1 Canon
PSP 3
precio
25,00
10,00
700,00
110,00
26,00
200,00
6,00
89,00
20,00
210,00
800,00
25,70
550,00
19,00
125,00
349,00
199,00
145,00
500,00
32
20
21
22
23
24
25
26
27
28
29
30
5
4
3
2
1
5
4
5
3
2
1
Tarjeta Sonido
Audifonos Genius
Microfono
CPU Niutex
Impresora Laser B/N
Apple ipad MINI 16GB
Flas Memory Toshiba 4GB
PSP 3 Vita
Xbox 360
MainBoard
Laptod Toshiba
45,00
5,00
15,00
2000,00
175,00
329,00
12,00
288,00
660,00
180,00
110,00
codigo
1
2
3
4
5
2
4
1
3
5
3
1
2
5
4
1
3
4
2
5
4
3
2
1
nombre
Teclado Inalambrico
Mouse Inalambrico
NoteBooK Asus
Disco Duro Externo 1TB
Mp3 Sony 4GB
Camara Canon 15MPX
Parlantes
Inpresora Lexmar B/N Color
Pendrive HP 16 GB
Samsung Table
Samsung Galaxy S4
XBOx 360 Controller
NoteBook HP Compag
Teclado
LG Monitor 15.6
Philips Televisor 42
Camara Samsung 14Mxp
Impresora 3 en 1 Canon
PSP 3
Tarjeta Sonido
Audifonos Genius
Microfono
CPU Niutex
Impresora Laser B/N
precio
25,00
10,00
700,00
110,00
26,00
200,00
6,00
89,00
20,00
210,00
800,00
25,70
550,00
19,00
125,00
349,00
199,00
145,00
500,00
45,00
5,00
15,00
2000,00
175,00
descuento
NULL
NULL
5
NULL
NULL
NULL
NULL
NULL
NULL
NULL
5
NULL
5
NULL
NULL
5
NULL
NULL
5
NULL
NULL
NULL
5
NULL
33
25
26
27
28
29
30
5
4
5
3
2
1
329,00
12,00
288,00
660,00
180,00
110,00
5
NULL
NULL
5
NULL
NULL
2) Obtener los nombres de los productos de la tienda 3) Obtener los nombres y precios de los
SELECTnombreFROMARTICULOS
productos de la tienda
SELECTnombre,precioFROMARTICULOS
nombre
nombre
precio
Teclado Inalambrico
Mouse Inalambrico
NoteBooK Asus
Disco Duro Externo 1TB
Mp3 Sony 4GB
Camara Canon 15MPX
Parlantes
Inpresora Lexmar B/N Color
Pendrive HP 16 GB
Samsung Table
Samsung Galaxy S4
XBOx 360 Controller
NoteBook HP Compag
Teclado
LG Monitor 15.6
Philips Televisor 42
Camara Samsung 14Mxp
Impresora 3 en 1 Canon
PSP 3
Tarjeta Sonido
Audifonos Genius
Microfono
CPU Niutex
Impresora Laser B/N
Apple ipad MINI 16GB
Flas Memory Toshiba 4GB
PSP 3 Vita
Xbox 360
MainBoard
Laptod Toshiba
34
Teclado Inalambrico
Mouse Inalambrico
NoteBooK Asus
Disco Duro Externo 1TB
Mp3 Sony 4GB
Camara Canon 15MPX
Parlantes
Inpresora Lexmar B/N Color
Pendrive HP 16 GB
Samsung Table
Samsung Galaxy S4
XBOx 360 Controller
NoteBook HP Compag
Teclado
LG Monitor 15.6
25,00
10,00
700,00
110,00
26,00
200,00
6,00
89,00
20,00
210,00
800,00
25,70
550,00
19,00
125,00
Philips Televisor 42
Camara Samsung 14Mxp
Impresora 3 en 1 Canon
PSP 3
Tarjeta Sonido
Audifonos Genius
Microfono
CPU Niutex
Impresora Laser B/N
Apple ipad MINI 16GB
Flas Memory Toshiba 4GB
PSP 3 Vita
Xbox 360
MainBoard
Laptod Toshiba
349,00
199,00
145,00
500,00
45,00
5,00
15,00
2000,00
175,00
329,00
12,00
288,00
660,00
180,00
110,00
4) Obtener el nombre de los productos cuyo precio sea menor o igual a 200
SELECTnombreFROMARTICULOSWHEREprecio<=200
nombre
Teclado Inalambrico
Mouse Inalambrico
Disco Duro Externo 1TB
Mp3 Sony 4GB
Camara Canon 15MPX
Parlantes
Inpresora Lexmar B/N Color
Pendrive HP 16 GB
XBOx 360 Controller
Teclado
LG Monitor 15.6
Camara Samsung 14Mxp
Impresora 3 en 1 Canon
Tarjeta Sonido
Audifonos Genius
Microfono
Impresora Laser B/N
Flas Memory Toshiba 4GB
MainBoard
Laptod Toshiba
5) Obtener todos los datos de los artculos cuyo precio est entre los 60 y los 120.
SELECT*FROMARTICULOSWHEREpreciobetween('60')AND('120')
codigo_articulo
codigo
nombre
precio
descuento
4
4
NULL
Disco Duro Externo 1TB
110.00
8
1
NULL
Inpresora Lexmar B/N Color
89.00
35
30
Laptod Toshiba
110.00
NULL
6) Obtener el nombre y el precio en pesetas (es decir, el precio en euros multiplicado por
166.386)
SELECTnombre,precio*166.386 FROMARTICULOS
nombre
Teclado Inalambrico
Mouse Inalambrico
NoteBooK Asus
Disco Duro Externo 1TB
Mp3 Sony 4GB
Camara Canon 15MPX
Parlantes
Inpresora Lexmar B/N Color
Pendrive HP 16 GB
Samsung Table
Samsung Galaxy S4
XBOx 360 Controller
NoteBook HP Compag
Teclado
LG Monitor 15.6
Philips Televisor 42
Camara Samsung 14Mxp
Impresora 3 en 1 Canon
PSP 3
Tarjeta Sonido
Audifonos Genius
Microfono
CPU Niutex
Impresora Laser B/N
Apple ipad MINI 16GB
Flas Memory Toshiba 4GB
PSP 3 Vita
Xbox 360
MainBoard
Laptod Toshiba
415965000,00
166386000,00
11647020000,00
1830246000,00
432603600,00
3327720000,00
99831600,00
1480835400,00
332772000,00
3494106000,00
13310880000,00
427612020,00
9151230000,00
316133400,00
2079825000,00
5806871400,00
3311081400,00
2412597000,00
8319300000,00
748737000,00
83193000,00
249579000,00
33277200000,00
2911755000,00
5474099400,00
199663200,00
4791916800,00
10981476000,00
2994948000,00
1830246000,00
36
WHEREcodigo=2
573.333333
9) Obtener el nmero de artculos cuyo precio sea mayor o igual a 180
SELECTCOUNT(*)FROMARTICULOS
WHEREprecio>=180
13
10) Obtener el nombre y precio de los artculos cuyo precio sea mayor o igual a 180 y
ordenarlos descendentemente por precio y luego ascendentemente por nombre
SELECTnombre,precioFROMARTICU
SELECTnombre,precioFROMARTICU
LOS
LOS
WHEREprecio>=180
WHEREprecio>=180
ORDERBYprecioDESC
ORDERBYnombreASC
nombre
precio
nombre
precio
CPU Niutex
Samsung Galaxy S4
NoteBooK Asus
Xbox 360
NoteBook HP Compag
PSP 3
Philips Televisor 42
Apple ipad MINI 16GB
PSP 3 Vita
Samsung Table
Camara Canon 15MPX
Camara Samsung 14Mxp
MainBoard
2000.00
800.00
700.00
660.00
550.00
500.00
349.00
329.00
288.00
210.00
200.00
199.00
180.00
329.00
200.00
199.00
2000.00
180.00
700.00
550.00
349.00
500.00
288.00
800.00
210.00
660.00
11) Obtener el precio medio de los productos de cada fabricante, mostrando solo los digitos
de fabricante
SELECTcodigo,Avg(precio)ASPromedioFROMARTICULOS
GROUPBYcodigo
codigo
promedio
128.950000
1
573.333333
2
399.000000
3
67.166666
4
152.833333
5
12) Cambiar el nombre del producto 8 a Impresora Laser.
UPDATEARTICULOSSETnombre='Impresora Laser'WHEREcodigo_articulo=8
37
codigo_articulo
8
codigo
1
nombre
precio
Impresora Laser
89,00
13) Aplicar un descuento del 10% (Multiplicar el precio por 0.9) a todos los productos
UPDATEARTICULOSSETprecio=precio*0.09
nombre
precio
Teclado Inalambrico
Mouse Inalambrico
NoteBooK Asus
Disco Duro Externo 1TB
Mp3 Sony 4GB
Camara Canon 15MPX
Parlantes
Impresora Laser
Pendrive HP 16 GB
Samsung Table
Samsung Galaxy S4
XBOx 360 Controller
NoteBook HP Compag
Teclado
LG Monitor 15.6
Philips Televisor 42
Camara Samsung 14Mxp
Impresora 3 en 1 Canon
PSP 3
Tarjeta Sonido
Audifonos Genius
Microfono
CPU Niutex
Impresora Laser B/N
Apple ipad MINI 16GB
Flas Memory Toshiba 4GB
PSP 3 Vita
Xbox 360
MainBoard
Laptod Toshiba
2,25
0,90
63,00
9,90
2,34
18,00
0,54
8,01
1,80
18,90
72,00
2,31
49,50
1,71
11,25
31,41
17,91
13,05
45,00
4,05
0,45
1,35
180,00
15,75
29,61
1,08
25,92
59,40
16,20
9,90
14)Aplicar un descuento del 10 a todos los productos cuyo precio sea mayor o igual a 120
.
UPDATEARTICULOSSETprecio=precio-10 WHEREprecio>=120
nombre
precio
Teclado Inalambrico
Mouse Inalambrico
NoteBooK Asus
2,25
0,90
63,00
38
9,90
2,34
18,00
0,54
8,01
1,80
18,90
72,00
2,31
49,50
1,71
11,25
31,41
17,91
13,05
45,00
4,05
0,45
1,35
170,00
15,75
29,61
1,08
25,92
59,40
16,20
9,90
39
Insertar 6 departamentos.
INSERTINTODEPARTAMENTOS(codigo,nombre,presupuesto)
VALUES (1,'Contabilidad',10000)
INSERTINTODEPARTAMENTOS(codigo,nombre,presupuesto)
VALUES (2,'Bodega',50000)
INSERTINTODEPARTAMENTOS(codigo,nombre,presupuesto)
VALUES (3,'Mantenimiento',20000)
INSERTINTODEPARTAMENTOS(codigo,nombre,presupuesto)
VALUES (4,'Recursos Humanos',35000)
INSERTINTODEPARTAMENTOS(codigo,nombre,presupuesto)
VALUES (5,'Administracion',45000)
INSERTINTODEPARTAMENTOS(codigo,nombre,presupuesto)
VALUES (6,'Presidencia',90000)
40
Insertar 40empleados.
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (1,1,'Alfredo Raul','Perez Almeida')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (2,2,'Diego Andres','Olmevo Alvaro')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (3,3,'Diana Janeth','Pea Gonzales')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (4,4,'Erika Jiseel','Alvaro Perez')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (5,5,'Orlando Daniel','Loza Ruiz')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (16,4,'Pedro Ignacio','Ricota Greth')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (17,5,'Sabrina Gabriela','Romero Ruiz')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (18,6,'Edgar Alejandro','Guerrero Arroyo')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (19,1,'Francisco Isaac','Gomez Marquez')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (20,2,'Mario Alejandro','Huicochea Mason')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (35,5,'Alejandra Donaji','Herrera Reyes')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (36,6,'Carmen Delia','Mares Orozco')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (37,1,'Eduardo Antonio','Trujillo Rivera')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (38,2,'Uriel Octavio','Moreles Vazquez')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (39,3,'Luis Cristbal','Nez Betancourt')
INSERTINTOEMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (40,4,'Zoila Maria','Vera Valdez')
dni
1
2
3
4
5
codigo
1
2
3
4
5
nombres
Alfredo Raul
Diego Andres
Diana Janeth
Erika Jiseel
Orlando Daniel
apellidos
Perez Almeida
Olmevo Alvaro
Pea Gonzales
Alvaro Perez
Loza Ruiz
41
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
6
100
2
3
4
5
6
1
102
3
4
5
6
1
2
102
4
5
6
1
103
3
4
5
100
102
103
3
4
103
6
1
100
3
4
Nancy Irene
Jose Daniel
Bianca Rosa
Helen Ruby
Daniel Andres
Cristina Maribel
Luis Fernado
German Daniel
Ignacio Josue
Kevin Ismael
Pedro Ignacio
Sabrina Gabriela
Edgar Alejandro
Francisco Isaac
Mario Alejandro
Gonzalo Arturo
Orlando Gerardo
Alfredo Paul
Francisco Manuel
Benjamin Manuel
Juan Francisco
Cristina Boryana
Guillermo Augusto
Jorge Antonio
Laura Cecilia
Luis Daniel
Monica Itzuri
Marco Antonio
Mariano Cristbal
Alejandra Donaji
Carmen Delia
Eduardo Antonio
Uriel Octavio
Luis Cristbal
Zoila Maria
Cajilema Rodriguez
Dalia Paz
Roca Andrade
Llano Perez
Safadi Bohrquez
Garcia Ziga
Lanchiba Orbe
Diaz Pineda
Mancilva Paz
Briones Olmedo
Ricota Greth
Romero Ruiz
Guerrero Arroyo
Gomez Marquez
Huicochea Mason
Montalvan Gamezz
Ochoa Castillo
Ramirez Hinojosa
Rodriguez Huerta
Sanchez Lengeling
Leyva Bonilla
Lopez Kolkovska
Amaro Rico
Avila Juregui
Avila Juregui
Cahuich Ramirez
Delgado Carrillo
Figueroa Ibarra
Franco De Leon
Herrera Reyes
Mares Orozco
Trujillo Rivera
Moreles Vazquez
Nez Betancourt
Vera Valdez
42
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
N
1
2
3
4
5
6
7
8
9
10
11
12
Safadi Bohrquez
Garcia Zga
Lanchiba Orbe
Diaz Pineda
Mancilva Paz
Briones Olmedo
Ricota Greth
Romero Ruiz
Guerrero Arroyo
Gomez Marquez
Huicochea Mason
Montalvan Gamezz
Ochoa Castillo
Ramirez Hinojosa
Rodriguez Huerta
Sanchez Lengeling
Leyva Bonilla
Lopez Kolkovska
Amaro Rico
Avila Juregui
Avila Juregui
Cahuich Ramirez
Delgado Carrillo
Figueroa Ibarra
Franco De Leon
Herrera Reyes
Mares Orozco
Trujillo Rivera
Moreles Vazquez
Nez Betancourt
Vera Valdez
apellidos
Alvaro Perez
Amaro Rico
Avila Juregui
Briones Olmedo
Cahuich Ramirez
Cajilema Rodriguez
Dalia Paz
Delgado Carrillo
Diaz Pineda
Figueroa Ibarra
Franco De Leon
Garcia Zga
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Gomez Marquez
Guerrero Arroyo
Herrera Reyes
Huicochea Mason
Lanchiba Orbe
Leyva Bonilla
Llano Perez
Lopez Kolkovska
Loza Ruiz
Mancilva Paz
Mares Orozco
Montalvan Gamezz
Moreles Vazquez
Nez Betancourt
Ochoa Castillo
Olmevo Alvaro
Pea Gonzales
Perez Almeida
Ramirez Hinojosa
Ricota Greth
Roca Andrade
Rodriguez Huerta
Romero Ruiz
Safadi Bohrquez
Sanchez Lengeling
Trujillo Rivera
Vera Valdez
43
Base de Datos I
dni
10
codigo
4
nombres
Daniel Andres
apellidos
Safadi Bohrquez
4) Obtener todos los datos de los empleados que se apellidan Safadi Bohrquez y los que
se apellidan Garcia Zuiga.
SELECT*FROMEMPLEADOSWHEREapellidos='Safadi
Bohrquez'ORapellidos='Garcia Ziga'
codigo
nombres
apellidos
N
dni
4
Daniel Andres
Safadi Bohrquez
1
10
5
Cristina Maribel
Garcia Ziga
2
11
5)Obtener todos los datos de los empleados que trabajan para el departamento 100
SELECT*FROMEMPLEADOSWHEREcodigo=100
codigo
nombres
apellidos
N
dni
1
2
3
7
30
38
100
100
100
Jose Daniel
Laura Cecilia
Uriel Octavio
Dalia Paz
Avila Juregui
Moreles Vazquez
6) Obtener todos los datos de los empleados que trabajan para el departamento 100 y para
el departamento 103.
SELECT*FROMEMPLEADOSWHEREcodigo=100 ORcodigo=103
codigo
nombres
apellidos
N
dni
1
7
100
Jose Daniel
Dalia Paz
2
26
103
Juan Francisco
Leyva Bonilla
3
30
100
Laura Cecilia
Avila Juregui
4
32
103
Monica Itzuri
Delgado Carrillo
5
35
103
Alejandra Donaji Herrera Reyes
6
38
100
Uriel Octavio
Moreles Vazquez
7) Obtener todos los datos de los empleados cuyo segundo apellido comience por C
SELECT*FROMEMPLEADOSWHEREapellidoslike'% C%'
codigo
nombres
apellidos
N
dni
1
22
4
Orlando Gerardo
Ochoa Castillo
2
32
103
Monica Itzuri
Delgado Carrillo
7
0
Base de Datos I
SELECTcodigo,COUNT(*)FROMEMPLEADOSGROUPBYcodigo
N
cdigo
1
5
1
2
3
2
3
6
3
4
7
4
5
5
5
6
5
6
100
3
7
102
3
8
103
3
9
10) Obtener los nombres y apellidos de los empleados que trabajan en departamentos cuyo
presupuesto sea mayor a 1000 (Sin subconsulta).
SELECTDISTINCTnombres,apellidosFROMDEPARTAMENTOS,EMPLEADOSWHEREp
resupuesto>1000.00
nombres
apellidos
Alejandra Donaji
Herrera Reyes
Alfredo Paul
Ramirez Hinojosa
Alfredo Raul
Perez Almeida
Benjamin Manuel
Sanchez Lengeling
Bianca Rosa
Roca Andrade
Carmen Delia
Mares Orozco
Cristina Boryana
Lopez Kolkovska
Cristina Maribel
Garcia Ziga
Daniel Andres
Safadi Bohrquez
Diana Janeth
Pea Gonzales
Diego Andres
Olmevo Alvaro
Edgar Alejandro
Guerrero Arroyo
Eduardo Antonio
Trujillo Rivera
Erika Jiseel
Alvaro Perez
Esther
Vzquez
Francisco Isaac
Gomez Marquez
Francisco Manuel
Rodriguez Huerta
German Daniel
Diaz Pineda
Gonzalo Arturo
Montalvan Gamezz
Guillermo Augusto
Amaro Rico
Helen Ruby
Llano Perez
Ignacio Josue
Mancilva Paz
Jorge Antonio
Avila Juregui
Jose Daniel
Dalia Paz
Juan Francisco
Leyva Bonilla
Kevin Ismael
Briones Olmedo
Laura Cecilia
Avila Juregui
Luis Cristbal
Nez Betancourt
Luis Daniel
Cahuich Ramirez
Luis Fernado
Lanchiba Orbe
Marco Antonio
Figueroa Ibarra
7
0
Base de Datos I
Mariano Cristbal
Mario Alejandro
Monica Itzuri
Nancy Irene
Orlando Daniel
Orlando Gerardo
Pedro Ignacio
Sabrina Gabriela
Uriel Octavio
Zoila Maria
Franco De Leon
Huicochea Mason
Delgado Carrillo
Cajilema Rodriguez
Loza Ruiz
Ochoa Castillo
Ricota Greth
Romero Ruiz
Moreles Vazquez
Vera Valdez
11) Aadir un nuevo departamento: Calidad, con presupuesto de 40,000 y cdigo 104.
Aadir un empleado vinculado al departamento recin creado: Esther Vzquez, DNI:
89267109
INSERT INTO DEPARTAMENTOS(codigo,nombre,presupuesto)
VALUES (104,'Calidad',40000)
Insertar empleado
INSERT INTO EMPLEADOS(dni,codigo,nombres,apellidos)
VALUES (89267109,104,'Esther','Vzquez')
N
1
dni
89267109
codigo
104
nombres
Esther
apellidos
Vzquez
nombres
Contabilidad
Bodega
Mantenimiento
Recursos Humanos
Administracion
Presidencia
Limpieza
Conlecturia
Caja
Seguridad
Calidad
presupuesto
9090,9
45454,5
18181,8
31818,2
40909,1
81818,2
454,5
200,0
63636,4
13636,4
36363,6
7
0
Base de Datos I
26
32
35
dni
26
32
35
103
103
103
Juan Francisco
Monica Itzuri
Alejandra Donaji
codigo
nombres
100 Juan Francisco
100 Monica Itzuri
100 Alejandra Donaji
Leyva Bonilla
Delgado Carrillo
Herrera Reyes
apellidos
Leyva Bonilla
Delgado Carrillo
Herrera Reyes
14) Despedir a todos los empleados que trabajan para el departamento de Contabilidad
(cdigo 101).
DELETEFROMEMPLEADOSWHEREcodigo=101
7
0
Base de Datos I
1) Los arrendatarios que arriendan la casa ubicada en la calle Carrera n 1024 Santiago
SELECT nombre,apellido
FROM ARRENDATARIO
WHERE id_arrendatario in (
SELECT id_arrendatario
FROM ARRIENDA
WHERE id_casa in (
SELECT id_casa
FROM CASA
WHERE calle='Carrera' AND numero=1024 AND
comuna='Santiago')
)
7
0
Base de Datos I
7) Obtener la varianza
SELECT VAR(deuda)AS Precio_Medio FROM ARRIENDA
8) Obtener el maximo
7
0
Base de Datos I
SELECT MAX (deuda)AS Precio_Medio FROM ARRIENDA
9) Obtener el minmimo
SELECT MIN (deuda)AS Precio_Medio FROM ARRIENDA
10)Obtener un listado completo de articulos, incluyendo por cada articulo los datos del
articulo y de su fabricante.
SELECT * FROM ARTICULOS,FABRICANTES
WHERE ARTICULOS.codigo=FABRICANTES.codigo
CON INNER JOIN
SELECT * FROM ARTICULOS INNERJOIN FABRICANTES
ON ARTICULOS.codigo = FABRICANTES.codigo
codigo_articulo codigo
nombre
precio
codigo
1
2
3
4
5
6
7
8
9
10
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
2
4
1
3
5
4
3
2
1
5
4
5
3
2
1
Teclado Inalambrico
Mouse Inalambrico
NoteBooK Asus
Disco Duro Externo 1TB
Mp3 Sony 4GB
Camara Canon 15MPX
Parlantes
Inpresora Lexmar B/N Color
Pendrive HP 16 GB
Samsung Table
Audifonos Genius
Microfono
CPU Niutex
Impresora Laser B/N
Apple ipad MINI 16GB
Flas Memory Toshiba 4GB
PSP 3 Vita
Xbox 360
MainBoard
Laptod Toshiba
25.00
10.00
700.00
110.00
26.00
200.00
6.00
89.00
20.00
210.00
5.00
15.00
2000.00
175.00
329.00
12.00
288.00
660.00
180.00
110.00
1
2
3
4
5
2
4
1
3
5
4
3
2
1
5
4
5
3
2
1
nombre
PcComputer
FDG Tecnology
Computrom
NoviCompu
CintyComp
FDG Tecnology
NoviCompu
PcComputer
Computrom
CintyComp
NoviCompu
Computrom
FDG Tecnology
PcComputer
CintyComp
NoviCompu
CintyComp
Computrom
FDG Tecnology
PcComputer
7
0
Base de Datos I
SELECT
ARTICULOS.nombre,precio,FABRICANTES.nombre FROM
ARTICULOS,FABRICANTES
WHERE ARTICULOS.codigo=FABRICANTES.codigo
CON INNER JOIN
SELECT ARTICULOS.nombre,precio,FABRICANTES.nombre FROM ARTICULOS
INNER JOIN FABRICANTES
ON ARTICULOS.codigo=FABRICANTES.codigo
nombre
precio
Teclado Inalambrico
Mouse Inalambrico
NoteBooK Asus
Disco Duro Externo 1TB
Mp3 Sony 4GB
Camara Canon 15MPX
Parlantes
Inpresora Lexmar B/N Color
Pendrive HP 16 GB
Samsung Table
Audifonos Genius
Microfono
CPU Niutex
Impresora Laser B/N
Apple ipad MINI 16GB
Flas Memory Toshiba 4GB
PSP 3 Vita
Xbox 360
MainBoard
Laptod Toshiba
25.00
10.00
700.00
110.00
26.00
200.00
6.00
89.00
20.00
210.00
5.00
15.00
2000.00
175.00
329.00
12.00
288.00
660.00
180.00
110.00
nombre
PcComputer
FDG Tecnology
Computrom
NoviCompu
CintyComp
FDG Tecnology
NoviCompu
PcComputer
Computrom
CintyComp
NoviCompu
Computrom
FDG Tecnology
PcComputer
CintyComp
NoviCompu
CintyComp
Computrom
FDG Tecnology
PcComputer
1.12)Obtener el precio medio de los productos de cada fabricante, mostrando solo los
digitos de fabricante
SELECT codigo,Avg(precio)AS recio_Medio FROM ARTICULOS
GROUPBY codigo
codigo
Precio_Medio
128.950000
1
573.333333
2
399.000000
3
67.166666
4
152.833333
5
1.13) Obtener el precio medio de los productos de cada fabricante, mostrando el nombre
del fabricante
SELECT Avg(precio)AS Precio_Medio,FABRICANTES.nombre
FROM ARTICULOS,FABRICANTES
7
0
Base de Datos I
WHERE ARTICULOS.codigo=FABRICANTES.codigo
GROUP BY FABRICANTES.nombre
CON INNER JOIN
SELECT Avg(precio)AS Precio_Medio,FABRICANTES.nombre
FROM ARTICULOS INNER JOIN FABRICANTES
ON ARTICULOS.codigo=FABRICANTES.codigo
GROUP BY FABRICANTES.nombre
Precio_Medio
nombre
213.250.000
348.750.000
597.500.000
33.250.000
99.750.000
CintyComp
Computrom
FDG Tecnology
NoviCompu
PcComputer
1.14) Obtener los nombres de los fabricantes que ofrescan productos cuyo precio medio
sea mayor o igual a 150 .
SELECTAvg(precio)AS Precio_Medio,FABRICANTES.nombre
FROM ARTICULOS,FABRICANTES
WHERE ARTICULOS.codigo =FABRICANTES.codigo
GROUP BY FABRICANTES.nombre
HAVING AVG(precio)>=150
CON INNER JOIN
SELECT Avg(precio)AS Precio_Medio,FABRICANTES.nombre
FROM ARTICULOS INNERJOINFABRICANTES
ON ARTICULOS.codigo=FABRICANTES.codigo
GROUP BY FABRICANTES.nombre
HAVING AVG(precio)>=150
Precio_Medio
nombre
213.250.000
348.750.000
597.500.000
CintyComp
Computrom
FDG Tecnology
25.00
1.16)Obtener una lista con el nombre y precio de los articulos ms caros de cada
proveedor (incluyendo el nombre del proveedor).
SELECT A.nombre,A.precio,F.nombre
FROM ARTICULOSA,FABRICANTESF
WHERE A.codigo=F.codigo
AND A.precio=
(
SELECT MAX(A.precio)
FROM ARTICULOSA
WHERE A.codigo=F.codigo
7
0
Base de Datos I
)
CON INNER JOIN
SELECT A.nombre,A.precio,F.nombre
FROM ARTICULOSAINNERJOINFABRICANTESF
ON A.codigo=F.codigo
AND A.precio=
(
SELECT MAX(A.precio)
FROM ARTICULOSA
WHERE A.codigo=F.codigo
)
nombre
precio
329.00
110.00
700.00
2000.00
175.00
nombre
CintyComp
NoviCompu
Computrom
FDG Tecnology
PcComputer
Altavoces
70.00
Laser'
WHERE
precio
89,00
1.19) Aplicar un descuento del 10% (Multiplicar el precio por 0.9) a todos los productos
UPDATE ARTICULOS SET precio=precio*0.09
nombre
precio
Teclado Inalambrico
Mouse Inalambrico
NoteBooK Asus
Disco Duro Externo 1TB
Mp3 Sony 4GB
Camara Canon 15MPX
Parlantes
Impresora Laser
Pendrive HP 16 GB
Samsung Table
Samsung Galaxy S4
2,25
0,90
63,00
9,90
2,34
18,00
0,54
8,01
1,80
18,90
72,00
7
0
Base de Datos I
XBOx 360 Controller
NoteBook HP Compag
Teclado
LG Monitor 15.6
Philips Televisor 42
Camara Samsung 14Mxp
Impresora 3 en 1 Canon
PSP 3
Tarjeta Sonido
Audifonos Genius
Microfono
CPU Niutex
Impresora Laser B/N
Apple ipad MINI 16GB
Flas Memory Toshiba 4GB
PSP 3 Vita
Xbox 360
MainBoard
Laptod Toshiba
2,31
49,50
1,71
11,25
31,41
17,91
13,05
45,00
4,05
0,45
1,35
180,00
15,75
29,61
1,08
25,92
59,40
16,20
9,90
1.20)Aplicar un descuento del 10 a todos los productos cuyo precio sea mayor o igual a
120 .
UPDATE ARTICULOS SET precio=precio-10 WHERE precio>=120
nombre
precio
Teclado Inalambrico
Mouse Inalambrico
NoteBooK Asus
Disco Duro Externo 1TB
Mp3 Sony 4GB
Camara Canon 15MPX
Parlantes
Impresora Laser
Pendrive HP 16 GB
Samsung Table
Samsung Galaxy S4
XBOx 360 Controller
NoteBook HP Compag
Teclado
LG Monitor 15.6
Philips Televisor 42
Camara Samsung 14Mxp
Impresora 3 en 1 Canon
PSP 3
Tarjeta Sonido
2,25
0,90
63,00
9,90
2,34
18,00
0,54
8,01
1,80
18,90
72,00
2,31
49,50
1,71
11,25
31,41
17,91
13,05
45,00
4,05
7
0
Base de Datos I
Audifonos Genius
Microfono
CPU Niutex
Impresora Laser B/N
Apple ipad MINI 16GB
Flas Memory Toshiba 4GB
PSP 3 Vita
Xbox 360
MainBoard
Laptod Toshiba
0,45
1,35
170,00
15,75
29,61
1,08
25,92
59,40
16,20
9,90
7
0
Base de Datos I
nombre varchar (254),
facultad int,
PRIMARY KEY (numserie),
FOREIGN KEY (facultad)REFERENCES FACULTAD(codigo)
)
3. Crear tabla reserva
CREATE TABLE RESERVA
(
comienzo datetime,
fin datetime,
facultad int,
dni varchar(8),
numserie varchar (6)
FOREIGN KEY (dni)REFERENCES INVESTIGADORES(dni),
FOREIGN KEY (numserie)REFERENCES EQUIPOS(numserie)
)
9.1) Obtener el DNI y el nombre de aquellos investigadores que han realizado ms de una
reserva
SELECT I.dni, nomape
FROM INVESTIGADORES I LEFT JOIN RESERVA R
ON R.dni = I.dni
GROUP BY I.dni, nomape
HAVING COUNT (R.dni)>1
dni
10
11
12
13
14
15
16
17
18
19
20
21
nomape
Juan Perez
Daniel Lopez
Fernando Mendez
Guido Landazuri
Francisco Alban
Martin Azhafari
Javier Pea
Jose Paz
Gabriela Amagua
Maria Espinosa
Fernanda Bueno
Jessica Lopez
7
0
Base de Datos I
dni
nomape
nombre
numserie
nombre
nombre
comienzo
fin
7
0
Base de Datos I
10 Juan Perez
11 Daniel Lopez
Fernando
12 Mendez
Guido
13 Landazuri
Francisco
14 Alban
Martin
15 Azhafari
16 Javier Pea
17 Jose Paz
Gabriela
18 Amagua
Ciencias Fisicas y
Matematicas
100
Microscopios
Psicologia
101
Libros Tecnicos
Medicina
102
Ciencias Quimicas
103
Administracion
104
Economia
Ciencias Fisicas y
Matematicas
Medicina
Ciencias Fisicas y
Matematicas
2013-05-25 2013-05-26
Mesas de Madera
Elementos
Quimicos
Psicologia
2013-05-27 2013-05-29
Ciencias Quimicas
2013-05-27 2013-05-28
Administracion
2013-05-27 2013-05-27
105
Libros de Leyes
Libros de
Economia I
Economia
2013-05-28 2013-05-29
106
Pinzas
2013-05-29 2013-05-30
Psicologia
107
Medicina
108
Tesis
Libros de
Pedagogia
Medicina
Ciencias Fisicas y
Matematicas
Psicologia
2013-06-02 2013-06-03
Ciencias Quimicas
2013-06-03 2013-06-04
Administracion
2013-06-05 2013-06-07
Economia
2013-06-06 2013-06-07
Medicina
Ciencias Fisicas y
Matematicas
2013-07-25 2013-08-26
109
21 Jessica Lopez
10 Juan Perez
11 Daniel Lopez
Fernando
12 Mendez
Guido
13 Landazuri
Francisco
14 Alban
Martin
15 Azhafari
16 Javier Pea
17 Jose Paz
Gabriela
18 Amagua
2013-05-25 2013-05-26
2013-06-01 2013-06-02
Economia
Ciencias Fisicas y
Matematicas
111
Recipientes
Libros de
Contabilidad
Libros de
Economia II
100
Microscopios
Psicologia
101
Libros Tecnicos
Medicina
102
Psicologia
2013-07-27 2013-08-29
Ciencias Quimicas
103
Mesas de Madera
Elementos
Quimicos
Ciencias Quimicas
2013-07-27 2013-08-28
Administracion
104
Administracion
2013-07-27 2013-08-27
Economia
Ciencias Fisicas y
Matematicas
105
Libros de Leyes
Libros de
Economia I
Economia
2013-07-28 2013-08-29
106
Pinzas
2013-07-29 2013-08-30
Psicologia
107
Medicina
108
Tesis
Libros de
Pedagogia
Medicina
Ciencias Fisicas y
Matematicas
Psicologia
2013-08-02 2013-09-03
Ciencias Quimicas
2013-08-03 2013-09-04
Administracion
2013-08-05 2013-09-07
Economia
2013-08-06 2013-09-07
Administracion
2013-08-07 2013-09-08
Economia
2013-08-08 2013-09-09
110
109
21 Jessica Lopez
Fernanda
20 Bueno
Economia
111
Administracion
110
21 Jessica Lopez
Economia
111
110
Recipientes
Libros de
Contabilidad
Libros de
Economia II
Libros de
Contabilidad
Libros de
Economia II
2013-07-25 2013-08-26
2013-08-01 2013-09-02
9.3) Obtener DNI y el nombre de los investigadores que han reservado equipos que no son
de su facultad
SELECT DISTINCT I.dni, nomape
FROM RESERVA R, INVESTIGADORES I, EQUIPOS E
WHERE R.dni = I.dni
AND R.numserie = E.numserie
7
0
Base de Datos I
AND I.facultad = E.facultad
dni
13
14
15
19
20
21
nomape
Guido Landazuri
Francisco Alban
Martin Azhafari
Maria Espinosa
Fernanda Bueno
Jessica Lopez
9.4) Obtener los nombres de las facultades en las que ningun investigador ha realizado una
reserva
SELECT nombre FROM FACULTAD
WHERE codigo IN
(
SELECT FACULTAD
FROM INVESTIGADORES I LEFT JOIN RESERVA R
ON I.dni = R.dni
GROUP BY facultad
HAVING COUNT (R.dni)=0
)
nombre
9.5) Obtener los nombres de las facultades con investigadores osciosos (Investigadores
que no han realizado niguna reserva)
SELECT nombre FROM FACULTAD
WHERE codigo IN
(
SELECT FACULTAD FROM INVESTIGADORES
WHERE dni NOT IN
(
SELECT dni FROM RESERVA
)
)
nombre
Medicina
9.6) Obtener el numero de serie y nombre de los equipos que nunca han sido reservados
SELECT E.numserie, nombre
FROM EQUIPOS E LEFT JOIN RESERVA R
ON R.numserie= E.numserie
GROUP BY E.numserie, nombre
HAVING COUNT (R.numserie)=0
numserie
112
nombre
Pizarra 50x50
7
0
Base de Datos I
EJERCICIO 5. FERRETERIA FC
7
0
Base de Datos I
2.-Obtenga el nombre los productos cuyo precio sea < o igual a 200
SELECTnombre,pvp
FROMPRODUCTO
WHEREpvp<=200
3.-Obtenga un listado de los productos cuyo precio este entre 40 y 80 dlares con (and y
betwen)
SELECT*
FROMPRODUCTO
WHEREpvpBETWEEN(40)AND(80)
4.- Obtenga el nombre, el precio, el precio2011 que estar considerado con incremento de
15%
7
0
Base de Datos I
SELECTnombre,pvp
FROMPRODUCTO
WHEREstock_max='15'
6.-Despliegue el precio mximo de los productos cuyo stock sea mayor que 100
SELECTnombre,MAX(pvp)
FROMPRODUCTO
GROUPBYnombre
HAVINGMAX(pvp)>100
8.-Obtener el nmero de artculos cuyo precio sea mayor o igual a 100 dlares
SELECTCOUNT(*)ASNUMERO_PRODUCTOS
FROMPRODUCTO
WHEREpvp>=100
7
0
Base de Datos I
10.- Obtenga el nmero de factura ms alta y el nombre del cliente a que corresponde
SELECTF.id_factura,C.nombre
FROMFACTURAF,CLIENTEC
WHEREF.id_cliente=C.id_clienteANDF.id_factura=(
SELECTMAX(id_factura)
FROMFactura)
12.-Inserte un registro en la tabla producto cuyo precio sea 580 dlares y pertenezca a la
categora pinturas.
INSERTINTOTIPO(id_tipo,nombre)VALUES (504,'Pinturas')
INSERTINTOPRODUCTO(id_producto,nombre,stock,stock_max,stock
_min,pvp,fecha_elaboracion,id_tipo)
VALUES ('P13','Pintura Automotriz 100G',2,5,2,580,23-062013,504)
7
0
Base de Datos I
13.-Actualice el producto 106 (P7) del nombre playo a alicate
UPDATEPRODUCTOSETnombre='Alicate'WHEREid_producto='P7'
7
0
Base de Datos I
EJERCICIO 8. EMPLEADOS
Insertar 40 emplados
6 departametos
7
0
Base de Datos I
Consultas
1. Obtener los apellidos de los emplados.
SELECTApellidosFROMEMPLEADOS
7
0
Base de Datos I
4. Obtener todos los datos de los emplados que se apellidan Safadi Bohrquez y los
que se apellidan Graca Ziga.
SELECT*FROMEMPLEADOS
WHEREApellidos='Safadi Bohrquez'
SELECT*FROMEMPLEADOS
WHEREApellidos='Garca Ziga'
SELECT*FROMEMPLEADOS
WHEREApellidos='Safadi Bohrquez'
ORApellidos='Garca Ziga'
7
0
Base de Datos I
5. Obtener todos los datos de los empleados que trabajan en el departamento 100.
SELECT*FROMEMPLEADOS
WHERECod_Departamento=100
6. Obtener todos los datos de los empleados que trabajan para el departamento 100 y
para el departamento 103
SELECT*FROMEMPLEADOS
WHERECod_Departamento=100
SELECT*FROMEMPLEADOS
WHERECod_Departamento=103
SELECT*FROMEMPLEADOS
WHERECod_Departamento=100
ORCod_Departamento=103
7
0
Base de Datos I
7. Obtener todos los datos de los empleados cuyo segundo apellido comience por C
SELECT*FROMEMPLEADOS
WHEREApellidoslike'% C%'
EJERCICIO 9. BIBLIOTECA
Entidad-Relacin
7
0
Base de Datos I
EJERCICIO 11. Tienda de Animales
CREACION DE LAS TABLAS
CREATETABLE ADOPCION
(
Costo
Fecha
CdigoAdopcion
IdCliente
CdigoAnimal
)
go
floatNULL,
datetimeNULL,
intNOTNULL,
intNOTNULL,
intNOTNULL
ALTERTABLE ADOPCION
ADDCONSTRAINT XPKADOPCION
PRIMARYKEYCLUSTERED(CdigoAdopcion ASC,IdCliente
ASC,CdigoAnimal ASC)
go
CREATETABLE ANIMAL
(
Cdigo
Color
Edad
Sexo
Defecto
CdigoEspecie
CdigoOrigen
CdigoApl
CodigoVacuna
)
go
intNOTNULL,
nvarchar(50)NULL,
intNULL,
char(20)NULL,
nvarchar(150)NULL,
intNOTNULL,
intNOTNULL,
intNOTNULL,
intNOTNULL
ALTERTABLE ANIMAL
ADDCONSTRAINT XPKANIMAL PRIMARYKEYCLUSTERED(Cdigo ASC)
go
7
0