MANUAL SQL
CREAR BASE DE DATOS
CREATE DATABASE nombreDatabase;
CREAR TABLA
CREATE TABLE nombreTabla(
campo1 VARCHAR(50),
campo2 VARCHAR (50),
codigo INT
);
Crea tabla solo si no existe
CREATE TABLE IF NOT EXISTS nombre_tabla(campos);
VER ESTRUCTURA DE TABLA
Muestra los nombres y la informacin de cada uno de los campos de la tabla
DESC nombreTabla
INSERTAR (INSERT INTO)
La sentencia INSERT INTO se utiliza para insertar nuevas filas en una tabla.
Insertar datos especificando campos y valores
INSERT INTO nombreTabla (campo1, campo2,codigo) VALUES (valor1,valor2,0001);
Insertar datos a toda la tabla de forma consecutiva, no es necesario especificar columnas
INSERT INTO nombreTabla VALUES (valor1,valor2,0001);
IMPORTAR
My Sql
Importar un archivo csv delimitado por comas a una base de datos existente con la misma cantidad de
columnas, el archivo deber estar en la carpeta mysql/nombreBaseDeDatos.
LOAD DATA INFILE '[Link]' INTO TABLE nombreTabla FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
PostgreSql
Importar un archivo csv delimitado por comas a una base de datos existente con la misma cantidad de
columnas, primero cambiamos la extensin del archivo a .txt el archivo deber estar en la carpeta
PostgreSQL\9.3\data.
COPY nombreTabla FROM '[Link]' USING DELIMITERS ','
MODIFICAR (ALTER)
La sentencia SQL ALTER se utiliza para aadir, eliminar o modificar columnas de una tabla.
Tabla
o Renombrar tabla
MySql
ALTER TABLE nombreTabla RENAME otroNombre;
PostgreSql
ALTER TABLE nombreTabla RENAME TO otroNombre;
Agregar columna
MySql
ALTER TABLE nombreTabla ADD COLUMN (nuevoCampo VARCHAR (30));
PostgreSql, MySql
ALTER TABLE nombreTabla ADD nuevoCampo VARCHAR (30);
Columna
o Modifica nombre, tipo_dato, restriccin de una columna (MySql)
ALTER TABLE nombreTabla
CHANGE nombreColumna newNombreColumna varchar(10) NOT NULL
Modifica tipo, dato y restriccin de una columna sin renombrarla(MySql)
ALTER TABLE nombreTabla MODIFY nombreColumna
BIGINT NOT NULL;
ELIMINAR (DELETE, DROP, TRUNCATE)
Delete
Borra una serie de filas de la tabla. Podemos usar una clasula WHERE para limitar las filas a borrar, a las que
cumplan una condicin.
o
Borrar datos tabla
DELETE* FROM nombreTabla
Borrar datos tabla, condicionado
DELETE FROM nombreTabla WHERE nombreTabla = valor
Drop
La sentencia DROP se utiliza para borrar definitivamente un ndice, tabla o base de datos.
o
Borrar tabla completa
DROP TABLE nombreTabla;
Borra base de datos
DROP DATABASE nombreTabla;
Eliminar columna
ALTER TABLE nombreTabla DROP COLUMN nombreColumna;
Truncate
Elimina todas las filas de la tabla sin borrar la tabla. Tambin resetea los contadores de auto incremento a 0.
No borra la tabla como tal, la llamada estructura, por lo que luego puede comenzar a hacer inserciones.
TRUNCATE TABLE nombretabla
ACTUALIZAR (UPDATE)
La sentencia UPDATE se utiliza para modificar valores en una tabla.
Actualiza un registro
UPDATE nombreTabla SET nombreCampo=nuevoValor WHERE condicin;
Actualiza varios registros a la vez
UPDATE nombreTabla SET columna1 = valor1, columna2 = valor2 WHERE condicin
CONSULTAS (SELECT)
La sentencia SELECT permite realizar consultas sobre la informacin almacenada en una base de datos.
Muestra todos los registros de la tabla
SELECT* FROM nombreTabla;
Mostrar valores no repetidos
SELECT DISTINCT campo FROM nombreTabla
Ordenar (order by)
ORDER BY se utiliza para ordenar los resultados de una consulta, segn el valor de la columna especificada,
puede ser de forma ascendente | descendente
SELECT nombreColumna(s) FROM nombreTabla ORDER BY nombreColumna(s) ASC|DESC
Numero de filas a mostrar
o SQL Server
SELECT TOP nmeroFilas PERCENT nombreColumna(s) FROM nombreTabla
MySql
SELECT nombreColumna(s) FROM nombreTabla LIMIT nmeroFilas
Oracle
SELECT nombreColumna(s) FROM nombreTabla
WHERE ROWNUM <= nmeroFilas
Like
El operador LIKE se utiliza en la clusula WHERE para buscar por un patrn.
o
Devuelve nombres que empiezan con AN
SELECT * FROM personas WHERE nombre LIKE AN%
Devuelve nombres que contienen AN
SELECT * FROM personas WHERE nombre LIKE %AN%
Devuelve nombres que empiezan con A|N
SELECT * FROM personas WHERE apellido1 LIKE [AN]%
In
El operador IN permite seleccionar mltiples valores en una clusula WHERE
Devuelve nombres que sean (juan|pedro|)
SELECT nombre FROM tabla WHERE nombre IN (juan, pedro, )
Entre (Between)
El operador BETWEEN se utiliza en la clusula WHERE para seleccionar valores entre un rango de datos.
o
Devuelve valores dentro de un rango
SELECT * FROM personas WHERE apellido BETWEEN CRUZ AND HUERTAS
Devuelve valores fuera de un rango
SELECT * FROM personas WHERE apellido NOT BETWEEN CRUZ AND HUERTAS
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.
o
Alias para una tabla
SELECT columna FROM nombretabla AS aliastabla
Alias para una columna
SELECT nombrecolumna AS aliascolumna FROM tabla
Join (unirse)
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.
o
Unin simple
La sentencia SQL UNION es utilizada para acumular los resultados de dos sentencias SELECT, las
tablas deben tener el mismo nmero de columnas, con el mismo tipo de dato y en el mismo orden.
SELECT columna1, columna2 FROM tabla1
UNION
SELECT columna1, columna2 FROM tabla2
Inner join
La sentencia INNER JOIN combina 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
Left join
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 condicin.
SELECT * FROM tabla1 LEFT JOIN tabla2 WHERE tabla1.columna1 =
tabla2.columna1
Right join
La sentencia RIGHT JOIN combina los valores de la segunda tabla con los valores de la primera tabla.
Siempre devolver las filas de la segunda tabla, incluso aunque no cumplan la condicin.
SELECT * FROM tabla1 RIGHT JOIN tabla2 WHERE tabla1.columna1 =
tabla2.columna1
Full join
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 condicin.
SELECT * FROM tabla1 FULL JOIN tabla2 WHERE tabla1.columna1 =
tabla2.columna1
Select into(Respaldo)
La sentencia SQL SELECT INTO se utiliza para seleccionar datos de una tabla y copiarlos en otra tabla diferente,
puede ser en la misma o en otra base de datos. Es utilizada para hacer una copia de seguridad (backup) de
datos.
o
Guarda los datos seleccionados en una nueva tabla
SELECT columna1, columna2
INTO nuevatabla FROM tablaactual
Guarda los datos seleccionados en una nueva base de datos
SELECT * INTO nuevatabla [IN nuevabasedatos] FROM tablaactual
Utilizando where
SELECT * INTO personasBackup FROM personas WHERE nombre = ANTONIO
Utilizando join
SELECT [Link], personas.apellido1, [Link] INTO
personasInformatica FROM personas INNER JOIN departamentos ON [Link]
= INFORMATICA
Para My Sql
INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
Funciones de agregacin
Count
Retorna la cantidad de datos seleccionados en un campo
o Count
Retorna el contador del nmero de valores no NULL en los registros recibidos por un
comando SELECT.
SELECT COUNT (columna) FROM tabla;
Count(*)
Retorna un contador del nmero de registros retornados, si contienen o no valores NULL
SELECT COUNT(*)
FROM tabla;
Ejemplo
SELECT estado, COUNT(status )
FROM integrantes
WHERE status = 'Activo'
GROUP BY estado
ORDER BY COUNT(status) DESC
Sum
Retorna la suma de los datos seleccionados en un campo
SELECT SUM (columna) FROM tabla;
Max
Retorna el valor mnimo contenido en los datos seleccionados
SELECT MAX (columna) FROM tabla;
Min
Retorna el valor mximo contenido en los datos seleccionados
SELECT MIN (columna) FROM tabla;
Avg
Retorna el promedio de los datos seleccionados en un campo
SELECT AVG (columna) FROM tabla;
Desviacin estndar (stddev)
Retorna la desviacin estndar de expr
SELECT STD(expr) FROM
nombreTabla
SELECT STDDEV(expr) FROM
nombreTabla
SELECT STDDEV_POP(expr) FROM
nombreTabla
Desviacin estndar de muestra (stddev_samp)
Retorna la desviacin estndar de muestra de expr
SELECT STDDEV_SAMP(expr) FROM
nombreTabla
Varianza (var_pop)
Retorna la varianza estndar de expr. Considera los registros como la poblacin completa, no como una
muestra, as que tiene el nmero de registros como denominador
SELECT VAR_POP(expr) FROM
nombreTabla
SELECT VARIANCE (expr) FROM
nombreTabla
Varianza de muestra (var_samp)
Retorna la varianza de muestra de expr
SELECT VAR_SAMP(expr) FROM
nombreTabla
CONSTRAINTS (Restricciones)
Las CONSTRAINTS son restricciones que se utilizan para limitar el tipo de dato que puede recibir una columna de una
tabla, se puede definir cuando creamos la tabla (CREATE TABLE) o posteriormente con la sentencia ALTER TABLE.
Not null
La restriccin NOT NULL sirve para especificar que esa columna siempre tiene que tener algn valor, no
puede estar vaca.
o
Al crear la tabla
CREATE TABLE nombreTabla ( campo1,campo2 NOT NULL,);
De una tabla existente (PostgreSql)
ALTER TABLE nombreTabla ALTER nombreColumna SET|DROP NOT NULL;
Modifica nombre, tipo_dato, restriccin de una columna (MySql)
ALTER TABLE nombreTabla
CHANGE nombreColumna nuevoNombreColumna nombreColumna NOT NULL
Unique
La restriccin UNIQUE validara que los valores de cada columna no se repitan, puede haber varias
restricciones UNIQUE en diferentes columnas de una tabla.
Agregar unique al crear una tabla
CREATE TABLE ejemplo
(
identificador int NOT NULL,
nombre varchar(255) NOT NULL,
UNIQUE (identificador));
Agregar unique a un campo existente
ALTER TABLE ejemplo ADD UNIQUE (columna);
Primary key
La columna definida como clave primaria (PRIMARY KEY) debe ser UNIQUE (valor nico) y NOT NULL (no
puede contener valores nulos) y cada tabla slo puede tener una clave primaria.
o
Agregar Primary Key con una o ms columnas al crear la tabla
MySql, PostgreSql
CREATE TABLE nombreTabla(campo1 int,campo2 int,
CONSTRAINT nombrePK PRIMARY KEY (campo1))
Oracle, SqlServer
CREATE TABLE personas
(
identificador int PRIMARY KEY,
PRIMARY KEY (identificador))
Agregar Primary Key a una columna existente
ALTER TABLE ejemplo ADD CONSTRAINT pk_unico PRIMARY KEY (unico)
Foreign key
La clave externa o FOREIGN KEY, es una o varias columnas, que sirven para sealar cual es la clave primaria
de otra tabla, de este modo la clave fornea solo podr tener valores que ya existan en la clave primaria de
la otra tabla y nicamente se creara si su referencia ya existe como clave primaria.
o
Agregar FOREIGN KEY al crear una tabla
MySql
CREATE TABLE nombreTabla (campo1, campo2,
FOREIGN KEY (campo1) REFERENCES nombreTabla (nombreColumna))
PostgreSql
CREATE TABLE nombreTabla (campo1, campo2, CONSTRAINT nombreFK FOREIGN
KEY(campo1) REFERENCES nombreTabla(nombreColumna))
Agregar FOREIGN KEY una tabla existente
Agregar Foreign Key
ALTER TABLE ADD FOREIGN KEY (dep) REFERENCES departamentos(dep)
Agregar Foreign Key mltiple, para varias columnas
ALTER TABLE ADD CONSTRAINT fkpersonas FOREIGN KEY (dep) REFERENCES
departamentos(dep)
Borrar Foreign Key
MySql
ALTER TABLE personas DROP FOREIGN KEY dep
Oracle, Sql Server
ALTER TABLE personas DROP CONSTRAINT dep
Check
La restriccin CHECK se utiliza para limitar el rango de valores que puede tener una columna.
o
Agregar check al crear tabla
MySql
CREATE TABLE departamentos ( dep int NOT NULL, departamento
varchar(255), CHECK (dep>0) )
Oracle, SqlServer
CREATE TABLE departamentos ( dep int NOT NULL CHECK (dep>0)
departamento varchar(255), )
Agregar check a campo existente
My Sql
ALTER TABLE departamentos ADD CHECK (dep>0)
Oracle, Sql Server
ALTER TABLE departamentos ADD CONSTRAINT ckdepart CHECK (dep>0)
Default
La restriccin DEFAULT se utiliza para establecer un valor por defecto a una columna.
o
Agregar
Mysql
ALTER TABLE nombreTabla ALTER columna DEFAULT 'valor'
Oracle, Sql Server, AccessS
ALTER TABLE pedidos ALTER COLUMN fecha SET DEFAULT 'valor'
Borrar
Mysql
ALTER TABLE nombre_tabla ALTER nombre_columna DROP DEFAULT
Oracle, Sql Server, Access
ALTER TABLE nombre_tabla ALTER COLUMN nombre_columna DROP DEFAULT
AUTO INCREMENT
AUTO INCREMENT permite generar un nmero nico cuando insertamos un nuevo registro en la tabla.
Se utiliza para tener una clave primaria de una tabla mediante la generacin automtica de un nmero secuencial.
Al crear tabla
CREATE TABLE nombreTabla (campo int NOT NULL AUTO_INCREMENT)
Tabla existente sin clave primaria
ALTER TABLE nombreTabla ADD nombreColumna INT NOT NULL AUTO_INCREMENT ,
ADD PRIMARY KEY ( nombreColumna ) ;
Agregar auto_increment a clave primaria
ALTER TABLE nombreTabla
CHANGE nombreColumna nombreColumna
INT NOT NULL AUTO_INCREMENT;
Quitar auto_increment a clave primaria
ALTER TABLE nombreTabla CHANGE nombreColumna nombreColumna
INT NOT NULL;
NDICES (INDEX)
Un ndice sirve para buscar datos rpidamente, y no tener que recorrer toda la tabla secuencialmente en busca
alguna fila concreta.
Index simple
CREATE INDEX nombreindice
ON nombretabla (nombrecolumna)
Index no duplicado
CREATE UNIQUE INDEX nombreindice
ON nombretabla (nombrecolumna)
Index sobre varias columnas
CREATE INDEX nombreindice
DESHACER CAMBIOS (ROLLBACK)
START TRANSACTION;
Cdigo_sql_a_deshacer;
ROLLBACK;
SAVEPOINT identifier
ON nombretabla (nombrecolumna, nombrecolumna,)
ROLLBACK TO SAVEPOINT identifier
USUARIOS
Crear un usuario
CREATE USER nombre@localhost INDENTIFIED BY password
Asignar permisos
GRANT SELECT, INSERT, CREATE, UPDATE, DROP
ON base(s)*_de_datos.tablas(s)*
TO usuario@localhost;
Eliminar usuario
TIPO DE DATOS
INT
TIPO
NUMERICO
FLOAT
NUMERICO
BOOLEAN
DATE
DATETIME
TIME
YEAR
CHAR
VARCHAR
TEXT
NUMERICO
FECHA
FECHA Y HORA
HORA
AO
CADENA DE TEXTO
CADENA DE TEXTO
CADENA DE TEXTO
VALOR
-2147483648 hasta 2147483647
INT(3) entero con 3 digitos
FLOAT(5,2) cinco dgitos enteros y dos
decimales
TRUE, FALSE
YYYY-MM-DD
YYYY-MM-DD HH:MM:SS
HH:MM:SS
YYYY
OPERADORES
AND
OR
=
>
>=
<
<=
<>, !=
Condicin1 AND condicin2
Condicin1 OR condicin2