UPDATE es la instruccion SQL especializada en esta area de procesos comunes con tablas, su formato es:

MYSQL TEMA 12: - UPDATE TABLE SQL UPDATE Es uno de los procesos mas comunes con tablas en bases de datos, se le conoce como actualizacion, edicion o modificacion de los datos o registros o renglones contenidos en la tabla. Por ejemplo al inicio o arranque de un sisMYSQL TEMA de informacion construido alrederor de una base de datos, es comun que la primera carga de datos contenga mucha informacion erronea y se ocupa mecanismos o instrucciones en SQL para corregir o editar esta informacion. UPDATE es la instruccion SQL especializada en esta area de procesos comunes con tablas, su formato es: UPDATE nombretabla SET nomcolumna=expresion WHERE condicion ; La instruccion update actualiza o modifica los renglones de una tabla, SET le indica a MYSQL cuales son las columnas a modificar y WHERE se usa para seleccionar un renglon determinado o un conjunto de renglones, los casos mas comunes son: 1.- Actualizar una columna o varias columnas a todos los renglones de la tabla ejemplo: UPDATE peliculas SET preciopelicula = 150.00; Corrida: 2.- Recordar que tambien se pueden usar expresiones algebraicas ejemplo: UPDATE peliculas SET preciopelicula = 19.99 * 11.28 ; Corrida: 13.2.7. Sintaxis de SELECT 13.2.7.1. Sintaxis de JOIN 13.2.7.2. Sintaxis de UNION 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, ... [INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name'] [FROM table_references [WHERE where_definition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_definition] [ORDER BY {col_name | expr | position} [ASC | DESC] , ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [FOR UPDATE | LOCK IN SHARE MODE]] SELECT se usa para recibir registros seleccionados desde una o más tablas. MySQL 5.0 incluye soporte para comandos UNION y subconsultas. Consulte Sección 13.2.7.2, “Sintaxis de UNION” y Sección 13.2.8, “Sintaxis de subconsultas”. Cada select_expr indicata una columna que quiere recibir. table_references indicata la tabla o tablas desde la que recibir registros. Su sintaxis se describe en Sección 13.2.7.1, “Sintaxis de JOIN”. where_definition consiste en la palabra clave WHERE seguida por una expresión que indica la condición o condiciones que deben satisfacer los registros para ser seleccionados. SELECT también puede usarse para recuperar registros computados sin referencia a ninguna tabla. Por ejemplo: mysql> SELECT 1 + 1; -> 2 Todas las cláusulas usadas deben darse exactamente en el orden mostrado en la descripción de la sintaxis. Por ejemplo, una cláusula HAVING debe ir tras cualquier cláusula GROUP BY y antes de cualquier cláusula ORDER BY . Una select_expr puede tener un alias usando AS alias_name. El alias se usa como el nombre de columna de la expresión y puede usarse en cláusulas GROUP BY, ORDER BY, o HAVING . Por ejemplo: mysql> SELECT CONCAT(last_name,', ',first_name) AS full_name -> FROM mytable ORDER BY full_name; La palabra clave AS es opcional cuando se usa un alias para select_expr. El ejemplo precedente podría haberse escrito como: mysql> SELECT CONCAT(last_name,', ',first_name) full_name -> FROM mytable ORDER BY full_name; Como AS es opcional, puede ocurrir un sutil problema si olvida la coma entre dos expresiones select_expr : MySQL interpreta el segundo como un nombre de alias. Por ejemplo, en el siguiente comando, columnb se tata como un nombre de alias: mysql> SELECT columna columnb FROM mytable; Por esta razón, es una buena práctica poner los alias de columnas usando AS. No se permite usar un alias de columna en una cláusula WHERE, ya que el valor de columna puede no estar determinado cuando se ejecuta la cláusula WHERE . Consulte Sección A.5.4, “Problemas con alias de columnas”. La cláusula FROM table_references indica la tabla desde la que recibir registros. Si nombra más de una tabla, está realizando un join, Para información sobre la sintaxis de join, consulte Sección 13.2.7.1, “Sintaxis de JOIN”. Para cada tabla especificada, puede opcionalmente especificar un alias. tbl_name [[AS] alias] [[USE INDEX (key_list)] | [IGNORE INDEX (key_list)] | [FORCE INDEX (key_list)]] El uso de USE INDEX, IGNORE INDEX, FORCE INDEX para dar al optimizador pistas acerca de cómo escoger los indices se describe en Sección 13.2.7.1, “Sintaxis de JOIN”. En MySQL 5.0, puede usar SET max_seeks_for_key=value como alternativa para forzar a MySQL a que realice escaneos de claves en lugar de escaneos de tabla. Puede referirse a una tabla dentro de la base de datos actual como tbl_name (dentro de la base de datos actual) , o como db_name.tbl_name para referirse a una base de datos explícitamente. Puede referirse a una columna como col_name, tbl_name.col_name, o db_name.tbl_name.col_name. No necesita especificar un prefijo tbl_name o db_name.tbl_name para una referencia de columna a no ser que la referencia fuese ambígua. Consulte Sección 9.2, “Nombres de bases de datos, tablas, índices, columnas y alias” para ejemplos de ambigüedad que requieran las formas de referencia de columna más explícitas. En MySQL 5.0, puede especificar DUAL como nombre de tabla falso en siguaciones donde no se referencian tablas: mysql> SELECT 1 + 1 FROM DUAL; -> 2 DUAL es una característica puramente de compatibilidad. Otros servidores requieren esta sintaxis. Una referencia de tabla puede tener un alias usando tbl_name AS alias_name o tbl_name alias_name: mysql> SELECT t1.name, t2.salary FROM employee AS t1, info AS t2 -> WHERE t1.name = t2.name; mysql> SELECT t1.name, t2.salary FROM employee t1, info t2 -> WHERE t1.name = t2.name; En la cláusula WHERE , puede usar cualquiera de las funciones que soporta MySQL, escepto para funciones agregadas (resumen). Consulte Capítulo 12, Funciones y operadores. Las columnas seleccionadas para la salida pueden ser referidas en cláusulas ORDER BY y GROUP BY usando nombres de columnas, alias, o posiciones. Las posiciones de columnas son enteros y comienzan con 1: mysql> SELECT college, region, seed FROM tournament -> ORDER BY region, seed; mysql> SELECT college, region AS r, seed AS s FROM tournament -> ORDER BY r, s; mysql> SELECT college, region, seed FROM tournament -> ORDER BY 2, 3; Para ordenar en orden inverso, añada la palabra clave DESC (descendiente) al nombre de la columna en la cláusula ORDER BY por la que está ordenando. Por defecto es orden ascendente; puede especificarse explícitamente usando la palabra clave ASC. El uso de posiciones de columna está obsoleto ya que la sintaxis se ha eliminado del estándar SQL. Si usa GROUP BY, los registros de salida se ordenan según las columnas GROUP BY como si tuviera un ORDER BY para las mismas columnas. MySQL 5.0 extiende la cláusula GROUP BY para que pueda especificar ASC y DESC tras las columnas nombradas en la cláusula: SELECT a, COUNT(b) FROM test_table GROUP BY a DESC MySQL extiende el uso de GROUP BY para permitir seleccionar campos que no se mencionan en la cláusula GROUP BY . Si no obtiene los resultados que espera de la consulta, por favor lea la descripción de GROUP BY en Sección 12.10, “Funciones y modificadores para cláusulas GROUP BY”. En MySQL 5.0, GROUP BY permite un modificador WITH ROLLUP . Consulte Sección 12.10.2, “Modificadores de GROUP BY”. La cláusula HAVING se aplica casi al final, justo antes de que los elementos se envíen al cliente, sin optimización. (LIMIT se aplica tras HAVING.) Antes de MySQL 5.0.2, una cláusula HAVING podía referirse a cualquier columna o alias nombrado en una select_expr en la lista SELECT o en subconsultas externas, y para funciones agregadas. Sin embargo, el estándar SQL requiere que HAVING debe referirse sólo a columnas en la cláusula GROUP BY o columnas usadas en funciones agregadas. Para acomodar ambos estándars SQL y el comportamiento específico de MySQL en que es capaz de referirse a columnas en la lista SELECT , MySQL 5.0.2 y posteior permite a HAVING referirse a columnas en la lista SELECT , en la cláusula GROUP BY , en subconsultas externas y en funciones agregadas. Por ejemplo, el siguiente comando funciona en MySQL 5.0.2 pero produce un error en versiones aneriores: mysql> SELECT COUNT(*) FROM t GROUP BY col1 HAVING col1 = 2; Si la cláusula HAVING se refiere a una columna ambígua, se muestra una advertencia. En el siguiente comando, col2 es ambíguo porque se usa tanto para un alias como para un nombre de columna: mysql> SELECT COUNT(col1) AS col2 FROM t GROUP BY col2 HAVING col2 = 2; Se da preferencia al comportamiento SQL estándar, así que si un nombre de columna HAVING se usa en un GROUP BY y como alias de columna en la lista de columnas de salida, se da preferencia a la columna en GROUP BY . No use HAVING para elementos que deban estar en la cláusula WHERE . Por ejemplo, no escriba lo siguiente: mysql> SELECT col_name FROM tbl_name HAVING col_name > 0; Escriba esto en su lugar: mysql> SELECT col_name FROM tbl_name WHERE col_name > 0; La cláusula HAVING puede referirse a funciones de agregación, algo que no puede hacer la cláusula WHERE: mysql> SELECT user, MAX(salary) FROM users -> GROUP BY user HAVING MAX(salary)>10; (Esto no funciona en versiones antiguas de MySQL.) La cláusula LIMIT puede usarse para restringir el número de registros retornados por el comando SELECT. LIMIT tiene uno o dos argumentos numéricos, que deben ser enteros positivos (incluyendo cero). Con dos argumentos, el primer argumento especifica el desplazamiento del primer registro a retornar. El desplazamiento del registro inicial es 0 (no 1): mysql> SELECT * FROM table LIMIT 5,10; 15 # Retrieve rows 6- Por compatibilidad con PostgreSQL, MySQL también soporta la sintaxis LIMIT row_count OFFSET offset. Para recibir todos los registros de un desplazamiento hasta el final del conjunto de resultados, puede usar algún número grande para el segundo parámetro. Ete comando recibe todos los registros desde el 96th hasta el último: mysql> SELECT * FROM table LIMIT 95,18446744073709551615; Con un argumento, el valor especifica el número de registros a retornar desde el comienzo del conjunto de resultados: mysql> SELECT * FROM table LIMIT 5; rows # Retrieve first 5 En otras palabras, LIMIT n es equivalente a LIMIT 0,n. La forma SELECT ... INTO OUTFILE 'file_name' de SELECT escribe los registros seleccionados en un fichero. El fichero se crea en el equipo servidor, así que debe tener el permiso FILE para usar esta sintaxis. El fichero no puede existir, que entre otras cosas evita destruir ficheros cruciales tales como /etc/passwd y tablas de la base de datos. El comando SELECT ... INTO OUTFILE existe principalmente para dejarle volcar una tabla rápidamente en la máquina servidor. Si quiere crear el fichero resultante en un equipo cliente distinto al equipo servidor, no puede usar SELECT ... INTO OUTFILE. En tal caso, debería usar algún comando como mysql -e "SELECT ..." > file_name en el equipo cliente para generar el fichero. SELECT ... INTO OUTFILE es el complemento de LOAD DATA INFILE; la sintaxis para la parte export_options del comando consiste en las mismas cláusulas FIELDS y LINES usadas con el comando LOAD DATA INFILE . Consulte Sección 13.2.5, “Sintaxis de LOAD DATA INFILE”. FIELDS ESCAPED BY controla cómo escribir carácteres especiales. Si el carácter FIELDS ESCAPED BY no está vacío, se usa como prefijo para los siguientes carácteres en la salida: o o o o El carácter FIELDS ESCAPED BY El carácter FIELDS [OPTIONALLY] ENCLOSED BY El primer carácter de FIELDS TERMINATED BY y LINES TERMINATED BY ASCII 0 (que se escribe siguiendo el carácter de escape ASCII '0', no un byte con valor cero) Si el carácter FIELDS ESCAPED BY está vacío, no hay ningún carácter de escape y NULL se muestra por salida como NULL, no \N. Probablemente no es buena idea especificar un carácter de escape vacío, particularmente si los valores de los campos de sus datos contienen cualqiuera de los carácteres en la lista dada. La razón de lo anterior es que debe escapar cualquier carácter FIELDS TERMINATED BY, ENCLOSED BY, ESCAPED BY, o LINES TERMINATED BY para ser capaz de volver a leer el fichero correctamente. ASCII NUL se escapa para hacer más fácil visualizarlo con algunos visores. El fichero resultante no tiene que estar conforme a la sintaxis SQL, así que nada más debe escaparse. Este es un ejemplo que produce un fichero en formato de valores separados por comas usado por varios programas: SELECT a,b,a+b INTO OUTFILE '/tmp/result.text' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table; Si usa INTO DUMPFILE en lugar de INTO OUTFILE, MySQL escribe sólo un registro en el fichero, sin ninguna terminación de línea o col

13 downloads 80 Views 497KB Size

Recommend Stories


Anoia es diversidad. Esta es su singularidad, esta es su personalidad y esto es realmente lo que la hace interesante
A noia esesuna Anoia unacomarca comarcaformada formadapor por territorios territorios muy diferentes que se han agrupado y han dado cuerpo a una zona

SICAV Es Agosto The Update
SICAV Es Agosto 2011 The Update Indice Resumen de la rentabilidad European Quantitative Equities 38 Asia 40 Threadneedle (Lux) Greater China

ESTA ES UNA MUESTRA. PROHIBIDA SU REPRODUCCIÓN
ES TR A Latinoamericana para la Familia Alianza .P R O H IB ID A SU R EP R O D U C C IÓ N APRENDIENDO A QUERER Un nuevo grupo de amigos liderados po

Esta es la temporada para
Invierno 2012 Contenido Días festivos sin E stress sta es la temporada … para estar estresado. O al menos así es como se pueden sentir los días f

Esta es la segunda parte
INVIERNO 2016 para Miembros Jubilados El valor de sus beneficios E sta es la segunda parte de una serie de tres partes de artículos en los que comp

Story Transcript

MYSQL TEMA 12: - UPDATE TABLE SQL UPDATE Es uno de los procesos mas comunes con tablas en bases de datos, se le conoce como actualizacion, edicion o modificacion de los datos o registros o renglones contenidos en la tabla. Por ejemplo al inicio o arranque de un sisMYSQL TEMA de informacion construido alrederor de una base de datos, es comun que la primera carga de datos contenga mucha informacion erronea y se ocupa mecanismos o instrucciones en SQL para corregir o editar esta informacion. UPDATE es la instruccion SQL especializada en esta area de procesos comunes con tablas, su formato es: UPDATE nombretabla SET nomcolumna=expresion WHERE condicion ; La instruccion update actualiza o modifica los renglones de una tabla, SET le indica a MYSQL cuales son las columnas a modificar y WHERE se usa para seleccionar un renglon determinado o un conjunto de renglones, los casos mas comunes son: 1.- Actualizar una columna o varias columnas a todos los renglones de la tabla ejemplo: UPDATE peliculas SET preciopelicula = 150.00; Corrida:

2.- Recordar que tambien se pueden usar expresiones algebraicas ejemplo: UPDATE peliculas SET preciopelicula = 19.99 * 11.28 ; Corrida:

13.2.7. Sintaxis de SELECT 13.2.7.1. Sintaxis de JOIN 13.2.7.2. Sintaxis de UNION 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, ...

[INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name'] [FROM table_references [WHERE where_definition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_definition] [ORDER BY {col_name | expr | position} [ASC | DESC] , ...]

[LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [FOR UPDATE | LOCK IN SHARE MODE]]

SELECT se usa para recibir registros seleccionados desde una o más tablas. MySQL 5.0 incluye soporte para comandos UNION y subconsultas. Consulte Sección 13.2.7.2, “Sintaxis de UNION” y Sección 13.2.8, “Sintaxis de subconsultas”. Cada select_expr indicata una columna que quiere recibir. table_references indicata la tabla o tablas desde la que recibir registros. Su sintaxis se describe en Sección 13.2.7.1, “Sintaxis de JOIN”. where_definition consiste en la palabra clave WHERE seguida por una expresión que indica la condición o condiciones que deben satisfacer los registros para ser seleccionados.

SELECT también puede usarse para recuperar registros computados sin referencia a ninguna tabla. Por ejemplo: mysql> SELECT 1 + 1; -> 2 Todas las cláusulas usadas deben darse exactamente en el orden mostrado en la descripción de la sintaxis. Por ejemplo, una cláusula HAVING debe ir tras cualquier cláusula GROUP BY y antes de cualquier cláusula ORDER BY . Una select_expr puede tener un alias usando AS alias_name. El alias se usa como el nombre de columna de la expresión y puede usarse en cláusulas GROUP BY, ORDER BY, o HAVING . Por ejemplo: mysql> SELECT CONCAT(last_name,', ',first_name) AS full_name -> FROM mytable ORDER BY full_name; La palabra clave AS es opcional cuando se usa un alias para select_expr. El ejemplo precedente podría haberse escrito como: mysql> SELECT CONCAT(last_name,', ',first_name) full_name -> FROM mytable ORDER BY full_name; Como AS es opcional, puede ocurrir un sutil problema si olvida la coma entre dos expresiones select_expr : MySQL interpreta el segundo como un nombre de alias. Por ejemplo, en el siguiente comando, columnb se tata como un nombre de alias: mysql> SELECT columna columnb FROM mytable;

Por esta razón, es una buena práctica poner los alias de columnas usando AS. No se permite usar un alias de columna en una cláusula WHERE, ya que el valor de columna puede no estar determinado cuando se ejecuta la cláusula WHERE . Consulte Sección A.5.4, “Problemas con alias de columnas”. La cláusula FROM table_references indica la tabla desde la que recibir registros. Si nombra más de una tabla, está realizando un join, Para información sobre la sintaxis de join, consulte Sección 13.2.7.1, “Sintaxis de JOIN”. Para cada tabla especificada, puede opcionalmente especificar un alias. tbl_name [[AS] alias] [[USE INDEX (key_list)] | [IGNORE INDEX (key_list)] | [FORCE INDEX (key_list)]] El uso de USE INDEX, IGNORE INDEX, FORCE INDEX para dar al optimizador pistas acerca de cómo escoger los indices se describe en Sección 13.2.7.1, “Sintaxis de JOIN”. En MySQL 5.0, puede usar SET max_seeks_for_key=value como alternativa para forzar a MySQL a que realice escaneos de claves en lugar de escaneos de tabla. Puede referirse a una tabla dentro de la base de datos actual como tbl_name (dentro de la base de datos actual) , o como db_name.tbl_name para referirse a una base de datos explícitamente. Puede referirse a una columna como col_name, tbl_name.col_name, o db_name.tbl_name.col_name. No necesita especificar un prefijo tbl_name o db_name.tbl_name para una referencia de columna a no ser que la referencia fuese ambígua. Consulte Sección 9.2, “Nombres de bases de datos, tablas, índices, columnas y alias” para ejemplos de ambigüedad que requieran las formas de referencia de columna más explícitas. En MySQL 5.0, puede especificar DUAL como nombre de tabla falso en siguaciones donde no se referencian tablas: mysql> SELECT 1 + 1 FROM DUAL; -> 2

DUAL es una característica puramente de compatibilidad. Otros servidores requieren esta sintaxis. Una referencia de tabla puede tener un alias usando tbl_name AS alias_name o tbl_name alias_name: mysql> SELECT t1.name, t2.salary FROM employee AS t1, info AS t2 -> WHERE t1.name = t2.name; mysql> SELECT t1.name, t2.salary FROM employee t1, info t2 -> WHERE t1.name = t2.name; En la cláusula WHERE , puede usar cualquiera de las funciones que soporta MySQL, escepto para funciones agregadas (resumen). Consulte Capítulo 12, Funciones y operadores.

Las columnas seleccionadas para la salida pueden ser referidas en cláusulas ORDER BY y GROUP BY usando nombres de columnas, alias, o posiciones. Las posiciones de columnas son enteros y comienzan con 1: mysql> SELECT college, region, seed FROM tournament -> ORDER BY region, seed; mysql> SELECT college, region AS r, seed AS s FROM tournament -> ORDER BY r, s; mysql> SELECT college, region, seed FROM tournament -> ORDER BY 2, 3; Para ordenar en orden inverso, añada la palabra clave DESC (descendiente) al nombre de la columna en la cláusula ORDER BY por la que está ordenando. Por defecto es orden ascendente; puede especificarse explícitamente usando la palabra clave ASC. El uso de posiciones de columna está obsoleto ya que la sintaxis se ha eliminado del estándar SQL. Si usa GROUP BY, los registros de salida se ordenan según las columnas GROUP BY como si tuviera un ORDER BY para las mismas columnas. MySQL 5.0 extiende la cláusula GROUP BY para que pueda especificar ASC y DESC tras las columnas nombradas en la cláusula: SELECT a, COUNT(b) FROM test_table GROUP BY a DESC MySQL extiende el uso de GROUP BY para permitir seleccionar campos que no se mencionan en la cláusula GROUP BY . Si no obtiene los resultados que espera de la consulta, por favor lea la descripción de GROUP BY en Sección 12.10, “Funciones y modificadores para cláusulas GROUP BY”. En MySQL 5.0, GROUP BY permite un modificador WITH ROLLUP . Consulte Sección 12.10.2, “Modificadores de GROUP BY”. La cláusula HAVING se aplica casi al final, justo antes de que los elementos se envíen al cliente, sin optimización. (LIMIT se aplica tras HAVING.) Antes de MySQL 5.0.2, una cláusula HAVING podía referirse a cualquier columna o alias nombrado en una select_expr en la lista SELECT o en subconsultas externas, y para funciones agregadas. Sin embargo, el estándar SQL requiere que HAVING debe referirse sólo a columnas en la cláusula GROUP BY o columnas usadas en funciones agregadas. Para acomodar ambos estándars SQL y el comportamiento específico de MySQL en que es capaz de referirse a columnas en la lista SELECT , MySQL 5.0.2 y posteior permite a HAVING referirse a columnas en la lista SELECT , en la cláusula GROUP BY , en subconsultas externas y en funciones agregadas. Por ejemplo, el siguiente comando funciona en MySQL 5.0.2 pero produce un error en versiones aneriores: mysql> SELECT COUNT(*) FROM t GROUP BY col1 HAVING col1 = 2;

Si la cláusula HAVING se refiere a una columna ambígua, se muestra una advertencia. En el siguiente comando, col2 es ambíguo porque se usa tanto para un alias como para un nombre de columna: mysql> SELECT COUNT(col1) AS col2 FROM t GROUP BY col2 HAVING col2 = 2; Se da preferencia al comportamiento SQL estándar, así que si un nombre de columna HAVING se usa en un GROUP BY y como alias de columna en la lista de columnas de salida, se da preferencia a la columna en GROUP BY . No use HAVING para elementos que deban estar en la cláusula WHERE . Por ejemplo, no escriba lo siguiente: mysql> SELECT col_name FROM tbl_name HAVING col_name > 0; Escriba esto en su lugar: mysql> SELECT col_name FROM tbl_name WHERE col_name > 0; La cláusula HAVING puede referirse a funciones de agregación, algo que no puede hacer la cláusula WHERE: mysql> SELECT user, MAX(salary) FROM users -> GROUP BY user HAVING MAX(salary)>10; (Esto no funciona en versiones antiguas de MySQL.) La cláusula LIMIT puede usarse para restringir el número de registros retornados por el comando SELECT. LIMIT tiene uno o dos argumentos numéricos, que deben ser enteros positivos (incluyendo cero). Con dos argumentos, el primer argumento especifica el desplazamiento del primer registro a retornar. El desplazamiento del registro inicial es 0 (no 1): mysql> SELECT * FROM table LIMIT 5,10; 15

# Retrieve rows 6-

Por compatibilidad con PostgreSQL, MySQL también soporta la sintaxis LIMIT row_count OFFSET offset. Para recibir todos los registros de un desplazamiento hasta el final del conjunto de resultados, puede usar algún número grande para el segundo parámetro. Ete comando recibe todos los registros desde el 96th hasta el último: mysql> SELECT * FROM table LIMIT 95,18446744073709551615; Con un argumento, el valor especifica el número de registros a retornar desde el comienzo del conjunto de resultados:

mysql> SELECT * FROM table LIMIT 5; rows

# Retrieve first 5

En otras palabras, LIMIT n es equivalente a LIMIT 0,n. La forma SELECT ... INTO OUTFILE 'file_name' de SELECT escribe los registros seleccionados en un fichero. El fichero se crea en el equipo servidor, así que debe tener el permiso FILE para usar esta sintaxis. El fichero no puede existir, que entre otras cosas evita destruir ficheros cruciales tales como /etc/passwd y tablas de la base de datos. El comando SELECT ... INTO OUTFILE existe principalmente para dejarle volcar una tabla rápidamente en la máquina servidor. Si quiere crear el fichero resultante en un equipo cliente distinto al equipo servidor, no puede usar SELECT ... INTO OUTFILE. En tal caso, debería usar algún comando como mysql -e "SELECT ..." > file_name en el equipo cliente para generar el fichero.

SELECT ... INTO OUTFILE es el complemento de LOAD DATA INFILE; la sintaxis para la parte export_options del comando consiste en las mismas cláusulas FIELDS y LINES usadas con el comando LOAD DATA INFILE . Consulte Sección 13.2.5, “Sintaxis de LOAD DATA INFILE”. FIELDS ESCAPED BY controla cómo escribir carácteres especiales. Si el carácter FIELDS ESCAPED BY no está vacío, se usa como prefijo para los siguientes carácteres en la salida: o o o o

El carácter FIELDS ESCAPED BY El carácter FIELDS [OPTIONALLY] ENCLOSED BY El primer carácter de FIELDS TERMINATED BY y LINES TERMINATED BY ASCII 0 (que se escribe siguiendo el carácter de escape ASCII '0', no un byte con valor cero)

Si el carácter FIELDS ESCAPED BY está vacío, no hay ningún carácter de escape y NULL se muestra por salida como NULL, no \N. Probablemente no es buena idea especificar un carácter de escape vacío, particularmente si los valores de los campos de sus datos contienen cualqiuera de los carácteres en la lista dada. La razón de lo anterior es que debe escapar cualquier carácter FIELDS TERMINATED BY, ENCLOSED BY, ESCAPED BY, o LINES TERMINATED BY para ser capaz de volver a leer el fichero correctamente. ASCII NUL se escapa para hacer más fácil visualizarlo con algunos visores. El fichero resultante no tiene que estar conforme a la sintaxis SQL, así que nada más debe escaparse.

Este es un ejemplo que produce un fichero en formato de valores separados por comas usado por varios programas: SELECT a,b,a+b INTO OUTFILE '/tmp/result.text' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table; Si usa INTO DUMPFILE en lugar de INTO OUTFILE, MySQL escribe sólo un registro en el fichero, sin ninguna terminación de línea o columna y sin realizar ningún proceso de escape. Esto es útil si quiere almacenar un valor BLOB en un fichero. Nota: Cualquier fichero creado por INTO OUTFILE o INTO DUMPFILE es modificable por todos los usuarios en el equipo servidor. La razón es que el servidor MySQL no puede crear un fichero con un propietario distinto al usuario que está en ejecución (nunca debe ejecutar mysqld como root por esta y otras razones). El fichero debe ser modificable por todo el mundo para que pueda maminpular sus contenidos. Una cláusula PROCEDURE nombra a un procedimiento que debe procesar los datos en el conjunto de resultados. Para un ejemplo, consulte Sección 27.3.1, “Procedimiento Analyse”. Si usa FOR UPDATE en un motor de almacenamiento que usa bloqueo de páginas o registros, los registros examinados por la consulta se bloquean para escritura hasta el final de la transacción actual. Usar LOCK IN SHARE MODE crea un bloqueo compartido que evita a otras transacciones actualizar o borrar los registros examinados. Consulte Sección 15.10.5, “Bloquear lecturas SELECT ... FOR UPDATE y SELECT ... LOCK IN SHARE MODE”. Tras la palabra clave SELECT , puede usar un número de opciones que afectan la operación del comando. Las opciones ALL, DISTINCT, and DISTINCTROW especifican si deben retornarse los registros duplicados. Si no se da ninguna de estas opciones, por defecto es ALL (se retornan todos los registros coincidentes). DISTINCT y DISTINCTROW son sinónimos y especifican que los registros duplicados en el conjunto de resultados deben borrarse.

HIGH_PRIORITY, STRAIGHT_JOIN, y opciones que comiencen con SQL_ son extensiones de MySQL al estándar SQL. HIGH_PRIORITY da a SELECT prioridad más alta que un comando que actualice una tabla. Debe usar esto sólo para consultas que son muy rápidas y deben realizarse una vez. Una consulta SELECT HIGH_PRIORITY que se realiza mientras la tabla está bloqueada para lectura se ejectua incluso si hay un comando de actualización esperando a que se libere la tabla. HIGH_PRIORITY no puede usarse con comandos SELECT que sean parte de una UNION.

STRAIGHT_JOIN fuerza al optimizador a hacer un join de las tablas en el orden en que se listan en la cláusula FROM . Puede usarlo para acelerar una consulta si el optimizador hace un join con las tablas en orden no óptimo. Consulte Sección 7.2.1, “Sintaxis de EXPLAIN (Obtener información acerca de un SELECT)”. STRAIGHT_JOIN también puede usarse en la lista table_references . Consulte Sección 13.2.7.1, “Sintaxis de JOIN”. SQL_BIG_RESULT puede usarse con GROUP BY o DISTINCT para decir al optimizador que el conjunto de resultados tiene muchos registros. En este caso, MySQL usa directamente tablas temporales en disco si son necesarias con una clave en los elementos GROUP BY . SQL_BUFFER_RESULT fuerza a que el resultado se ponga en una tabla temporal . Esto ayuda a MySQL a liberar los bloqueos de tabla rápidamente y ayuda en casos en que tarda mucho tiempo en enviar el resultado al cliente. SQL_SMALL_RESULT puede usarse con GROUP BY o DISTINCT para decir al optimizador que el conjunto de resultados es pequeño. En este caso, MySQL usa tablas temporales rápidas para almacenar la tabla resultante en lugar de usar ordenación. En MySQL 5.0, esto no hará falta normalmente. SQL_CALC_FOUND_ROWS le dice a MySQL que calcule cuántos registros habrán en el conjunto de resultados, sin tener en cuenta ninguna cláusula LIMIT. El número de registros pueden encontrarse con SELECT FOUND_ROWS(). Consulte Sección 12.9.3, “Funciones de información”. SQL_CACHE le dice a MySQL que almacene el resultado de la consulta en la caché de consultas si está usando un valor de query_cache_type de 2 o DEMAND. Para una consulta que use UNION o subconsultas, esta opción afecta a cualquier SELECT en la consulta. Consulte Sección 5.12, “La caché de consultas de MySQL”. SQL_NO_CACHE le dice a MySQL que no almacene los resultados de consulta en la caché de consultas. Consulte Sección 5.12, “La caché de consultas de MySQL”. Para una consulta que use UNION o subconsultas esta opción afecta a cualquier SELECT en la consulta. MYSQL TEMA 12: - UPDATE TABLE 3.- El caso mas comun es solo actualizar un renglon o registro, para esta situacion solo usar la clausula WHERE como lo muestra el siguiente ejemplo: Update peliculas set preciopelicula = 500 where nombrepelicula = ‘becool’; Corrida:

4.- SQL UPDATE en MYSQL tambien puede actualizar un subconjunto de renglones de la tabla, como lo muestra el siguiente ejemplo: Update peliculas set preciopelicula = 333 where tipopelicula = ‘accion’;

Corrida:

Bueno como se observa de los ejemplos demostrados en este MYSQL TEMA MYSQL UPDATE es una instruccion poderosa y a la vez muy sencilla para todos los problemas de edicion o modificacion de tablas en las diversas bases de datos que vayan construyendo a lo largo de este tutorial.

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.