Sie sind auf Seite 1von 9

--PROYECCION

Select Campo1, Camp2....


From Tabla
USO DE ALIAS para poner titulos a las columnas
Select Campo as 'titulo de columna'
--COLUMNAS GENERADAS
Concatenacion:
CONCAT (Dato1, dato2,...) Concatena cadenas de
caracteres
Operadores aritmeticos:
+ Suma
- Resta
* Multiplicacion
/ Division
() Sirven para agrupar expresiones aritmeticas e imponer un orde
n en su ejecucion
SELECCION DE REGISTROS
select campo1,campo2
from tabla
where condicion
Condicion se compone de la siguiente forma:
Dato1 OpComparacion Dato2
Dato puede ser un campo, valor o cualquier expresion que nos de un valor
valido (funciones, expresiones aritmeticas, consulta, etc)
Operadores de comparacion
>
Mayor que
>=
Mayor o igual que
=
Igual que
<=
Menor igual que
<
Menor que
<> o != Diferente que
SELECCION CON OPERADORES LOGICOS
NOT Condicion Pide que no se cumpla la condicio
Operadores logicos binarios:
Condicion1 AND Condicion2 pide que se cumplan las 2 condiciones
Condicion1 OR Condicion2 pide que se cumpla por lo menos una de
las dos
Podemos usar parentesis para agrupar condiciones, de distintas formas, p
or ejemplo:
(C1 OpLogicoBin C2) OpLogicoBin C3
(C1 OpLogicoBin C2) OpLogicoBin (C3 OpLogicoBin C4)
not (C1 OpLogicoBin C2)
OPERADORES ESPECIALES
Campo between LimiteInferior AND LimiteSuperior La condicion se cumple
cuando el valor en campo esta entre los limites indicados
Campo in (Dato1, Dato2, etc)
La condicion se cumple cuando el valor e
n campo es cualquiera de los datos especificados

OPERADORES PARA BUSQUEDA DE PATRONES


Operador Like
select nombre
From
Tabla
where nombre like 'texto'
En el texto puede ir cualquiera de los siguientes comodines
% 0 o mas caracteres, cualquiera que estos sean
_ Un solo caracter, cualquiera que sea
Operador REGEXP
select nombre
From
Tabla
where nombre regexp 'texto'
La principal diferencia entre like y regexp es que con like el patron se tiene q
ue cumplir el
patron en la totalidad del texto, con regexp basta con que se cumpla en alguna p
arte del texto. Para especificar que el patron se debe de cumplir al inicio o al
final se agregan los siguientes comodines:
"^" Especifica el inicio del texto
"$" Especifica el final del texto
En el texto puede ir cualquiera de los siguientes comodines
"." Un solo caracter el que sea (equivale a "_" en like) en una posicion
especifica
"*" Especifica 0 o mas instancias de lo que le precede. Si ponemos ".*"
equivale a % en like
Los corchetes permiten extender la funcionalidad del "." de las siguientes forma
s:
veces.
"[CCC...]" Especifica un conjunto de caracteres validos en una posicion
especifica.
"[C-C]" Especifica un rango de caracteres validos en una posicion especi
fica.
"[^C]" Pide que no aparezcan los caracteres especificados en una posicio
n especifica
Las llaves permiten especificar el numero de veces lo que le precede:
"{N,M}", el cual indica el numero minimo (N) y maximo (M) de veces debe
aparecer lo que le precede. si se especifica solo un numero {N} es equivalente a
{N,}, que lo podriamos interpretar como minimo N, maximo lo que sea.
Finalmente podemos especificar cadenas opcionales:
"Cadena1|Cadena1" indica que pude aparecer la cadena 1 o la 2

(en

La informacion detallada de regexp la encuentran en los siguientes links


ingles)
http://download.oracle.com/docs/cd/E17952_01/refman-5.1-en/regexp.html
http://docs.oracle.com/cd/E17952_01/refman-5.1-en/pattern-matching.html

FUNCIONES PARA MANEJO DE TEXTO


