Está en la página 1de 11

Tutorial de SQL Introduccin SQL es el lenguaje estndar para acceder y manipular bases de datos Qu podemos(y vamos) a hacer con

n SQL ? Ejecutar consultas a una base de datos Insertar registros en una base de datos Actualizar registros de una base de datos Eliminar registros de una base de datos Crear bases de datos y mucho ms SQL es un estndar pero existen diversas versiones de este lenguaje ejemplos: SQL Server, PostgreSQL, MySQL, Oracle, otros Cabe destacar que SQL no es case sensitive... te suena ? esto quiere decir, que al lenguaje le da igual si escribis SQL, o sqL, o sQl las tres son validas y equivalentes El uso de SQL es esencial para la creacion de webs con algn lenguaje del lado del servidor, como PHP, ASP ademas de HTML - CSS y tambien (opcional) programas RDBMS

RDBMS RDBMS significa Relational Database Management System. RDBMS es la base de SQL, y para todos los sistemas de bases de datos modernas, tales como MS SQL Server, IBM DB2, Oracle, MySQL y Microsoft Access. Los datos de RDBMS se almacena en objetos de base de datos llamadas tablas. Una tabla es una coleccin de entradas de datos relacionados y se compone de columnas y filas.

Sintaxis Una base de datos puede tener una o ms tablas. Cada tabla esta identificada con un nombre por ejemplo (usuarios, ordenes, proveedores, puntaje). Las tablas tienen registros(filas) con datos. Sentencias SQL Recorda que SQL NO DIFERENCIA ENTRE MINUSCULAS Y MAYUSCULAS las sentencias en SQL pueden dividirse en dos subgeneros DML (Data Manipulation Language) que serian las sentencias de manipulacion de datos

SELECT UPDATE DELETE INSERT INTO

DDL (Data Definition Language) que son aquellas las usadas para modificar la estructura de la base de datos CREATE DATABASE ALTER DATABASE CREATE TABLE ALTER TABLE DROP TABLE CREATE INDEX DROP INDEX Select La sentencia SELECT es utilizada para recorlectar informacion de una base de datos SINTAXIS SELECT nombre_columna(s) FROM nombre_tabla si son multiples columnas, cada nombre de columna va separado por comas SELECT contrasena, usuario FROM lista Ahora, si queremos seleccionar todas las columnas, usamos "*" SELECT * FROM nombre_tabla Para opciones de navegacion entre registros tenemos las funciones de programacion de los lenguajes del lado del servidor como PHP (por ejemplo)

Distinct DISTINCT Sentencia En una tabla algunas columnas pueden contener valores duplicados. Esto no es un problema, sin embargo, a veces querrs mostrar solo los diferentes valores en una tabla. Quizas es un poco dificil de explicar, pero con un ejemplo se dan cuenta enseguida supongamos que tenemos la siguiente tabla de habitantes Nombre Provincia Roberto Chubut Andres Entre Rios Carmen Chubut Ricardo Rio Negro y que ejecutamos sobre esta tabla, la siguiente consulta SELECT DISTINCT provincia FROM habitantes Vamos a obtener algo como.. Provincia

Chubut Entre Rios Rio Negro Si pueden apreciar, no se muestra el campo duplicado de la provincia Chubut ADEMAS usamos select junto con distinct

Where la clausula WHERE sirve para extraer de nuestra base de datos, uno o ms registros que cumplan cierto criterio SINTAXIS SELECT columna(s) FROM tabla_nombre WHERE columna operador valor Capas que no se entiende una chota, pero vamos a dar un ejemplo SELECT telefono, ciudad FROM guia_telefonica WHERE ciudad ='Buenos Aires' En ese ejemplo, extraemos de nuestra base de datos, todos los registros de una tabla "guia_telefonica" de las personas que sean de Buenos Aires.

OPERADORES como vimos en la sintaxis, necesitamos un operador para formar el critero de extraccion de datos. Operador = <> > < >= <= LIKE IN Igual Diferente Mayor Menor Mayor o Igual Menor o Igual Busqueda por un patron Para especificar mltiples valores posibles para una columna Valor

BETWEEN Entre un rango inclusivo

En algunas versiones de SQL diferente(<>) es escrito como !=

ALGUNAS REGLAS a la hora de elegir criterios hay que tener en cuenta, el uso de comillas simples Si tu criterio va a ser algun texto, por ejemplo la ciudad 'Buenos Aires' USAS COMILLAS , ciudad = 'Buenos Aires' Si tu criterio va a ser algun numero, por ejemplo personas mayores de 18 aos NO USAS COMILLAS , edad >= 18

AND y OR Los operadores AND y OR nos ayudan a formar criterios de seleccion de registros diferencia entre AND y OR Con la clausula AND, un criterio se va a cumplir solo cuando todas condiciones sean verdaderas Con la clausula OR, un criterio se va a cumplir cuando cualquiera de las condiciones sean verdadera Ejemplo Practico Nombre Daniel Daniel Pais Brasil Argentina

