sql manual de usuario

Upload: edwin-soriano-gonzales

Post on 09-Oct-2015

28 views

Category:

Documents


1 download

DESCRIPTION

todos los procedimiento almacenado

TRANSCRIPT

SQL IntroduccinEl SQL es un lenguaje estndar de programacin para el acceso a bases de datos.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 estndar ANSI para el acceso y manipulacin de los datos de cualquier base de datos.El SQL se compone de sentencias SQL, cada una con una utilidad diferente, como por ejemplo: Creacin de una base de datos (CREATE DATABASE) Creacin de una tabla (CREATE TABLE) Creacin de una vista (CREATE VIEW) Creacin de un ndice de una tabla (CREATE INDEX) Creacin de procedimientos almacenados (CREATE PROCEDURE) Creacin de disparadores (CREATE TRIGGER) Consultar los datos almacenados en una tabla (SELECT) Insertar datos en una tabla (INSERT) Modificar datos ya existentes en una tabla (UPDATE) Borrar datos almacenados en una tabla (DELETE) Dar permiso de acceso a los datos de una tabla (GRANT) Eliminar permisos de acceso a datos de una tabla (REVOKE) Finalizar la transaccin de una sentencia SQL (COMMIT) Retroceder la transaccin de una sentencia SQL (ROLLBACK).SQL SINTAXISUn sistema de base de datos suele contener varias bases de datos.Cada base de datos suele contener varias tablas.Las tablas almacenan los datos organizados por filas.Cada fila contiene varios campos.Cada campo tiene una serie de propiedades, como por ejemplo, el nombre del campo, su longitud, tipo de dato que se va a almacenar, etc.Las sentencias SQL no son sensibles a maysculas y minsculas, es decir, SELECT y select son dos palabras iguales para SQL.Algunos sistemas de bases de datos necesitan un punto y coma despus de cada sentencia SQL para ejecutarse correctamenteCREATE DATATABASE mibasedeatos;Este punto y coma tambin puede servir para separar una sentencia SQL de otra sentencia SQL en la misma lnea.CREATE DATATABASE mibasedeatos; CREATE TABLE mitabla1;Las sentencias SQL se pueden agrupar por funcionalidades:1.- Lenguaje de definicin de datos (DDL).DDL est compuesto por sentencias para la creacin (CREATE), modificacin (ALTER) y borrado (DROP) de los componentes principales de una base de datos: base de datos (DATABASE) tablas (TABLE) vistas (VIEW) ndices (INDEX) procedimientos almacenados (PROCEDURE) disparadores (TRIGGER).2.- Lenguaje de manipulacin de datos (DML).DML est compuesto por sentencias que sirven para : consultar (SELECT) insertar (INSERT) modificar (UPDATE) borrar (DELETE)3.- Lenguaje de control de datos (DCL).DCL est compuesto por sentencias SQL para controlar las funciones de administracin : Confirmar la operacion (COMMIT) Retroceder la operacion (ROLLBACK) Dar permisos (GRANT) Quitar permisos (REVOKE)

SQL SelectUna de las sentencias SQL ms importantes es SELECT, ya que permite realizar consultas sobre los datos almacenados en la base de datos.Sintaxis SQL SELECTSELECT * FROM nombretablaSELECT columna1, columna2 FROM nombretablaPara los ejemplos, tendremos la siguiente tabla de personas denominada personasEstos son los datos almacenados en la tabla personasnombreapellido1apellido2

ANTONIOPEREZGOMEZ

ANTONIOGARCIABENITO

LUISLOPEZPEREZ

Si queremos consultar todos los datos de la tabla personasSELECT * FROM personasEste ser el resultado:nombreapellido1apellido2

ANTONIOPEREZGOMEZ

ANTONIOGARCIABENITO

LUISLOPEZPEREZ

