Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

A2 - Manual Sentencias en SQL

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 16

Manual de Usuario

a2 Softway C.A.
a2 Softway C.A. Sentencias en SQL

INTRODUCCIÓN

En este Manual se introducirán conceptos básicos del lenguaje de consulta estructurado (SQL,
Structured Query Language), así como también los distintos usos y la manera de acceder a la Base de
Datos DBIsam (relacionado con el uso de sentencias en sql). Aquí se explica el lenguaje de definición
de datos (DDL, Data Definition Language); este se utiliza para definir y administrar objetos en bases
de datos tales como tablas y vistas; y el lenguaje de tratamiento de datos (DML, Data Manipulation
Language); el cual se utiliza para manipular los datos contenidos en los objetos de la base de datos.
Para ello se utilizan instrucciones tales como INSERT, SELECT, UPDATE y DELETE aquí se
incluyen ejemplos de cada uno. Además se aprenderá a utilizar las diferentes utilidades de SQL para
crear y administrar objetos en la base de datos así como también se aprenderá a crear sentencias de
comandos que contengan instrucciones en SQL.
SQL (Structured Query Language ó Lenguaje Estructurado de Consulta), es en si un lenguaje de
consulta y programación de bases de datos, utilizado para acceder a los datos y para consultar,
actualizar y gestionar sistemas de bases de datos relaciónales. Este es un lenguaje bastante sencillo y
de fácil manejo, es por que ello que la base de datos DBISAM incorpora esta extensión, obteniendo
potentes resultados.

Además SQL está compuesto por una serie de sentencias y de cláusulas muy reducidas en número,
pero muy potentes en efectividad.
El objetivo principal de SQL es la realización de consultas y cálculos con los datos de una o varias
tablas.

He aquí una serie de consejos (a veces normas), que hay que tener en cuenta a la hora de escribir
mandatos de SQL en DBIsam:
1.Un mandato en SQL se expresa en una cadena de caracteres o String.
Encerrado entre corchetes ([nombre]). Como norma general, se suelen escribir siempre entre
corchetes(aunque no es necesario; solo en caso cuyo nombre este separados por caracteres en
blanco[nombre tabla], esto permite diferenciar en la vista, las palabras clave de SQL con respecto a
los nombres de los campos o tablas de la base de datos).
2. Para especificar un determinado campo de una determinada tabla, se ha de escribir primero el
nombre de la tabla, un punto, y a continuación, el nombre del campo
(nombre_tabla.nombre_campo),esto solo hace cuando hay varias tablas implicadas en la sentencia.
3. Especificar una expresión de búsqueda, si ésta se refiere a una expresión de caracteres, éstos han
de encerrarse entre comillas simples ('valor_a_buscar') o dobles (“valor_a_buscar”), para campos
numéricos o booleanos esto no aplica.

El manual de sentencias en Sql se desarrollo con la finalidad de proporcionar todas los métodos y
normas necesarias para la correcta utilización de las herramientas que posee la base de Datos
DBISAM. Este manual proveerá de muchas facilidades al momento de desarrollar sentencias en esta
base de datos, ampliando y mejorando la utilidad del mismo, de una manera sencilla y rápida

Pág. 2
a2 Softway C.A. Sentencias en SQL

UTILIDADES DE LA BASE DE DATOS

A continuación se dará una explicación detallada de cada uno de los pasos a seguir para la
elaboración de un Query en la base de datos.
Se debe abrir la base de datos (DBISAM), en la pestaña que dice “File” seleccionar de la lista el
renglón que dice “Options..” el cual abrirá una ventana que nos permitirá direccionar la aplicación
hacia la data sobre la cual se trabajara.

Nota: es necesario colocar la dirección de la data, para


poder trabajar sobre la misma, de lo contrario al hacer la
sentencia (Query) es necesario indicar entre
comillas(simples o dobles) dicha dirección. Esta dirección
se colocara completa, en el lugar donde se coloca el
nombre de la tabla Ej:

Select * from "C:\a2softway\Empre001\Data\Sinventario"

