Sunteți pe pagina 1din 7

[TALLER 2] :: Facultad Politécnica ::

Manual de SQL
«Structured Query Language»

sql
El Lenguaje de consulta estructurado (Structured Query Language) es un lenguaje
declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de
operaciones sobre las mismas.
Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo
lanzar consultas con el fin de recuperar -de una forma sencilla- información de interés de una
base de datos, así como también hacer cambios sobre la misma.

Sintaxis
1. Para Consultar Registros | SELECT

SELECT <lista de campos separados por coma>|*;


FROM <lista de tablas separadas por coma>;
WHERE <lista de condiciones separados por operadores lógicos (AND|OR)>;
INTO (CURSOR|TABLE) <nombre de la tabla>;
ORDER BY <lista de campos para ordenación separados por coma>

Ejemplo:

SELECT * FROM alumnos WHERE alu_edad>18 and alu_ciudad=1 INTO CURSOR TEMP

Selecciona todos los campos (*) de los registros la tabla alumnos que cumplan las
condiciones: edad sea mayor que 18 y la ciudad de residencia sea 1. El resultado de la
consulta se guarda en una tabla temporal (cursor) llamado TEMP.

2. Para Insertar Registros | INSERT

INSERT INTO <nombre de la tabla> (<lista de campos separados por coma>);


VALUES (<lista de valores separados por coma>)

Ejemplo:

INSERT INTO ciudades (ciu_codigo, ciu_nombre);


VALUES (1,”Ciudad del Este”)

Inserta un nuevo registro en la tabla de ciudades, en donde en valor del campo ciu_codigo
es 1 y el valor del campo ciu_nombre es “Ciudad del Este”.

3. Para Eliminar Registros | DELETE

DELETE FROM <nombre de la tabla>;


WHERE <lista de condiciones separados por operadores lógicos>

MANUAL BÁSICO DE SQL - Esteban Maidana - Revisado 24/07/2009 1


[TALLER 2] :: Facultad Politécnica ::

Ejemplo:

DELETE FROM ciudades WHERE ciu_codigo=1

Elimina el registro de la tabla de ciudades cuyo código es igual 1.


Es importante tener en cuenta que los registros son eliminados únicamente de forma lógica,
es decir, permanecen físicamente en la tabla. Para eliminarlos físicamente se debe ejecutar
el comando PACK. El ejemplo completo se muestra a continuación:

DELETE FROM ciudades WHERE ciu_codigo=1


PACK

4. Para Modificar Registros | UPDATE

UPDATE <nombre de la tabla>;


SET <campo_uno=valor_uno>, <campo_dos=valor_dos>, <campo_n=valor_n>;
WHERE <lista de condiciones separados por operadores lógicos (AND|OR)>

Ejemplo:

UPDATE alumnos
SET alu_carrera=1, alu_inscripto=”si”
WHERE alu_carrera=4 and alu_fecha_inscri>={15/03/2009}

Modifica los campos alu_carrera y alu_inscripto de los registros cuyos campos alu_carrera
es igual a 4 y alu_fecha_inscri es mayor o igual al 15/03/2009.

Ejemplos prácticos
A fin de una mejor compresión de los ejemplos, se describen a continuación la estructura de
las tablas utilizadas así como los datos que contienen cada una de ellas y finalmente las
consultas de ejemplo con sus respectivos resultados si correspondiere.

Definición de las Tablas


a) PRODUCTOS

Nombre Tipo Long Dec. Descripción


PRO_CODIGO N 5 0 Código del producto
PRO_DESCRI C 40 Descripción del producto
PRO_CATEGO N 3 0 Categoría del producto (Clave Foránea)
PRO_PRECIO N 10 2 Precio de la mercadería
PRO_STOCK N 10 3 Stock existente.

b) CATEGORIAS

Nombre Tipo Long Dec. Descripción


CAT_CODIGO N 3 0 Código de la categoría
CAT_DESCRI C 40 Descripción de la categoría

MANUAL BÁSICO DE SQL - Esteban Maidana - Revisado 24/07/2009 2


[TALLER 2] :: Facultad Politécnica ::

c) CLIENTES

Nombre Tipo Long Dec. Descripción


CLI_CODIGO N 8 0 Código del cliente
CLI_NOMBRE C 40 Nombre del cliente
CLI_DIREC C 50 Dirección del cliente
CLI_CREDIT N 10 0 Límite de crédito del cliente
CLI_INTERE N 5 2 Interés aplicado al cliente en %

d) CTA_COBRAR

Nombre Tipo Long Dec. Descripción


