12 FUNCIONES ............ .......................... ............................ ............................ ............................ ............................ ............................ ......................... ........... ..... .......... ..... 3 AVG........... AVG ..................... ..................... ..................... ..................... ..................... ..................... ..................... ................ ........................... ...................................3 ..............3 CONCAT.......... CONCAT..................... ..................... ..................... ..................... ..................... ...................... ..................... ..................... .................. ........................3 .................3 SUBSTR................. SUBSTR........................... ..................... ..................... ..................... ..................... ..................... ..................... ..................... ..................... .................. .........3 .3 LENGTH............ LENGTH...................... ..................... ..................... ..................... ...................... ..................... ..................... ............... ...................... .............................3 ...........3 ROUND.................. ROUND............................ ..................... ..................... ..................... ..................... ..................... ..................... ............ ............................3 ..................... .......3 CURRENT_DATE()..... CURRENT_DATE()................ ..................... ..................... ...................... ..................... ..................... ..................... ..................... .................. ...............3 ........3 DAY()......... DA Y().................... ..................... ..................... ..................... ..................... ..................... ..................... ....................... ................................. ............................3 .......3 MONTH()................. MONTH()........................... ..................... ..................... ..................... ..................... ..................... ..................... ..................... ................... .................3 .........3 YEAR()................. YEAR()............................ ...................... ..................... ..................... ..................... ..................... .......................... .................................... .........................3 ....3 CURRENT_TIME()............. CURRENT_TIME()........................ ..................... ..................... ..................... ..................... ............................. ....................................... .....................3 3 HOUR()................. HOUR()............................ ..................... ..................... ..................... ..................... ..................... ..................... ............. .. ...........................3 .................... .......3 LOWER()........... LOWER()..................... ..................... ..................... ..................... ..................... ..................... ..................... ....................... .................................. .....................3 3 UPPER()............... UPPER().......................... ..................... ..................... ...................... ..................... ..................... ..................... ............ .............................4 .................. ...........4 IFNULL()............... IFNULL()......................... ..................... ..................... ..................... ...................... ..................... ..................... ..................... ..................... ............. .. .......4 MAX/MIN()............... MAX/MIN().......................... ..................... ..................... ..................... ..................... ..................... ..................... ..................... ..................... ................ ..... .4 COUNT()............... COUNT().......................... ..................... ..................... ..................... ..................... ..................... ......................... .................................... .........................4 ....4 SUM().................. SUM()............................. ..................... ..................... ..................... ..................... ..................... ..................... ..................... ..................... .................. ....... ...4 IS NULL/ IS NOT NULL................ NULL.......................... ..................... ..................... ..................... ..................... .......................... ..............................4 ..............4 CLAUSULAS......... .................... ..................... ..................... ..................... ..................... ...................... ............................. ....................................... ......................... .... 5 GROUP BY........... BY..................... ..................... ...................... ..................... ..................... ..................... ..................... ..................... ................... .....................5 ............5 WHERE................. WHERE............................ ...................... ..................... ..................... ..................... ..................... .................. ............................ ................................5 ...........5 HAVING........ HAVING.................. ..................... ..................... ..................... ..................... ..................... ..................... ..................... ...................... ............... .... .............5 ORDER BY........... BY...................... ..................... ..................... ...................... ..................... ..................... ..................... ..................... .................. ....................5 .............5 LIMIT................. LIMIT............................ ..................... ..................... ..................... ..................... ..................... ..................... ..................... ..................... ............. ...........5 LIKE.................. LIKE............................. ..................... ..................... ..................... ..................... ..................... ..................... ................ .......................... ............................5 .......5 IN................... IN............................. ..................... ..................... ..................... ..................... ..................... ..................... ..................... ...................... ................. ...... .........5 ANY................... ANY.............................. ..................... ..................... ..................... ..................... ...................... ..................... ..................... ..................... .................. ........ ....5 ALL.................. ALL............................. ...................... ..................... ..................... ..................... ..................... ..................... ............. ... ...............................6 .................... ...........6 EXISTS................. EXISTS........................... ..................... ..................... ..................... ..................... ..................... ..................... ....................... ...............................6 ..................6 SENTECIAS SENTECIA S............. ........................... ............................ ............................ ............................ ............................ ............................ ............................ ................ ..... ....... 7 ALTER TABLE ...............................................................................................................7 CREATE CREATE DA DAT TABASE................. ABASE............................ ...................... ..................... ..................... ............................ ...................................... .........................7 ....7 CREATE CREATE TABLE........ TABLE.................. ..................... ..................... ..................... ..................... ..................... ..................... ................ ........................ ......................7 ....7 CREATE CREATE USER .................... ............................... ..................... ..................... ..................... ..................... ................ ......................... ...............................8 ...........8 CREATE CREATE VIEW................... VIEW............................. ..................... ..................... ..................... ..................... ..................... ...................... ..................... ............ .......8
12 DELETE ..................... ............................... ..................... ..................... ..................... ...................... ..................... ..................... .................. ........................8 .................8 DESCRIBE O DESC................. DESC........................... ..................... ..................... ..................... ..................... ..................... ............. ......................9 .................. ....9 DROP DATABASE..........................................................................................................9 DROP TABLE............... ABLE.......................... ..................... ..................... ..................... ..................... ...................... .............. ...................... ..............................9 ...........9 DROP USER................... USER.............................. ...................... ..................... ..................... ..................... ..................... ..................... ..................... .................. ..........9 ...9 GRANT............ GRANT....................... ..................... ..................... ..................... ..................... ...................... ..................... ..................... ............. .. ......................9 .................. ....9 INSERT........... INSERT..................... ..................... ..................... ..................... ..................... ..................... ..................... ..................... ..................... ........................10 ..............10 INSERT INSERT...SELECT............... ...SELECT.......................... ..................... ..................... ..................... ..................... .............. ...................... .................................10 ..............10 RENAME TABLE................. ABLE........................... ..................... ..................... ..................... ..................... ..................... ........................... ..........................10 ..........10 SELECT................ SELECT........................... ..................... ..................... ..................... ..................... ..................... ..................... .............. ..................... .........................10 .......10 UPDATE........ UPDA TE................... ..................... ..................... ..................... ..................... ..................... ..................... ...................... ..................... ................... ...............11 ......11 USE.................... USE.............................. ..................... ..................... ..................... ..................... ..................... ..................... ..................... ...................... ....................11 .........11 OTROS .............. ............................ ............................ ............................ ............................ ............................ ............................ ................ .. ..... .......... .......... .......... ....... .. 13 Guardar y Cargar................. Cargar........................... ..................... ..................... ..................... ...................... ..................... ..................... ............. .. ..........13 Trigger Triggers.............. s........................... ........................... ............................ ............................ ............................ ............................ ............................ ................... ..... ..13
12
FUNCIONES AVG Devuelve el valor medio de expresión:
AVG(expr)
CONCAT Devuelve la cadena resultante de concatenar los argumentos. Devuelve NULL si alguno de los argumentos es NULL. Puede haber más de 2 argumentos. P.ej: CONCA CONCAT(empno,’ T(empno,’ cobra ‘, sal); que nos daría una frase hecha diciendo diciendo lo que cobra cada tío SUBSTR Devuelve la cadena de entre las posiciones del String que tu elijas: Substr (‘String’,1,3) te devolvería ‘Str’ LENGTH Devuelve la cantidad de caracteres de la cadena: Length(‘String’); te devolvería 6 ROUND Devuelve un número redondeado con tantos decimales como le pongas: Round(45.926,2); te devolvería 45.93 CURRENT_DATE() Devuelve la fecha actual como un valor en el formato 'AAAA-MM-DD' o AAAAMMDD, dependiendo de si la función se usa en un contexto de cadena o numérico: CURRENT_DATE()
DAY() Devuelve el día del mes para la fecha dada, en el rango de 1 a 31: DA (expr) DAY Y (expr) MONTH() Devuelve el mes para la fecha dada, en el rango de 1 a 12: MONTH(expr) YEAR() Devuelve el año para la fecha dada: YEAR(expr) CURRENT_TIME() Devuelve la hora actual como un valor en el formato 'HH:MM:SS' o HHMMSS, dependiendo de si la función se usa en un contexto de cadena o numérico: CURRENT_TIME()
HOUR() Devuelve la hora del tiempo dado, en el rango de 1 a 24: HOUR(expr) LOWER() Devuelve la cadena str cono todos los caracteres cambiados a minúsculas de acuerdo con el mapa de caracteres actual: LOWER(expr)
12 UPPER() Devuelve la cadena en mayúsculas: UPPER(expr)
IFNULL() Si expr1 no es NULL, IFNULL() devuelve expr1, en caso contrario, devuelves expr2. IFNULL() devuelve un valor numérico o una cadena, dependiendo del contexto en el que se use: IFNULL(comm,0); MAX/MIN() Devuelve el valor mínimo o máximo de expr. MIN() y MAX() pueden tomar como argumento una cadena, en ese caso devolverán el valor de la cadena mínima o máxima. COUNT() Cuenta el número de atributos que tiene por los requisitos que le has pedido : Count (empno) from emp; te devolvería la cantidad de empleados de la tabla emp SUM() Devuelve la suma de cada valor numérico de los atributos que se pide: Count (sal) from emp; te devolvería el total de los salarios pagados a los empleados IS NULL/ IS NOT NULL Para buscar los valores de la tabla que queramos que sean/no sean nulos: Where ciudad IS NULL;
12
CLAUSULAS GROUP BY Sirve para agrupar las consultas, no solo puede hacerse con un campo sino que también se puede con dos… siendo el primero la primera agrupación y el segundo la segunda: GROUP BY empno,deptno WHERE Es quien te limita la consulta de un resultado de toda la tabla t abla a las condiciones que tu estás buscando: Where deptno=20 HAVING Lo mismo que el where pero esta se usa cuando se quiere poner la condición a algo que tiene un a funcion:: Having avg(sal)>30 ORDER BY Sirve para ordenar las consultas (NO AGRUPAR). AGRUPAR). Una característica de esta es que vaya acompañado por ASC o des con las cuales nos las ordenarían de menor a mayor (ASC) o de mayor a menor (DESC). *Para sacar datos como máximos y mínimos una posibilidad es usar esta función convinada con Limit: Select nombre from persona Group by nombre Order by sal Desc Limit 1.... Te devolvería el que más cobra… para el que menos en vez de Desc ->Asc LIMIT Te limita los resultados a la cantidad que tu quieras qu ieras Where …. Limit 1; En este caso te devolvería un único valor LIKE Te permite buscar los resultados con el carácter car ácter que tu quieras…. Where … like ‘a%’ …………..que empiece por a Where … like ‘%a’............. que acabe por a Where ... like %’a’%.......... que tenga una a IN Te dice lo que hay dentro de una tabla…. Es una muy buena opción para no hacer LeftJoin haciendo not in: Select ename from emp Where ename not in (select ename ename in dept); Te dice los tíos que no están en ningún departamento ANY La palabra clave ANY , que debe d ebe seguir a un operador de comparación, c omparación, significa “return TRUE si la comparación es TRUE para ANY (cualquiera) de los valores en la columna que retorna la subconsulta
12 Ejm: SELECT s1 FROM t1 WHERE s1 > ANY (SELECT (SELECT s1 FROM t2);
ALL La palabra ALL, que debe seguir a un operador de comparación, significa “return TRUE si la comparación es TRUE para ALL todos los valores en la columna que retorna la subconsulta.” EXISTS Si una subconsulta no retorna ningún registro, entonces EXISTS subquery es TRUE, y NOT EXISTS subquery es FALSE. ¿Qué clase de tienda hay en una o más ciudades? SELECT DISTINCT store_type FROM Stores WHERE EXISTS (SELECT * FROM Cities_Stores WHERE Cities_Stores.store_type = Stores.store_type); Stores.store_type);
12
SENTECIAS ALTER ALTER TABLE Permite modificar la estructura de una tabla existente. Por ejemplo, se pueden añadir o elim elimin inar ar colu column mnas as,, crear crear y dest destru ruir ir índi índice ces, s, camb cambia iarr el tipo tipo de una una colu column mna a existente o renombrar columnas o la propia tabla. También es posible modificar el comentario y el tipo de la tabla. ALTER TABLE nombre_tabla MODIFY nombre_fila tipo_dato_nuevo;
Diferentes Diferentes posibilidades: MODIFY RENAME DROP ADD DISABLE
modificar ti tipo da dato renombrar ta tabla borrar fila agregar fila deshabilit litar algo po por ej ejm ke keys
ALTER TABLE emp DISABLE CONSTRAINT emp_empno_pk; emp_empno_pk; ENABLE
habilitar algo
ALTER TABLE emp ENABLE CONSTRAINT emp_empno_pk; ORDER BY
orde rdenar por
Para meter a pelo la PK: ALTER TABLE tabla ADD CONSTRANT pk_nombre PRIMARY KEY (nombre); Para meter la FK: ALTER ALTER TABLE tabla ADD CONSTR CONSTRAINT AINT fk_nombre FORE FOREIGN IGN KEY (nombre) REFERENCES tabla2 (nombre2)
CREATE DATABASE CREATE DATABASE crea una base de datos con el nombre dado. Para usar CREATE CREATE en la base de datos. DATABASE se necesita el privilegio CREATE CREATE DATABASE nombre_BD
CREATE TABLE Crea una tabla con el nombre dado. Se debe poseer el privilegio CREATE para la tabla. Las reglas para nombres válidos de tablas se pueden ver aquí. Por defecto, la tabla se
12 crea en la base de datos actual. Se producirá un error si la tabla ya existe, si no hay una base de datos actual o si la base de datos no existe. CREATE TABLE nombre_tabla ( nombre_dato tipo_dato, ... ); Ejemplo para meter una PF o FK con la creación de tablas: CREATE TABLE dept ( deptno INT(2), dname VARCHAR(14), loc VARCHAR(13), VARCHAR(13), CONSTRAINT dept_dname_uk UNIQUE(dname) );
Si se quiere que algun campo no pueda ser null: dname VARCHAR() VARCHAR() NOT NULL
CREATE USER La sentencia CREATE USER crea nuevas cuentas MySQL. Para usarla se debe tener el privilegio GRANT OPTION para la base de datos mysql. Para cada cuenta, CREATE USER crea un nuevo registro en la tabla mysql.user sin privilegios. Se produce un error si la cuenta ya existe. Se le puede dar una contraseña a la cuenta con la cláusula opcional op cional IDENTIFIED. CREATE USER nombre_usuario IDENTIFIED BY 'PASS'
CREATE VIEW Esta Esta sente sentenci ncia a crea crea una vista nueva o reempl reemplaza aza una existent existente e si se incluy incluye e la cláusula OR REPLACE. Toda Toda vista pertenece a una base de datos. Por defecto, las vistas se crean en la base de datos actual. Pera crear una vista en una base de datos específica, indíquela con base_de_datos.nombre_vista base_de_datos.nombr e_vista al momento de crearla. Las tablas y las vistas comparten el mismo espacio de nombres en la base de datos, por eso, una base de datos no puede contener una tabla y una vista con el mismo nombre. CREATE VIEW nombre_vista AS SELECT * FROM t...Sentencia
DELETE DELETE elimina columnas desde "table_name" que satisfagan la condición dada por la "where_definition", "where_definition", y devuelve el número de registros borrados. Si se usa una sentencia DELETE sin cláusula WHERE, todas l as filas serán borradas DELETE FROM nombre_tabla WHERE
12 DESCRIBE O DESC Proporciona información sobre las columnas de una tabla. col_name puede ser un nombre nombre de columna columna o una cadena que contenga los caracteres comodín comodín SQL '%' and '_' para obtener salida sólo para las columnas cuyos nombres coincidan con la cadena. No es necesario escribir las cadenas entre comillas. DESC nombre_tabla
DROP DATABASE DROP DATABASE elimina todas las tablas de la base de datos y borra la base de datos. Hay que ser extremadamente cuidadoso con esta sentencia. Para usar DROP DATABASE, es necesario tener el privilegio DROP para la base de datos. DROP DATABASE nombre_BD
DROP TABLE DROP TABLE elimina una o más tablas. Se debe poseer el privilegi DROP para cada una de las tablas. Se eliminan tanto los datos que contengan y las definiciones de las tablas, así que hay que tener cuidado con esta sentencia. DROP TABLE nombre_tabla
DROP USER La sentencia DROP USER elimina una o más cuentas MySQL. Para usarla se debe poseer el privilegio GRANT OPTION para la base de datos mysql. Cada cuenta se nomb nombra ra usan usando do el mismo ismo form format ato o que que para para GRAN GRANT T O REVO REVOKE KE;; por por ejem ejempl plo, o, 'jeffrey'@'localhost'. Las partes del usuario y la máquina del nombre de la cuenta corresponden a los valores de las columnas User y Host del registro de la tabla user para la cuenta. DROP USER nombre_usr
GRANT Las sentencias GRANT y REVOKE permiten permiten a los administradores administradores del sistema sistema crear cuentas de usuario MySQL y conceder y revocar derechos de esas cuentas . En MySQL existen cinco niveles distintos de privilegios: •
•
•
• •
toda s las bases de datos en un servidor. Es Globales: se aplican al conjunto de todas el nivel más alto de privilegio, en el sentido de que su ámbito es el más general. De base de datos: se refieren a bases de datos individuales, y por extensión, a todos los objetos que contiene cada base de datos. De tabla: se aplican a tablas individuales, y por lo tanto, a todas las columnas de esas tabla. De columna: se aplican a una columna en una tabla concreta. De rutina: se aplican a los procedimientos almacenados. Aún no hemos visto
12 nada sobre este tema, pero en MySQL se pueden almacenar procedimietos consistentes en varias consultas SQL Privilegios Globales en una BD: GRANT ALL ON db_name.* TO nombre_usr IDENTIFIED BY 'pass'
Privilegios Individuales BD: GRANT SELECT,INSE SELECT,INSERT RT... db_name.* TO nombre_usr IDENTIFIED BY 'pass'
INSERT Inserta nuevas filas en una tabla existente. Los formatos INSERT ... VALUES e INSERT ... SET, SET, insertas filas basándose en los valores especificados explícitamente. El formato The INSERT ... SELECT inserta filas seleccionadas de otra tabla o tablas. El formato INSERT ... VALUES con una lista de múltiples valores INSERT INTO nombre_tabla () VALUES()
INSERT...SELECT Con INSERT ... SELECT , se pueden insertar rápidamente muchas filas en una tabla desde otra u otras tablas. INSERT INTO nombre_tabla () SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
RENAME TABLE La operación de renombrado se hace atómicamente, lo que significa que ningún otro proceso puede acceder a ninguna de las tablas mientras se realiza el renombrado. RENAME TABLE old_table TO new_table
SELECT SELECT se usa para recuperar filas seleccionadas de una o más tablas: • •
•
Cada select_expr indica una columna que se quiere recuperar r ecuperar.. table_references indica la tabla o tablas de las que se recuperan filas. Su sintaxis se describe en JOIN. where_definition consiste de la palabra clave WHERE seguida por una expresión que indica la condición o condiciones que las filas deben satisfacer para ser seleccionadas.
Todas las claúsulas usadas deben darse en el mismo orden exacto que se muestra en la descripción de la sintaxis. Por ejemplo, la cláusula HAVING debe estar después de cualquier cláusula GROUP BY y antes de cualquier cláusula ORDER BY .
12 La cláusula LIMIT puede puede ser usada para limitar a que el número de filas devuelto por la sentencia SELECT . LIMIT toma uno o dos argumentos ar gumentos numéricos, que deben ser constantes enteras. Con dos argumentos, el primero pr imero especifica el desplazamiento de la primera fila a devolver, devolver, el segundo especifica el máximo número de filas a devolver. devolver. El desplazamiento de la fila inicial es 0 (no 1):
UPDATE UPDATE actualiza columnas de filas existentes de una tabla con nuevos valores. La cláusu cláusula la SET indica las column columnas as a modifi modificar car y los valore valores s que deben tomar. tomar. La cláu cláusu sula la WHER WHERE, E, si se da, da, espe especi cifi fica ca qué qué fila filas s debe deben n ser ser actua actuali liza zada das. s. Si no se especifica, serán actualizadas todas ellas. Si se especifica la cláusula ORDER BY, las filas se modificarán en el orden especificado. La cláusula LIMIT establece un límite al número de filas que se pueden actualizar. actualizar.
La sentencia UPDATE soporta los modificadores siguientes: •
•
Si se usa la palabra LOW_PRIORITY, LOW_PRIORITY, la ejecución de UPDATE se retrasará hasta que no haya otros clientes haciendo lecturas de la tabla. Si se especifica IGNORE, la sentencia UPDATE no se abortará si se producen errores durante la actualización. Las filas con conflictos de claves duplicadas no se actualizarán. Las filas para las que la actualización de columnas se puedan producir errores de conversión se actualizarán con los valores válidos más próximos.
El ejemplo muestra una fusión interna usando el operador coma, pero un UPDATE multitabla puede usar cualquier tipo de fusión (join) permitido en sentencias SELECT, como un LEFT JOIN. Nota: no es posible usar ORDER BY o LIMIT con UPDATE multitabla. Si se usa una sentencia UPDATE multitabla que afecte a tablas InnoDB para las que haya definiciones de claves foráneas, el optimizador MySQL procesará las tablas en un orden diferente del de la relación padre/hijo. En ese caso, la sentencia puede fallar y deshará los cambios (roll back). En su lugar l ugar,, se debe actualizar una tabla y confiar el las capacidades de ON UPDATE que proporciona InnoDB que harán que las otras tablas se modifiquen del modo adecuado. Actualmente, no se puede actualizar una tabla y seleccionar desde la misma en una subconsulta.
UPDATE nombre_columna SET campo_actualizar WHERE... UPDATE con inner join por medio: UPDATE nombretabla SET micampo = valor FROM nombretabla1 t1 INNER JOIN nombretabla2 t2 ON t1.campoid=t2.campoid WHERE t1.algo = unvalor;
USE La sentencia USE db_name indica a MySQL que use la base de datos db_name como
12 la base de datos por defecto (actual) en sentencias subsiguientes. La base de datos sigue siendo la base de datos por defecto hasta el final de la sesión o hasta que se use otra sentencia USE USE nombre_DB
12
OTROS Guardar y Cargar mysql -u root scott< gorde.sql mysqldump --opt scott -u root >gorde.sql
Triggers create trigger triggerAcceso after delete on Acceso for each row begin set @fecha=(select count(fecha) from historicaAcceso where fecha=old.fecha);<------importante if (@fecha!=0) then update historicaAcceso set numAcceso=numAcceso+1 where fecha=old.fecha; endif; ; tras cada instruccion endif OLD y NEW AFTER y BEFORE FOR EACH ROW: salta el trigger por cada fila afectada