Você está na página 1de 17

El SQL es un lenguaje estndar de programacin para el acceso a bases de datos.

El lenguaje SQL se utiliza para acceder y manipular datos en cualquier base de datos del mercado,
como por ejemplo, para las bases de datos MySQL, Oracle, DB2, SQL Server, Access.
El SQL es un lenguaje estructurado y un estndar ANSI para el acceso y manipulacin de los datos
de cualquier base de datos.
El SQL se compone de sentencias SQL, cada una con una utilidad diferente, como por ejemplo:

Creacin de una base de datos (CREATE DATABASE)

Creacin de una tabla (CREATE TABLE)

Creacin de una vista (CREATE VIEW)

Creacin de un ndice de una tabla (CREATE INDEX)

Creacin de procedimientos almacenados (CREATE PROCEDURE)

Creacin de disparadores (CREATE TRIGGER)

Consultar los datos almacenados en una tabla (SELECT)

Insertar datos en una tabla (INSERT)

Modificar datos ya existentes en una tabla (UPDATE)

Borrar datos almacenados en una tabla (DELETE)

Dar permiso de acceso a los datos de una tabla (GRANT)

Eliminar permisos de acceso a datos de una tabla (REVOKE)

Finalizar la transaccin de una sentencia SQL (COMMIT)

Retroceder la transaccin de una sentencia SQL (ROLLBACK).

Un sistema de base de datos suele contener varias bases de datos.


Cada base de datos suele contener varias tablas.
Las tablas almacenan los datos organizados por filas.
Cada fila contiene varios campos.
Cada campo tiene una serie de propiedades, como por ejemplo, el nombre del campo, su longitud,
tipo de dato que se va a almacenar, etc.

Las sentencias SQL no son sensibles a maysculas y minsculas, es decir, 'SELECT' y 'select' son
dos palabras iguales para SQL.
Algunos sistemas de bases de datos necesitan un punto y coma despus de cada sentencia SQL
para ejecutarse correctamente

CREATE DATATABASE mibasedeatos;


Este punto y coma tambin puede servir para separar una sentencia SQL de otra sentencia SQL en
la misma lnea.

CREATE DATATABASE mibasedeatos; CREATE TABLE mitabla1;


Las sentencias SQL se pueden agrupar por funcionalidades:
1.- Lenguaje de definicin de datos (DDL).
DDL est compuesto por sentencias para la creacin (CREATE), modificacin (ALTER) y borrado
(DROP) de los componentes principales de una base de datos:

base de datos (DATABASE)

tablas (TABLE)

vistas (VIEW)

ndices (INDEX)

procedimientos almacenados (PROCEDURE)

disparadores (TRIGGER).

2.- Lenguaje de manipulacin de datos (DML).


DML est compuesto por sentencias que sirven para :

consultar (SELECT)

insertar (INSERT)

modificar (UPDATE)

borrar (DELETE)

3.- Lenguaje de control de datos (DCL).


DCL est compuesto por sentencias SQL para controlar las funciones de administracin :

Confirmar la operacion (COMMIT)

Retroceder la operacion (ROLLBACK)

Dar permisos (GRANT)

Quitar permisos (REVOKE)

SELECT
Una de las sentencias SQL ms importantes es SELECT, ya que permite realizar consultas sobre
los datos almacenados en la base de datos.
Sintaxis SQL SELECT

SELECT * FROM nombretabla


SELECT columna1, columna2 FROM nombretabla
Para los ejemplos, tendremos la siguiente tabla de personas denominada personas
Estos son los datos almacenados en la tabla personas

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

BENITO

LUIS

LOPEZ

PEREZ

Si queremos consultar todos los datos de la tabla personas

SELECT * FROM personas


Este ser el resultado:

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

BENITO

LUIS

LOPEZ

PEREZ

Si queremos consulta todos los nombres y primer apellido de todas las personas

SELECT nombre, apellido1 FROM personas

Este ser el resultado:

nombre

apellido1

ANTONIO

PEREZ

ANTONIO

GARCIA

LUIS

LOPEZ

AND OR

Los operadores AND y OR se utilizan para filtrar resultados con 2 condiciones.


El operador AND mostrar los resultados cuando se cumplan las 2 condiciones.

Condicin1 AND condicin2


El operador OR mostrar los resultados cuando se cumpla alguna de las 2 condiciones.