Para mayor información sobre el desarrollo de Query,


verificar la sección de sentencias en SQL, que aparecerá
explicada mas adelante.

Este botón le
Aquí aparecerá
permitirá abrir el
reflejada la
directorio donde
dirección de la
podrá seleccionar la
data.
data a verificar.

Aquí aparecerá Este botón le


reflejada la permitirá abrir el
dirección directorio donde
privada del podrá seleccionar la
Dbisam. dirección privada a
verificar.

Al presionar
este botón, se
cancelara el
cambio de
Al presionar el botón “OK”
directorio.
sé tomara en cuenta la
dirección especificada en el
directorio. Pág. 3
a2 Softway C.A. Sentencias en SQL

Al presionar el Botón “Select” de la pantalla “Options“, se mostrara a continuación la siguiente


pantalla:

En esta Pantalla sé podrá indicar el


directorio, donde se encuentra ubicada la
data a verificar.

Al presionar este botón se cancela


la selección de directorio.

Al presionar este botón se


tomara como dirección
seleccionada, la especificada
en la pantalla.

Una vez seleccionado el directorio de la base de datos se procede a trabajar con las tablas de la
misma
Se selecciona la opción "FILE" como se muestra en la siguiente pantalla:

Seleccionar la opción,
para mostrar la
ventana desplegable.

Pág. 4
a2 Softway C.A. Sentencias en SQL

Luego se desplegará una lista donde sé escogerá la opción que dice “Open Table Shared”:
Luego se desplegará una lista donde sé escogerá la opción que dice “Open Table Shared”:

Seleccionar la
opción para abrir la
ventana.

En esta ventana se selecciona el nombre de la tabla:

Seleccionar la tabla
sobre la cual se va a
trabajar.

Pág. 5
a2 Softway C.A. Sentencias en SQL

Luego se abrirá la opción donde se mostrara la información de la tabla, a continuación vemos un


ejemplo:

Si queremos ejecutar una sentencia en SQL solo basta seleccionar la opción que dice “New SQL
Query”, como se muestra a continuación:

Pág. 6
a2 Softway C.A. Sentencias en SQL

Una vez seleccionado la opción, se muestra la Vista de la pantalla donde se colocara la sentencia

Al presionar este
botón se ejecuta la
sentencia en SQL.

Al presionar este
botón se prepara la
sentencia para ser
ejecutada.

Aquí se escribe la
sentencia en SQL.

Una vez ejecutada la sentencia se muestra la información requerida en la misma, como se muestra a
continuación:

Pág. 7
a2 Softway C.A. Sentencias en SQL

Operadores
matemáticos:
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> Distinto
= Igual

SENTENCIAS EN SQL
Lista de operadores y ejemplos prácticos para realizar selecciones.
Hemos querido compilar a modo de tabla ciertos operadores que pueden resultar útiles en
determinados casos. Estos operadores serán utilizados después de la cláusula Where y pueden ser
combinados hábilmente mediante paréntesis para optimizar nuestra selección a muy altos niveles.

Comodines Operadores
* Sustituye a todos los campos lógicos
Sustituye a cualquier cosa o nada And
%
dentro de una cadena Or
Sustituye un solo carácter dentro Not
INSERT INTO _
de una cadena
Para añadir un nuevo registro se debe tomar en cuenta
la sintaxis y los datos a introducir en una tabla; los registros pueden ser introducidos a partir de
sentencias que emplean la instrucción Insert.

La sintaxis utilizada es la siguiente:

Insert Into nombre_tabla (nombre_campo1, nombre_campo2,...) Values (valor_campo1,


valor_campo2...)
o

Pág. 8
a2 Softway C.A. Sentencias en SQL

Insert Into nombre_tabla (nombre_campo1,nombre_campo2...) Select nombre_campo1,


nombre_campo2... from nombre_tabla

Un ejemplo sencillo a partir de nuestra tabla modelo, es la introducción de una nueva línea en la tabla
Sconceptos donde se almacenaran los datos que se traen de otra tabla denominada Sconceptos1:

Insert into Sconceptos (FBC_CODIGO,FBC_DESCRIPCION) Select


Sconceptos1.FBC_CODIGO,Sconceptos1.FBC_DESCRIPCION from Sconceptos1

Otra forma es trasladar todos los valores de una tabla a otra por ejemplo:

Insert Into Sconceptos all select * from Sconceptos1

Nota: los campos a introducir (de la tabla origen a la tabla destino)deben tener el mismo tipo de
datos, así como también el o los campos principales no deben repetirse; es decir no debe haber
duplicidad de datos, de lo contrario generara errores que imposibilitara la inclusión de los mismos.

UPDATE
Update es la instrucción que nos sirve para modificar nuestros registros, necesitamos especificar por
medio de Where cuáles son los registros en los que queremos hacer efectivas nuestras
modificaciones. Además, obviamente, tendremos que especificar cuáles son los nuevos valores de los
campos que deseamos actualizar. La sintaxis es de este tipo:

Update nombre_tabla Set nombre_campo1=valor_campo1,nombre_campo2=


valor_campo2,...Where condiciones_de_selección

Un ejemplo aplicado:
Mediante esta sentencia se le va a cambiar la opción al departamento sobre el manejo de dólares en
sus productos, ahora en vez de bolívares manejaran dólares :

Update Sinventario set FI_Moneda=”2” where FI_Categoria=”01”

Aquí también hay que ser cuidadoso de no olvidarse de usar Where, de lo contrario, modificaríamos
todos los registros de nuestra tabla.

DELETE
Para borrar un registro nos servimos de la instrucción Delete. En este caso debemos especificar cual
o cuales son los registros que queremos borrar. Es por ello necesario establecer una selección, que se
llevara a cabo mediante la cláusula Where. La sintaxis es de este tipo:

Delete From nombre_tabla Where condiciones_de_selección

Un ejemplo aplicado:
Mediante esta sentencia se va a borrar un cliente de la base de datos

Pág. 9
a2 Softway C.A. Sentencias en SQL

Delete from Sclientes where FC_Descripcion="Cliente 3"

Como puede verse, los campos no numéricos o booleanos van a estar delimitados por
apostrofes(“dato” o ’dato’).

Hay que tener cuidado con esta instrucción ya que si no especificamos una condición con Where, lo
que estamos haciendo es borrar toda la tabla:

Delete From Sclientes

SELECT(Consultas de selección)
Consultas Básicas

La selección total o parcial de una tabla se lleva a cabo mediante la instrucción Select. En dicha
selección hay que especificar:
-Los campos que queremos seleccionar.
-La tabla en la que hacemos la selección.
La sintaxis es de este tipo:
Select campo1, campo2... From nombre_tabla

En un ejemplo aplicado podríamos hacer una selección del nombre y dirección de los clientes con
una instrucción de este tipo, utilizando la tabla Sclientes:

Select Fc_descripcion, FC_direccion1 from Sclientes

Si quisiese seleccionar todos los campos, es decir, toda la tabla, podríamos utilizar el comodín * del
siguiente modo:

Select * From Sclientes

Consultas con Operadores de Orden


Otros Operadores
Selecciona los registros cuyo valor de campo se asemeje, no teniendo en cuenta
Like
mayúsculas y minúsculas.
Da un conjunto de valores para un campo para los cuales la condición de
In y Not In
selección es (o no) valida
Is Null y Is Not
Selecciona aquellos registros donde el campo especificado esta (o no) vacío.
Null
Between...And Selecciona los registros comprendidos en un intervalo
Distinct Selecciona los registros no coincidentes
Desc Clasifica los registros por orden inverso
Order by Clasifica los registros en orden, según lo indique el campo de referencia

LIKE
Resulta también muy útil el filtrar los registros mediante condiciones que vienen expresadas después
Pág. 10
a2 Softway C.A. Sentencias en SQL

de la cláusula Where. Si quisiese mostrar los clientes de una determinada Zona usaríamos una
expresión como esta:

Select * from Sclientes where Fc_zona like "00001"

