You are on page 1of 18

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL

CONTENIDO
1. TIPOS DE DATOS
2. COMANDOS DDL
2.1 Crate
2.2 Drop
2.3 Alter
3. COMANDOS DML
3.1 Select
3.2 Insert
3.3 Update
3.4 Delete
4. CLAUSULAS
4.1 From
4.2 Where
4.3 Having
4.4 Group by
4.5 Order by
5. OPERADORES LOGICOS
6. OPERADORES DE COMPARACIN
7. FUNCIONES DE AGREGADO
8. APLICABILIDAD

OBJETIVO
Identificar la estructura y aplicabilidad del Lenguaje de Consulta Estructurado SQL, en la
administracin y manipulacin de bases de datos.
COMPETENCIAS
Al finalizar el curso, el estudiante estar en capacidad de:
o Identificar la estructura de los comandos DDL y DML en el lenguaje de consultas SQL.
o Realizar consultas que incluyan el uso de clusulas, operadores lgicos, operadores de
comparacin y funciones bsicas, en una base de datos.
o Administrar y manipular bases de datos a travs del lenguaje de consultas estructurado
SQL.

1. TIPOS DE DATOS
El tipo de dato es el atributo de un campo a travs del cual se define la clase de datos
que se van a procesar indicando los valores que deber tomar y las operacin que
puede realizar.
Los tipos de datos estn clasificados en trece grupos, para el desarrollo de este curso,
se van a utilizar los siguientes tipos de datos:
Tipo
INT
BINGINT

Bytes
4
8

Valor Mnimo
-2147483648
-9223372036854775808

Valor Mximo
2147483647
9223372036854775807

Decimal: almacena su contenido como en cadenas de caracteres. Para almacenar las


un valor decimal en la longitud del campo se deben asignar los valores (M,D) donde m
es el nmero de dgitos a la izquierda del punto decimal y D es el nmero de dgitos a la
derecha del punto decimal.
Ejemplo: para almacenar las calificaciones ponderadas entre 0.0 y 5.0, el tipo de
dato se define como decimal y como longitud lo recomendable es asignar el valor
5,1
Boolean: Tipo de dato numrico entero que solo admite los valores 1 o 0.
Date: Tipo de dato cadena de caracteres que se utiliza para almacenar fechas. Por
defecto el formato utilizado es YYYY-MM-DD que corresponde a aomes-da y recibe
valores desde 0000- 00-00 hasta 9999-12-31.
Char: Tipo de dato cadena de caracteres que se utiliza para almacenar cadenas de
longitud fija. Su longitud va desde 1 a 255 caracteres.

Varchar: Tipo de dato cadena de caracteres que se utiliza para almacenar cadenas de
longitud variable. Su longitud va desde 1 a 255 caracteres. A diferencia del tipo de dato
char que ocupa el mximo de la longitud asignada, el tipo varchar solo almacena la
longitud del dato ingresado evitando gasto innecesario de memoria pero elevando en
tiempo de respuesta.
Text: Tipo de dato cadena de caracteres. Su longitud va desde 255 a 65535 caracteres,
la caracterstica ms relevante de este tipo de dato es que no distingue entre
maysculas y minsculas.
2. COMANDOS DDL
Los comandos DDL por sus siglas en ingles Data Definition Language (Lenguaje de
definicin de datos), se utilizan para modificar la estructura de la base de datos y las
tablas, las operaciones bsicas son:
2.1 Create: permite crear bases de datos y objetos dentro de ellas, como tablas.

Crear base de datos:

CREATE DATABASE nombre de la base de datos;

Crear tabla:

CREATE TABLE nombre de la tabla(


nombre campo1 tipo de dato(longitud),
nombre campo2 tipo de dato(longitud),
PRIMARY KEY (`nombre campo`)
);

La instruccin PRIMARY KEY se utiliza para indicar el campo que ser la llave
primaria de la tabla.
2.2 Drop: permite borrar bases de datos y objetos dentro de ellas, como tablas.
o