CHAR_LENGTH (texto) Regresa la longitud del texto
UPPER (texto) Regresa el texto en mayusculas
LOWER (texto) Regresa el texto en minusculas
LEFT(texto, num) regresa los primeros caracteres del texto, la cantida
d de caracteres obtenidos esta especificado por num
RIGHT(texto, Num) regresa los ultimos caracteres del texto, la cantidad
de caracteres obtenidos esta especificado por num
SUBSTRING (texto, PosIni, Num) obtiene del texto, la cantidad de caract
eres indicado por Num a partir de la posicion inicial especificada
LTRIM(texto) quita los espacios en blanco al inicio del texto
RTRIM(texto) quita los espacios en blanco al final del texto
TRIM (texto) quita los espacios en blanco tanto al inicio como al final
del texto.
REPLACE (texto, SubcadenaAReemplazar, NuevaCadena), busca dentro de un t
exto una subcadena y la reemplaza por una nueva
NOW(); regresa la fecha y hora actuales
DATE(expr) Extrae la parte de fecha de la expresin de fecha o fecha y hora expr.
mysql> SELECT DATE('2003-12-31 01:02:03');
-> '2003-12-31'
DATEDIFF(expr,expr2) retorna el nmero de das entre la fecha inicial expr y la fech
a final expr2. expr y expr2 son expresiones de fecha o de fecha y hora. Slo las p
artes de fecha de los valores se usan en los clculos.
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
-> 1
mysql> SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');
-> -31
DATE_ADD(date,INTERVAL expr type), DATE_SUB(date,INTERVAL expr type)
Estas funciones realizan operaciones aritmticas de fechas. date es un valor
DATETIME o DATE especificando la fecha de inicio. expr es una expresin que
especifica el intervalo a aadir o borrar de la fecha de inicio. expr es una
cadena; puede comenzar con un '-' para intervalos negativos. type es una
palabra clave que indica cmo debe interpretarse la expresin.
La palabra clave INTERVAL y el especificador type no son sensibles a maysculas.
La siguiente tabla muestra cmo se relacionan los argumentos type y expr :
type Value
Expected expr Format
MICROSECOND
MICROSECONDS
SECOND
SECONDS
MINUTE
MINUTES
HOUR
HOURS
DAY
DAYS
WEEK
WEEKS
MONTH
MONTHS
QUARTER
QUARTERS
YEAR
YEARS
Los valores QUARTER y WEEK estn disponibles a partir de MySQL 5.0.0.

mysql> SELECT '1997-12-31 23:59:59' + INTERVAL 1 SECOND;


-> '1998-01-01 00:00:00'
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
-> '1997-12-02'
DAYNAME(date) Retorna el nombre del da de la semana para date.
DAYOFMONTH(date) Retorna el da del mes para date, en el rango 1 a 31.
MONTH(date) Retorna el mes para date, en el rango 1 a 12.
MONTHNAME(date) Retorna el nombre completo del mes para date.
YEAR(date) Retorna el ao para date, en el rango 1000 a 9999.
EJERCICIOS UNION
select Col1, col2
from tabla1
union
select Col1,Col2
from tabla2
union
...
union
select Col1,Col2
from tabla
El operador union tiene 2 restricciones:
1.- todas las consultas tienen que tener el mismo numero de columnas
2.- La columna n en todas las consultas tiene que ser del mismo tipo, es decir,
si en la consulta 1 la cpolmna 1 es varchar, dicha columna tiene que ser varchar
en todas las consultas

La clausula join nos permite unir 2 tablas bajo un determinado criterio, nos sir
ve para juntar la informacion almacenada en los campos de una tabla con los de o
tra
un join se especifica en la seccion del from:
select Tabla1.Campo, Tabla2.Campo
from Tabla1 aliasTabla1 join tabla2 aliastabla2 on condicion
En la parte del select especificamos la tabla a la que pertenece el campo princi
palmete para evitar ambiguedades en el caso de que 2 tablas posean campos con el
mismo nombre (por ejemplo el campo nombre de la tabla proveedores y el campo no
mbre de la tabla productos), ademas de esta forma se da mas claridad a la consul
ta.
Los alias permiten cambiar, por asi decirlo, el nombre de una tabla en la consul
ta, Si se le pone un alias a una de las tablas, se tiene que dejar de usar el no
mbre de la tabla y forzosamente para esa tabla tenemos que usar el alias.

