Documente Academic
Documente Profesional
Documente Cultură
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 estándar ANSI para el acceso y manipulación de los datos
de cualquier base de datos.
El SQL se compone de sentencias SQL, cada una con una utilidad diferente, como por ejemplo:
Este punto y coma también puede servir para separar una sentencia SQL de otra sentencia SQL
en la misma línea.
DDL está compuesto por sentencias para la creación (CREATE), modificación (ALTER) y borrado
(DROP) de los componentes principales de una base de datos:
consultar (SELECT)
insertar (INSERT)
modificar (UPDATE)
borrar (DELETE)
DCL está compuesto por sentencias SQL para controlar las funciones de administración :
DCL está compuesto por sentencias SQL para controlar las funciones de administración :
SENTENCIA SELECT
Una de las sentencias SQL más importantes es SELECT, ya que permite realizar consultas sobre
los datos almacenados en la base de datos.
Si queremos consulta todos los nombres y primer apellido de todas las personas
nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
LUIS LOPEZ
SENTENCIA DISTINCT
Al realizar una consulta puede ocurrir que existan valores repetidos para algunas columnas. Por
ejemplo
nombre
ANTONIO
LUIS
ANTONIO
Esto no es un problema, pero a veces queremos que no se repitan, por ejemplo, si queremos saber
los nombre diferentes que hay en la tabla personas", entonces utilizaremos DISTINCT.
nombre
ANTONIO
LUIS
SENTENCIA WHERE
La cláusula WHERE se utiliza para hacer filtros en las consultas, es decir, seleccionar solamente
algunas filas de la tabla que cumplan una determinada condición.
Por ejemplo:
SENTENCIA OR
Los operadores AND y OR se utilizan para filtrar resultados con 2 condiciones.
Condicion1 OR condicion2
En la tabla personas
SENTENCIA ORDER BY
ORDER BY se utiliza para ordenar los resultados de una consulta, según el valor de la columna
especificada.
Por defecto, se ordena de forma ascendente (ASC) según los valores de la columna.
SELECT nombre_columna(s)
FROM nombre_tabla
ORDER BY nombre_columna(s) ASC|DESC
nombre apellido1
LUIS LOPEZ
ANTONIO GARCIA
ANTONIO PEREZ
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:
Ejemplo:
Si queremos insertar una nueva fila en la tabla personas, lo podemos hacer con cualquiera de las
dos sentencias siguientes:
Cualquiera de estas sentencias anteriores produce que se inserte una nueva fila en la tabla
personas, quedando así dicha tabla:
UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE columna3 = valor3
La cláusula SET establece los nuevos valores para las columnas indicadas.
La cláusula WHERE sirve para seleccionar las filas que queremos modificar.
Ojo: Si omitimos la cláusula WHERE, por defecto, modificará los valores en todas las filas de la
tabla.
UPDATE personas
SET apellido2 = 'RODRIGUEZ'
WHERE nombre = 'ANTONIO'
AND apellido1 = 'GARCIA'
AND apellido2 = 'BENITO'
Esta cláusula SQL TOP es útil en tablas con muchos registros, para limitar el número de filas a
mostrar en la consulta, y así sea más rápida la consulta, consumiendo también menos recursos en
el sistema.
Esta cláusula se especifica de forma diferente según el sistema de bases de datos utilizado.
Este es el resultado
Los caracteres Wildcards (comodines) son caracteres especiales que se utilizan para realizar
búsquedas 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 :
Ejemplos:
Ejemplos Wildcards
Resultado:
Resultado:
Resultado:
Sintaxis SQL IN
SELECT columna
FROM tabla
WHERE columna
IN (valor1, valor2, valor3, .)
Ejemplo SQL IN
El operador BETWEEN se utiliza en la cláusula WHERE para seleccionar valores entre un rango
de datos.
SELECT columna
FROM tabla WHERE columna
BETWEEN valor1 AND valor2
SELECT *
FROM personas
WHERE apellido1
BETWEEN 'FERNANDEZ' AND 'HUERTAS'
SELECT *
FROM personas
WHERE apellido1
NOT BETWEEN 'FERNANDEZ' AND 'HUERTAS'
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.
SELECT columna
FROM nombretabla
AS aliastabla
SELECT nombrecolumna
AS aliascolumna
FROM tabla
Utilizamos el alias 'p' para la tabla 'personas', para simplificar la sentencia SELECT
apellido1 apellido2
PEREZ GOMEZ
GARCIA RODRIGUEZ
apellido1 apellido2
PEREZ GOMEZ
GARCIA RODRIGUEZ
Dichas tablas estarán relacionadas entre ellas de alguna forma, a través de alguna de sus
columnas.
Una clave primaria es una columna con un valor único para cada registro de una tabla.
El propósito del JOIN es unir información de diferentes tablas, para no tener que repetir datos en
diferentes tablas.
Ejemplo:
dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL
Si queremos saber los nombres de las personas que trabajan en INFORMATICA, tendríamos que
hacer un JOIN de las 2 tablas "personas" y "departamentos", que se relacionarían por la columna
"dep".
Es decir, que desde la tabla "personas" y mediante la columna "dep", podemos acceder a la
información de la tabla "departamentos".
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
condición.
dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL
La sentencia LEFT JOIN combina los valores de la primera tabla con los valores de la segunda
tabla. Siempre devolverá las filas de la primera tabla, incluso aunque no cumplan la condición.
dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL
La sentencia RIGHT JOIN combina los valores de la primera tabla con los valores de la segunda
tabla. Siempre devolverá las filas de la segunda tabla, incluso aunque no cumplan la condición.
En algunas bases de datos, la sentencia RIGHT JOIN es igual a RIGHT OUTER JOIN
dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL
La sentencia FULL JOIN combina los valores de la primera tabla con los valores de la segunda
tabla. Siempre devolverá las filas de las dos tablas, aunque no cumplan la condición.
dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL
La sentencia SQL UNION es utilizada para acumular los resultados de dos sentencias SELECT.
Las dos sentencias SELECT tienen que tener el mismo número de columnas, con el mismo tipo de
dato y en el mismo orden.
Sintaxis SQL UNION
Tabla "personas_empresa1"
Tabla "personas_empresa2"
nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
PEDRO RUIZ
JUAN APARICIO
LUIS LOPEZ
La persona 'ANTONIO GARCIA RODRIGUEZ' aparecerá solo una vez en el resultado, porque no
aparecerán las filas repetidas.
La sentencia SQL SELECT INTO se utiliza para seleccionar datos de una tabla y copiarlos en otra
tabla diferente.
Se suele utilizar para hacer una copia de seguridad (backup) de los datos de una tabla.
Esta sentencia copiará todos los registros de la tabla 'tablaactual' en la tabla 'nuevatabla'.
SELECT *
INTO nuevatabla [IN nuevabasedatos]
FROM tablaactual
SELECT *
INTO personasBackup
FROM personas
SELECT *
INTO personasBackup
FROM personas
WHERE nombre = 'ANTONIO'
La sentencia SQL SELECT INTO se utiliza para seleccionar datos de una tabla y copiarlos en otra
tabla diferente.
Se suele utilizar para hacer una copia de seguridad (backup) de los datos de una tabla.
Esta sentencia copiará todos los registros de la tabla 'tablaactual' en la tabla 'nuevatabla'.
SELECT *
INTO nuevatabla [IN nuevabasedatos]
FROM tablaactual
SELECT *
INTO personasBackup
FROM personas
SELECT *
INTO personasBackup
FROM personas
WHERE nombre = 'ANTONIO'
Las columnas 'nombre', 'apellido1' y 'apellido2' son de tipo 'varchar', es decir, acepta valores
alfanuméricos hasta una longitud máxima de 255 caracteres.
Existen diferentes tipos de datos, algunos son iguales en todas las bases de datos (MySQL,
ORACLE, DB2, ..) y otros pueden ser particulares para ser usados únicamente en alguna de estas
bases de datos.
Las CONSTRAINTS son restricciones que se utilizan para limitar el tipo de dato que puede recibir
una columna de una tabla.
Las restricciones se puede definir cuando creamos la tabla (CREATE TABLE) o posteriormente con
la sentencia ALTER TABLE.
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
La restricción NOT NULL sirve para especificar que una columna no acepta el valor NULL, es
decir, que esa columna siempre tiene que tener algún valor, no puede estar vacía.
CREATE TABLE personas { nombre varchar(255) NOT NULL, apellido1 varchar(255) NOT
NULL, apellido2 varchar(255) }
Esta sentencia crea una tabla denominada 'personas', donde tenemos 3 columnas.
Las columnas 'nombre' y 'apellido' llevan NOT NULL, esto quiere decir que cualquier fila insertada
en esta tabla tiene que tener algún valor para las columnas 'nombre' y 'apellido1'.
Existen varias formas diferentes de sintaxis según el sistema de base de datos utilizado:
La sentencia anterior crea la tabla 'personas' con 4 columnas, donde la columna 'identifcador' tiene
un valor diferente para cada fila de la tabla.
Si intentamos insertar un fila con un identificador que ya exista, nos dará un error, y no nos dejará
insertarlo.
Ejemplo SQL UNIQUE para las bases de datos ORACLE, SQLSERVIR, ACCESS
La restricción UNIQUE se puede añadir a una columna de una tabla, después de ser creada,
mediante la sentencia ALTER TABLE.
Sintaxis de UNIQUE ALTER TABLE
Crea una restricción UNIQUE (valor único en toda la tabla) para la columna 'identificador'.
La clave primaria, PRIMARY KEY, identifica de manera única cada fila de una tabla.
La columna definida como clave primaria (PRIMARY KEY) debe ser UNIQUE (valor único) y NOT
NULL (no puede contener valores nulos).
Cada tabla sólo puede tener una clave primaria (PRIMARY KEY).
CREATE TABLE personas { identificador int NOT NULL, nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL, PRIMARY KEY (identificador) }
CREATE TABLE personas { identificador int NOT NULL PRIMARY KEY, nombre varchar(255)
NOT NULL, apellido1 varchar(255) NOT NULL, }
La clave primaria (PRIMARY KEY) puede estar compuesta por varias columnas, por ejemplo por
las columnas 'identificador' y 'nombre', entonces se define así:
CREATE TABLE personas { identificador int NOT NULL, nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL, CONSTRAINT pers PRIMARY KEY (identificador, nombre)
}
La clave primaria también se puede definir después de haber creado la tabla, para eso utilizaremos
el comando ALTER TABLE
Ejemplo PRIMARY KEY con ALTER TABLE ALTER TABLE personas ADD PRIMARY KEY
(identificador)
Ejemplo PRIMARY KEY multiple ALTER TABLE ALTER TABLE personas CONSTRAINT pers
PRIMARY KEY (identificador, nombre)
La clave primaria, PRIMARY KEY, identifica de manera única cada fila de una tabla.
La columna definida como clave primaria (PRIMARY KEY) debe ser UNIQUE (valor único) y NOT
NULL (no puede contener valores nulos).
Cada tabla sólo puede tener una clave primaria (PRIMARY KEY).
CREATE TABLE personas { identificador int NOT NULL, nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL, PRIMARY KEY (identificador) }
CREATE TABLE personas { identificador int NOT NULL PRIMARY KEY, nombre varchar(255)
NOT NULL, apellido1 varchar(255) NOT NULL, }
La clave primaria (PRIMARY KEY) puede estar compuesta por varias columnas, por ejemplo por
las columnas 'identificador' y 'nombre', entonces se define así:
CREATE TABLE personas { identificador int NOT NULL, nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL, CONSTRAINT pers PRIMARY KEY (identificador, nombre)
}
La clave primaria también se puede definir después de haber creado la tabla, para eso utilizaremos
el comando ALTER TABLE
Ejemplo PRIMARY KEY con ALTER TABLE ALTER TABLE personas ADD PRIMARY KEY
(identificador)
Ejemplo PRIMARY KEY multiple ALTER TABLE ALTER TABLE personas CONSTRAINT pers
PRIMARY KEY (identificador, nombre)Ç
La restricción CHECK se utiliza para limitar el rango de valores que puede tener una columna.
CREATE TABLE departamentos { dep int NOT NULL, departamento varchar(255), CHECK
(dep>0) }
CREATE TABLE departamentos { dep int NOT NULL CHECK (dep>0) departamento
varchar(255), }
La restricción DEFAULT se utiliza para establecer un valor por defecto a una columna.
Si no se especifica un valor al insertar una fila, entonces se podrá el valor por defecto (DEFAULT)
que tenga cada columna.
CREATE TABLE pedidos { idpedido int, producto int, cantidad int, fecha date DEFAULT
GETDATE() }
Si al crear un pedido, no especificamos el valor de la columna 'fecha', entonces para esa columna
se insertará por defecto obtenido de ejecutar la funcion GETDATE(), que devuelve la fecha del
sistema
En lugar de una función, podemos insertar una valor concreto '2001-01-01' o cualquier otro valor.
SQL DEFAULT en la sentencia ALTER TABLE para MySQL
Un índice sirve para buscar datos rápidamente, y no tener que recorrer toda la tabla
secuencialmente en busca alguna fila concreta.
Si una columna es índice de una tabla, al buscar por un valor de esa columna, iremos directamente
a la fila correspondiente. La búsqueda así es mucho más óptima en recursos y más rápida en
tiempo.
Si esa columna de búsqueda no fuese índice, entonces tendríamos que recorrer de forma
secuencial la tabla en busca de algún dato. Por eso, es importante crear un índice por cada tipo de
búsqueda que queramos hacer en la tabla.
Actualizar una tabla con índices tarda más tiempo porque también hay que actualizar los índices,
así que solo se deben poner índices en las columnas por las que buscamos frecuentemente.
Se pueden crear índices ÚNICOS, es decir, índices que no admiten valores duplicados.
La columna que forma parte de este índice admite valores duplicados en su columna.
La columna que forma parte de este índice NO admite valores duplicados en su columna, porque
es una clave única.
Ejemplos para SQL CREATE INDEX
Si queremos crear un índice sobre varias columnas, por ejemplo, apellido1 y apellido2
La sentencia DROP se utiliza para borrar definitivamente un índice, tabla o base de datos.
DROP INDEX
DROP TABLE
DROP DATABASE
Se utiliza para borrar una base de datos definitivamente.
WW