1. Bloqueo de declaración, comentario y marca de fin del comando de reinicio
Bloque de declaración
EMPEZAR
Instrucción SQL | bloque de instrucción SQL
FIN
Descripción:
Block El bloque de instrucciones BEGIN ... END contiene todas las operaciones de procesamiento del bloque de programa, lo que permite anidar los bloques de instrucciones.
Use El uso del bloque de instrucciones BEGIN ... END solo en MySQL no tiene ningún sentido, solo tiene sentido encapsularlo dentro de procedimientos almacenados, funciones almacenadas, disparadores y otros programas almacenados.
2. Notas
1) comentario de una sola línea
Use el símbolo "##" como comentario para un enunciado de una sola línea y escríbalo en el lado de la línea o del enunciado que debe comentarse .
[Ejemplo 3-24] Ejemplos.
## Tome el máximo de dos números
SET @ x = 5, @ y = 6; ## Define dos variables y asigna valores
SELECCIONE SI (@x> @ y, @ x, @ y) valor máximo;
2) comentarios de varias líneas
Use / * y * / para encerrar múltiples líneas de declaraciones de comentarios.
3. Restablecer marcador final del comando
Símbolo DELIMITER
【Descripción】
(1) El símbolo puede ser algunos símbolos especiales, como dos "#", dos "@", dos "$" y dos "%". Pero evite usar el carácter de barra diagonal inversa "/", porque es el carácter de escape de MySQL.
(2) Para reanudar el uso del punto y coma como marcador final, ejecute el comando DELIMITER;
En segundo lugar, la función de almacenamiento.
1. La creación de funciones almacenadas:
Nombre de la función CREATE FUNCTION ([nombre del parámetro tipo de datos del parámetro [,…]])
El tipo de datos del valor devuelto por la función RETURNS
EMPEZAR
Cuerpo de la función ;
Declaración de retorno;
FIN
Nota: con delimitador para caracterizar el principio y el final
2. Llame a la función almacenada
SELECCIONE el nombre de la función ([valor del parámetro [,…]])
DELIMITER @@
CREATE FUNCTION name_f1(dno DECIMAL(2))
RETURNS VARCHAR(14)
BEGIN
RETURN(SELECT dname FROM dept
WHERE deptno=dno);
END@@
DELIMITER;
SELECT name_f1(20);
3. Eliminar la función almacenada
Nombre de la función DROP FUNCTION;
Nota: No agregue paréntesis después del nombre de la función.
Tres, sentencia condicional
1. Uso de variables en el programa.
1) Declarar variables
DECLARAR nombre de variable local [, nombre de variable local, ...] tipo de datos [valor predeterminado POR DEFECTO];
2) Asignar valores a las variables
SET nombre de variable local = expresión 1
[, Nombre de la variable local = expresión 2, ...];
2) Declaración IF
1) Forma uno
SI <条件> ENTONCES
Instrucción SQL bloque 1;
[MÁS
Instrucción SQL bloque 2;]
TERMINARA SI;
Suplemento: el problema se produce aquí: esta función no tiene DETERMINISTIC, NO SQL o READS SQL DATA en su
La solución a este error al crear una función en MySQL: set global log_bin_trust_function_creators = TRUE;
Ejemplo: determinar si es un año bisiesto
DELIMITER @@
DROP FUNCTION IF EXISTS leap_year@@
CREATE FUNCTION leap_year(a int)
RETURNS VARCHAR(255)
BEGIN
IF((a%4=0 AND a%100<>0)OR a%400=0) THEN
RETURN '是闰年';
ELSE
RETURN '不是闰年';
END IF;
END@@
DELIMITER;
SELECT leap_year(2001);
2) Formulario 2
SI <条件 1> ENTONCES
Instrucción SQL bloque 1;
ELSEIF <条件 2> LUEGO
Instrucción SQL bloque 2;
......
MÁS
Bloque de instrucciones SQL n;
TERMINARA SI;
3) Declaración CASO
1) Forma uno
CASO <expresión>
CUANDO <valor de expresión 1> ENTONCES instrucción SQL bloque 1;
CUANDO <valor de expresión 2> ENTONCES instrucción SQL bloque 2;
......
CUANDO <valor de expresión n> ENTONCES bloque de instrucciones SQL n;
[ELSE bloque de instrucciones SQL n + 1;]
FIN;
[Ejemplo 3-32] Juzgar el nombre y el título de los primeros 3 registros en la tabla emp.
SELECT ename 姓名,CASE Job
WHEN '测试' THEN '工程师'
WHEN '设计' THEN '设计总监'
ELSE '经理'
END AS 职务
FROM emp LIMIT 3;
2) Formulario 2
CASO
CUANDO <condición 1> ENTONCES bloque de instrucción SQL 1;
CUANDO <condición 2> ENTONCES bloque de instrucción SQL 2;
......
CUANDO <condición n> ENTONCES bloque de instrucciones SQL n;
ELSE bloque de instrucciones SQL n + 1;
FIN;
[Ejemplo 3-33] La sentencia muestra el nombre ename, sal salarial básica y grado salarial de los primeros tres registros de la tabla emp.
SELECT ename,sal,CASE
WHEN sal BETWEEN 700 AND 1200 THEN '一级'
WHEN sal BETWEEN 1201 AND 1400 THEN '二级'
WHEN sal BETWEEN 1401 AND 2000 THEN '三级'
WHEN sal BETWEEN 2001 AND 3000 THEN '四级'
ELSE '五级'
END 工资等级
FROM emp LIMIT 3;
Cuatro, declaración de bucle
1) Ciclo de bucle
Etiqueta: LOOP
Bloque de instrucciones SQL;
IF <expresión condicional> ENTONCES
DEJA la etiqueta;
TERMINARA SI;
END LOOP;
[Ejemplo 3-34] Ejemplo de declaración de bucle LOOP. Cree una función de almacenamiento sum_fn () que devuelva la suma de 1 ~ n.
DELIMITER @@
DROP FUNCTION IF EXISTS sum_fn@@
CREATE FUNCTION sum_fn(n int)
RETURNS INT
BEGIN
DECLARE s,i INT;
SET s=0,i=1;
loop_label: LOOP
SET s=s+i;
SET i=i+1;
IF i>n THEN
LEAVE loop_label;
END IF;
END LOOP;
RETURN s;
END@@
DELIMITER ;
SELECT sum_fn(5);
2) MIENTRAS ciclo
MIENTRAS <expresión condicional> DO
Bloque de instrucciones SQL;
FINAL MIENTRAS;
[Ejemplo 3-35] WHILE ejemplo de declaración de bucle. Cree una función de almacenamiento sum_fn () que devuelva la suma de 1 ~ n.
DELIMITER @@
DROP FUNCTION IF EXISTS sum_fn@@
CREATE FUNCTION sum_fn(n int)
RETURNS INT
BEGIN
DECLARE s,i INT;
SET s=0,i=1;
WHILE i<=n DO
SET s=s+i;
SET i=i+1;
END WHILE;
RETURN s;
END@@
DELIMITER ;
SELECT sum_fn(5);
3) REPETIR ciclo
REPETIR
Bloque de instrucciones SQL;
UNTILE <expresión condicional>
REPETICIÓN FINAL;
[Ejemplo 3-36] Ejemplo de declaración de bucle REPEAT. Cree una función de almacenamiento sum_fn () que devuelva la suma de 1 ~ n .
DELIMITER @@
DROP FUNCTION IF EXISTS sum_fn@@
CREATE FUNCTION sum_fn(n int)
RETURNS INT
BEGIN
DECLARE s,i INT;
SET s=0,i=1;
REPEAT
SET s=s+i;
SET i=i+1;
UNTIL i>n
END REPEAT;
RETURN s;
END@@
DELIMITER ;
SELECT sum_fn(5);