Si queremos consulta todos los nombres y primer apellido de todas las personasSELECT nombre, apellido1 FROM personasEsta ser el resultado:0) departamento varchar(255), }EjemploCHECKen ALTER TABLE en MySQLALTER TABLE departamentos ADD CHECK (dep>0)EjemploCHECK(con mltiples columnas) en ALTER TABLE en MySQLALTER TABLE personas ADD CHECK (per>0, edad>35)EjemploCHECKen ALTER TABLE en ORACLE, SQLSERVER y ACCESSALTER TABLE departamentos ADD CONSTRAINT ckdepart CHECK (dep>0)EjemploCHECKen ALTER TABLE con varias columnasALTER TABLE personas ADD CONSTRAINT ckpersona CHECK (pers>0, nombre=antonio)SQL DEFAULTLa restriccinDEFAULTse 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.SQL DEFAULTen la sentencia CREATE TABLECREATE 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 sistemaEn lugar de una funcin, podemos insertar una valor concreto 2001-01-01 o cualquier otro valor.SQL DEFAULT en la sentencia ALTER TABLE para MySQLALTER TABLE pedidos ALTER fecha DEFAULT 2012-01-01SQL DEFAULT en la sentencia ALTER TABLE para ORACLE, SQLSERVER, ACCESS:ALTER TABLE pedidos ALTER COLUMN fecha SET DEFAULT 2012-01-01Para borrar DEFAULT en MySQLALTER TABLE pedidos ALTER fecha DROP DEFAULTPara borrar DEFAULT en ORACLE, SQLSERVER, ACCESS:ALTER TABLE pedidos ALTER COLUMN fecha DROP DEFAULTSQL CREATE INDEXCREATE INDEXse utiliza para crear ndices en una tabla.Un ndice sirve para buscar datos rpidamente, 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 bsqueda as es mucho ms ptima en recursos y ms rpida en tiempo.Si esa columna de bsqueda no fuese ndice, entonces tendramos que recorrer de forma secuencial la tabla en busca de algn dato. Por eso, es importante crear un ndice por cada tipo de bsqueda que queramos hacer en la tabla.Actualizar una tabla con ndices tarda ms tiempo porque tambin 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.Sintaxis para SQLCREATE INDEXCREATE INDEX nombreindiceON nombretabla (nombrecolumna)La columna que forma parte de este ndice admite valores duplicados en su columna.Sintaxis para SQL CREATE UNIQUE INDEXCREATE UNIQUE INDEX nombreindiceON nombretabla (nombrecolumna)La columna que forma parte de este ndice NO admite valores duplicados en su columna, porque es una clave nica.Ejemplos paraSQL CREATE INDEXCreamos la ndice indicepersonas sobre la columna persona de la tabla personasCREATE INDEX indicepersonasON personas (persona)Si queremos crear un ndice sobre varias columnas, por ejemplo, apellido1 y apellido2CREATE INDEX indice2personasON personas(apellido1, apellido2)SQL DROPLa sentenciaDROPse utiliza para borrar definitivamente un ndice, tabla o base de datos.DROP INDEXSintaxis DROP INDEX para MySQLALTER TABLE nombretablaDROP INDEX nombreindiceSintaxis DROP INDEX para DB2 y ORACLEDROP INDEX nombreindiceSintaxis DROP INDEX para ACCESSDROP INDEX nombreindiceON nombretablaSintaxis DROP INDEX para SQLSERVERDROP INDEX nombretabla.nombreindiceDROP TABLESe utiliza DROP TABLE para borrar definitivamente una tablaDROP TABLE nombretablaDROP DATABASESe utiliza para borrar una base de datos definitivamente.DROP DATABASE nombrebasededatosSQL TRUNCATEEste comandoSQL TRUNCATEse utiliza para eliminar o borrar los datos que contiene una tabla.Es til cuando slo se quiere borrar los datos, pero no se quiere borrar la tabla.Este comando deja vaca una tabla, es decir, sin datos.TRUNCATE TABLE nombretablaSQL ALTERLa sentenciaSQL ALTERse utiliza para aadir, eliminar o modificar columnas de una tabla.Sintaxis SQL ALTERPara aadir una nueva columna a una tablaALTER TABLE nombretablaADD nombrecolumna tipodatocolumnaPara borrar una columna de una tablaALTER TABLE nombretablaDROP COLUMN nombrecolumnaPara modificar el tipo de dato de una columna de una tablaALTER TABLE nombretablaALTER COLUMN nombrecolumna tipodatocolumnaEjemplos de SQL ALTERpernombreapellido1apellido2

1ANTONIOPEREZGOMEZ

2ANTONIOGARCIARODRIGUEZ

3PEDRORUIZGONZALEZ

Dada la siguiente tabla de personas, queremos aadir una nueva columna, denominada 'fechadenacimiento'ALTER TABLE personasADD fechadenacimiento datepernombreapellido1apellido2fechadenacimiento

1ANTONIOPEREZGOMEZ