Roberto Argentina si sobre esa tabla(llamada NTabla), hicieramos la siguiente consulta SELECT * FROM NTabla WHERE Nombre='Daniel' AND pais='Argentina' Nos quedaria asi Nombre Daniel Pais Argentina

En cambio, si le aplicaramos la siguiente consulta SELECT * FROM NTabla WHERE Nombre='Daniel' OR pais='Argentina' Nos quedaria la tabla completa Nombre Daniel Daniel Pais Brasil Argentina

Roberto Argentina

INSERT INTO

ESta clausula es utilizada para insertar un registro en una tabla Sintaxis 1 INSERT INTO nombre_tabla VALUES (valor1, valor2...valorn) En esta sintaxis no especificamos la(s) columnas en las que se va insertar un valor Sintaxis 2 INSERT INTO nombre_tabla(columna1,columna2...columnan) VALUES (valor1, valor2...valorn) En esta sintaxis si especificamos la(s) columnas en las que se va a insertar un valor Ejemplos tabla Direcciones Id Nombre Apellido 1 Daniel Barria Direccion CalleFalsa 123

INSERT INTO Direcciones VALUES(2,'Alberto','Casas','CalleB 335') SINO podria ser INSERT INTO Direcciones(id,Nombre,Apellido,Direccion) VALUES (2,'Alberto','Casas','CalleB 335') El resultado seria Id Nombre Apellido 1 Daniel 2 Alberto Barria Casas Direccion CalleFalsa 123 CalleB 335

UPDATE Nos preguntamos, qu pasa si queremos un valor de un registro de una tabla Eliminamos el registro y creamos uno nuevo? Para esas situaciones, existe la clausula UPDATE que actualiza un valor de un registro existente sintaxis UPDATE nombre_tabla SET columna1=valor1, columna2=valor2...columnan=valorn WHERE cualquier_columna=cualquier_valor Ejemplo tabla Domicilios Nombre Apellido Daniel Barria Alejandro Dolina Direccion Calle Falsa 123 Calle Falsa 123

a esta tabla le ejecutamos la siguiente consulta.. UPDATE Domicilios SET Direccion='NuevaDireccion 666' WHERE Nombre='Daniel' AND Apellido='Barria'

La nueva tabla quedaria asi... Nombre Apellido Daniel Barria Alejandro Dolina Direccion NuevaDireccion 666 Calle Falsa 123

PRECAUCIONES NUNCA te olvides de la sentencia WHERE ejemplo, si hicieramos algo como UPDATE Domicilios SET Direccion='NuevaDireccion 666' Nuestra Tabla quedaria Nombre Apellido Daniel Barria Alejandro Dolina Direccion NuevaDireccion 666 NuevaDireccion 666

DELETE esta sentencia se usa para Eliminar registros, es simple de sintaxis Ejemplo, tabla Proveedores Marca Axe Producto Desodorantes

Coca Cola Bebidas si a esta tabla, le hacemos la siguiente consulta DELETE FROM Proveedores WHERE Marca='Axe' Nos quedaria algo como Marca Axe Producto Desodorantes

Coca Cola Bebidas Ahora si queremos eliminar todos los registros y dejar la tabla vacia, hacemos DELETE * FROM Proveedores Pero, por lo general en las diferentes versiones de SQL, esta accion es irreversible, asi que antes de eliminar una tabla entera, haz un backup de tus datos, por si los necesitas

Tutorial de SQL Avanzado Top


Si haz ledo los tutoriales anteriores, te vas a saber manejar bien con estos nuevo, que son un poquito ms jodidos que los anteriores, vamos a ver aspectos del lenguaje bastantes interesantes, ademas de las diferentes sintaxis, dependiendo la version de SQL La clausula TOP es utilizada para especificar el numero de registros que vamos a mostrar.

Esta clausula es muy importante debido a que puede desmejorar el rendimiento de nuestra aplicacion si mostramos grandes cantidades de registros de una sola vez NOTA: No todas las versiones de SQL soportan esta clausula y cada una tiene su sintaxis para ella. Sintaxis en SQL Server SELECT TOP numero|porcentaje nombre_columna(s) FROM nombre_tabla Sintaxis en MySQL SELECT nombre_columna(s) FROM nombre_tabla LIMIT numero

Sintaxis en ORACLE SELECT nombre_columna FROM nombre_tabla WHERE ROWNUM <= numero SI USAMOS porcentaje (en SQL SERVER) se debe hacer algo asi
SELECT TOP 50 PERCENT * FROM tablaclientes