Borrar tabla: DROP TABLE nombre de la tabla;

Borrar base de datos: DROP DATABASE nombre de la base de datos;

2.3 Alter: permite modificar la estructura de la tabla, es decir, agregar, eliminar y


renombrar campos, y modificar el tipo de dato.
o Agregar campo al inicio de la tabla: ALTER TABLE nombre de la tabla
COLUMN nombre del campo tipo de dato FIRST;

ADD

o Agregar campo a la tabla: ALTER TABLE nombre de la tabla ADD COLUMN


nombre del campo tipo de dato AFTER nombre del campo que lo precede;
o Eliminar campo a la tabla: ALTER TABLE nombre de la tabla
COLUMN nombre del campo;

DROP

o Modificar tipo de dato: ALTER TABLE nombre de la tabla


CHANGE
nombre actual del campo nombre actual del campo nuevo tipo de dato;
o Renombrar campo: ALTER TABLE nombre de la tabla
actual del campo nuevo nombre del campo tipo de dato;

CHANGE nombre

2.4 Truncate: permite eliminar todos los registros de una tabla.


Borrar todos los registros: TRUNCATE TABLE nombre de la tabla
3. COMANDOS DML
3.1 Insert: inserta o agrega registros en las tablas. Su estructura es la siguiente:
INSERT INTO nombre de la tabla (nombre campo1, nombre campo2, ) VALUES
(valor 1, valor 2, )
3.2 Select: se utiliza para buscar registros dentro de una base de datos, teniendo en
cuenta un criterio determinado.
o Consultar todos los registros de una tabla: SELECT * FROM nombre de la
tabla
o Consultar registro especfico: SELECT * FROM nombre de la tabla WHERE
nombre del campo=valor
3.3 Update: Se utiliza para modificar los valores de un campo o registro determinado.
Modificar el valor de un campo para un registro especfico: UPDATE nombre de la
tabla SET nombre del campo=nuevo valor WHERE nombre del campo criterio de
bsqueda=valor de bsqueda
3.4 Delete: Se utiliza para borrar un registro
siguiente:

determinado. Su estructura es la

DELETE FROM nombre de la tabla WHERE nombre del campo criterio de


bsqueda=valor de bsqueda
4. CLAUSULAS
From: se utiliza para indicar la tabla sobre la cual se va a realizar la operacin.
Where: se utiliza para indicar los criterios de bsqueda de los registros.
Group by: se utiliza para conformar grupos de registros bajo un criterio de seleccin.

Order by: se utiliza para mostrar los registros consultados, con orden ascendente o
descendente.
5. OPERADORES LGICOS
5.1 AND : Operador lgico y que se utiliza para evaluar dos condiciones, solo si
ambas son ciertas devuelve un valor de verdad.
Para consultar un registro especifico, que cumpla dos criterios de
seleccin:
SELECT * FROM nombre de la tabla WHERE nombre del campo 1=valor AND
nombre del campo 2=valor
5.2 OR: Operador lgico que se utiliza para evaluar dos condiciones, devuelve un
valor de verdad si una de las condiciones es cierta.
Para consultar un registro especfico, que cumpla por lo menos uno de los
criterios de seleccin:
SELECT * FROM nombre de la tabla WHERE nombre del campo 1=valor OR
nombre del campo 2=valor
6. OPERADORES DE COMPARACIN
Operador
=
<
>
<=
>=
!= o <>

Descripcin
Igual que
Menor que
Mayor que
Menor o igual que
Mayor o igual que
Diferente de

6.1 BETWEEN: Se utiliza con la clusula WHERE para seleccionar un rango de datos
entre dos valores, que pueden ser valores numricos o de texto.

Para consultar registros, indicando un rango de valores de un campo:


SELECT * FROM nombre de la tabla WHERE nombre del campo BETWEEN
valor 1 AND valor 2
6.2 IN: Se utiliza con la clusula WHERE para seleccionar registros indicando mltiples
valores de un campo
Para consultar registros, indicando mltiples valores de un campo:
SELECT * FROM nombre de la tabla WHERE nombre del campo IN (valor 1,
valor 2)

