2. Instrucciones SQL El Lenguaje de Consulta Estructurado (SQL) es un lenguaje Standard que funciona para interactuar con las Bases de Datos. Si usted aprende SQL lo podrá aplicar en cualquier lenguaje que soporte tales instrucciones. Nos centraremos especialmente en las siguientes Instrucciones SQL: SELECT UPDATE INSERT DELETE SELECT SELECT es la instrucción por excelencia del SQL, ya permite Consultar datos determinados de la Base de Datos. Sintaxis Básica: SELECT FROM WHERE ORDER BY <campos> <tablas> <condición> <campos> UPDATE UPDATE sirve para actualizar datos en una tabla. Sintaxis Básica: UPDATE SET WHERE <tabla> <campo1> = <valor1> <campo1> = <valor> <condición> INSERT INSERT es para insertar registros a una tabla. Sintaxis Básica: INSERT INTO VALUES <tabla> ( campo1, campo2... ) (valor1, valor2.... ) DELETE DELETE sirve para borrar registros a una tabla. Sintaxis Básica: DELETE FROM <tabla> WHERE <condición> Crear una Consulta en Microsoft Access 1. Abrir la Base de Datos 2. Ubicarse en la ficha Consultas y luego presionar Nuevo. 2. Presione el botón de Nuevo 1. Seleccione Consultas 2. En el siguiente cuadro de selección, escoja Vista Diseño. Seleccione Vista Diseño y Luego presione el botón de Aceptar 3. Luego le aparecerá la ventana de Mostrar Tablas. No agregue ninguna tabla y presione el botón de Cerrar. Presione el Botón Cerrar 4. Seleccione el Menú de Ver y escoja la opción Vista SQL Seleccione Vista SQL 5. En la Vista SQL, usted puede digitar la instrucción SQL: Digite la instrucción SQL 6. Para Ejecutar la instrucción SQL presione el Botón Ejecutar (!) de la Barra de Herramientas Presione el botón de Ejecutar para ver el resultado del comando SQL. Resultado de la instrucción SQL SELECT. 7. Para regresar a la Vista SQL, seleccione el menú Ver y luego Vista SQL. SQL CON UNA TABLA Seleccionar las regiones que comiencen con la letra A select nombre from s_region where nombre LIKE 'A*' Seleccionar los departamentos que pertenezcan a la región No. sea igual a 1 (uno) select * from s_dept where region_id = 1 Seleccionar el No. depto, apellido, salario y cargo para los empleados que ganen mas de 100 y el departamento este en 41, 10 y 50 select dept_id, nombre, salary, cargo from s_emp where salary > 100 and dept_id IN (41,10,50) Seleccionar los clientes que pertenezcan a la región 3. select * from s_customer where region_id = 3 Seleccionar los empleados que su fecha de ingreso este entre 01/01/1990 y 31/12/1990. select * from s_emp where fec_ing Between #01/01/1990# And #31/12/1990# Seleccionar las ordenes que pertenezcan al código del cliente (customer_id) igual a 208. select * from s_ord where customer_id = 208 Seleccionar los productos ordenados por nombre descendentemente select nombre from s_product order by nombre DESC SQL CON MAS DE UNA TABLA Seleccionar el nombre del departamento, y el nombre de la región a la que pertenece el departamento, ordenado por nombre de región select a.nombre AS region, b.nombre AS depto from s_region a, s_dept b where a.id = b.region_id order by 1 Seleccionar el nombre del empleado, id_depto, y el nombre del dpto. al que pertenece el empleado. select from where b.nombre AS empleado, a.id, a.nombre AS depto s_dept a, s_emp b a.id = b.dept_id Seleccionar el nombre del empleado, nombre del depto. y el nombre de la región al que pertenece el empleado select a.nombre AS region, b.nombre AS depto, c.nombre AS empleado from s_region a, s_dept b, s_emp c where a.id = b.region_id and b.id = c.dept_id Seleccionar el apellido del empleado, no. del depto, el nombre del depto para los depto que estén entre 20 y 50 sin incluirlos. select a.nombre AS empleado, b.id, b.nombre AS depto from s_dept a, s_emp b where a.id = b.dept_id and b.id > 20 and b.id < 50 Seleccionar los clientes (customer) y la región a la que pertenece ordenado por region Ascendentemente select a.nombre AS region, b.nombre AS cliente from s_region a, s_customer b where a.id = b.region_id order by 1 SQL CON SUB QUERYS Seleccionar las regiones que no tengan departamentos select nombre AS region from s_region where id NOT IN ( SELECT region_id FROM s_dept ) Seleccionar los empleados que no tienen clientes select nombre AS empleado from s_emp where id NOT IN ( SELECT DISTINCT emp_id FROM s_customer ) Seleccionar los productos que no se han facturado select nombre AS producto from s_product where id NOT IN ( SELECT DISTINCT product_id FROM s_item ) Seleccionar los productos que se han facturado select nombre AS producto from s_product where id IN ( SELECT DISTINCT product_id FROM s_item ) Seleccionar los clientes que han hecho órdenes select nombre AS cliente from s_customer where id IN ( SELECT DISTINCT customer_id FROM s_ord ) SQL CON MAS DE UNA TABLA Y AGRUPACIONES Suma de salarios por departamento select from where group a.nombre AS depto, SUM(b.salary) AS suma_salario s_dept a, s_emp b a.id = b.dept_id by a.nombre Suma de salarios por region select from where and group a.nombre AS region, SUM(c.salary) AS suma_salario s_region a, s_dept b, s_emp c a.id = b.region_id b.id = c.dept_id by a.nombre Cantidad de departamentos por cada región select from where group a.nombre AS region, COUNT(*) AS No_deptos s_region a, s_dept b a.id = b.region_id by a.nombre Cantidad de clientes por cada empleado select from where group a.nombre AS empleado, COUNT(*) AS No_ordenes s_emp a, s_customer b a.id = b.emp_id by a.nombre Cantidad de ordenes por clientes select from a.nombre COUNT(*) s_customer s_ord AS cliente, AS No_cliente a, b where group a.id = b.customer_id by a.nombre Total de ventas por cliente select from where group a.nombre AS cliente, SUM(b.total) AS Total s_customer a, s_ord b a.id = b.customer_id by a.nombre Total de ventas por empleado select from where and group a.nombre AS empleado, SUM(c.total) AS Total s_emp a, s_customer b, s_ord c a.id = b.emp_id b.id = c.customer_id by a.nombre Total de ventas por region select from where and group a.nombre AS region, SUM(c.total) AS Total s_region a, s_customer b, s_ord c a.id = b.region_id b.id = c.customer_id by a.nombre Total de Productos Facturados select from where group order a.nombre AS producto, SUM(b.cantidad) AS Total s_product a, s_item b a.id = b.product_id by a.nombre by 2 Suma de salarios, maximo, minimo, promedio por departamento select from where group a.nombre AS SUM(b.salary) AS MAX(b.salary) AS MIN(b.salary) AS AVG(b.salary) AS s_dept a, s_emp b a.id = b.dept_id by a.nombre depto, suma_salario, max_salario, min_salario, Prom_salario