De acuerdo a la condicion del join podemos tener los siguientes tipos de join
EQUIJOIN, es cuando en la condicion se pide que se cumpla una igualdad, generalm
ente es de una llave primaria con una llave foranea.
select Tabla1.Campo, Tabla2.Campo
from Tabla1 join tabla2 on Tabla1.CampoLlavePrim=Tabla2.CampoLLaveForanea
NON EQUIJOINS, es cuando en la condicion no se pide una igualdad, una posibilida
d es cuando se compara un valor de una de las tablas con un rango establecido en
una de las otras
select Tabla1.Campo, Tabla2.Campo
from Tabla1 join tabla2 on
Tabla1.Dato>Tabla2.LimInf and Tabla1.Dato<Tabla2.LimSup
Si tabla1 y tabla2 son la misma tabla, entonces se dice que se esta haciendo un
SELF JOIN, en este caso en particular se hace obligatorio el uso del alias para
tablas:
El join solo muestra los registros que cumplen con la relacion establecida media
nte la condicion, todos los registros de ambas tablas que no puedan cumplir con
dicha condicion quedan fuera, por esta razon es que se conocen como INNER JOINS
o joins internos.
Debido a que es muy comun los casos en que necesitemos todos los registros de un
a de las dos tablas o incluso de las 2, existen los OUTER JOINS,que nos permiten
agregar estos registros, estos son:
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
o simplemente:
LEFT JOIN
RIGHT JOIN
FULL JOIN
Estos en pocas palabras, si nos posicionamos en la palabra join, tenemos una tab
la a la izquierda y otra a la derecha, mediante LEFT o RIGHT indicamos de cual d
e las tablas queremos todos los registros, FULL nos permite obtener todos los re
gistros de ambas tablas.
select Tabla1.Campo, Tabla2.Campo
from TablaIzquierda left join tablaDerecha on condicion
ANIDAMIENTO DE JOINS
La instruccion completa de un join nos da como resultado una tabla que contiene
todos los campos de las tablas usadas, ese resultado puede ser usado como parame
tro para otro join, lo cual nos permite hacer cosas como:
select Tabla1.Campo, Tabla2.Campo, Tabla3.Campo
from (Tabla1 join Tabla2 on condicion1)
join Tabla3 on Condicion2

select Tabla1.Campo, Tabla2.Campo, Tabla3.Campo, Tabla4.Campo


from (Tabla1 join Tabla2 on condicion1)
join
(Tabla3 join Tabla4 on Condicion2)
on condicion3
FUNCIONES DE AGRUPAMIENTO
Las funciones de agrupamiento sirven para que en base a un grupo de valores, ob
tener un resultado.
Las funciones mas comunes son:
SUM (Campo) Calcula la suma del grupo
AVG (Campo) Calcula el promedio del grupo
Max (Campo) Regresa el valor mas grande del grupo
MIN (Campo) Regresa el valor mas pequeo del grupo
COUNT (Campo) Cuenta los integrantes del grupo
La sintaxis para usar funciones de grupo es la siguiente:
select FAgrupamiento(Campo), CampoDeAgrupamiento
from tabla
group by CampoDeAgrupamiento
having CondicionGrupo
Un campo de agrupamiento es un campo con base al cual vamos a generar grupos, po
r ejemplo, si se calcula el total de clientes de una delegacion, el campo delega
cion seria el campo de agrupamiento.
En una consulta que tiene funciones de agrupamiento solo se pueden mostrar resul
tados de funciones de agrupamiento o Campos de agrupamiento. Esto debido a que t
ratamos de mostrar otro campo no seria posible decidir que informacion mostrar.
En este ejemplo si tratamos de mostrar tambien el campo nombre, el sql no sabra
cual nombre, de todos los clientes de una determinada delegacion mostrar.
Para condicionar grupos agregamos la clausuala having, having funciona de la mis
ma forma que el where solo que esta es para grupos.

SUBCONSULTAS
En ciertas ocasiones para poder resolver una consulta necesitamos de un valor al
macenado en la base de datos. Una subconsulta nos permite hacer esto, literalmen
te es una consulta metida dentro de otra, la cual se ejecuta primero para obtene
r un resultado y este resultado se usa en la consulta exterior para llegar al re
sultado final.
Por lo tanto necesitamos una forma de garantizar en este caso,que el resultado d
e la consulta interna unicamente regrese un registro, para lograr ese objetivo e
n lugar de usar el nombre usamos el identificador de producto
En realidad todos los resultados de una consulta pueden ser considerados como ta
blas, pero de acuerdo a la cantidad de datos que regresa y el tipo de estos, pod
riamos clasificarlo de la siguiente forma:
TIPO 1.- Un unico dato de un tipo especifico, generado por consultas en las que