6.3 LIKE: Se utiliza para seleccionar registros, utilizando como criterio de bsqueda la
ubicacin de un carcter o cadena de caracteres, dentro de un campo.
Seleccin de un registro, donde el carcter se encuentre al inicio del valor que
contiene el campo:
SELECT * FROM nombre de la tabla WHERE nombre del campo LIKE carcteres%
Seleccin de un registro, donde el carcter se encuentre al final del valor que
contiene el campo:
SELECT * FROM nombre de la tabla WHERE nombre del campo LIKE %carcteres
Seleccin de un registro, donde el carcter est ubicado en cualquier parte del
campo:
SELECT * FROM nombre de la tabla WHERE nombre del campo LIKE %carcteres%
7. FUNCIONES DE AGREGADO
o COUNT(): Esta funcin se utiliza para obtener el nmero de registros
encontrados.

Para determinar el nmero de registros que contiene una tabla:


SELECT COUNT(*) FROM nombre de la tabla
o MIN: Esta funcin se utiliza hallar el valor menor que contiene un campo.

Para hallar el valor menor de un campo:


SELECT MIN(nombre del campo) FROM nombre de la tabla
o MAX: Esta funcin se utiliza hallar el valor ms alto que contiene un campo.

Para hallar el valor mayor de un campo:


SELECT MAX(nombre del campo) FROM nombre de la tabla
o AVG: Esta funcin se utiliza hallar el promedio de los valores que contiene un
campo.
Para hallar el promedio de un campo:

SELECT AVG(nombre del campo) FROM nombre de la tabla


o SUM: Esta funcin se utiliza sumar los valores de un campo.

Para hallar la suma de los valores de un campo:


SELECT SUM(nombre del campo) FROM nombre de la tabla
8. APLICABILIDAD
Para explicar el uso de los comandos e instrucciones SQL, se va a construir una base
de datos para administrar las ventas de un almacn, utilizando el siguiente modelo
entidad relacin:

Se trabajar por consola, con el paquete servidor xampp, que contiene interprete de php,
motor de base de datos mysql y servidor apache.
8.1 COMANDOS DDL
Para acceder por consola al motor de base de datos mysql, ejecute el siguiente
procedimiento:
1. Abrir el administrador smbolo de sistema.(Tecla Windows+R )
2. Digitar el comando cmd y aceptar
3. Acceder a la siguiente ubicacin: cd C:\xampp\mysql\bin

4. Ejecutar la siguiente instruccin: mysql u root p *** (donde u root


corresponde al nombre de usuario con los privilegios para acceder a la base
de datos y p es la contrasea de acceso).

Si ha ejecutado los pasos de forma correcta, debe aparecer el apuntador: mysql> que
indica que ya se accedi al motor de base de datos mysql.

8.1.1 Creacin base de datos


La base de datos se crea con la instruccin:
CREATE DATABASE ventas;

8.1.2 Creacin de tablas


Para crear las tablas se debe indicar al motor el nombre de la base de datos sobre la
cual se va a trabajar con la instruccin:
use ventas;

Atendiendo al modelo Entidad relacin se presenta la instruccin para crear la tabla


