Into SQL - Tutorial
Into SQL - Tutorial
Into SQL - Tutorial
## (version 1.0.0)
## @autor = Lic. Cristian Benitez
PRESENTACION
SALIDA LABORAL ::
Este tutorial es un importante complemento para la formación técnica del desarrollador.
Independientemente de la tecnología que se utilice para programar, el tutorial proporciona
una introducción al conocimiento del lenguaje de programación para bases de datos SQL
tanto en DDL (Data Definition Language) y DML (Data Manipulation Language).
#TUTORIAL Introduccion-SQL
## (version 1.0.0)
## @autor = Lic Cristian Benitez
CAPITULO 1
Acceder:
- la pagina de mysql donde pueden bajar el servidor y el cliente MySQL Query Browser
- como levantar el MySQL Server como servicio.
Abrir mySQL QueryBrowser y revisar cada dato de la ventana de login:
- que es server y que es localhost
- entender que es el puerto y que por default es 3306
- que es user (usar 'root') y que es password (no usar vacio)
A continuación, el alumno debe realizar prácticas en el mySQL Query Browser los siguientes pasos:
- Crear una base de datos llamada "intro"
- Setear la base de datos como "default schema"
- Crear la tabla "clientes" con los siguientes datos:
Luego de crear la tabla, el alumno debe ingresar 10 clientes teniendo en cuenta lo siguiente:
- Practicar como usar el mySQL Query Browser para agregar registros
- no completar campo autoincremental
o ver que luego se autocompletan
- los campos NOT NULL deben ser completados
- el CUIT debe tener 13 caracteres
o si se exceden en cantidad de caracteres trunca
- la direccion puede quedar nula
EJERCICIO 1
1
1. Crear la tabla 'facturas' dentro de la base de datos 'intro' con el siguiente detalle:
letra CHAR y PK
numero INTEGER
fecha DATETIME
monto DOUBLE
2. Crear la tabla 'articulos' dentro de la base de datos 'intro' con el siguiente detalle:
codigo INTEGER y PK
nombre VARCHAR(255)
precio DOUBLE
stock INTEGER
Entender la diferencia entre ANSI SQL y SQL propietario (citar Oracle, SQL Server, etc)
SQL
DDL (Data Definition Language)
CREATE TABLE / DATABASE
ALTER TABLE / DATABASE
DROP TABLE / DATABASE
Entender que el DDL se ejecuta automáticamente cada vez que se crea una base de datos o una tabla, lo hace
el MySQL Query Browser
2
#TUTORIAL Introduccion-SQL
## (version 1.0.0)
## @autor = Lic Cristian Benitez
CAPITULO 2
EJERCICIO 2
Llenar las tablas articulos, clientes y facturas con 10 registros cada una
--
practicar alias
select letra, numero, monto, monto * 0.21 as IVA from facturas
select letra, numero, monto, monto * 0.21 as IVA, monto * 1.21 as
monto_con_iva from facturas
practicar IN y NOT IN
select * from facturas where numero IN (10,15,29,115,200,320)
select * from facturas where numero NOT IN (10,15,29,115,200,320)
practicar LIKE y %
select * from articulos where nombre LIKE 'a%'
select * from articulos where nombre LIKE 'a%n'
select * from articulos where nombre LIKE '%n'
practicar LIKE y _
1
select * from articulos where nombre LIKE 'tv __ pulgadas'
EJERCICIO 3
Basandose en la tabla 'productos', realizar los siguientes puntos:
2. Listar los articulos ordenados por precio de mayor a menor, y si hubiera precios iguales deben
quedar ordenados por nombre de forma ascendente
select * from articulos
where precio NOT IN (10*10,50*10,100*10)
order by precio DESC, nombre ASC
2
3. Listar todos los articulos incluyendo una columna denominada "precio_con_IVA", la cual debera
tener el monto con iva del articulo
select nombre,precio,monto,monto*1.21 as precio_con_IVA from articulos
order by precio DESC, nombre ASC
4. Listar todos los articulos incluyendo una columna denominada "cantidad_cuotas" y otra
"valor_cuota". La cantidad de cuotas es fija y debe ser 3, y el valor de la cuota corresponde a 1/3 del
monto con un 5% de interes
select nombre,precio,monto,monto*1.21 as precio_con_IVA,3 as
cantidad_cuotas, (monto*1.21)/3 as valor_cuota cuota from articulos
order by precio DESC, nombre ASC
3
#TUTORIAL Introduccion-SQL
## (version 1.0.0)
## @autor = Lic Cristian Benitez
CAPITULO 3
ejecutar nuevamente la consulta anterior y entender que significa " duplicate key entry '100' "
practicar INSERT INTO estableciendo los campos (forma extendida), destacar que se pueden obviar
campos que no conozco el valor o son autocalculables
insert into articulos (nombre, precio, stock) values ('grabadora dvd',
1250, 5)
--
EJERCICIO 4
"clientes" con los siguientes datos:
codigo INTEGER, AUTO INC
nombre VARCHAR(255), NOT NULL
apellido VARCHAR(255), NOT NULL
cuit VARCHAR(13), NOT NULL
direccion VARCHAR(255), NULL
comentarios VARCHAR(255), NULL
Basandose en la tabla 'clientes', realizar los siguientes puntos:
1. Insertar 5 clientes en la tabla clientes utilizando el INSERT INTO sin utilizar campos como parte de
la sentencia, es decir de la forma simplificada
INSERT INTO clientes VALUES (100,’juan’,’perez’,’20-12345678-1’,’san juan
123’,’commentario uno’);
.
.
1
2. Insertar 5 clientes en la tabla clientes utilizando el INSERT INTO utilizando campos como parte de la
sentencia, es decir de la forma extendida. Completar solo los campos nombre, apellido y CUIT
INSERT INTO clientes(codigo, nombre, apellido, cuit, direccion, comentario) VALUES
(100,’juan’,’perez’,’20-12345678-1’,’san juan 123’,’commentario uno’);
tabla 'articulos'
codigo INTEGER y PK
nombre VARCHAR(255)
precio DOUBLE
stock INTEGER
Basandose en la tabla 'articulos', realizar los siguientes puntos:
8. Aumentar un 20% el precio de los articulos con precio menor a $500
UPDATE articulos SET precio=(precio + precio*0.20) WHERE precio<500;
UPDATE articulos SET precio=(precio*1.20) WHERE precio<500;
9. Aumentar un 15% el precio de los articulos con precio entre $1000 y $2000
UPDATE articulos SET precio=(precio + precio*0.15) WHERE precio BETWEEN 1000 AND
2000;
UPDATE articulos SET precio=(precio*1.15) WHERE precio BETWEEN 1000 AND 2000;
UPDATE articulos SET precio=(precio + precio*0.15) WHERE precio >= 1000 AND precio
<=2000;
UPDATE articulos SET precio=(precio*1.15) WHERE precio >= 1000 AND precio <=2000;
10. Bajar un 10% el precio de los articulos con precio mayor a $5000
UPDATE articulos SET precio=(precio - precio*0.10) WHERE precio > 5000;
UPDATE articulos SET precio=(precio*0.90) WHERE precio > 5000;
--
2
#TUTORIAL Introduccion-SQL
## (version 1.0.0)
## @autor = Lic Cristian Benitez
CAPITULO 4
- Explicar AVG
SELECT avg(monto) from facturas;
SELECT avg(monto) as promedio from facturas;
SELECT avg(monto) as promedio from facturas where letra ='c';
- Explicar SUM
SELECT sum(monto) from facturas;
SELECT sum(monto) as total from facturas;
SELECT sum(monto) as total from facturas where letra = 'a';
- Explicar COUNT
SELECT count(*) from facturas;
1
SELECT count(*) as cantidad from facturas;
SELECT count(*) as cantidad from facturas where letra = 'a';
- Explicar GROUP BY
- Practicar subqueries
- Practicar como traer solo la informacion que se necesita de dos tablas relacionadas, pudiendo
hacer ordenamiento
--
EJERCICIO 5
1. Crear la tabla 'autos' dentro de la base de datos 'intro' con el siguiente detalle:
codigo INTEGER y PK
marca VARCHAR(255)
modelo VARCHAR(255)
color VARCHAR(255)
anio INTEGER
precio DOUBLE
2
2. Cargar la tabla con 15 autos (hacerlo con MySQL Query Browser o el INSERT INTO)
3. Realizar las siguientes consultas:.
SOLUCIONES
EJERCICIO 5
a. SELECT max(precio) as precio_maximo from autos
b. SELECT min(precio) as precio_minimo from autos
c. SELECT min(precio) as precio_minimo from autos where anio between
2000 and 2008
d. SELECT avg(precio) as promedio_autos from autos
e. SELECT avg(precio) as promedio_año2006 from autos where anio = '2006'
f. SELECT count(*) from autos
g. SELECT count(*) from autos where precio between 35.000 and 40.000
h. SELECT año, count(*) as cantidad_autos from autos group by anio
i. SELECT año, count(*) as cantidad_autos, avg(precio) as
promedio_precio from autos group by año
j. SELECT marca, sum(precio) as total, avg(precio) as precio_promedio
from autos group by marca