2ANTONIOGARCIARODRIGUEZ

3PEDRORUIZGONZALEZ

Si queremos modificar el tipo de dato de la columna fecha, y ponerle tipo 'year' en lugar de tipo 'date'ALTER TABLE personasALTER COLUMN fechadenacimiento yearSi queremos borrar la columna fechadenacimiento, y dejarlo igual que al principioALTER TABLE personasDROP COLUMN fechadenacimientopernombreapellido1apellido2

1ANTONIOPEREZGOMEZ

2ANTONIOGARCIARODRIGUEZ

3PEDRORUIZGONZALEZ

SQL AUTO INCREMENTAUTO INCREMENTpermite 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 nico en la tabla.Sintaxis SQL AUTO INCREMENTCREATE TABLE personas { persona int NOT NULL AUTO_INCREMENT, nombre varchar(255), apellido1 varchar(255), apellido2 varchar(255) }El valor inicial de una valor auto incremental (AUTO_INCREMENT) es 1, y se le va sumando 1 cada nuevo registro grabado en la tabla.Si queremos que el valor inicial sea 100 en lugar de 1ALTER TABLE personas AUTO_INCREMENT=100Para SQL SERVER se utiliza IDENTITY en lugar de AUTO_INCREMENTPara ACCESS se utiliza AUTOINCREMENT en lugar de AUTO_INCREMENTPara ORACLE se define de forma diferenteCREATE SEQUENCE persona MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10SQL VIEWSUna vista es una tabla virtual.SQL CREATE VIEWUna vista es una tabla virtual basada en el resultado de una consulta (SELECT) a una tabla.CREATE VIEW nombrevista ASSELECT nombrecolumna(s)FROM nombretablaWHERE condicinLas vista muestran siempre datos reales de una o varias tablas.Cada vez que un usuario pregunta o consulta una vista, el sistema de base de datos, actualiza los datos de la vista, para mostrar siempre datos reales.EjemploSQL CREATE VIEWEn la tabla personas>nombreapellido1apellido2edad

ANTONIOPEREZGOMEZ30

ANTONIOGARCIARODRIGUEZ45

PEDRORUIZGONZALEZ50

Creamos una vista con las personas que se llaman ANTONIOCREATE VIEW [personas que se llaman ANTONIO] ASSELECT nombre, apellido1, apellido2,edadFROM personasWHERE nombre = ANTONIOPara consultar los datos de una vistaSELECT * FROM [personas que se llama ANTONIO]En la vista [personas que se llama ANTONIO] tenemos los datos siguientes:>nombreapellido1apellido2edad

ANTONIOPEREZGOMEZ30

ANTONIOGARCIARODRIGUEZ45

SQL REPLACE VIEWPara reemplazar o modificar los datos de una vista:REPLACE VIEW [personas que se llama ANTONIO] ASSELECT nombre, apellido1, apellido2, edadFROM personasWHERE edad > 20SQL DROP VIEWPara borrar una vistaDROP VIEW nombrevistaEjemplo borrado de la vista antes creada:DROP VIEW [personas que se llama ANTONIO]SQL DATEExisten diferentes formatos para almacenar las fechas y horas en los distintos sistemas de bases de datos.Los tipos de datos de cada columna se definen cuando se crea la tabla.Tipos de Datos para las fechas y horas en la base de datos MySQLTipoFormatoEjemplo

DATEYYYY-MM-DD2008-11-11

DATETIMEYYYY-MM-DD HH:MM:SS2008-11-11 13:23:44

TIMESTAMPYYYY-MM-DD HH:MM:SS

YEARYYYY o YY

Funciones para MySQL sobre estos tipos de datos de fecha anterioresNOWMuestra la fecha y hora actuales. Por ejemplo: 2008-11-11 12:45:34

CURDATEMuestra la fecha actual. Por ejemplo: 2008-11-11

CURTIMEMuestra la hora actual. Por ejemplo: 12:45:34

DATEMuestra la parte fecha de una expresin fecha/hora

EXTRACTMuestra una parte de una expresin fecha/hora

DATE_ADDMuestra una fecha como suma de un intervalo de tiempo a una fecha

DATE_SUBMuestra una fecha como resta de un intervalo de tiempo a una fecha

DATEDIFFMuestra el nmero de das entre 2 fechas

DATE_FORMATMuestra una fecha y hora con diferentes formatos

Tipos de Datos para fechas y horas en la base de datos SQL ServerDATEFormato YYYY-MM-DD

