You are on page 1of 8

Primeros pasos con SQL

Publicado el 3 agosto, 2013 por formacin online

Hoy os traemos el lenguaje SQL (Lenguaje de consulta estructurado) se usa para acceder, consultar, modificar,
editar, eliminar las bases de datos relacionales. Estas bases de datos usan el formato ms utilizado durante los
ltimos aos y estn implementadas en un formato de tablas relacionadas entre si guardando los datos en
columnas (refirindose a los atributos) y en las filas (o tuplas) hacen referencia a los registros que
almacenemos en nuestra base de datos. Existen diversidad de base de datos que usan este lenguaje, entre los
ms destacados tenemos Oracle, PostgreSQL, MySql, etc.
Tenemos que conocer este lenguaje por su utilidad en el manejo y consulta de las base de datos necesarias en
la mayora de las Webs hoy en da.
Para que veis lo sencillo que es usar el lenguaje SQL os dejamos una consulta para recuperar el nombre de
los lectores fieles:
SELECT nombre
FROM formacionOnlineWeb
WHERE numVisitas > 5;
En futuros post explicaremos una a una el resto de consultas y modificaciones.

Conexin a base de datos con SQL


Publicado el 11 agosto, 2013 por formacin online

Seguimos con las bases de datos relacionales que utilizan SQL. Hoy os vamos a explicar como se hace una
conexin a la base de datos desde diferentes puntos, en concreto desde PHP o desde JAVA.
En el caso de JAVA es necesario una base de datos del estilo de Oracle, MySQL, aunque hay opciones ms
sencillas con HSQLDB. Para poder realizar la conexin es necesario definir los parmetros adecuados ms
tener el respectivo driver (JDBC) segn la base de datos que estis utilizando. Aqu tenis un ejemplo:
import java.sql.Connection;
import java.sql.DriverManager;
Class.forName("org.gjt.mm.mysql.Driver");
String url = "jdbc:mysql://formaciononlineweb.es:puerto/mysql";
Connection con = DriverManager.getConnection(url, "usuario","contrasea");
//cdigo a ejecutar
con.close();

Esto debera ir definido en un mtodo y con su correspondiente try catch para controlar los errores.
Por otro lado el ejemplo para conectar a MySQL desde PHP es ms sencillo ya que no requiere importar
libreras externas ni drivers. A continuacin os dejamos un ejemplo:
function conectar()
{
$mysql_host = "mysql.formaciononlineweb.es";
$mysql_database = "formaciononlineweb.es_database";

$mysql_user = "formaciononlineweb.es_admin";
$mysql_password = "formacinonline";
$conexion = mysql_connect($mysql_host, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $conexion);
return $conexion;
}

Existen otras formas de conectar pero ests son las ms usadas en el desarrollo Web. En la prxima entrega
hablaremos de las consultas de SQL.

Consultas SQL (I)


Publicado el 17 agosto, 2013 por formacin online

Comenzamos con las consultas de SQL que son las que nos permitirn poder insertar, modificar, consultar y
eliminar. Primero de todo os vamos a explicar con se realiza una consulta simple y poco a poco os
ensearemos las diferentes partes de sus sintaxis. El comando SQL ms importante y famosos es el select el
cual est compuesto por varias palabras claves que se van incrementando segn queramos hacer la consulta
ms restrictiva, las dos palabras claves que nunca pueden fallar son SELECT que nos ayudara a indicar los
atributos que buscamos de una tabla, en ella podemos escribir el nombre de los atributos que queramos
separados por comas o directamente escribir * que te mostrara todos los atributos de la tabla(esta palabra
puede estar acompaada de otras que nos pueden permitir restringir ms la consulta como el DISTINCT que
nos permite quitar duplicados, hay muchas ms pero las explicaremos ms adelante) y FROM que nos permite
indicar el nombre de la tabla que queramos consultar, a continuacin os pongo un ejemplo para que veis
como se usan:
SELECT [DISTINCT] nombre
FROM formaciononlineweb;

Hasta aqu os hemos explicado la consulta ms simple de SQL, que solo nos permite consultar los datos que
hayamos seleccionado en el SELECT de la tabla que hayamos indicado en el FROM. El prximo da os
explicaremos una de las clausulas opcionales, pero no por ello menos importante que estas dos, que es el
WHERE.

Consultas SQL (II)


Publicado el 18 agosto, 2013 por formacin online