CTA_NUMERO N 12 0 Número de la cuenta
CTA_CLIEN N 8 Código del cliente (Clave Foránea)
CTA_EMISIO F 8 Fecha del emisión (creación) de la cuenta
CTA_VENCI F 8 Fecha de vencimiento
CTA_MONTO N 10 0 Monto de la cuenta

Registros de las tablas


a) PRODUCTOS

CÓDIGO DESCRIPCIÓN CATEGORÍA PRECIO STOCK


1 Sierra de Calar Bosch GST 120 BE 1 100,00 1500,00
2 Mecha de acero corte diamante. 2 250,00 20,00
3 Glifosato 80% 3 150,52 18,15
4 Taladro de Percusión Skill 1 300,00 35,50
5 Remachadora Tramontina Pro 20151 1 55,55 0

b) CATEGORIAS

CÓDIGO DESCRIPCIÓN
1 Herramientas
2 Piezas y Repuestos
3 Agro Químicos
4 Semillas
5 Máquinas Usadas

c) CLIENTES

CÓDIGO NOMBRE DIRECCIÓN CREDITO INTERÉS


1 Juan Pérez Dirección uno 500.000 12,50
2 Fulano Martínez Dirección dos 750.000 10,12
3 Pedro Ferraina Dirección tres 1.500.000 8,00
4 Fausto Farreras Dirección cuatro 350.000 15,00

MANUAL BÁSICO DE SQL - Esteban Maidana - Revisado 24/07/2009 3


[TALLER 2] :: Facultad Politécnica ::

d) CTA_COBRAR

NÚMERO CLIENTE EMISIÓN VENCIMIENTO MONTO


1 1 15/01/2009 15/02/2009 150.000
2 1 20/01/2009 20/02/2009 47.000
3 3 23/01/2009 23/02/2009 130.000
4 2 13/02/2009 13/03/2009 200.000
5 4 15/02/2009 15/03/2009 180.000
6 3 18/03/2009 18/04/2009 555.000
7 1 24/03/2009 24/04/2009 100.000
8 2 05/05/2009 05/06/2009 53.000
9 3 05/05/2009 05/06/2009 350.000

Actividades
a. Construir una consulta SQL para obtener los siguientes datos:
- Código de producto
- Descripción del producto
- Descripción de la categoría del producto

SELECT pro_codigo, pro_descri, cat_descri;


FROM productos, categorías;
WHERE pro_catego=cat_codigo;
INTO CURSOR TEMP

Resultado: cursor TEMP

PRO_CODIGO PRO_DESCRI CAT_DESCRI


1 Sierra de Calar Bosch GST 120 BE Herramientas
2 Mecha de acero corte diamante. Piezas y Repuestos
3 Glifosato 80% Agro Químicos
4 Taladro de Percusión Skill Herramientas
5 Remachadora Tramontina Pro 20151 Herramientas

b. Construir una consulta SQL para obtener el valor de las mercaderías en stock:

SELECT pro_codigo, pro_descri,(pro_stock*pro_precio) AS valor;


FROM productos, categorías;
WHERE pro_catego=cat_codigo;
INTO CURSOR VALORES

Para obtener el valor de las mercaderías en stock se hace una simple operación matemática
(multiplicación) entre el precio unitario (pro_precio) y el stock existente (pro_stock).
Además, se utiliza la palabra reservada AS para renombrar la columna o campo.

MANUAL BÁSICO DE SQL - Esteban Maidana - Revisado 24/07/2009 4


[TALLER 2] :: Facultad Politécnica ::

Resultado: cursor VALORES

PRO_CODIGO PRO_DESCRI VALOR


1 Sierra de Calar Bosch GST 120 BE 150.000
2 Mecha de acero corte diamante. 5.000
3 Glifosato 80% 2.731,938
4 Taladro de Percusión Skill 10.650
5 Remachadora Tramontina Pro 20151 0

c. Construir una consulta SQL para obtener un listado con los códigos, nombres y límites de
crédito de los clientes:

SELECT cli_codigo AS CODIGO, cli_nombre AS NOMBRE, cli_credito AS CREDITO;


FROM clientes;
INTO CURSOR CLIENTES

Resultado: cursor CLIENTES

CODIGO NOMBRE CREDITO


1 Juan Pérez 500.000
2 Fulano Martínez 750.000
3 Pedro Ferraina 1.500.000
4 Fausto Farreras 350.000

d. Construir una consulta SQL para obtener un listado de clientes morosos conteniendo el
código, el nombre, el vencimiento y el monto. Considerar fecha actual como 01/05/2009.

SELECT cta_cliente, cli_nombre, cta_venci, cta_monto;


FROM cta_cobrar, clientes;
WHERE cta_venci<DATE() and cta_clien=cli_codigo;
INTO CURSOR CUENTAS