DATETIMEFormato YYYY-MM-DD HH:MM:SS

SMALLDATETIMEFormato YYYY-MM-DD HH:MM:SS

TIMESTAMPSe genera un valor basado en la hora del sistema. Se actualiza automticamente.

Funciones para SQL Server sobre los tipos de datos de fecha y hora anterioresGETDATEMuestra la fecha y hora actuales

DATEPARTMuestra parte de una fecha y hora

DATEADDMuestra una fecha como suma o resta de un intervalo de tiempo sobre una fecha

DATEDIFFMuestra el tiempo entre 2 fechas

CONVERTMuestra la fecha y hora en diferentes formatos

Ejemplos del uso de fecha y horaCREATE TABLE pedidos(idpedido int NOT NULL,nombreproducto varchar(50) NOT NULL,fechapedido datetime NOT NULLPRIMARY KEY (idpedido))idpedidonombreproductoFechapedido

1papel oficina2012-02-23 14:05:00

Si queremos almacenar solo la fecha (y no la hora) utilizaremos el tipo de datos date en lugar de datetime.SQL VALORES NULLEl valorNULLrepresenta a un valor desconocido.Este valorNULLpuede ser asignado como valor a cualquier columna de una tabla.Si el valor de una columna es opcional, quiere decir, que podemos insertar una fila en la tabla sin asignarle ningn valor a esa columna opcional, as que esa columna tomar el valor NULL.El valorNULLes un valor especial, y por tanto, no se puede comparar con los operadores aritmticos normales (=, >, nombreapellido1apellido2edad

ANTONIOPEREZ30

LUISLOPEZPEREZ45

ANTONIOGARCIA50

Ejemplo de uso deIS NULLSELECT * FROM personas WHERE apellido2 IS NULL>

nombreapellido1apellido2edad

ANTONIOPEREZ30

ANTONIOGARCIA50

Ejemplo de uso deIS NOT NULLSELECT * FROM personas WHERE apellido2 IS NOT NULL>nombreapellido1apellido2edad

LUISLOPEZPEREZ45

SQL FUNCIONES NULLSi queremos cambiar un valorNULLpor otro valor cualquiera, utilizaremos las siguientes funciones (ISNULL, IFNULL, NVL, COLACESCE) segn el sistema de base de datos.Para nuestros ejemplos, queremos que si el valor es NULL se cambie por el valor 0Ejemplo para SQL SERVER se utiliza ISNULL:SELECT producto,preciounidad * (unidadesstock + ISNULL(unidadespedido, 0)FROM productosEjemplo para ORACLE se utiliza NVL:SELECT producto,preciounidad * (unidadesstock + NVL(unidadespedido, 0)FROM productosEjemplo para MySQL, hay 2 funciones equivalentes (IFNULL, COALESCE):SELECT producto,preciounidad * (unidadesstock + IFNULL(unidadespedido, 0)FROM productosSELECT producto,preciounidad * (unidadesstock + COALESCE(unidadespedido, 0)FROM productosSQL Tipos de datos de texto en MySQLTipos de datosy rango de datos para el sistema de gestin de bases de datosMySQLTipos de datos deTEXTOen MySQLCHAREl tipo de datoCHARsirve para almacenar una cadena de datos de longitud fija.Puede contener caracteres, nmeros y caracteres especiales.La longitud fija se define entre parntesis, y siempre reservar espacio para esta longitud aunque no se utilice.Por ejemplo, CHAR(50), ser un campo de longitud fija de 50 posiciones.La longitud mxima que podemos definir un campo CHAR es de 255.

VARCHAREl tipo de datosVARCHARsirve para almacenar una cadena de datos (caracteres, nmeros y caracteres especiales) de longitud variable.La longitud mxima es de 255 caracteres.Hace un buen uso del espacio en disco, porque no reserva el espacio de la longitud mxima definida, si no que solo ocupa espacio el tamao real de los datos almacenados en ese campo.Es el tipo de dato ms utilizado para campos pequeos.

TINYTEXTEl tipo de datosTINYTEXTsirve para almacenar una cadena de datos (solo caracteres, no admite nmero ni caracteres especiales) de una longitud mxima de 255 caracteres.

TEXTEl tipo de datoTEXTsirve para almacenar una cadena de caracteres de longitud mxima de 65,535 caracteres.

BLOBEl tipo de datosBLOBsirve para almacenar datos de tipo BLOB (Binary Large Object).Admite una longitud mxima de 65,535 bytes de datos.

MEDIUMTEXTEl tipo de datoMEDIUMTEXTsirve para almacenar una cadena con una longitud mxima de 16.777.215 caracteres.

MEDIUMBLOBEl tipo de datosMEDIUMBLOBSirve para almacenar datos tipo BLOB con longitud mxima 16.777.215 bytes.

LONGTEXTEl tipo de datoLONGTEXTsirve para almacenar una cadena de longitud mxima de 4.294.967.295 caracteres.

LONGBLOBEl tipo de datoLONGBLOBsirve para almacenar un BLOB de longitud mxima de de 4.294.967.295 bytes.

ENUMEl tipo de datoENUMsirve para introducir una lista de posibles valores.La longitud mxima es de 65.535 posibles valores.Si se intenta introducir un valor en este campo, que no est incluido en la lista, no se insertar nada y tendr un valor vaco ().Por ejemplo si definimos una columna como ENUM(uno, dos), entonces en esta columna solo puede almacenar los valores uno o dos.Si queremos insertar cualquier otro valor (por ejemplo tres), no se grabar tres y en su lugar quedar el campo vaco, sin valor ().

SETEl tipo de datoSETes similar a ENUM pero la longitud mxima de valores posibles es de 64, y los valores posibles se pueden combinar.Por ejemplo, si definimos una columna como SET (uno, dos) entonces esa columna podr tomar los siguientes valores uno o dos o uno,dos, dos,uno.SQL Tipos de datos de numricos en MySQLTipos de datos numricospara el sistema de gestin de bases de datosMySQLMySQL admite los siguientes tipos de datos numricos para sus columnasTINYINTEl tipo de dato numricoTINYINTpermite nmeros desde -128 hasta 127.Tambin se puede definir como UNSIGNED (sin signo), entonces los valores posibles empiezan en 0 hasta 255.Opcionalmente, se puede definir el nmero mximo de dgitos entre parntesis (tamao).

SMALLINTEl tipo de dato numricoSMALLINTpermite nmeros desde -32768 hasta 32767.Tambin se puede definir como UNSIGNED (sin signo), entonces los valores posibles empiezan en 0 hasta 65535.Opcionalmente, se puede definir el nmero mximo de dgitos entre parntesis

MEDIUMINTEl tipo de dato numricoMEDIUMINTpermite nmeros desde -8388608 hasta 8388607.Tambin se puede definir como UNSIGNED (sin signo), entonces los valores posibles empiezan en 0 hasta 16777215.Opcionalmente, se puede definir el nmero mximo de dgitos entre parntesis

INTEl tipo de dato numricoINTpermite nmeros desde -2147483648 hasta 2147483647.Tambin se puede definir como UNSIGNED (sin signo), entonces los valores posibles empiezan en 0 hasta 4294967295.Opcionalmente, se puede definir el nmero mximo de dgitos entre parntesis

BIGINTEl tipo de dato numricoBIGINTpermite nmeros desde -9223372036854775808 hasta 9223372036854775807.Tambin se puede definir como UNSIGNED (sin signo), entonces los valores posibles empiezan en 0 hasta 18446744073709551615.Opcionalmente, se puede definir el nmero mximo de dgitos entre parntesis

FLOATEl tipo de dato numricoFLOATpermite almacenar pequeos nmeros decimales (de punto flotante).Al ser de punto flotante, sus clculos son aproximados. Podemos especificar el nmero mximo de dgitos (tamao) y el nmero de decimales (decimal).FLOAT(6,2) tendr 4 dgitos enteros y 2 decimales, por ejemplo, 5467.67

DOUBLEEl tipo de dato numricoDOUBLEpermite almacenar grandes nmeros decimales (de punto flotante).Al ser de punto flotante, sus clculos son aproximados. Podemos especificar el nmero mximo de dgitos (tamao) y el nmero de decimales (decimal).DOUBLE(5,1) tendr 4 dgitos enteros y 1 dgito decimal, por ejemplo, 5467.1

DECIMALEl tipo de dato numricDECIMALpermite almacenar grandes nmeros decimales de punto fijo, por tanto, los clculos con este tipo DECIMAL son exactos.Podemos especificar el nmero mximo de dgitos (tamao) y el nmero de decimales (decimal). El nmero mximo de dgitos es de 65.Por ejemplo DECIMAL(20,6) quiere decir que tendr 14 dgitos enteros y 4 dgitos decimales.SQL Tipos de datos fecha en MySQLEn MySQL pueden existir los siguientes tipos de datos parafechas

DATEEl tipo de datoDATEsirve para almacenar una fecha con el formato YYYY-MM-DD (4 dgitos para el ao, guin, 2 dgitos para el mes, guin, 2 dgitos para el da).

DATETIMEEl tipo de datoDATETIMEsirve para almacenar fecha y hora, con el formato YYYY-MM-DD HH:MM:SS

TIMESTAMPEl tipo de datoTIMESTAMPes equivalente al tipo anterior, DATETIME, YYYY-MM-DD HH:MM:SS

TIMEEl tipo de datoTIMEsirve para almacenar la hora con el formato HH:MM:SS

YEAREl tipo de datoYEARsirve para almacenar el ao con el formato YYYYFunciones SQLSQL tiene funciones predefinidas para realizar ciertos clculos con un mayor rendimiento.

AVGDevuelve el valor medio de una columna.

COUNTDevuelve el nmero de filas de la consulta.

FIRSTDevuelve el primer valor de la consulta.

LASTDevuelve el ltimo valor de la consulta.

MAXDevuelve el mayor valor de una columna.

MINDevuelve el menor valor de una columna.

SUMDevuelve la suma de los valores de una columna.

GROUP BYAgrupar filas con el mismo valor de una columna.

HAVINGIncluir condiciones con funciones SQL.

UCASEConvierte un valor a maysculas.

LCASEConvierte un valor a minsculas.

MIDExtrae caracteres de un campo de texto.

LENDevuelve la longitud de un campo de texto.

ROUNDRedondea un campo numrico a un nmero de decimales especificado.

NOWDevuelve la fecha y hora actuales del sistema.

FORMATFormatea un campo segn se quiera mostrar.

Funcin SQL AVGLa funcin AVG devuelve el valor medio de una columna de tipo numrico.Sintaxis SQL AVG:SELECT AVG(columna) FROM tablaEjemplo SQL AVG:Tabla pedidosidpedidoclienteprecio

1p1RUIZ100

2p2PEREZ300

3p3GOMEZ250

4p4RODRIGUEZ490

5p5LOPEZ60

Si quieres saber el valor medio del campo precio, usa la siguiente funcin SQLSELECT AVG(precio)AS preciomedioFROM pedidosLa tabla resultante seraPreciomedio

240

Si quieres seleccionar los clientes con el precio del pedido superior al precio medio de los pedidos.SELECT * FROM pedidosWHERE precio > (SELECT AVG(precio) FROM pedidos)idpedidoClienteprecio

2p2PEREZ300

3p3GOMEZ250

4p4RODRIGUEZ490

Funcin SQL COUNTLa funcin COUNT devuelve el nmero de filas de la consulta, es decir, el nmero de registros que cumplen una determinada condicin.Los valores nulos no sern contabilizados.Sintaxis de SQL COUNT:SELECT COUNT(columna) FROM tablaPara obtener el nmero de filas de una tablaSELECT COUNT(*) FROM tablaPara obtener el nmero de valores distintos de la columna especificada.SELECT COUNT(DISTINCT columna) FROM tabla.Ejemplos de SQL COUNT:Dada la siguiente tabla pedidosidpedidoClienteprecio

1p1RUIZ100

2p2PEREZ300

3p3GOMEZ250

4p4RODRIGUEZ490

5p5LOPEZ60

SELECT COUNT(*) FROM pedidosDevolver el nmero de filas de la tabla, es decir, 5SELECT COUNT(*) FROM pedidosWHERE cliente = RUIZDevolver el nmero de filas del resultado de la consulta, es decir, 1SELECT COUNT(*) FROM pedidosWHERE precio > 270Devolver el nmero de filas del resultado de la consulta, es decir, 2Funcin SQL FIRSTLa funcin SQL FIRST devuelve el primer valor de la columna seleccionada.Sintaxis SQL FIRST:SELECT FIRST(columna) FROM tableEjemplo SQL FIRST:Dada la siguiente tabla pedidosidpedidoclienteprecio

1p1RUIZ100

2p2PEREZ300

3p3GOMEZ250

4p4RODRIGUEZ490

5p5LOPEZ60

SELECT FIRST(precio) FROM pedidosDevolver el valor 100, que es el valor de la columan precio de la primera fila de la tabla.Funcin SQL LASTLa funcin SQL LAST sirve para obtener el valor de una columna de la ltima fila de la seleccin.Sintaxis SQL LAST:SELECT LAST(columna) FROM tableEjemplo SQL LAST:Dada la siguiente tabla pedidosidPedidoclienteprecio

1p1RUIZ100

2p2PEREZ300

3p3GOMEZ250

4p4RODRIGUEZ490

5p5LOPEZ60

SELECT LAST(precio) FROM pedidosDevolver el valor 60, que es el valor de la columna precio de la ltima fila de la tabla.Funcin SQL MAXLa funcin MAX sirve para obtener el mayor valor para una columna determinada.Sintaxis SQL MAX:SELECT MAX(columna) FROM tablaEjemplo SQL MAX:Dada la siguiente tabla pedidosidPedidoclienteprecio

1p1RUIZ100

2p2PEREZ300

3p3GOMEZ250

4p4RODRIGUEZ490

5p5LOPEZ60

SELECT MAX(precio) FROM pedidosDevolver el valor 490, que es mximo valor de la columna precio de la consulta.Funcin SQL MINLa funcin MIN sirve para obtener el valor ms pequeo para una columna determinada.Sintaxis SQL MIN:SELECT MIN(columna) FROM tablaEjemplo SQL MIN:Dada la siguiente tabla pedidosidpedidoClienteprecio

1p1RUIZ100

2p2PEREZ300

3p3GOMEZ250

4p4RODRIGUEZ490

5p5LOPEZ60

SELECT MIN(precio) FROM pedidosDevolver el valor 60, que es valor ms pequeo de la columna precio de la consulta.Funcin SQL SUMLa funcin SUM permite obtener la suma total de los valores de una columna de tipo numrico.Sintaxis SQL SUMSELECT SUM(columna) FROM tablaDada la siguiente tabla pedidosidpedidoClienteprecio

1p1RUIZ100

2p2PEREZ300

3p3GOMEZ250

4p4RODRIGUEZ490

5p5LOPEZ60

SELECT SUM(precio) FROM pedidosDevolver el valor 1200, que es la suma de todos los valores de la columna precio de la consulta realizada, en este caso, de toda la tabla.FUNCION SQL GROUP BYLa funcin GROUP BY se utiliza para juntar filas de resultados que coincidan en el valor de alguna columna seleccionada.Sintaxis GROUP BYSELECT columna, funcion(columna)FROM tablaGROUP BY columnaEjemplo de uso de GROUP BYDada la siguiente tabla pedidosidpedidoclienteprecio

1p1RUIZ100

2p2PEREZ300

3p3GOMEZ250

4p4RUIZ490

5p5GOMEZ60

SELECT cliente, SUM(precio)FROM pedidosGROUP BY clienteEl resultado ser el siguiente:clienteSUM(precio)

RUIZ590

PEREZ300

GOMEZ310

El cliente RUIZ se repite 2 veces, se suman sus valores para la columna precio 490 + 100 = 590El cliente PEREZ se queda igual, con el valor para precio de 300.El cliente GOMEZ se repite 2 veces, y se suman sus valores para la columna precio 250 + 60 = 310Nota: Se puede agrupar tambin por varias columnas.GROUP BY columna1, columna2FUNCION SQL HAVINGLa funcin HAVING se utiliza para incluir condiciones con alguna funcin SQL del tipo SUM, MAX, ..Como la clusula WHERE no se puede utilizar con funciones SQL del tipo SUM, MAX, entonces utilizamos en su lugar, HAVING.Sintaxis HAVINGSELECT columna1, SUM(columna2)FROM tablaGROUP BY columna1HAVING SUM(columna2) < nmeroEjemplo de SQL HAVINGDada la siguiente tabla pedidosidpedidoclienteprecio

1p1RUIZ100

2p2PEREZ300

3p3GOMEZ250

4p4RUIZ490

5p5GOMEZ60

SELECT cliente, SUM(precio)FROM pedidosGROUP BY clienteHAVING SUM(precio) > 500El resultado sera:clienteSUM(precio)

RUIZ590

Solamente el cliente RUIZ suma en sus valores para precio 490 + 100 = 590 un valor superior a 500El cliente GOMEZ suma en sus valores para la columna precio 250 + 60 = 310, que tambin es menor de 500, y por tanto, no aparece en la tabla resultante.El cliente PEREZ obtiene un valor de 300, y tampoco aparece en la tabla, porque es menor de 500.Funcin SQL UCASELa funcin UCASE sirve para convertir a maysculas el valor de una columna.Sintaxis SQL UCASESELECT UCASE(columna)FROM tablaEjemplo SQL UCASE:Dada la siguiente tabla pedidosidpedidoclienteprecio

1p1Ruiz100

2p2Perez300

3p3Gomez250

SELECT UCASE(cliente)FROM pedidosEl resultado sera:

Cliente

RUIZ

PEREZ

GOMEZ

Funcin SQL LCASELa funcin LCASE sirve para convertir a minsculas el valor de una columna.Sintaxis SQL LCASESELECT LCASE (columna) FROM tablaEjemplo SQL LCASE:Dada la siguiente tabla pedidosidpedidoclientePrecio

1p1Ruiz100

2p2Perez300

3p3Gomez250

SELECT LCASE (cliente) FROM pedidosEl resultado sera:Cliente

Ruiz

Perez

Gomez

Funcin SQL MIDLa funcin MID se utiliza para extraer caracteres de un campo de textoSintaxis SQL MIDSELECT MID(columna, inicio, longitud)FROM tablacolumna es la columna donde se quiere extraer datos de su valor.inicio es la posicin desde la que empezar a extraer.longitud es el nmero de caracteres a extraer. En caso de no especificarlo, coger hasta el final del campo de texto.Ejemplo de SQL MID:Dada la siguiente tabla pedidosidpedidoclientePrecio

1p1Ruiz100

2p2Perez300

3p3Gomez250

Si queremos extraer los primeros 3 caracteres de los valores de la columna cliente:SELECT MID(cliente,1,3) FROM pedidosEl resultados ser:Cliente

Rui

Per

Gom

Funcin SQL LENLa funcin LEN sirve para calcular la longitud del valor de un campo de texto.Sintaxis SQL LENSELECT LEN(columna) FROM tablaEjemplo SQL LENDada la siguiente tabla pedidosidpedidoclienteprecio

1p1Ruiz100

2p2Perez300

3p3Rodriguez250

Si queremos saber la longitud de cada valor de la columna cliente:SELECT LEN(cliente) AS cliente FROM pedidosCliente

4

5

9

Funcin SQL ROUNDLa funcin ROUND se utiliza para redondear un campo numrico en un nmero de decimales especificado.Sintaxis SQL ROUNDSELECT ROUND(columna, decimales) FROM tablaEjemplo SQL ROUNDDada la siguiente tabla pedidosidpedidoClienteprecio

1p1Ruiz100.25

2p2Perez305.57

3p3Rodriguez250.84

Si queremos los precios de los pedidos sin nmeros decimales, ejecutaremos:SELECT ROUND(precio,0) AS rprecioFROM pedidosEl resultado sera:rprecio

100

306

251

Funcin SQL NOWLa funcin NOW devuelve la fecha y hora actuales.Sintaxis SQL NOWSELECT NOW() FROM tableEjemplo SQL NOWDada la siguiente tabla productosidproductoprecio

1ordenador1200.25

2impresora65.57

3teclado10.84

Si queremos saber los precios de los productos a fecha de hoySELECT producto, precio, NOW() AS fechaFROM productosEl resultado ser:productoprecioFecha

ordenador900.2510/2/2012 10:15:42 AM

impresora65.5710/2/2012 10:15:42 AM

teclado10.8410/2/2012 10:15:42 AM

Funcin SQL FORMATLa funcin FORMAT se utiliza para especificar como se mostrar un campo en el resultado de la consulta.Sintaxis SQL FORMATSELECT FORMAT(columna, formato) FROM tablaEjemplo SQL FORMATDada la siguiente tabla productos

idProductoPrecio

1ordenador1200.25

2Impresora65.57

3Teclado10.84

Si queremos saber los precios de los productos a fecha de hoy, pero queremos que la fecha tenga el formato YYYY-MM-DD, es decir, 4 caracteres para el ao, guin, 2 caracteres para el mes, guin y 2 caracteres para el da.SELECT producto, precio,FORMAT(NOW(), YYYY-MM-DD)AS fechaFROM productosEl resultado ser:Productopreciofecha

Ordenador900.252012-02-10

Impresora65.572012-02-10

Teclado10.842012-02-10