Hoy continuamos explicando las consultas de SQL con el comando SELECT, os vamos a explicar la palabra
opcional WHERE como haba dicho en el anterior post. Esta palabra opcional es la que nos permite escribir
condiciones para hacer ms restrictiva la consulta, en el WHERE se nos permite usar varias palabras
reservadas en el lenguaje SQL que son: LIKE, IN, BETWEEN, AND, OR, EXISTS, NOT y operadores tale como <>,
<, > y = ms todas sus combinaciones. A continuacin se explicara y se mostrara un ejemplo de cada uno de
estas palabras reservadas:

LIKE: Esta palabra es una comparacin al estilo del = pero te permite aadir el smbolo % para que te
busque cualquier palabra que empiece, termine o contenga una combinacin de ellas.
IN: Esta palabra te permite decir que quieres buscar por varios atributos.
BETWEEN: Te permite seleccionar los valores que quieres mostrar entre los dos elementos puestos,
esto solo funciona sobre atributos numricos.
AND: Te permite concatenar varias condiciones en un solo WHERE y se tienen que cumplir todas para
que la consulta devuelva el resultado correcto.
OR: Realiza lo mismo que el AND pero es su caso solo se debe cumplir una de las condiciones para que
devuelva el resultado correcto.
EXISTS: Te permite comprobar si ese atributo existe, a travs de una subconsulta que consiste en
aadir entre parntesis otra consulta.


NOT: Te permite negar cualquiera de las palabras reservadas de antes.
A continuacin vamos a ver un ejemplo de una consulta donde agrupe todas estas palabras reservadas:
SELECT [DISTINCT] *
FROM formaciononlineweb
WHERE nombre IN ("SQL", "Css") AND curso LIKE "%h%"/"ph%"/"%hp" OR NOT EXISTS
(SELECT curso FROM formacinonlineweb WHERE curso = "php");

El prximo da seguiremos explicando ms palabras opcionales del comando SELECT.

Consultas SQL (III)


Publicado el 22 agosto, 2013 por formacin online

Hoy avanzaremos ms en profundidad dentro del comando SELECT, os vamos a explicar el nivel ms interno
del SELECT. Que consiste en el GROUP BY y su clusula de condicin HAVING:
GROUP BY: se utiliza para crear conjuntos de grupos de cualquier atributo de nuestra tabla
permitiendo hacer consultas que engloben a varias tuplas o registros que nos ayudarn a resolver
consultas con funciones agregadas. Siempre que agrupemos por un atributo en el GROUP BY debe de
aparecer este atributo en el SELECT.

HAVING: es la clusula de condicin perteneciente al GROUP BY que funciona exactamente igual que el
WHERE, solo que aqu tambin podemos usar las funciones agregadas como en el SELECT.
Os dejamos un ejemplo de como se realiza una consulta incluyendo estas dos clusulas:

SELECT nombre, SUM(visitas)


FROM formaciononlineweb
GROUP BY nombre
HAVING SUM(visitas) > 1500;

Igualmente a esta consulta se le puede agregar el WHERE aadindole ms condiciones, pero en este caso
hemos puesto la consulta ms simple de GROUP BY con HAVING. Tambin se pueden realizar consultas que no
lleven el HAVING ya que este es completamente opcional como el WHERE.
En el siguiente post explicaremos las funciones agregadas mencionadas en este post como la clusula final del
comando SELECT.

Consultas SQL (IV)


Publicado el 26 agosto, 2013 por formacin online

Como os dijimos en el post anterior hoy vamos hablar sobre las funciones agregadas y la clusula ORDER BY
pertenecientes al comando SELECT. Las funciones agregadas como la clusula ORDER BY son completamente
opcionales pero muy tiles a la hora de obtener resultados de grupos, como sumas, ordenacin, ect. Todas las
funciones agregadas se pueden utilizar tanto en el SELECT como en el HAVING. Todos los valores que
contengan NULL en el atributo no sern contabilizados en ninguna de estas funciones.
A continuacin os vamos a explicar en detalle cada funcin agregada:

AVG: Calcula le media aritmtica de un grupo de tuplas perteneciente an atributo de la tabla.


COUNT: Te cuenta todas las tuplas o filas que contiene un atributo o una tabla completa.
MAX y MIN: Calculan el mximo y mnimo del atributo que se haya seleccionado.
SUM: Te suma todas las tuplas o filas que contenga el atributo dado.

