CURSO SQL PRACTICO Wintell Nov 2008 ITConsulting Tel: 777-318-6493 Londres #109-A. Fracc. Prados de Cuernavaca Curso SQL Practico
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting Tel: 777-318-6493 Londres #109-A. Fracc. Prados de Cuernavaca
Curso SQL Practico
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting Indice Pagina 2 de 39
1.-Tipos de datos............................................................................................................. 5 Tipos Numéricos............................................................................................................. 5 Tipos de Fecha y Hora. ................................................................................................... 5 Tipos Carácter. ............................................................................................................... 6 2.- Añadir registros nuevos. ............................................................................................ 7 Inserción simple.............................................................................................................. 7 Insercion de multiples tablas ........................................................................................... 7 3.- Borrado de Registros. ................................................................................................ 8 Eliminación Simple......................................................................................................... 8 Eliminación de múltiples tablas....................................................................................... 8 4.- Actualización de Registros......................................................................................... 9 Actualización Simple ...................................................................................................... 9 Actualización en base a múltiples tablas.......................................................................... 9 5.- Selección de registros ...............................................................................................10 Tabla comparativa de parámetros que agilizan la velocidad de selección........................10 Parámetros de agilización de conexiones........................................................................10 Connection TimeOut......................................................................................................10 Interactive Timeout........................................................................................................10 Read, Write y Wait Timeout ..........................................................................................10 Max Package Size..........................................................................................................11 Caching of hostnames ....................................................................................................11 Name Resolving ............................................................................................................11 SELECT ........................................................................................................................11 ALL...............................................................................................................................11 DISTINCT.....................................................................................................................11 DISTINCTROW............................................................................................................11 [HIGHPRIORITY] ........................................................................................................12 [STRAIGHT JOIN] .......................................................................................................12 select_expr.....................................................................................................................12 FROM ...........................................................................................................................12 WHERE ........................................................................................................................12 [GROUP BY] ................................................................................................................12 [ORDER BY] ................................................................................................................12 Ejemplos Prácticos.........................................................................................................12 Selección Simple ...........................................................................................................12 Selección de múltiples tablas .........................................................................................12 Selección de datos resultados de operaciones. ................................................................12 6.- Funciones SQL .........................................................................................................13 Funciones para cálculos de resúmenes o datos estadísticos. ............................................13 Count.............................................................................................................................13 Greatest. ........................................................................................................................13 Least. .............................................................................................................................13 Max. ..............................................................................................................................13 Min................................................................................................................................13 Sum. ..............................................................................................................................13
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting Indice Pagina 3 de 39
Avg................................................................................................................................13 Funciones para expresiones de selección con fechas.......................................................13 Addates..........................................................................................................................13 Addtime.........................................................................................................................13 current_date...................................................................................................................13 current_time...................................................................................................................13 date_add ........................................................................................................................14 date_sub.........................................................................................................................14 Date...............................................................................................................................14 Datediff .........................................................................................................................14 Day................................................................................................................................14 Month. ...........................................................................................................................14 Year...............................................................................................................................14 Dayname. ......................................................................................................................14 Dayofweek. ...................................................................................................................14 Dayofyear. .....................................................................................................................14 Extract. ..........................................................................................................................14 Hour. .............................................................................................................................14 Minute. ..........................................................................................................................14 Second...........................................................................................................................14 Now...............................................................................................................................14 Monthname....................................................................................................................14 str_to_date. ....................................................................................................................14 Timediff.........................................................................................................................14 Funciones de uso general. ..............................................................................................15 Upper.............................................................................................................................15 Lower. ...........................................................................................................................15 Substr. ...........................................................................................................................15 Substrindex....................................................................................................................15 Concat. ..........................................................................................................................15 Trim...............................................................................................................................15 Ltrim. ............................................................................................................................15 Rtrim. ............................................................................................................................15 7.- Referencias Cruzadas en MySQL .............................................................................16 Definición......................................................................................................................16 Ejemplo .........................................................................................................................16 Ejemplos Prácticos.........................................................................................................17 8.- Importación, Exportación de datos a MySQL............................................................18 Configuración de Servidores ..........................................................................................18 Activación de Conexión.................................................................................................19 Importación de datos de un archivo de Excel..................................................................20 Inicio de Wizard de Importación ....................................................................................21 Exportación de Datos.....................................................................................................24 Configuración de conexión para MySQL Query Browser...............................................24 Selección de Base de datos.............................................................................................25 Exportación de set de resultados ....................................................................................26
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting Indice Pagina 4 de 39
9 Generación de Informes y Consultas Cruzadas. ...........................................................27 Creación de Base de datos intermediaria ........................................................................27 Vinculación de tablas.....................................................................................................27 Especificación de archivo de origen de datos o DSN......................................................28 Selección de tablas a vincular ........................................................................................28 Creación de vista de consulta a tablas vinculadas. ..........................................................29 Captura de Query...........................................................................................................30 Ejecución de la consulta.................................................................................................30 Impresión o visualización de reporte de resultados.........................................................30 Uso de Informes para la visualización o impresión de un conjunto de resultados............31 Selección de columnas del reporte .................................................................................31 Selección de niveles de agrupamiento ............................................................................31 Selección de columnas para ordenado de resultados.......................................................32 Selección de esquema de distribución del informe .........................................................32 Selección de esquema o estilo de visualización de informe ............................................32 Visualización de informe ...............................................................................................33 APENDICES.................................................................................................................34 APENDICE I.................................................................................................................34 Biblioteca de funciones de MySQL................................................................................34
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting I Tipos de Datos Pagina 5 de 39
1.-Tipos de datos
1.- Tipos de datos Table
Table
TEXT
BYTE
BYTE
CHAR
VARCHAR
BLOB
BLOB
PICT able
TEXT
BYTE
BYTE
CHAR
VARCHAR
BLOB
BLOB
PIC
MySQL soporta una gran variedad de tipos de datos, que se pueden agrupar en 3 grandes grupos:
• Tipos Numéricos • Tipos Carácter • Tipos de Fecha y Hora
Todos los tipos de datos aceptan los siguientes modificadores: Unsigned. Signed. [M,D] Donde M indica el Numero de Bytes para la columna y D la precisión de valores de tipo flotante. A continuación se listara y describirá brevemente los distintos tipos de datos. Tipos Numéricos. TINYINT.- Dato Entero de 1 Byte de longitud. BIT, BOOL, BOOLEAN.- Valores booleanos de tipo numérico donde 1=Verdadero y 0=Falso. SMALLINT.-Dato Entero de 2 Bytes de longitud (0-65535 sin signo o -32768 a 32767). MEDIUMINT.- Dato Entero de 3 Bytes (0-16777215 sin signo o -8388608 a 8388607) INT, INTEGER.- Dato Entero normal de 4 Bytes con un rango de 0 a 4294967295 sin signo o -
2147483648 a 2147483647. BIGINT.-Dato Entero de 8Bytes. Es importante anotar que dadas las limitantes de procesamiento
de la unidad de aritmética entera, las operaciones con datos enteros de 8bytes sin signo se realizan en base a múltiples operaciones sobre LB y HB de 4Bytes o bajo aritmética de punto flotante, razón por la cual debe ser tomado en cuenta al momento de decidir su empleo dado su coste en tiempo de procesamiento y cantidad de MIPS requeridas.
FLOAT[M,D].-Dato de tipo flotante de simple precisión con rango entre -3.402823466E+38 to -1.175494351E-38
DOUBLE[M,D].-Dato de tipo flotante de doble precisión, con rango entre -1.7976931348623157E+308 to -2.2250738585072014E-308
Tipos de Fecha y Hora. DATE.- Dato de tipo fecha siempre almacenado en formato YYYY-MM-DD. DATETIME.- Dato de tipo fecha y hora almacenado en formato YYYY-MM-DD HH:MM:SS. TIMESTAMP.-Dato de tipo fecha y hora autoregistrado. TIME.- Dato de tipo hora almacenado en formato hora HH:MM:SS.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting I Tipos de Datos Pagina 6 de 39
Tipos Carácter. CHAR, VARCHAR.- Dato de tipo carácter de longitud variable, con una longitud máxima de
255 caracteres. A menos que se utilice el modificador BINARY, las búsquedas y comparaciones se realizan de modo no sensible a mayúsculas/minúsculas.
BLOB, TEXT.- Dato de tipo carácter de longitud variable, con una longitud máxima de 65535 caracteres.
MEDIUM BLOB, MEDIUM TEXT.-Dato de tipo carácter de longitud variable, con una longitud máxima de 16777215 caracteres.
LONG BLOB,LONG TEXT.- Dato de tipo carácter de longitud variable, con una longitud de 4G ENUM.- Permite la creación de tipos personalizados de hasta 65535 valores escalares.
Es importante considerar los rangos o limites de operación así como el tiempo de procesamiento requerido para operaciones o consultas y ordenamientos, además de la compatibilidad de los tipos de datos con sus homólogos en otras plataformas, como son Access, Excell, VS o Macropro, pues el intercambio de datos no conoce el auto-casting y es posible perder información en los procesos de transferencia o consulta de datos.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 2 Agregar Registros Nuevos. Pagina 7 de 39
2.- Añadir registros nuevos.
2.- Añadir registros nuevos.
Para agregar registros nuevos en una tabla de MySQL, se utiliza el comando: INSERT, tal como a continuación se describe: Inserción simple INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] Ejemplo: INSERT INTO Tabla1 (Columna1, columna2, columna3) values (‘A’,1,1.12) La línea anterior inserta en la tabla “Tabla1” los valores ‘A’, 1, 1.12 en las columnas Columna1, Columna2, Columna3 respectivamente. O: INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] tbl_name SET col_name={expr | DEFAULT}, ... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] Ejemplo: INSERT INTO Tabla1 SET Columna1=’A’, Columna2=1, Columna3=1.12 O Insercion de multiples tablas INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] SELECT ... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] La sintaxis anterior permite la inserción de múltiples valores provenientes de múltiples tablas e incluso acotar la inserción en base a algún criterio de selección a una tabla destino. Ejemplo: INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
El ejemplo anterior insertara los valores de la columna fld_order_id de la tabla tbl_temp1 con valor mayor que 100 en la tabla tbl_temp2.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 3 Borrado de Registros. Pagina 8 de 39
3.- Borrado de Registros.
3.- Borrado de Registros.
La eliminación de registros implica en primera instancia la localización de registros existentes, razón por la cual introduciremos la sintaxis básica de una expresión de selección. Eliminación Simple DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] Ejemplo: DELETE FROM Tabla1 WHERE Columna1=1 O para múltiples tablas. Eliminación de múltiples tablas DELETE [LOW_PRIORITY] [QUICK] [IGNORE] tbl_name[.*] [, tbl_name[.*]] ... FROM table_references [WHERE where_condition] Ejemplo:
DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id;
En este ejemplo se eliminan todos los registros de t1 y t2 que cumplan con la condición de:
t1.id=t2.id AND t2.id = t3.id Es posible utilizar cualquier tipo de expresión de selección tal como se muestra a continuación:
DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL; En este ejemplo se eliminan todos los registros de la tabla t1 que no existen en t2
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 4 Actualización de Registros. Pagina 9 de 39
4.- Actualización de Registros
4.- Actualización de Registros
La actualización de registros consiste en la localización de registros existentes y modificación de uno, varios o todos los datos en las columnas del mismo.
Para este propósito se utiliza la sentencia: UPDATE Actualización Simple
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
Ejemplo:
UPDATE persondata SET age=age+1 WHERE name=’John’; En este ejemplo se incrementara la edad de todas las personas de nombre John. O Actualización en base a múltiples tablas
UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition]
Ejemplo:
UPDATE items,month SET items.price=month.price WHERE items.id=month.id;
En este ejemplo se actualizara la tabla ítems, modificando la columna price de la tabla ítems, asignándole el valor de la tabla month.price, donde ítems.id=month.id
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 5 Selección de Registros. Pagina 10 de 39
5.- Selección de registros
5.- Selección de registros
La selección de registros en tablas de una base de datos, es la tarea más común y frecuente. Antes de iniciar con la discusión sobre sintaxis y métodos de selección primero resaltaremos algunos puntos a considerar durante el diseño u optimización de la base de datos para una localización y entrega de datos, más rápida y eficiente. Dado que la selección de registros es la tarea mas frecuente y común al operar con bases de datos, debemos siempre pensar en el diseño de una base de datos y sus tablas, siempre considerando:
• La frecuencia con que se realizara cierta selección o Query. • El tamaño del vector de resultados que esperamos recibir. • El numero de usuarios que simultáneamente ejecutaran la misma selección o Query. • La velocidad que requerimos para la selección y entrega del vector.
A continuación mostraremos algunos puntos a considerar que impactan en algunos de los puntos antes mencionados.
Sin adentrarnos en una discusión detallada sobre el tema, para nuestros propósitos nos basta con la visualización la siguiente tabla: Tabla comparativa de parámetros que agilizan la velocidad de selección
Esquema Velocidad de Selección Seguridad Velocidad Escritura MyISAM OK Lento INNODB OK Rápido INDICES OK OK Lento VISTAS OK OK No recomendado. PROCEDIMIENTOS OK OK
La selección de alguno de los métodos sugeridos debe ser considerada con cuidado, ya que el impacto en la velocidad, o seguridad es significativo, y puede impactar enormemente en la operación regular con la base de datos. Parámetros de agilización de conexiones Además de los parámetros antes mencionados, existen los siguientes parámetros que impactan también en la velocidad de la conexión y entrega del vector de datos, pero estos son a nivel de configuración del servidor MySQL, y deberá ser considerados por el administrador del mismo, ya que el costo de uso de CPU o impacto en la seguridad e integridad del mismo pueden ser importantes. Connection TimeOut Controla el tiempo de espera y desconexión a la respuesta o envío de paquetes, este valor no debe ser modificado a menos que se sepa que la comunicación entre el cliente y el servidor esta sujeto a grandes tiempos de espera debido al trafico de red o numero de saltos en la ruta P2P. Interactive Timeout Controla el tiempo de espera y desconexión a la respuesta durante el envío de paquetes como producto de una transacción entre el cliente y el servidor. Read, Write y Wait Timeout Controla el tiempo de espera y desconexión durante la ejecución de una transacción entre el cliente y el servidor.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 5 Selección de Registros. Pagina 11 de 39
Max Package Size Limita el tamaño máximo de los paquetes a operar durante una transacción. NetBuffer Length Controla el tamaño máximo del buffer de memoria intermedia asignado para las comunicaciones P2P entre cliente y servidor. Este parámetro puede optimizar las consultas y escrituras durante una sesión, pero tiene un coste de consumo de memoria por conexión activa. Caching of hostnames Mantener una tabla cache de hostnames, en algunas ocasiones minimiza el tiempo de consulta por parte del server para la resolución de nombres de clientes y conexiones activas. Name Resolving Activa o desactiva la resolución de nombres sobre los clientes, esto puede agilizar las comunicaciones, pero disminuye la seguridad en las transacciones. Sintaxis de expresión de selección de datos. La instrucción empleada para la generación de una expresión de selección de registros es: SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr, ... [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name' | INTO @var_name [, @var_name]] [FOR UPDATE | LOCK IN SHARE MODE]] Como podemos notar, esta es la instrucción más compleja de todas las analizadas previamente, esto es debido a que es la operación más compleja, y de uso mas frecuente, de hecho se podría decir que es para lo que se han desarrollado las bases de datos. Comenzaremos por explicar la estructura de la instrucción: SELECT [ALL, DISTNCT, DISTINCTROW] Estos modificadores inmediatamente después de la instrucción indican: ALL
ALL.- Obtiene un vector con todos los registros de la(s) tablas indicadas. DISTINCT
DISTINCT.- Obtiene un vector con una lista no repetible de registros acotada por la instrucción WHERE DISTINCTR OW
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 5 Selección de Registros. Pagina 12 de 39
DISTINCTROW.- Obtiene un vector con todos los registros no repetibles acotada por la instrucción WHERE. [HIGHPRIORITY] Incrementa la prioridad en la ejecución de la instrucción, acelerando la velocidad de despacho en la cola de despacho del servidor, además de la asignación de un mayor slide de tiempo de CPU. [STRAIGHT JOIN] Indica la validación estricta de la unión entre tablas, para el seguimiento de las relaciones columnares. select_expr Esta es la expresión de selección, en la cual se indica la lista de columnas que deseamos obtener como vector resultado de la selección. FROM Esta es la expresión de procedencia, en la cual se indica la lista de fuentes de datos de donde obtendremos nuestro vector de resultados. WHERE Esta es la expresión de discriminación, en ella se indican las condiciones de selección, para el filtrado de resultados. [GROUP BY] En una selección basada en múltiples tablas, la instrucción permite el agrupado de datos en forma categorizada. [ORDER BY] Establece el orden que deseamos obtener en el vector de resultados producto de la selección indicada. Ejemplos Prácticos A continuación se mostraran ejemplos prácticos que ilustren estas opciones. Selección Simple SELECT CONCAT(last_name,', ',first_name) AS full_name FROM mytable ORDER BY full_name; La instrucción anterior entregara como resultado un vector con un único campo llamado: “full_name” que es un alias a la suma de las columnas last_name y first_name. Esto obtenido de la tabla “mytable” y ordenado por el mismo vector de resultados, sin omitir registro alguno. Selección de múltiples tablas SELECT t1.name, t2.salary FROM employee AS t1, info AS t2 WHERE t1.name = t2.name; La instrucción anterior entrega como vector de resultados las columnas t1.name, t2.salary, obtenidos de las tablas employees e info, renombrados a t1 y t2 respectivamente. Emplea como criterio de discriminación, t1.name=t2.name. Selección de datos resultados de operaciones. SELECT a, COUNT(b) FROM test_table GROUP BY a DESC; La instrucción anterior entrega como vector de resultados un conteo de las repeticiones de la columna a obtenido de la tabla test_table.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 6 Funciones de MySQL. Pagina 13 de 39
6.- Funciones SQL
6.- Funciones SQL
El empleo de funciones para la explotación de los campos numéricos y otras libera la carga de trabajo a las terminales o clientes de consulta, centralizando y controlando las operaciones sobre los datos contenidos en el servidor que contiene la propia base de datos, eliminando así la redundancia y asincronía en la vida de los datos.
El tipo de funciones que MySQL proporciona, nos permite por ejemplo, generar cálculos como sumatorias, estadísticos, cálculos diferenciales sobre columnas de tipo fecha y hora, etc, etc…
No nos adentraremos en un estudio detallado sobre la biblioteca de funciones de MySQL, bastara con mencionar las mas frecuentes agrupadas por el tipo de dato sobre el que actúan.
Al final de este manual se incluye un apéndice con un listado de todas las funciones que integran la biblioteca de funciones de MySQL. Funciones para cálculos de resúmenes o datos estadísticos. Count. Devuelve un contador con la cantidad de repeticiones localizadas acorde con la instrucción de discriminación. Greatest. Devuelve el valor más grande de los parámetros pasados. Least. Devuelve el valor más pequeño de los parámetros pasados. Max. Devuelve el máximo valor del vector de resultados. Min. Devuelve el menor valor del vector de resultados. Sum. Devuelve la sumatoria basada en la columna indicada sobre el vector de resultados. Avg. Devuelve el promedio de los valores asignados. Funciones para expresiones de selección con fechas Addates. Suma 2 datos de tipo fecha. Addtime. Suma 2 datos de tipo Hora. current_date Regresa la fecha actual en el server. current_time. Regresa la hora actual en el server.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 6 Funciones de MySQL. Pagina 14 de 39
date_add Suma dos valores de tipo fecha. date_sub. Resta 2 valores de tipo fecha. Date Regresa la fecha de un dato tipo fecha y hora. Datediff Regresa la diferencia entre 2 valores de tipo fecha. Day Regresa el día de un valor de tipo fecha y hora. Month. Regresa el mes de un valor de tipo fecha y hora. Year. Regresa el año de un valor de tipo fecha y hora. Dayname. Regresa el nombre del día de un valor de tipo fecha y hora. Dayofweek. Regresa el día de la semana del día de un valor de tipo fecha y hora. Dayofyear. Regresa el día del año de un valor de tipo fecha y hora. Extract. Extrae un valor parcial de un valor de tipo fecha y hora. Hour. Regresa la hora de un valor de tipo fecha y hora. Minute. Regresa el minuto de un valor de tipo fecha y hora. Second. Regresa el segundo de un valor de tipo fecha y hora. Now. Regresa la fecha y hora actuales. Monthname. Regresa el nombre del mes de un valor de tipo fecha y hora. str_to_date. Convierte un valor de tipo carácter en tipo fecha y hora. Timediff. Regresa la diferencia entre dos valores de tipo hora.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 6 Funciones de MySQL. Pagina 15 de 39
Funciones de uso general. Upper. Devuelve el parámetro en todo mayúsculas. Lower. Devuelve el parámetro en todo minúsculas. Substr. Devuelve una sub cadena según el criterio establecido. Substrindex. Devuelve la posición de la cadena indicada dentro de la cadena principal. Concat. Suma n cadenas indicadas y las entrega como una cadena única. Trim. Elimina los espacios al principio y final de la cadena. Ltrim. Elimina los espacios a la izquierda de la cadena. Rtrim. Elimina los espacios a la derecha de la cadena.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 7 Referencias Cruzadas. Pagina 16 de 39
7.- Referencias Cruzadas en MySQL
7.- Referencias Cruzadas en MySQL
Definición Las referencias cruzadas son una de las herramientas más útiles en las bases de datos actuales. Estas permiten la rápida obtención de datos complejos que de otra forma nos tomaría días o meses encontrar. Antes de iniciar la discusión de cómo se emplean las referencias cruzadas debemos iniciar por describir que son y para que se emplean. Una referencia cruzada no es más que la asociación de múltiples tablas. Esto se ve más claramente en la siguiente ilustración Ejemplo
La ventaja que nos otorga el cruzado y relacionado de datos:
En primera instancia es el ahorro de consumo de espacio. Pues no se repite la información, solo las claves que nos remiten a la información completa.
En segundo lugar seria la facilidad y rapidez para la generación de resúmenes o entrega de resultados, pues
por ejemplo, fácil y naturalmente podríamos localizar todas las atenciones de un responsable en particular, o a un cliente en particular.
En esta ilustración podemos observar que existen. 2 tablas principales. La tabla de Responsables. Seria donde se registren a los ejecutivos de cuenta que atienden a los clientes. La tabla de Clientes. Seria donde se registre el catalogo de clientes. Y 2 tablas derivadas o cruzadas. La tabla de Atenciones. En esta se registrara un histórico con las atenciones atendidas a cada cliente por cada responsable. La tabla de Responsables_clientes En esta se registraría el cruzado de que responsables atienden a que clientes.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 7 Referencias Cruzadas. Pagina 17 de 39
Ejemplos Prácticos Por ejemplo: Para obtener un contador de todas las atenciones otorgadas a un cliente en particular medido en días,
emplearíamos:
SELECT COUNT(FECHA) from Atenciones where NoCliente=13 Para obtener todos los clientes que el Responsable “David” atiende se emplearía: SELECT cliente.nombrecliente as Cliente from clientes, responsables, responsables_clientes
WHERE (responsables.nombre=’David’) AND (responsables_clientes.noresponsable=responsables.noresponsable) AND (responsables_clientes.nocliente=clientes.nocliente) ORDER BY Cliente
Cabe señalar que para obtener de la forma mas ágil y rápida los resultados en una consulta
cruzada es necesario crear índices sobre los campos discriminantes, de este modo el tiempo que el servidor MySQL tarde en generar el vector de resultados se vera reducido considerablemente. Del mismo modo se sugiere utilizar campos numéricos, en lugar de campos de texto para este propósito.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 8 Importación, Exportación a MySQL. Pagina 18 de 39
8.- Importación, Exportación de datos a MySQL
8.- Importación, Exportación de datos a MySQL
En primer lugar es necesario configurar Navicat para acceder al servidor MySQL y las bases de datos con las que trabajaremos:
La siguiente pantalla muestra la pantalla de trabajo del sistema Navicat. Configuración de Servidores
Para configurar el programa y la conexión con el servidor MySQL hay que:
Oprimir el botón Connection: , esto abrirá la interfaz necesaria para registrar los datos de enlace con el servidor MySQL:
Los datos de configuración son:
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 8 Importación, Exportación a MySQL. Pagina 19 de 39
Connection Name.- Solo es el nombre con el que conoceremos esta conexión. Host name.- El nombre o IP del servidor MySQL Port.- Puerto de comunicaciones a emplear. User.- Nombre del usuario con el que estableceremos la comunicación. Password.- Password de acceso del usuario indicado. Basta oprimir el botón test connection para verificar que los datos ingresados son los correctos. A continuación, en la sección de Connections veremos una lista de servidores configurados, en nuestro caso solo 1
servidor.
Activación de Conexión Para trabajar ahora, es necesario indicar con que conexión lo haremos (esto es necesario porque el programa
Navicat, asume que se manejan mas de 1 conexión, aunque en nuestro caso solo sea una). Para ello basta con hacer doble clic sobre el nombre de nuestra conexión.
La imagen cambiara como se muestra en la figura anterior. Hay que notar, que cuando ya hemos asignado la conexión, el icono que indica la conexión cambia de: a: .
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 8 Importación, Exportación a MySQL. Pagina 20 de 39
A continuación, se requiere indicar con que base de datos trabajaremos. Aunque solo hemos dado de alta una base
de datos, MySQL siempre define 2 bases de datos para la operación interna, y no deben ser modificadas nunca. Estas bases de dato son: MySQL Test Como puede observar, las bases de datos aparecen en color gris, esto porque no se ha indicado con que base de
datos se pretende trabajar. Al igual que con las conexiones se debe indicar específicamente con que elemento se trabajara, para ello basta dar doble clic en la base de datos a emplear. El indicador cambiara de: a: .
Importación de datos de un archivo de Excel. Para importar datos de una hoja de Excel a una base de datos MySQL, primero hay que estar completamente
seguros que la hoja de Excel corresponde con las columnas de alguna tabla previamente definida. (Modelado de datos).
A continuación haga clic con el botón derecho del ratón sobre la tabla donde desee importar los datos:
La imagen mostrada ilustra el menú y la opción que se debe elegir.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 8 Importación, Exportación a MySQL. Pagina 21 de 39
Inicio de Wizard de Importación Los siguientes son los pasos a seguir con el Wizard de importación: 1º Selección del formato del archivo origen, de donde se pretende importar los datos.
En nuestro caso debemos indicar Excel file, Excel 2007 file, según sea el caso. 2º.- Indicar cual y donde se encuentra el archivo origen.
3º.- Seleccionar la hoja(s) de donde se obtendrán los datos.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 8 Importación, Exportación a MySQL. Pagina 22 de 39
4º.- Configuración de la interpretación de los datos contenidos.
Este paso es necesario pues dado el formato de Excel, en ocasiones no es fácilmente inidentificable el tipo de
información que se contiene en las columnas, por este motivo en ocasiones es necesario indicar de que forma vienen contenidos los datos de tipo fecha, y los numéricos, así como una indicación de la existencia de un renglón de identificación de columnas y los limites de la información.
5º.- Asignación de destino de los datos.
En este paso se debe confirmar a que tabla se pretende insertar la información, y si se debe añadir o insertar como
tabla nueva. En nuestros casos se deberá añadir para que se registre en forma incremental.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 8 Importación, Exportación a MySQL. Pagina 23 de 39
6º.- Identificación de columnas.
Es necesario establecer una regla de correspondencia entre las columnas del archivo origen (de Excel), y la tabla
destino. Para ello se deben identificar una a una las columnas en la tabla y en el archivo de Excel. 7º.- Indicar si se deben actualizar los registros ya existentes, o agregar al final de la tabla.
Al igual que cuando indicamos si la tabla se modificaría o se agregaría como nueva, es necesario indicar que hacer
con los registros que se identifiquen como preexistentes en la tabla. En nuestro caso, se deberán agregar a la tabla, y así crear un registro incremental.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 8 Importación, Exportación a MySQL. Pagina 24 de 39
8º.- Iniciar el proceso de importación.
Finalmente se debe ejecutar el proceso de importación de datos. Exportación de Datos. Para Exportar datos contenidos en MySQL, utilizaremos otra herramienta llamada: MySQL Query Browser. Esta herramienta nos permitirá seleccionar los datos que deseamos y guardarlos en un archivo con el formato que
mejor nos convenga. Al igual que con el programa Navicat, es necesario indicar a que servidor MySQL y con que Base de Datos
trabajaremos. Para ello seguiremos los siguientes pasos: Configuración de conexión para MySQL Query Browser. 1º.- Indicar los parámetros de conexión básicos.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 8 Importación, Exportación a MySQL. Pagina 25 de 39
Selección de Base de datos 2º.- Indicar la base de datos con la cual se trabajara:
En la ventana principal del MySQL Query Browser, muestra 4 Secciones: Sección de captura de Queries Sección de desplegado de resultados Sección de listado de Bases de Datos Sección de ayuda Para indicar con que base de datos se trabajara, basta con hacer doble clic sobre el nombre de la base de datos en
la sección de lista de bases de datos. En seguida se mostrara en negritas el nombre de la base de datos, además de que se expandirá y se mostrara un
listado de todas las tablas contenidas en esa base de datos.
Seccion de Captura de Queries
Sección de desplegado de resultados
Sección de lista de bases de datos.
Sección de ayuda rápida.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 8 Importación, Exportación a MySQL. Pagina 26 de 39
3º Introducir el Query que nos regrese los datos a exportar. Es necesario capturar el Query que pretendemos emplear para seleccionar la información a exportar, y presionar el
botón de ejecución: para obtener un set de resultados:
Exportación de set de resultados 4º Exportar el set de resultados. Para finalizar, basta indicar que deseamos exportar los datos del set de resultados, el formato y el nombre y
ubicación del archivo exportado:
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 9 Generación de Informes y Consultas Cruzadas. Pagina 27 de 39
9 Generación de Informes y Consultas Cruzadas.
9.- Generación de Informes y consultas cruzadas
Es posible consultar directamente la información desde las bases de datos empleando Microsoft
Access como interfaz de consulta, esto nos facilita el acceso a los datos y nos permite además la generación de reportes o archivos exportados de datos.
Para este propósito basta con definir un origen de datos en el sistema que apunte ya sea a la base de datos de
MySQL o Macropro, y con ello importar los datos en Excel o Access. A continuación de ilustra el procedimiento para enlazar los datos: Creación de Base de datos intermediaria 1º es necesario crear una base de datos nueva:
2º es necesario vincular las tablas que nos interesa consultar. Para ello primero se indica el tipo de datos a vincular, en nuestro caso un acceso ODBC. Vinculación de tablas
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 9 Generación de Informes y Consultas Cruzadas. Pagina 28 de 39
A continuación indicar que si el origen de datos se vincularan en forma dinámica los datos, y no solo se
importaran.
A continuación se especifica el archivo de origen de datos. Especificación de archivo de origen de datos o DSN
En seguida hay que indicar que tablas se vincularan. Selección de tablas a vincular
Macropro
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 9 Generación de Informes y Consultas Cruzadas. Pagina 29 de 39
Solo por verificar, en el panel de exploración de tablas y consultas, deberán listarse todas las tablas que macamos
para ser vinculadas:
3º definamos la vista o consulta. Creación de vista de consulta a tablas vinculadas.
Una vez iniciado el proceso de construcción de consulta, se deben indicar las tablas que serán consultadas.
En seguida se debe cambiar la vista a vista SQL
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 9 Generación de Informes y Consultas Cruzadas. Pagina 30 de 39
Captura de Query
En esta vista es posible capturar la consulta SQL directamente. Ejecución de la consulta 4º Ejecutemos la consulta Para esto basta con oprimir el botón “Ejecutar”
Como respuesta Access abrirá el resultado en una vista de tabla.
Impresión o visualización de reporte de resultados.
6º Imprimamos o exportemos los datos. Para ello en el panel de listado de tablas y consultas, hagamos clic derecho sobre el nombre de la consulta y
seleccionemos la opción Exportar, y determinemos el formato de salida para el archivo con el resultado de la consulta.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 9 Generación de Informes y Consultas Cruzadas. Pagina 31 de 39
Uso de Informes para la visualización o impresión de un conjunto de resultados. Ahora bien, es posible construir un informe con el resultado de la consulta. Esto es, organizar la información en
un formato impreso predeterminado. Para ello iniciemos el asistente para informes
Selección de columnas del reporte Al iniciar el asistente debemos indicar que columnas de la consulta integraran el informe:
Selección de niveles de agrupamiento En seguida se debe indicar el nivel de agrupamiento, es decir en base a que columnas se agruparan los resultados
del informe:
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 9 Generación de Informes y Consultas Cruzadas. Pagina 32 de 39
Selección de columnas para ordenado de resultados Posteriormente se pueden fijar hasta 4 niveles de ordenación dependiente.
Selección de esquema de distribución del informe En seguida se debe indicar el esquema de presentación del informe:
Selección de esquema o estilo de visualización de informe Para finalizar la construcción del informe elija el esquema o estilo de visualización para el informe. Access cuenta
con una amplia gama de estilos prediseñados.
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting 9 Generación de Informes y Consultas Cruzadas. Pagina 33 de 39
Visualización de informe Y por ultimo visualice el informe recién construido:
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting Apéndice I – Funciones de MySQL. Pagina 34 de 39
APENDICES
APENDICES
APENDICE I
Biblioteca de funciones de MySQL
Name Description
ABS() Return the absolute value
ACOS() Return the arc cosine
ADDDATE()(v4.1.1) Add dates
ADDTIME()(v4.1.1) Add time
AES_DECRYPT() Decrypt using AES
AES_ENCRYPT() Encrypt using AES
AND, && Logical AND
ASCII() Return numeric value of left-most character
ASIN() Return the arc sine
ATAN2(), ATAN() Return the arc tangent of the two arguments
ATAN() Return the arc tangent
AVG() Return the average value of the argument
BENCHMARK() Repeatedly execute an expression
BETWEEN ... AND ... Check whether a value is within a range of values
BIN() Return a string representation of the argument
BINARY Cast a string to a binary string
BIT_AND() Return bitwise and
BIT_COUNT() Return the number of bits that are set
BIT_LENGTH() Return length of argument in bits
BIT_OR() Return bitwise or
BIT_XOR()(v4.1.1) Return bitwise xor
& Bitwise AND
~ Invert bits
| Bitwise OR
^ Bitwise XOR
CASE Case operator
CAST() Cast a value as a certain type
CEIL() Return the smallest integer value not less than the argument
CEILING() Return the smallest integer value not less than the argument
CHAR_LENGTH() Return number of characters in argument
CHAR() Return the character for each integer passed
CHARACTER_LENGTH() A synonym for CHAR_LENGTH()
CHARSET()(v4.1.0) Return the character set of the argument
COALESCE() Return the first non-NULL argument
COERCIBILITY()(v4.1.1) Return the collation coercibility value of the string argument
COLLATION()(v4.1.0) Return the collation of the string argument
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting Apéndice I – Funciones de MySQL. Pagina 35 de 39
Name Description
COMPRESS()(v4.1.1) Return result as a binary string
CONCAT_WS() Return concatenate with separator
CONCAT() Return concatenated string
CONNECTION_ID() Return the connection ID (thread ID) for the connection
CONV() Convert numbers between different number bases
CONVERT_TZ()(v4.1.3) Convert from one timezone to another
Convert() Cast a value as a certain type
COS() Return the cosine
COT() Return the cotangent
COUNT(DISTINCT) Return the count of a number of different values
COUNT() Return a count of the number of rows returned
CRC32()(v4.1.0) Compute a cyclic redundancy check value
CURDATE() Return the current date
CURRENT_DATE(), CURRENT_DATE Synonyms for CURDATE()
CURRENT_TIME(), CURRENT_TIME Synonyms for CURTIME()
CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP
Synonyms for NOW()
CURRENT_USER(), CURRENT_USER Return the username and hostname combination
CURTIME() Return the current time
DATABASE() Return the default (current) database name
DATE_ADD() Add two dates
DATE_FORMAT() Format date as specified
DATE_SUB() Subtract two dates
DATE()(v4.1.1) Extract the date part of a date or datetime expression
DATEDIFF()(v4.1.1) Subtract two dates
DAY()(v4.1.1) Synonym for DAYOFMONTH()
DAYNAME()(v4.1.21) Return the name of the weekday
DAYOFMONTH() Return the day of the month (0-31)
DAYOFWEEK() Return the weekday index of the argument
DAYOFYEAR() Return the day of the year (1-366)
DECODE() Decodes a string encrypted using ENCODE()
DEFAULT() Return the default value for a table column
DEGREES() Convert radians to degrees
DES_DECRYPT() Decrypt a string
DES_ENCRYPT() Encrypt a string
DIV(v4.1.0) Integer division
/ Division operator
ELT() Return string at index number
ENCODE() Encode a string
ENCRYPT() Encrypt a string
<=> NULL-safe equal to operator
= Equal operator
EXP() Raise to the power of
EXPORT_SET() Return a string such that for every bit set in the value bits, you get an on string and for every unset bit, you get an off string
EXTRACT Extract part of a date
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting Apéndice I – Funciones de MySQL. Pagina 36 de 39
Name Description
FIELD() Return the index (position) of the first argument in the subsequent arguments
FIND_IN_SET() Return the index position of the first argument within the second argument
FLOOR() Return the largest integer value not greater than the argument
FORMAT() Return a number formatted to specified number of decimal places
FOUND_ROWS() For a SELECT with a LIMIT clause, the number of rows that would be returned were there no LIMIT clause
FROM_DAYS() Convert a day number to a date
FROM_UNIXTIME() Format UNIX timestamp as a date
GET_FORMAT()(v4.1.1) Return a date format string
GET_LOCK() Get a named lock
>= Greater than or equal operator
> Greater than operator
GREATEST() Return the largest argument
GROUP_CONCAT()(v4.1) Return a concatenated string
HEX() Return a hexadecimal representation of a decimal or string value
HOUR() Extract the hour
IF() If/else construct
IFNULL() Null if/else construct
IN() Check whether a value is within a set of values
INET_ATON() Return the numeric value of an IP address
INET_NTOA() Return the IP address from a numeric value
INSERT() Insert a substring at the specified position up to the specified number of characters
INSTR() Return the index of the first occurrence of substring
INTERVAL() Return the index of the argument that is less than the first argument
IS_FREE_LOCK() Checks whether the named lock is free
IS NOT NULL NOT NULL value test
IS NULL NULL value test
IS_USED_LOCK()(v4.1.0) Checks whether the named lock is in use. Return connection identifier if true.
ISNULL() Test whether the argument is NULL
LAST_DAY(v4.1.1) Return the last day of the month for the argument
LAST_INSERT_ID() Value of the AUTOINCREMENT column for the last INSERT
LCASE() Synonym for LOWER()
LEAST() Return the smallest argument
<< Left shift
LEFT() Return the leftmost number of characters as specified
LENGTH() Return the length of a string in bytes
<= Less than or equal operator
< Less than operator
LIKE Simple pattern matching
LN() Return the natural logarithm of the argument
LOAD_FILE() Load the named file
LOCALTIME(), LOCALTIME Synonym for NOW()
LOCALTIMESTAMP, LOCALTIMESTAMP()(v4.0.6)
Synonym for NOW()
LOCATE() Return the position of the first occurrence of substring
LOG10() Return the base-10 logarithm of the argument
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting Apéndice I – Funciones de MySQL. Pagina 37 de 39
Name Description
LOG2() Return the base-2 logarithm of the argument
LOG() Return the natural logarithm of the first argument
LOWER() Return the argument in lowercase
LPAD() Return the string argument, left-padded with the specified string
LTRIM() Remove leading spaces
MAKE_SET() Return a set of comma-separated strings that have the corresponding bit in bits set
MAKEDATE()(v4.1.1) Create a date from the year and day of year
MAKETIME(v4.1.1) MAKETIME()
MASTER_POS_WAIT() Block until the slave has read and applied all updates up to the specified position
MATCH Perform full-text search
MAX() Return the maximum value
MD5() Calculate MD5 checksum
MICROSECOND()(v4.1.1) Return the microseconds from argument
MID() Return a substring starting from the specified position
MIN() Return the minimum value
- Minus operator
MINUTE() Return the minute from the argument
MOD() Return the remainder
% Modulo operator
MONTH() Return the month from the date passed
MONTHNAME()(v4.1.21) Return the name of the month
NOT BETWEEN ... AND ... Check whether a value is not within a range of values
!=, <> Not equal operator
NOT IN() Check whether a value is not within a set of values
NOT LIKE Negation of simple pattern matching
NOT REGEXP Negation of REGEXP
NOT, ! Negates value
NOW() Return the current date and time
NULLIF() Return NULL if expr1 = expr2
OCT() Return an octal representation of a decimal number
OCTET_LENGTH() A synonym for LENGTH()
OLD_PASSWORD()(v4.1) Return the value of the old (pre-4.1) implementation of PASSWORD
||, OR Logical OR
ORD() Return character code for leftmost character of the argument
PASSWORD() Calculate and return a password string
PERIOD_ADD() Add a period to a year-month
PERIOD_DIFF() Return the number of months between periods
PI() Return the value of pi
+ Addition operator
POSITION() A synonym for LOCATE()
POW() Return the argument raised to the specified power
POWER() Return the argument raised to the specified power
PROCEDURE ANALYSE() Analyze the results of a query
QUARTER() Return the quarter from a date argument
QUOTE() Escape the argument for use in an SQL statement
RADIANS() Return argument converted to radians
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting Apéndice I – Funciones de MySQL. Pagina 38 de 39
Name Description
RAND() Return a random floating-point value
REGEXP Pattern matching using regular expressions
RELEASE_LOCK() Releases the named lock
REPEAT() Repeat a string the specified number of times
REPLACE() Replace occurrences of a specified string
REVERSE() Reverse the characters in a string
>> Right shift
RIGHT() Return the specified rightmost number of characters
RLIKE Synonym for REGEXP
ROUND() Round the argument
RPAD() Append string the specified number of times
RTRIM() Remove trailing spaces
SEC_TO_TIME() Converts seconds to 'HH:MM:SS' format
SECOND() Return the second (0-59)
SESSION_USER() Synonym for USER()
SHA1(), SHA() Calculate an SHA-1 160-bit checksum
SIGN() Return the sign of the argument
SIN() Return the sine of the argument
SOUNDEX() Return a soundex string
SOUNDS LIKE(v4.1.0) Compare sounds
SPACE() Return a string of the specified number of spaces
SQRT() Return the square root of the argument
STD() Return the population standard deviation
STDDEV() Return the population standard deviation
STR_TO_DATE()(v4.1.1) Convert a string to a date
STRCMP() Compare two strings
SUBDATE() A synonym for DATE_SUB() when invoked with three arguments
SUBSTR() Return the substring as specified
SUBSTRING_INDEX() Return a substring from a string before the specified number of occurrences of the delimiter
SUBSTRING() Return the substring as specified
SUBTIME()(v4.1.1) Subtract times
SUM() Return the sum
SYSDATE() Return the time at which the function executes
SYSTEM_USER() Synonym for USER()
TAN() Return the tangent of the argument
TIME_FORMAT() Format as time
TIME_TO_SEC() Return the argument converted to seconds
TIME()(v4.1.1) Extract the time portion of the expression passed
TIMEDIFF()(v4.1.1) Subtract time
* Times operator
TIMESTAMP()(v4.1.1) With a single argument, this function returns the date or datetime expression; with two arguments, the sum of the arguments
TO_DAYS() Return the date argument converted to days
TRIM() Remove leading and trailing spaces
TRUNCATE() Truncate to specified number of decimal places
CURSO SQL PRACTICO Wintell
Nov 2008
ITConsulting Apéndice I – Funciones de MySQL. Pagina 39 de 39
Name Description
UCASE() Synonym for UPPER()
- Change the sign of the argument
UNCOMPRESS()(v4.1.1) Uncompress a string compressed
UNCOMPRESSED_LENGTH()(v4.1.1) Return the length of a string before compression
UNHEX()(v4.1.2) Convert each pair of hexadecimal digits to a character
UNIX_TIMESTAMP() Return a UNIX timestamp
UPPER() Convert to uppercase
USER() Return the current username and hostname
UTC_DATE()(v4.1.1) Return the current UTC date
UTC_TIME()(v4.1.1) Return the current UTC time
UTC_TIMESTAMP()(v4.1.1) Return the current UTC date and time
UUID()(v4.1.2) Return a Universal Unique Identifier (UUID)
VALUES()(v4.1.1) Defines the values to be used during an INSERT
VARIANCE()(v4.1) Return the population standard variance
VERSION() Returns a string that indicates the MySQL server version
WEEK() Return the week number
WEEKDAY() Return the weekday index
WEEKOFYEAR()(v4.1.1) Return the calendar week of the date (0-53)
XOR Logical XOR
YEAR() Return the year
YEARWEEK() Return the year and week