Otra forma de mejorar la búsqueda con este operador, es la siguiente

Select * From Sclientes where Fc_descripcion like "M%"

Esto facilita la búsqueda en el caso de que solo recordemos las iniciales del nombre del cliente y el
comodín % permitirá encontrar las distintas combinaciones a partir de las iniciales de dicho nombre.

ORDER BY
Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas
mediante la cláusula ORDER BY Lista de Campos. En donde Lista de Campos representa los
campos a ordenar. Además, podríamos ordenar los resultados en función de uno o varios de sus
campos. Para este ultimo ejemplo los podríamos ordenar por nombre así:

Select * from Sclientes where Fc_zona like "00001" order by Fc_descripcion

DISTINCT
Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los
valores de cada campo listado en la instrucción SELECT se incluyan en la consulta deben ser únicos.
Por ejemplo, varios clientes listados en la tabla Sclientes pueden tener el mismo nombre para un
contacto. Si dos registros contienen José López en el campo FC_CONTACTO, la siguiente
instrucción SQL devuelve un único registro:
Una opción interesante es la de efectuar selecciones sin coincidencia. Si por ejemplo queremos saber
en que Zona se encuentran nuestros clientes sin necesidad de que para ello aparezca varias veces la
misma Zona usaríamos una sentencia de esta clase:

Select Distinct Fc_zona From Sclientes

Así evitaríamos ver repetido la Zona 0001 tantas veces como clientes(con nombre igual) se tengan en
esa Zona.

DESC
El operador clasifica los registros por orden inverso. Si por ejemplo quisiésemos ver nuestros
clientes ordenados por zonas, pero teniendo a las Zonas con mayor numeración en primer lugar, es
decir en orden descendente, escribiríamos algo así:

Select * From Sclientes Order By FC_Zona Desc

BETWEEN….AND
Este operador limita la búsqueda entre un rango establecido, por ejemplo si quisiéramos recoger en
una selección a los clientes de la tabla Sclientes cuyo nombre comienza por A y cuyo número de
Zona esta comprendido entre 00001 y 00008:

Pág. 11
a2 Softway C.A. Sentencias en SQL

Select * From Sclientes where Fc_descripcion like 'A%' And FC_Zona Between "00001"
And "00008"
IN
El operador In, permite hacer una búsqueda más extensa. Podemos utilizar el operador IN para
recuperar aquellos registros donde el valor del campo se corresponda con un valor de los incluidos
en una lista de valores. Si la expresión coincide con un valor de la lista, el operador IN devolverá
Verdadero; en cualquier otro caso, retornará Falso. La sintaxis del operador IN es la siguiente:

Select * from nombre_tabla where campo IN (valor1, valor2, ..., valorN)

Un ejemplo practico:

Select * From Sclientes where FC_Zona IN ("00002","00003", "00004")

De esta forma seleccionamos aquellos clientes que pertenezcan a esas tres Zonas.

NOT IN
Si anteponemos el operador lógico opcional NOT, lo que haremos será verificar lo contrario del
operador IN. Si deseamos seleccionar los Clientes que no pertenecen a las Zonas anteriormente
mencionadas, escribiremos:

Select * From Sclientes where FC_Zona NOT IN ("00002","00003", "00004")

IS NULL
Un valor NULL (nulo) es aquel que indica que campos faltan o que son desconocidos. Los valores
NULL se pueden especificar en campos cuya información se desconoce, así como en expresiones y
consultas. Puede utilizar el operador IS NULL para determinar si el valor de una expresión es igual a
un valor nulo. Dicho operador utiliza la siguiente sintaxis:

Select * from nombre_tabla where campo IS NULL

Por ejemplo, deseamos conocer aquellos registros de clientes donde no figura su numero de Zona,
escribiríamos la siguiente consulta SQL:
Select * From SClientes Where FC_Zona IS NULL

IS NOT NULL
Añadiendo el operador lógico opcional NOT, podemos comprobar lo contrario del operador IS
NULL. En este caso, la consulta devolverá los registros de clientes que sí tienen especificado su
Zona:

Select * From SClientes Where FC_Zona IS NOT NULL

Consultas con Operadores Matemáticos


Los operadores >,>=,<,<= y <> se usan para simplificar las búsquedas, por ejemplo:
Pág. 12
a2 Softway C.A. Sentencias en SQL

Select * from SoperacionInv where FTI_totalcosto >10000


Muestra todas las operaciones cuyos costos sean mayores a 10000 Bs.

Select * from SoperacionInv where FTI_totalcosto <10000


Muestra todas las operaciones cuyos costos sean menores a 10000 Bs.

Select * from Sclientes where FC_ZONA <>"00003"


Muestra todos los clientes cuya zona sea distinta a la zona Norte(00003)

Al colocar el operador = tomara en cuenta el valor del campo al cual sé esta comparando, aun
cuando este acompañado del operador < o el operador >

El empleo de funciones para la explotación de los campos numéricos y otras utilidades.


Además de los criterios hasta ahora explicados para realizar las consultas en tablas, SQL permite
también aplicar un conjunto de funciones predefinidas. Estas funciones, aunque básicas, pueden
ayudarnos en algunos momentos a expresar nuestra selección de una manera más simple sin tener
que recurrir a operaciones adicionales por parte del Script que estemos ejecutando.
Algunas de estas funciones son representadas en la tabla siguiente:

Función Descripción
Sum(campo) Calcula la suma de los registros del campo especificado.
Avg(Campo) Calcula la media de los registros del campo especificado.
Nos proporciona el valor del numero de registros que han sido
Count(*)
seleccionados.
Max(Campo) Nos indica cual es el valor máximo del campo.
Min(Campo) Nos indica cual es el valor mínimo del campo.

SUM
Dado que el campo de la función no existe en la base de datos, sino que lo estamos generando
virtualmente, esto puede crear inconvenientes cuando estamos trabajando con nuestros scripts a la
hora de tratar su valor y su nombre de campo. Es por ello que el valor de la función ha de ser
recuperada a partir de un alias que nosotros especificaremos en la sentencia SQL a partir de la
instrucción AS. La Sentencia podría quedar así:

Select Sum(FTI_Totalcosto) as suma_total From SOperacionInv

A partir de esta sentencia calculamos la suma de los valores de todas las operaciones realizadas y
almacenamos ese valor en un campo virtual llamado suma_total que podrá ser utilizado como
cualquier otro campo por nuestras paginas dinámicas.
Por supuesto, todo lo visto hasta ahora, puede ser aplicado en este tipo de funciones de modo que,
por ejemplo, podemos establecer condiciones con la cláusula Where construyendo sentencias como
esta:

Select Sum(FTI_TOTALCOSTO) as suma_total From SOperacionInv where FTI_Tipo=9


Pág. 13
a2 Softway C.A. Sentencias en SQL

Esto nos proporcionaría la suma de las operaciones cuyo tipo sea igual a “9” (Presupuestos).

AVG
La función Avg no permite establecer la media de los registros de un campo determinado
Por ejemplo:

Select avg(campo) from nombre_tabla

En un ejemplo aplicado podemos observarlo de la siguiente manera

Select avg(FDI_COSTO) as costo_media From SdetalleInv

Esta sentencia nos muestra la media del costo de los productos referenciados en una determinada
operación.
Otra propiedad interesante de estas funciones, es que permiten realizar operaciones con varios
campos dentro de un mismo paréntesis:

Select avg(FDI_COSTO/FDI_CANTIDAD) as suma_total From SdetalleInv

Esta sentencia da como resultado el precio medio al que se están vendiendo los productos, en una
determinada operación. Este resultado no tiene por qué coincidir con el del precio medio de los
productos presentes en el inventario, ya que, puede ser que la gente tenga tendencia a comprar los
productos caros o los baratos.

COUNT
La función count permite contar la cantidad de Items que hayan en un determinado campo y la
sintaxis a seguir es la siguiente:

Select count(campo) from nombre_tabla