Todas estas funciones tienen que ser usadas en campos numricos, menos el COUNT que cuenta cualquier tipo
de atributo. Adems, hay que tener cuidado al usar estas funciones ya que devuelve un nico dato. Por tanto,
si queremos sacar algn atributo ms tenemos que asegurarnos que solo muestre una tupla o fila como
resultado de lo contrario nos saldr un error. Aqu, os dejo un ejemplo con una consulta simple, aunque se
podran usar tambin en el HAVING:
SELECT SUM(visitas), COUNT(*), MAX(visitas)
FROM formaciononlineweb;

Y por ltimo, tenemos las clusula ORDER BY que es utilizada para ordenar los elementos que salen como
resultado de la consulta. Adems, se le puede aadir las palabras claves DESC y ASC si lo queremos en orden
descendente o ascendente. Aqu, os dejo un ejemplo simple de como se utiliza la clusula:
SELECT nombre
FROM formaciononlineweb
ORDER BY nombre DESC;

En el prximo post seguiremos explicando detalles necesarios de las consultas.

Consultas SQL (V)


Publicado el 6 septiembre, 2013 por formacin online

Hoy continuamos con las consultas de SQL, ya conocemos lo esencial de una consulta simple y de todas las
clusulas que abarca el comando SELECT. Obviamente no solo podemos hacer consultas simples tambin
podemos realizar consultas mucho ms extensas y complejas. Para poder realizar esto es necesario la unin de
dos tablas o ms. Cuando realizamos est unin es para conseguir sacar todos los datos que estn unidos entre
ellas a travs de un atributo en comn. Para ello, las dos tablas tienen que estar unidas por el mismo atributo
que suele ser la clave primaria de uno contenida en la otra tabla al cul se le llama clave ajena. A
continuacin os mostramos un ejemplo de una consulta unida en dos tablas:
SELECT nombre, edad
FROM formaciononlineweb AS for, usuarios AS user
WHERE f.codF == user.codF;

Con esta consulta podemos ver varios puntos a tener en cuenta, en el FROM podemos poner tantas tablas
como queramos separadas por comas, el AS simplemente nos sirve para poner un alias a la tabla que nos
ayudara hacer la programacin ms llevadera. El punto ms importante y es el que va hacer posible la unin
de las dos tablas en la comparacin entre la clave primaria y la clave ajena de la otra tabla.
Si se diera el caso de contener ms tablas en el FROM simplemente es necesario hacer la igualdad con todos
los atributos que coincidan dejando unidas todas las tablas y por tanto preparadas para poder usar cualquier
atributos de ellos en la consulta. Aqu os dejamos un ejemplo para que lo veis ms claro:
SELECT nombre, edad, direccion
FROM formaciononlineweb AS for, usuarios AS user, direcciones AS dir
WHERE f.codF == user.codF AND user.codD == dir.codD;

Adems, si solo queremos realizar el producto cartesiano, es decir, queremos unir todas las filas de una tabla
con otra sin necesidad de que estn unidas solo es necesario poner el SELECT y el FROM tal como veris en el
ejemplo:

SELECT nombre, edad, direccion


FROM formaciononlineweb AS for, usuarios AS user;

En el prximo post os mostraremos otra forma de realizar lo mismo que en este post, aunque la forma ms
tradicional es la que acabamos de ver.

Consultas SQL (VI)


Publicado el 7 septiembre, 2013 por formacin online

Continuamos con las consultas SQL, como dijimos en el post anterior, hoy vamos a explicaros la otra forma de
realizar la unin entre varias tablas. En este caso el comando SELECT tiene guardadas unas serie de clusulas
para realizar la unin. Al utilizar las clusulas no es necesario escribir nada en el WHERE, la cul puede ser
muy til en el caso de varias tablas. Vamos a empezar con el JOIN ms utilizado y que coincide con el primer
ejemplo del post anterior. Lo vemos con un ejemplo:
SELECT nombre, edad
FROM formaciononlineweb AS for INNER JOIN usuarios AS user USING (for, user) / ON
(for..codF == user.codF) INNER JOIN direccion AS dir USING (user, dir)/ON (user.codD ==
dir.codD);

Como podemos observar en este ejemplo podemos elegir entre USING o ON si los atributos que unen las tablas
son idnticos o con nombres diferentes, a parte del INNER JOIN, que tenemos unos cuantos ms y son los
siguientes:
LEFT JOIN o RIGHT JOIN: Esas dos clusulas se utilizan para sacar las tuplas/filas que en la unin del
atributo en comn entre las dos tablas contengan algn NULL. Pondremos LEFT o RIGHT segn de la tabla
que queramos mostrar las filas que contengan el atributo a NULL.