en la parte del select solo existe un campo y de algun modo se garantiza que sol
o se regresara un registro, ya sea que se condicione mediante el identificador o
usando la clausula limit, o funciones de agregado sobre toda la tabla, etc.
select nombre
From tblClientes
where IdCliente=1
TIPO 2.- Un conjunto de datos del mismo tipo. Generado por consultas que en la p
arte del select tienen un unico campo pero en el where se regresan 2 o mas regis
tros
select nombre
From tblClientes
TIPO 3.- Un conjunto de datos de tipo diferente pero que tienen una relacion ent
re si.
select nombre, FechalAlta, Credito
From tblClientes
where IdCliente=1
TIPO 4.- Una tabla con varios datos de tipo diferente.
select nombre, FechalAlta, Credito
From tblClientes
Lo cual nos lleva a las siguientes restriciones:
En la parte del select unicamente pueden ir subconsultas del tipo 1
En la parte del from, pueden ir consultas de cualquier tipo pero se les tiene qu
e poner un alias
En operaciones aritmeticas, solo pueden usar consultas del tipo 1
En condiciones mediante operadores comparativos, solo se pueden usar del tipo 1,
aunque nos podemos ayudar de los operadores IN, ALL y ANY para extender sus cap
acidades y poder usar consultas de los demas tipos
Where campo in (valor1, valor2, ...) pide que campo sea igual a cualquiera de lo
s valores
where campo > all(valor1, valor2, valor3,...) pide que campo sea mayor a todos l
os valores
where campo > any (valor1, valor2, valor3,...) pide que campor sea mayor a cualq
uiera de los valores
Podemos reemplazar esta lista de valores por una subconsulta
Where campo in (subconsulta) pide que campo sea igual a cualquiera de los valore
s
where campo > all(subconsulta) pide que campo sea mayor a todos los valores
where campo > any (subconsulta) pide que campo sea mayor a cualquiera de los val
ores
Estas subconsultas pueden ser de cualquier tipo
ORDENAMIENTO
El ordenamiento de los registros se hace mediante la clausula order by esta se p
one al final se la consulta
select campo1, campo2..
from tabla
where condicion
order by tituloColumna1 ASC/DESC, tituloColumna2 ASC/DESC...
TituloColumna es la col con la cual vamos a ordenar

Ejemplo
--Ordena los clientes por nombre en orden descendente
select nombre
from tblClientes
order by nombre
LIMITE DE REGISTROS
Se puede establecer un limite de registros a mostrar.Una vez establecido dicho l
imite, la consulta siempre regresara la cantidad de registros indicados.
select campo1, campo2
from tblClientes
where condicion
limit Cantidad, PosInicial
Donde Cantidad es el numero de registros que se desean y la posicion inicial a p
artir de que registro se va a obtener
TRATAMIENTO DE NULOS
Un valor nulo es un valor especial que indica que dicho valor es desconocido, es
diferente de un 0 y de una cadena vacia en el sentido de que cualquier operacio
n que involucre a un nulo va a dar como resultado nulo.
numero/0=0
concat ('texto1', '')='Texto1'

numero/NULO=NULO
concant('Texto1', NULO)=NULO

Por su naturaleza el valor nulo necesita de tratamiento especial, empezando por


el condicionamito de registros, el cual se tiene que hacer de la siguiente forma
:
select nombre, credito
from tblClientes
where credito is null
IFNULL
Ifnull es una funcion que reemplaza nulos por el valor que se especifique
select ifnull (campo, NuevoValor)
CONDICIONALES EN CONSULTAS
CASE
La instruccion case regresa un resultado dependiendo de cual es la condicion que
se cumple, tiene 2 versiones:
version 1.- Sirve para cuando la condcion es sobre el mismo campo y todas las co
ndiciones son de igualdad
select case campo
when valor1 then Resultado1
when valor2 then Resultado2
...
else ResultadoDefault

End
--Muestra a la delegacion gustavo A. Madero como GAM
SELECT nombre,
delegacion,
CASE delegacion
WHEN 'Gustavo A. Madero' THEN 'GAM'
ELSE delegacion
END
FROM tblClientes
Version 2.- Es una version mas general, ya que en cada caso se puede especificar
sobre cualquier campo y poner cualquier tipo de condicion
select case
when condicion1 then Resultado1
when condicion2 then Resultado2
...
else ResultadoDefault
end

Das könnte Ihnen auch gefallen