clientes, con sus correspondientes atributos.
CREATE TABLE `clientes` (
`id_cliente` int(11) NOT NULL,
`empresa` varchar(50) collate latin1_general_ci NOT NULL,
`apellido` varchar(50) collate latin1_general_ci NOT NULL,
`nombre` varchar(50) collate latin1_general_ci NOT NULL,
`telefono` varchar(50) collate latin1_general_ci NOT NULL,
`direccion` varchar(50) collate latin1_general_ci NOT NULL,
`ciudad` varchar(50) collate latin1_general_ci NOT NULL,

`departamento` varchar(50) collate latin1_general_ci default NULL,


`codigoPostal` varchar(15) collate latin1_general_ci default NULL,
`pais` varchar(50) collate latin1_general_ci NOT NULL,
`empleadoAtiende` int(11) default NULL,
`limiteCredito` double default NULL,
PRIMARY KEY (`id_cliente`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci

id_cliente: Nombre del Campo


int(11): tipo de dato entero y longitud once caracteres
NOT NULL: indica que no admite un dato nulo, es decir, se debe diligenciar el campo
obligatoriamente
Empresa: Nombre del Campo
varchar(50): tipo de dato cadena de caracteres y longitud cincuenta caracteres
collate latin1_general_ci: tipo de codificacin de los caracteres, se indica cuando el tipo
de dato es cadena de caracteres o texto.
PRIMARY KEY (`id_cliente`): Se indica el nombre del campo que va a servir de llave
primaria
ENGINE=MyISAM: Define la arquitectura de la tabla
DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci: Se indica el tipo de
codificacin de caracteres que tomaran los campos de tipo cadena de caracteres o
texto a los cuales no se les haya asignado por instruccin como atributo. */

8.1.2 Creacin de tablas (continuacin)


La siguiente imagen, muestra en la consola, las instrucciones sql para crear la tabla
clientes.

Se puede verificar si la tabla fue creada correctamente con la instruccin:


describe clientes;

8.1.3 Eliminar tabla y/o base de datos


Para eliminar una tabla o una base de datos, se utiliza la instruccin DROP.
Eliminar tabla clientes: DROP TABLE clientes;
Eliminar base de datos ventas: DROP DATABASE ventas;
8.1.4 Modificar atributos en las tablas
o Agregar campo al inicio de una tabla: Con la siguiente instruccin, se agrega el
campo nit al comienzo de la tabla clientes.
ALTER TABLE clientes ADD COLUMN nit INT(20) FIRST;

Se recomienda utilizar la instruccin DESCRIBE para verificar si el cambio fue


realizado
o Agregar campo a una tabla: Con la siguiente instruccin, se agrega el campo
e_mail, despus del campo telefono, dentro de la tabla clientes.
ALTER TABLE clientes
telefono;

ADD COLUMN

e_mail

VARCHAR(30)

AFTER

o Eliminar campo en una tabla: Con la siguiente instruccin, se elimina el campo


nit de la tabla clientes.
ALTER TABLE clientes DROP COLUMN nit;
o Modificar tipo de dato: Con la siguiente instruccin, se cambia el tipo de dato

VARCHAR del campo direccin por el tipo de dato TEXT, dentro de la tabla
clientes.
ALTER TABLE clientes CHANGE direccion direccion TEXT;
o Renombrar un campo: Con la siguiente instruccin, se cambia el nombre del
campo departamento por estado, dentro de la tabla clientes.
ALTER TABLE clientes CHANGE departamento estado VARCHAR(20);
8.1.5 Eliminar todos los registros en una tabla o de toda la Base de Datos:
Para eliminar todos los registros de la tabla clientes o todos los registros de la base de
datos ventas, se utiliza la instruccin truncate de la siguiente forma:
TRUNCATE TABLE clientes;
TRUNCATE DATABASE ventas;
8.2 COMANDOS DML
Para explicar el uso de los comandos DML, se va a utilizar la base de datos ventas
propuesta al comienzo de la unidad, para administrar las ventas de un almacn
8.2.1 Insercin de un nuevo registro en la base de datos:
Se requiere ingresar un nuevo empleado en la base de datos ventas, esta informacin
se registra en la tabla empleados.
documen
to

apellid
o

nombr
e

extensi
on

1901

Lpez
Diaz

Jairo
Camil
o

X2018

email

jairo.lopez@ventas.
com

Id_ofici
na

Jefe

cargo

114
3

vended
or

Instruccin SQL:
INSERT INTO empleados (documento, apellido ,nombre, extensin, email,id_oficina,
jefe,cargo)
VALUES
(1901,
Lpez
Diaz,
Jairo
Camilo,X2018,
jairo.lopez,2,1143,vendedor)

8.2.2 Consulta de registros en la base de datos:


o Para mostrar todos los registros y todos los campos que contiene la tabla
empleados, se realiza la siguiente consulta:
SELECT * FROM empleados

o Para mostrar toda la informacin de un empleado se debe utilizar un criterio de


seleccin (campo de la tabla), por ejemplo campo documento:
SELECT * FROM empleados WHERE documento=1102

o Para mostrar nicamente la informacin requerida de un empleado, se indican


los campos que se desea visualizar y el criterio de seleccin, por ejemplo se
desea conocer nombres, apellidos y el correo electrnico del empleado con
documento 1102:
SELECT documento,nombre,apellido,email
documento=1102

FROM

empleados

WHERE

8.2.3 Operador LIKE


o Si se requiere consultar los datos de un empleado, pero no se tiene un criterio de
seleccin, que permita hacer la bsqueda con exactitud, se puede utilizar el
operador LIKE, que permite filtrar la bsqueda a travs de una cadena de
caracteres. Ejemplo: para buscar un empleado del que solo se conoce parte del
apellido:
SELECT * FROM empleados WHERE apellido LIKE '%Parada%'

La imagen muestra la lista de empleados que en el campo apellido contiene


la cadena de caracteres parada.
o Si se requiere conocer la lista de empleados que su nombre inicie con un
determinado carcter o cadena de caracteres, se utiliza el operador LIKE de la
siguiente forma:
SELECT * FROM empleados WHERE nombre LIKE 'ca%'

o Si se requiere conocer la lista de empleados que su nombre termine con un


determinado carcter o cadena de caracteres, se utiliza el operador LIKE de la
siguiente forma:
SELECT * FROM empleados WHERE nombre LIKE '%na'

8.2.4 Clusula ORDER BY


o Para visualizar las consultas de forma ordenada, se utiliza la clusula ORDER
BY, indicando si el ordenamiento se va a realizar ascendente (ASC) o
descendente (DESC). Ejemplo: consultar los datos de los empleados y ordenarlos
ascendentemente por apellido.
SELECT * FROM empleados ORDER BY apellido ASC

8.2.5 Operador BETWEEN


o Si se requiere conocer los clientes que estn dentro de un rango de crdito, se
utiliza el operador BETWEEN. Ejemplo: determinar el nombre y ciudad de las
empresas que tienen lmite de crdito entre 19000 y 40000 dlares:
SELECT empresa, ciudad,limiteCredito
FROM clientes
WHERE limiteCredito
BETWEEN 19000 AND 40000

o Ejemplo, conocer el nmero de factura y fecha de los pagos realizados entre el


10 de agosto de 2004 y el 19 de septiembre de 2004:
SELECT numeroFactura,fechaPago,totalPago
FROM pagos
WHERE fechaPago BETWEEN '2004-08-10' AND '2004-09-19'

8.2.6 Operador IN
o Si se requiere consultar registros, indicando mltiples valores de un campo, se
utiliza el operador IN. Ejemplo: Consultar la lista de clientes que tienen registrado
en lmites de crdito los valores 83400
SELECT empresa,ciudad,nombre,apellido,limiteCredito
FROM clientes
WHERE limiteCredito IN(83400,21000,84600)

8.2.7 Funcin COUNT()


o Si se requiere conocer el nmero de registro que contiene la tabla pagos, se
utiliza la funcin count(*) de la siguiente forma:
SELECT COUNT(*) FROM pagos
o Para determinar el nmero de pagos que han realizado los clientes, se consulta la
tabla pagos utilizando la funcin COUNT(*) y la clusula GROUP BY, de la
siguiente forma:
SELECT id_cliente, COUNT(*)
FROM pagos
GROUP BY id_cliente

8.2.8 Funcin MIN


o Para conocer el valor de menor tamao, se utilizar la funcin MIN. Ejemplo:
obtener el pago de menor valor registrado en una venta:
SELECT MIN(totalPago) FROM pagos

8.2.9 Funcin MAX


o Para conocer el valor de mayor tamao, se utilizar la funcin MAX. Ejemplo:
obtener el pago de mayor valor registrado en una venta:
SELECT MAX(totalPago) FROM pagos
8.2.10 Funcin AVG
o Para conocer el promedio de los pagos registrados en la base de datos, se utiliza
la funcin AVG de la siguiente manera:
SELECT AVG(totalPago) FROM pagos
8.2.11 Funcin SUM
o Para conocer la suma total de los pagos registrados en la base de datos, se
utiliza la funcin SUM de la siguiente manera:
SELECT SUM(totalPago) FROM pagos
8.3 ACTUALIZACION DE REGISTROS EN LA BASE DE DATOS:
o Si se requiere cambiar o modificar el valor que contiene un campo, se debe usar
el comando UPDATE. Ejemplo: para cambiar los apellidos del empleado con
documento nmero 1165, de Nova Lopez a Gomez Sanchez, se ejecuta la
siguiente instruccin:
UPDATE empleados SET apellido=Gomez Sanchez WHERE documento=1165
8.4 ELIMINACION DE REGISTROS EN LA BASE DE DATOS:

o Si se requiere eliminar uno o varios registros de una base de datos, se utiliza el


comando DELETE. Ejemplo: para eliminar de la base de datos al empleado con
documento nmero 1165, se ejecuta la siguiente instruccin:
DELETE FROM empleados WHERE documento=1165
o Si se requiere eliminar de la base de datos a los empleados con
documentos:1002 y 1056, se ejecuta la siguiente instruccin:
DELETE FROM empleados WHERE documento IN(1002,1056)
o Si se requiere eliminar de la base de datos a todos los empleados con cargo
vendedor, se ejecuta la siguiente instruccin:
DELETE FROM empleados WHERE cargo=vendedor
8.5 OPERADORES LGICOS

Operador AND
o Para consultar informacin de manera precisa, es conveniente realizar la
bsqueda con dos o ms criterios de seleccin, para lo cual, se utiliza el operador
AND. Ejemplo: Buscar el pago realizado por un cliente, teniendo en cuenta el
identificador del cliente y el nmero de la factura:
SELECT *
FROM pagos
WHERE id_cliente=103
AND numeroFactura='JM555205'
Operador OR
o Si se requiere consultar informacin, que cumpla con por lo menos uno de los
criterios de bsqueda, se utiliza el operador OR. Ejemplo: Buscar los clientes que
estn ubicados en Inglaterra o en Suiza:

SELECT * FROM clientes WHERE pais='Inglaterra' OR pais='Suiza'


8.6 CONSULTAS A MULTIPLES TABLAS
o En ocasiones se requiere realizar consultas que involucran varias tablas, esto
hace que las instrucciones de bsqueda sean largas y complejas, as que se
recomienda el uso del ALIAS para simplificar la estructura de las instrucciones. El
ALIAS se puede aplicar a los campos y a las tablas. Ejemplo: Para conocer el
nombre de la empresa y el pago realizado, se puede utilizar cualquiera de las
siguientes instrucciones:
INSTRUCCIN BSICA

INSTRUCCIN CON ALIAS

SELECT clientes.empresa,pagos.totalPago
FROM clientes ,pagos
WHERE clientes.id_cliente=pagos.id_cliente

SELECT c.empresa,p.totalPago
FROM clientes AS c,pagos AS p
WHERE c.id_cliente=p.id_cliente

En la consulta se asign alias a las tablas, el alias se declara despus de la


instruccin AS.

8.6 CONSULTAS A MULTIPLES TABLAS (Continuacin)


o Se requiere conocer la cantidad de pagos realizados por cada cliente, ordenados
de mayor a menor.
SELECT c.empresa,count(*) cantidadPagos
FROM clientes AS c,pagos AS p
WHERE c.id_cliente=p.id_cliente
GROUP BY C.id_cliente
ORDER BY cantidadPagos DESC
En la consulta se asign alias a la columna que muestra el conteo, fue
necesario asignar el alias para poder hacer el ordenamiento.