Condicion1 OR condicion2
En la tabla personas

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

BENITO

LUIS

LOPEZ

PEREZ

La siguiente sentencia (ejemplo AND) dar el siguiente resultado:

SELECT * FROM personas


WHERE nombre = 'ANTONIO'
AND apellido1 = 'GARCIA'

nombre

apellido1

apellido2

ANTONIO

GARCIA

BENITO

La siguiente sentencia (ejemplo OR) dar el siguiente resultado:

SELECT * FROM personas


WHERE nombre = 'ANTONIO'
OR apellido1 = 'GARCIA'

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

BENITO

Tambin se pueden combinar AND y OR, como el siguiente ejemplo:

SELECT * FROM personas


WHERE nombre = 'ANTONIO'
AND (apellido1 = 'GARCIA' OR apellido1 = 'LOPEZ)

nombre

apellido1

apellido2

ANTONIO

GARCIA

BENITO

ORDER BY

ORDER BY se utiliza para ordenar los resultados de una consulta, segn el valor de la columna
especificada.
Por defecto, se ordena de forma ascendente (ASC) segn los valores de la columna.
Si se quiere ordenar por orden descendente se utiliza la palabra DES

SELECT nombre_columna(s)
FROM nombre_tabla
ORDER BY nombre_columna(s) ASC|DESC
Por ejemplo, en la tabla personas :

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

LUIS

LOPEZ

PEREZ

ANTONIO

GARCIA

BENITO

SELECT nombre, apellido1


FROM personas
ORDER BY apellido1 ASC
Esta es la consulta resultante:

nombre

apellido1

LUIS

LOPEZ

ANTONIO

GARCIA

ANTONIO

PEREZ

Ejemplo de ordenacin descendiente (DES)

SELECT nombre, apellido1


FROM personas
ORDER BY apellido1 DESC
Esta es la consulta resultante:

nombre

apellido1

ANTONIO

PEREZ

ANTONIO

GARCIA

LUIS

LOPEZ

INSERT
La sentencia INSERT INTO se utiliza para insertar nuevas filas en una tabla.
Es posible insertar una nueva fila en una tabla de dos formas distintas:

INSERT INTO nombre_tabla


VALUES (valor1, valor2, valor3, .)
INSERT INTO nombre_tabla (columna1, columna2, columna3,.)
VALUES (valor1, valor2, valor3, .)
Ejemplo:
Dada la siguiente tabla personas:

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

LUIS

LOPEZ

PEREZ

ANTONIO

GARCIA

BENITO

Si queremos insertar una nueva fila en la tabla personas, lo podemos hacer con cualquiera de las
dos sentencias siguientes:

INSERT INTO personas


VALUES ('PEDRO', 'RUIZ', 'GONZALEZ')
INSERT INTO personas (nombre, apellido1, apellido2)
VALUES ('PEDRO', 'RUIZ', 'GONZALEZ')
Cualquiera de estas sentencias anteriores produce que se inserte una nueva fila en la tabla
personas, quedando as dicha tabla:

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

LUIS

LOPEZ

PEREZ

ANTONIO

GARCIA

BENITO

PEDRO

RUIZ

GONZALEZ

UPDATE
La sentencia UPDATE se utiliza para modificar valores en una tabla.
La sintaxis de SQL UPDATE es:

UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE columna3 = valor3
La clusula SET establece los nuevos valores para las columnas indicadas.
La clusula WHERE sirve para seleccionar las filas que queremos modificar.
Ojo: Si omitimos la clusula WHERE, por defecto, modificar los valores en todas las filas de la
tabla.
Ejemplo del uso de SQL UPDATE

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

LUIS

LOPEZ

PEREZ

ANTONIO

GARCIA

BENITO

PEDRO

RUIZ

GONZALEZ

Si queremos cambiar el apellido2 'BENITO' por 'RODRIGUEZ' ejecutaremos:

UPDATE personas
SET apellido2 = 'RODRIGUEZ'

WHERE nombre = 'ANTONIO'


AND apellido1 = 'GARCIA'
AND apellido2 = 'BENITO'
Ahora la tabla 'personas' quedar as:

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

LUIS

LOPEZ

PEREZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

La sentencia DELETE sirve para borrar filas de una tabla.


La sintaxis de SQL DELETE es:

DELETE FROM nombre_tabla


WHERE nombre_columna = valor
Si queremos borrar todos los registros o filas de una tabla, se utiliza la sentencia:

DELETE * FROM nombre_tabla;


Ejemplo de SQL DELETE para borrar una fila de la tabla personas

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

LUIS

LOPEZ

PEREZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

Si queremos borrar a la persona LUIS LOPEZ PEREZ, podemos ejecutar el comando:

DELETE FROM personas


WHERE nombre = 'LUIS'
AND apellido1 = 'LOPEZ'
AND apellido2 = 'PEREZ'
La tabla 'personas' resultante ser:

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

AVANZADO

TOP
La sentencia SQL TOP se utiliza para especificar el nmero de filas a mostrar en el resultado.
Esta clusula SQL TOP es til en tablas con muchos registros, para limitar el nmero de filas a
mostrar en la consulta, y as sea ms rpida la consulta, consumiendo tambin menos recursos en
el sistema.
Esta clusula se especifica de forma diferente segn el sistema de bases de datos utilizado.
Clusula SQL TOP para SQL SERVER

SELECT TOP nmero


PERCENT nombre_columna
FROM nombre_tabla
Clusula SQL TOP para MySQL

SELECT columna(s) FROM tabla


LIMIT nmerofilas
Clusula SQL TOP para ORACLE

SELECT columna(s) FROM tabla


WHERE ROWNUM <= nmerofilas
Ejemplo SQL TOP para MySQL:
Dada la siguiente tabla 'personas', quiero obtener los 2 primeros valores.

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

SELECT * FROM personas LIMIT 2


Obtendramos el siguiente resultado:

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

LITE

El operador LIKE se utiliza en la clusula WHERE para buscar por un patrn.


Sintaxis de SQL LIKE

SELECT columna(s) FROM tabla WHERE columna LIKE '%patron%'


Ejemplos del uso de SQL LIKE
Dada la siguiente tabla 'personas'

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

Si quiero seleccionar los nombres que empiezan por 'AN' en la tabla 'personas', ejecutara el
comando siguiente:

SELECT * FROM personas


WHERE nombre LIKE 'AN%'
El character '%' es un comodn, que sirve para uno o ms caracteres.
Este es el resultado

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

Otro ejemplo de SQL LIKE

Para seleccionar las personas que tienen un 'Z' en su apellido1, ejecutaramos:


SELECT * FROM personas
WHERE apellido1 LIKE '%Z%'

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

PEDRO

RUIZ

GONZALEZ

WILDCARDS
Los caracteres Wildcards (comodines) son caracteres especiales que se utilizan para realizar
bsquedas especiales, como por ejemplo, buscar palabras que empiecen por una letra
determinada (letra%) o que contengan la letra a (%a%), o que contengan alguna vocal ([aeiou]),
etc.
Los caracteres Wildcards se utilizan con el operador SQL LIKE en una sentencia SELECT.Los
caracteres Wildcards son :

sustituye a cero o ms caracteres

sustituye a 1 carcter cualquiera

[lista]

sustituye a cualquier carcter de la lista

[^lista] o [!
lista]

sustituye a cualquier carcter excepto los caracteres


de la lista

Ejemplos:
Dada la siguiente tabla 'personas'

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

Ejemplos Wildcards
Seleccionar las personas cuyo nombre contenga una 'R'

SELECT * FROM personas


WHERE nombre LIKE '%R%'

Resultado:

nombre

apellido1

apellido2

PEDRO

RUIZ

GONZALEZ

Seleccionar las personas cuyo apellido1 empiece por 'GA'

SELECT * FROM personas


WHERE apellido1 LIKE 'PE_EZ'
Resultado:

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

Seleccionar las personas cuyo apellido1 empiece por P o G

SELECT * FROM personas


WHERE apellido1 LIKE '[PG]%'
Resultado:

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

IN
El operador IN permite seleccionar mltiples valores en una clusula WHERE
Sintaxis SQL IN

SELECT columna
FROM tabla
WHERE columna
IN (valor1, valor2, valor3, .)
Ejemplo SQL IN
Dada la siguiente tabla 'personas'

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

Queremos seleccionar a las personas cuyo apellido1 sea 'PEREZ' o 'RUIZ'

SELECT * FROM personas


WHERE apellido1
IN ('PEREZ','RUIZ')

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

PEDRO

RUIZ

GONZALEZ

BETWEEN
El operador BETWEEN se utiliza en la clusula WHERE para seleccionar valores entre un rango
de datos.
Sintaxis de SQL BETWEEN

SELECT columna
FROM tabla WHERE columna
BETWEEN valor1 AND valor2
Ejemplo de SQL BETWEEN
Dada la siguiente tabla 'personas'

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

Seleccionar personas cuyo apellido1 est entre 'FERNANDEZ y 'HUERTAS'

SELECT *
FROM personas

WHERE apellido1
BETWEEN 'FERNANDEZ' AND 'HUERTAS'

nombre

apellido1

apellido2

ANTONIO

GARCIA

RODRIGUEZ

Seleccionar personas cuyo apellido1 no est entre 'FERNANDEZ y 'HUERTAS'

SELECT *
FROM personas
WHERE apellido1
NOT BETWEEN 'FERNANDEZ' AND 'HUERTAS'

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

PEDRO

RUIZ

GONZALEZ

ALIAS
Un alias, es otra forma de llamar a una tabla o a una columna, y se utiliza para simplificar las
sentencias SQL cuando los nombre de tablas o columnas son largos o complicados.
Sintaxis SQL ALIAS para una tabla:

SELECT columna
FROM nombretabla
AS aliastabla
Sintaxis SQL ALIAS para una columna

SELECT nombrecolumna
AS aliascolumna
FROM tabla
Ejemplos SQL ALIAS
Dada la siguiente tabla 'personas'

nombre

apellido1

apellido2

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

Utilizamos el alias 'p' para la tabla 'personas', para simplificar la sentencia SELECT

SELECT p.apellido1, p.apellido2


FROM personas
AS p
WHERE p.nombre = 'ANTONIO'

apellido1

apellido2

PEREZ

GOMEZ

GARCIA

RODRIGUEZ

Sin utilizar el alias, la sentencia SELECT quedara un poco ms larga:

SELECT personas.apellido1, personas.apellido2


FROM personas
WHERE personas.nombre = 'ANTONIO'

apellido1

apellido2

PEREZ

GOMEZ

GARCIA

RODRIGUEZ

JOINS
La sentencia SQL JOIN permite consultar datos de 2 o ms tablas.
Dichas tablas estarn relacionadas entre ellas de alguna forma, a travs de alguna de sus
columnas.
Existen 3 tipos de JOINS: JOIN interno, JOIN externo y JOIN cruzado.
Una clave primaria es una columna con un valor nico para cada registro de una tabla.
El propsito del JOIN es unir informacin de diferentes tablas, para no tener que repetir datos en
diferentes tablas.
Ejemplo:
Si tenemos las siguientes tablas
Tabla personas, con la clave primaria "per "

per

nombre

apellido1

apellido2

dep

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

Tabla "departamentos", con la clave primaria "dep"

dep

Departamento

ADMINISTRACION

INFORMATICA

COMERCIAL

Si queremos saber los nombres de las personas que trabajan en INFORMATICA, tendramos que
hacer un JOIN de las 2 tablas "personas" y "departamentos", que se relacionaran por la columna
"dep".
Es decir, que desde la tabla "personas" y mediante la columna "dep", podemos acceder a la
informacin de la tabla "departamentos".

INNER JOIN
La sentencia INNER JOIN es el sentencia JOIN por defecto, y consiste en combinar cada fila de
una tabla con cada fila de la otra tabla, seleccionado aquellas filas que cumplan una determinada
condicin.

SELECT * FROM tabla1 INNER JOIN tabla2 WHERE tabla1.columna1 = tabla2.columna1


Ejemplo SQL INNER JOIN
Tabla personas, con la clave primaria "per "

per

nombre

apellido1

apellido2

dep

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

Tabla "departamentos", con la clave primaria "dep"

dep

departamento

ADMINISTRACION

INFORMATICA

COMERCIAL

SELECT nombre, apellido1, departamento FROM personas INNER JOIN departamentos


WHERE personas.dep = departamentos.dep

nombre

apellido1

departamento

ANTONIO

PEREZ

ADMINISTRACION

ANTONIO

GARCIA

INFORMATICA

PEDRO

RUIZ

INFORMATICA

Você também pode gostar