En un ejemplo aplicado podemos observar la siguiente sentencia que nos permitirá contar la cantidad
de operaciones que se han realizado.

Select count(FTI_documento) from SoperacionInv

MAX
Para indicar el Valor máximo de un campo, utilizamos la función Max, la sintaxis es la siguiente:

Select Max(campo) from nombre_tabla


Un ejemplo aplicado se encuentra en la siguiente sentencia, la cual nos permite visualizar aquella
operación cuyo costo total sea el mayor de las operaciones reflejadas.

Select Max(FTI_totalcosto) from SoperacionInv

MIN

Pág. 14
a2 Softway C.A. Sentencias en SQL

Para indicar el Valor mínimo de un campo, utilizamos la función Min, la sintaxis es la siguiente:

Select Min(campo) from nombre_tabla

Un ejemplo aplicado se encuentra en la siguiente sentencia, la cual nos permite visualizar aquella
operación cuyo costo total es el menor.

Select Min(FTI_totalcosto) from SoperacionInv

La cláusula GROUP BY
La cláusula opcional GROUP BY generará un único registro mediante el agrupamiento de todos los
registros que tengan un valor idéntico en la lista de campos seleccionada. El registro creado contiene
un valor resumen como resultado de la función agregada que necesariamente tendrá que especificar
en la instrucción SELECT, tal como SUM o COUNT, ya que si no existe una función agregada, se
omitirán por completo los valores resumen. La sintaxis de la cláusula GROUP BY es la siguiente:

SELECT campos FROM nombre_tabla [WHERE criterio] GROUP BY camposAgrupados

Deseamos conocer el número de facturas y su importe total agrupado por el tipo de documento, por
lo que este será el campo que deberemos de indicar en la cláusula GROUP BY, aunque no es
necesario que el campo se incluya en la instrucción SELECT:

Select FTI_Tipo, Count(FTI_Documento) As [Nº de Documentos], Sum(FTI_Totalcosto)


AS [Importe Total] From SoperacionInv GROUP BY FTI_Tipo

La Cláusula HAVING
Esta cláusula se asemeja a la cláusula WHERE en el sentido de que determina los registros que se
seleccionarán, una vez que necesariamente hayan sido agrupados mediante la cláusula GROUP BY.
La cláusula HAVING es opcional y puede contener hasta 40 expresiones vinculadas por operadores
lógicos, como AND y OR. El siguiente ejemplo ampliarán el uso de las cláusulas GROUP BY y
HAVING.

SELECT campos FROM nombreTabla GROUP BY camposAgrupados HAVING


nombreCampo = criterio

Deseamos conocer la cantidad de operaciones que tenemos en cada tipo de documento, por lo que
este será el campo de agrupamiento pero cuyo monto total sean mayores a 100.000 Bs:

Un ejemplo aplicado:

Select Count(FTI_Documento) AS Total_facturas, FTI_Tipo, FTI_Totalcosto From


SoperacionInv GROUP BY FTI_Tipo HAVING FTI_Totalcosto>100000

La cláusula WHERE
La cláusula WHERE se utiliza para especificar qué registros de las tablas indicados en la cláusula
Pág. 15
a2 Softway C.A. Sentencias en SQL

FROM cumplen con las condiciones enumeradas, y por tanto, se deberán de incluir en el resultado
devuelto por la instrucción SELECT. Si no se especifica una cláusula WHERE, la consulta devolverá
todos los registros existentes en la tabla, por ejemplo:

Select FTI_DOCUMENTO,FTI_TIPO From SoperacionInv

Pero al utilizar la cláusula Where se puede obtener todos los registros cuyo tipo sea igual a ”13” ( que
corresponde a una Nota de entrega).
Por ejemplo:

Select FTI_DOCUMENTO,FTI_DESCRIPCLASIFY From SoperacionInv WHERE


FTI_TIPO =13

Las posibilidades como vemos son numerosas y pueden resultar prácticas. Todo queda ahora a
disposición de nuestras ocurrencias e imaginación.

Pág. 16

También podría gustarte