Resultado: cursor CUENTAS

CTA_CLIENTE CLI_NOMBRE CTA_VENCI CTA_MONTO


1 Juan Pérez 15/02/2009 150.000
1 Juan Pérez 20/02/2009 47.000
3 Pedro Ferraina 23/02/2009 130.000
2 Fulano Martínez 13/03/2009 200.000
4 Fausto Farreras 15/03/2009 180.000
3 Pedro Ferraina 18/04/2009 555.000
1 Juan Pérez 24/04/2009 100.000

e. Construir una consulta SQL para obtener un listado de clientes con sus respectivas
sumatorias de cuentas por pagar.

MANUAL BÁSICO DE SQL - Esteban Maidana - Revisado 24/07/2009 5


[TALLER 2] :: Facultad Politécnica ::

SELECT cta_clien AS codigo, cli_nombre AS nombre, SUM(cta_monto) AS suma;


FROM cta_cobrar, clientes;
WHERE cta_clien=cli_codigo;
GROUP BY cta_clien, cli_nombre;
INTO CURSOR SUMATORIA

Resultado: Cursor SUMATORIA

CODIGO NOMBRE SUMA


1 Juan Pérez 297.000
2 Fulano Martínez 253.000
3 Pedro Ferraina 1.035.000
4 Fausto Farreras 180.000

Para utilizar las funciones de sumatoria y similares, se debe utilizar la clausula Group By, en
el cual deben constar todos los campos incluidos en Select, teniendo en cuenta que el
campo por el cual se realizará el corte o grupo debe estar en primer lugar desde la
izquierda.
Es imprescindible incluir todos los campos, ya que de otra forma la consulta arrojará un
error. En este aspecto la sintaxis SQL de Visual FoxPro se contradice al estándar SQL, ya
que en dicho estándar no es necesario incluir todos los campos, sino únicamente el campo
por el cual se realizará el agrupamiento.

f. Construir una consulta SQL para obtener un listado de las cuentas que se encuentran
vencidas, incluir el número de cuenta, el nombre del cliente, el monto, y el interés.
Considerar la fecha actual como 01/05/2009.

SELECT cta_numero AS Numero, cli_nombre AS Nombre, cta_monto AS Monto,;


CALC_INTER(cta_monto, cta_venci, cli_intere) AS Interes;
FROM cta_cobrar, clientes;
WHERE cta_clien=cli_codigo and cta_venci>DATE();
INTO CURSOR VENCIDAS

FUNCTION CALC_INTER
PARAMETERS monto, venci, _inte

dias = venci-DATE()
const = ((_inte/30)*dias)/100
inter_ = monto*const

RETURN INT(inter_)
ENDFUNC

Resultado: Cursor VENCIDAS

NUMERO NOMBRE MONTO INTERES


7 Juan Pérez 100.000 14.583
8 Fulano Martínez 53.000 6.257
9 Pedro Ferraina 350.000 32.666

MANUAL BÁSICO DE SQL - Esteban Maidana - Revisado 24/07/2009 6


[TALLER 2] :: Facultad Politécnica ::

g. Construir una consulta SQL para insertar un producto con los siguientes datos:
- Codigo: 6
- Descripcion: Nuevo Producto
- Categoria: 3
- Precio: 5000
- Stock: 15

INSERT INTO productos (pro_codigo, pro_decri, pro_catego,;


pro_precio, pro_stock);
VALUES (6,”Nuevo Producto”, 3, 5000, 15)

h. Construir una consulta SQL para modificar el producto que posee el código 6, cambiar la
descripción a “Otra descripcion”, la categoría a 2, el precio a 15.700 y el stock a 254.

UPDATE productos SET


pro_descri=”Otra descripción”,;
pro_catego=2,;
pro_precio=15700,;
pro_stock=254;
WHERE pro_codigo=6

i. Construir una consulta SQL para eliminar el producto cuyo código es 6.

DELETE FROM productos WHERE pro_codigo=6


SELECT productos
PACK

Al eliminar un registro es necesaria la utilización de comando PACK para que dicha


eliminación sea física, de lo contrario, el registro sólo será marcado para su eliminación y
seguirá siendo visible para las consultas SQL.

Es importante observar que antes de utilizar PACK se debe seleccionar la tabla física con
SELECT, ya que generalmente tendremos seleccionado algún cursor con el que estuvimos
trabajando previamente dentro del programa. Al intentar ejecutar PACK con un cursor,
visual foxpro arrojará un error.

MANUAL BÁSICO DE SQL - Esteban Maidana - Revisado 24/07/2009 7

S-ar putea să vă placă și