NATURAL JOIN: Esta clusula te realiza directamente el JOIN con si fuera un INNER JOIN con USING,
pero solo se puede utilizar si los atributos se llaman igual en todas las tablas.

CROSS JOIN: Esta clusula realiza el producto cartesiano sin unin.


A continuacin os dejamos un ejemplo de cada clusula respectivamente:

SELECT nombre, edad


FROM formaciononlineweb AS for LEFT JOIN usuarios AS user USING (for, user) / ON
(for..codF == user.codF) RIGHT JOIN direccion AS dir USING (user, dir)/ON (user.codD
== dir.codD);
SELECT nombre, edad, direccion
FROM formaciononlineweb AS for NATURAL JOIN usuarios AS user;
SELECT nombre, edad, direccion
FROM formaciononlineweb AS for CROSS JOIN usuarios AS user;

Una vez explicado esto ya podemos realizar consultas mucho ms complejas. En el siguiente post os
mostraremos como poder realizar subconsultas, que llegan a resultar muy tiles.

Insercin, modificacin y eliminacin de SQL


Publicado el 14 septiembre, 2013 por formacin online

Dejando de lado por fin las consultas, vamos con el resto de operaciones bsicas de SQL. Nos referimos a los 3
comandos extra con los que podremos trabajar ntegramente en una base de datos relacional. Estos 3
comandos nos permiten insertar, modificar y eliminar tuplas (filas) de una tabla de la base de datos relacional
con el lenguaje SQL.

INSERT: este comando, como su propio nombre sugiere, permite insertar una tupla o fila en la tabla
indicada, siempre y cuando no incumpla las restricciones de integridad. El formato de este comando en un
ejemplo sera