Like
El operador LIKE es utilizado para buscar registros dependiendo de cierto patrn que le pasemos Sintaxis SELECT nombre_columna(s) FROM nombre_tabla WHERE nombre_columna LIKE patrn supongan que tenemos la siguiente pequea tabla llamada CIUDADES

Ciudad San Luis Varsovia Salta

Pais Argentina Polonia Argentina

Rio de Janeiro Brasil

Tokio Japon y en ella ejecutamos la siguiente consulta


SELECT * FROM Ciudades WHERE Ciudad LIKE 's%'

nos va a quedar algo asi

Ciudad

Pais

San Luis Argentina Salta Argentina Como pueden apreciar, usamos el comodin "%" . Lo que hace este comodin es definir letras que faltan en el patron (tanto antes como despues y entre cadenas de caracteres), esto quiere decir que la consulta, podria haber sido
SELECT * FROM Ciudades WHERE Ciudad LIKE '%s' (para buscar y extraer los registros que terminen en s), o bien SELECT * FROM Ciudades WHERE Ciudad LIKE '%s%' (para buscar los registros que tengan "s" entre cadenas de caracteres, ej: Varsovia) Pero esto no se limita a caracteres, tambien podemos utilizar cadenas como criterio SELECT * FROM Ciudades WHERE Ciudad LIKE '%nei%'

Ciudad

Pais

Rio de Janeiro Brasil

Wilcards o Comodines
Con los comodines podemos sustituir uno o mas caracteres en la bsqueda de datos en una base de datos a travs de patrones. En la siguiente tabla vamos a ver los diferentes comodines que podemos usar en SQL *charlist = lista de caracteres

Comodin % _ [charlist]

Descripcin Un sustituto para cero o mas caracteres Un sustituto para exactamente 1 caracter Cualquier caracter en una lista

[^charlist] o bien cualquier caracter que no este en la lista [!charlist] (depende version de SQL) Ejemplos ?

SELECT * FROM ciudades WHERE ciudad LIKE 'Pat%'en el ejemplo de arriba se busca los registros que comiencen en Pat SELECT * FROM ciudades WHERE pais LIKE '_rasil' en el ejemplo de arriba se busca los registros cuyo pais empiece con una letra y termine en rasil (Brasil por ejemplo) SELECT * FROM ciudades WHERE pais LIKE '[abf]%' en el ejemplo de arriba buscamos ciudades que comiencen con a,b o f . Notese que combinamos el wildcard [charlist] con % Tambien podriamos hacer algo como SELECT * FROM ciudades WHERE pais LIKE '%[!sn]' que seria una consulta para que se seleccionen los paises cuyos nombres no terminen con s o n

In
La clausula IN permite especificar varios valores a seleccionar en una clausula WHERE sintaxis SELECT * FROM nombre_tabla WHERE nombre_columna IN (valor1,valor2...valorn) Siguiendo con la tabla ciudades, podriamos hacer la siguiente consulta SELECT * FROM Ciudades WHERE pais IN ('Argentina', 'Polonia') Como ven, es facil de usar, en ese ejemplo seleccionariamos de una base de datos llamada ciudades los registros de aquellas ciudades que sean de argentina o de polonia

Between
El operador Between permite definir un rango dentro de una clausula WHERE Sintaxis SELECT nombre_columna(s) FROM nombre_tabla WHERE nombre_columna BETWEEN valor1 AND valor2 Nota: este operador puede variar dependiendo la version de SQL que estes usando Este operador no se limita a valores numericos podriamos hacer algo como lo siguiente Tenemos la tabla Personas

Nombre Apellido Daniel Gonzales Esteban Echeverria Fernando Roberts Marina Elsa le aplicamos la siguiente consulta
SELECT * FROM Personas WHERE Nombre BETWEEN 'Daniel' AND 'Fernando' y nos queda

Nombre Apellido Daniel Gonzales Esteban Echeverria Fernando Roberts

Alias
Con SQL le podemos dar un alias a una tabla o una columna, vamos a manejar una sintaxis para cada una sintaxis para tablas SELECT nombre_columna(s) FROM nombre_tabla AS unalias Tene en cuenta que un alias debe ser corto y si se puede, significativo Sintaxis para columnas SELECT nombre_columna AS alias FROM table Es facil .. SELECT al.Nombre, al.Apellido, al.Notas FROM AlumnosCalificaciones AS al, otraTablaX WHERE al.Nota > 7 Ahi estariamos agregandole un alias a una tabla llamada AlumnosCalificaciones porque es muy larga, de lo contrario la consulta completa quedaria asi
SELECT AlumnosCalificaciones.Nombre, AlumnosCalificaciones.Apellido, AlumnosCalificaciones. notas FROM AlumnosCalificaciones, otraTablaX

WHERE AlumnosCalificaciones.Notas > 7

Es poco practico NO? Ahora ya podes usar Alias cuando quieras...