INSERTINTOformaciononlinewebVALUES('valor1','valor2);

UPDATE: permite actualizar una tupla de la tabla, de la misma forma que el insert, manteniendo las
restricciones de integridad. Un ejemplo

UPDATEformaciononlinewebSETcampo1='valornuevo';

DELETE: nos sirve para eliminar tuplas completas, dependiendo (al igual que insert o update) de si la
base de datos est configurada para realizar esa accin en cascada (aplicara el mismo efecto a todas las
tuplas anexadas en otras tablas que hicieran referencia a esta misma tupla) o que simplemente eliminara
la tupla y saltaran mensajes de error. Un ejemplo

DELETE*FROMformaciononlineweb;
Adems de esto, los 3 comandos permiten el uso de la clusula WHERE para filtrar resultados a los que aplicar
la accin. En prxima entrega veremos como crear o eliminar tablas, as como las vistas.

Manejo de tablas en SQL


Publicado el 17 septiembre, 2013 por formacin online

Para finalizar el tema del lenguaje SQL vamos a explicar el tratamiento de las propias tablas de la base de
datos relacional a travs del SQL. Para ello utilizaremos los siguientes comandos:

CREATE: se utiliza para la creacin de tablas relacionales, requiere indicar (por atributos y su tipo de
dato longitud) las caractersticas de la tabla. Los tipos de datos en las distintas bases de datos pueden
variar de una a otra, pero por lo general cumplen con los bsicos de varchar, bin, integer, varchar2,
double, float, etc. Para verlo mejor un ejemplo base sera:

CREATETABLEformaciononlineweb(Visitasinteger(9),titulo_articulo
varchar2(50),fecha_postdatetime);

ALTER: se utiliza para modificar columnas de una base de datos. Permite 3 tipos de modificaciones
distintas:
1.
Aade un nuevo atributo a la tabla

2.

ALTERTABLEformaciononlineweb
ADDcategoria_articulovarchar2(50);

3.

Borrar una columna

4.

ALTERTABLEformaciononlineweb
DROPcategoria_articulovarchar2(50);

5.

Modificar el tipo de una columna

6.

ALTERTABLEformaciononlineweb
6

ALTERcategoria_articulointeger(12);

DROP: Se utiliza para borrar la tabla. Su uso es sencillo, pero hay que tener en cuenta las restricciones
y si no existe el borrado en cascada.

DROPTABLEformaciononlineweb;
Al igual que en el DROP hay que tener en cuenta las restricciones, lo mismo se aplica al resto de comandos,
por ello antes de manejar las tablas hay que conocer profundamente el esquema de la base de datos
relacional.

Gestin de una base de datos con SQL


Publicado el 19 septiembre, 2013 por formacin online

Hoy os vamos a explicar como poder gestionar una base de datos a travs del lenguaje SQL. Podremos
encontrar unos comandos muy conocidos y tiles para este cometido, como son las transacciones,
procedimientos y disparadores. A continuacin hablaremos sobre ellas:
Empezaremos con la ms utilizada en una base de datos que es la transaccin . Esta consiste en una
secuencia de operaciones de acceso a la base de datos que establecen una unidad lgica de ejecucin. Toda
transaccin debe cumplir dos normas que nunca se deben de incumplir: todas las operaciones de una
transaccin se ejecutan con xito y su efecto que registrado permanentemente en la base de datos o la
transaccin no tiene ningn efecto sobre la base de datos ni otras transacciones. Aunque podemos tener
varios problemas al ejecutar una transaccin sin incumplir esas dos normas que hemos indicado, para ello el
SGBD tiene dos mecanismos en compensacin: el control de concurrencia y el de recuperacin. A parte, de
manera opcional tenemos unas operaciones que tambin las podemos incluir dentro de nuestra transaccin y
que nos ayudarn a decirle al SGBD como va nuestra transaccin y cuando queremos que la guarde, vuelva
atrs, etc. Esas operaciones opcionales son:

START TRANSACTION: Que nos ayuda a decir al SGBD que la transaccin va a comenzar, auqnue si no lo
ponemos el SGBD sabr que una transaccin comienza cuando la anterior ha acabado.

COMMIT: Esta operacin cuando aparezca dentro de una transaccin es para indicarle al SGBD de que
tiene que guardar los cambios efectuados en memoria principal.

ROLLBACK: esta operacin nos permite volver atras en la transaccin como si esta jams se hubiera
ejecutado.

ROLLBACK TO SAVEPOINT marca_savepoint: Es una variante de la operacin anterior solo que se


eliminara todo lo que estuviera hasta la ltima marca del savepoint.
Adems, de todo esto el usuario podra indicarle al SGBD como ejecutar una transaccin. El comando
correspondiente sera SET TRANSACTION modo [modo], donde modo podra ser nivel de aislamiento, modo de
acceso y rea de diagnsticos. Cada uno se utiliza para una cosa en particular. El primero hace que el SGBD
acoge la estrategia seguida para el control de accesos concurrentes, el segundo especifica el nmero mximo
de errores que el SGBD debe almacenar y el tercero restringe el tipo de operaciones que se pueden ejecutar
en una transaccin.
Vamos a continuar con los procedimientos que son lo ms parecido a funciones o mtodos de los lenguajes de
programacin que nos permiten pasar parmetros para realizar las operaciones que contiene en su interior.
Aqu tenis un ejemplo de como sera:

CREATEPROCEDUREvisitantes(INvisitasINT,INnombreVARCHAR(50))
BEGIN
IFvisitas>120THEN
INSERTINTOformaciononlinewebvisitantesfavoritosVALUES(nombre);
ELSE
INSERTINTOformaciononlinewebVALUES(nombre,visitas);
ENDIF;
END;
Como podemos observar dentro de un procedimiento tenemos unas palabras claves a destacar el CREATE
PROCEDURE para sealar la creacin y en el cual debemos de especificar el nombre del procedimiento como
los parmetros de entrada o salida que queramos utilizar, BEGIN que indica el comienzo del procedimiento y
END al final para indicar el final del procedimiento. Dentro del cuerpo del procedimiento se puede aadir
cualquier comando de SQL ya explicados anteriormente, como condiciones del tipo IF, WHILE, etc.
Y por ltimo, vamos a explicar los disparadores, que nos ayudarn a poder ejecutar cdigo necesario en un
momento en concreto, ya sea despus de realizar otra accin o cualquier evento que suceda en la base de
datos. Esto nos ayuda a generar valores en columnas, ayuda a prevenir errores de datos, sincroniza tablas,
etc. Permite implementar programas basados en el paradigma lgico. Aqu dejamos un ejemplo:

CREATETRIGGERver_Visitas
BEFOREUPDATEONformaciononlineweb
REFERENCINGNEWROWASn,OLDROWASo
FOREACHROW
IFn.visitas<>o.visitasTHEN
ENDIF;

Y con estos tres comandos podemos tener nuestra base de datos completamente controlada y gestionada.
Desde formacin online web esperamos que el post os haya resultado de utilidad y, como siempre, os
agradeceremos los comentarios que nos hagis.

You might also like