Comprobación rápida de MySQL - Programación en MySQL

Comprobación rápida de MySQL

Debido a que a menudo olvido algunas declaraciones, palabras clave, operaciones, etc. de MySQL en mi trabajo y estudio diario, recientemente me tomé un tiempo para escribir el siguiente contenido sobre MySQL. es como un diccionario


Restablecer contraseña de mysql Operadores
de tipo de datos Funciones comunes Integridad de datos Operaciones básicas de la base de datos Operaciones en la propia tabla Operaciones sobre datos en la tabla Subconsulta Conexión de múltiples tablas Vista de índice Preprocesamiento de declaraciones SQL Funciones personalizadas y procedimientos almacenados Este artículo













variable

En MySQL, después de que el cliente se conecta exitosamente al servidor, se generará la sesión correspondiente. Durante una sesión, la instancia del servicio MySQL genera variables del sistema de sesión correspondientes a la sesión en la memoria del servidor MySQL. Los valores iniciales de estas variables son copias de las variables globales del sistema. Por supuesto, los usuarios también pueden personalizar las variables. Hay dos tipos de variables personalizadas: unas son las variables de sesión del usuario que comienzan con @ y la otra son las variables locales.

variables de sesión

Las variables de sesión incluyen variables de sesión del sistema y variables de sesión del usuario.
Lo que ambos tienen en común:

  • Los nombres de las variables no distinguen entre mayúsculas y minúsculas.

La diferencia entre los dos:

  • Las variables de sesión del usuario generalmente comienzan con una "@"; las variables de sesión del sistema comienzan con dos "@".
  • Las variables de sesión del sistema se pueden utilizar directamente sin definición; las variables de sesión del usuario deben definirse primero.
# 例如保存MySQL版本的系统会话变量
select @@version;
+-------------------------+
| @@version               |
+-------------------------+
| 8.0.26-0ubuntu0.20.04.3 |
+-------------------------+
1 row in set (0.01 sec)

Cómo utilizar variables de sesión de usuario

Una vez creada correctamente una variable de sesión de usuario, se puede utilizar en otras declaraciones SQL como expresión o componente de una expresión. Otros clientes no pueden acceder a las variables de sesión del cliente MySQL en su propia sesión, y el cliente no puede acceder a las variables de sesión de otros clientes. Las variables de sesión se liberan automáticamente después de que el cliente se desconecta, es decir, finaliza la sesión.

Definición y asignación de variables de sesión de usuario.

SET @user_variable1 = expression1[, @user_variable2 = expression2, ...]; # 方式一
SELECT expression1 into @user_variable1[, expression2 into @user_variable2, ...];  #方式二
# 定义用户会话变量
# @user_varable 变量名
# expression 表达式

# 例

# 简单的定义变量并赋值
set @name = '老王';
select @name := '老王';

# 从表people中id为1的记录取出name字段的值赋值给用户会话变量@name
set @name = (select name from people where id = 1);
select name from people where id = 1 into @name; 

# 简单地查看变量值
select @name;

variables locales

Las variables locales son variables que son válidas dentro del alcance de un programa local donde están definidas.

Definición y asignación de variables locales.

DECLARE variable type [default default_value];

Uso de variables locales.

Las variables locales deben definirse en procedimientos almacenados, como funciones, activadores y procedimientos almacenados. El alcance de las variables locales se limita a los procedimientos almacenados.

delimiter //
create procedure pro_test(in p_id char(10), out p_name char(10))
begin
	declare local_name char(10) default 'null';  # 定义一个局部变量,默认值为‘null’
	select name into local_name from people where id = p_id;
	select local_name;
	set p_name = local_name;
end //
delimiter ;

# 使用
set @test_name = 'null';

call pro_test(2, @test_name);
+------------+
| local_name |
+------------+
| 潘子       |
+------------+
1 row in set (0.00 sec)

# 查看一下@test_name
select @test_name;
+------------+
| @test_name |
+------------+
| 潘子       |
+------------+
1 row in set (0.00 sec)

Comentario

Tres tipos de comentarios para MySQL:

  • # comentario del signo de almohadilla comentario de una sola línea
  • --Comentarios con doble guión, comentarios de una sola línea.
  • / / Barra diagonal, comentarios de asterisco, comentarios de varias líneas

Declaraciones condicionales

si declaración

IF 条件 then
	...
[ELSEIF 条件 then]
	...
[ELSE]
	...
END IF

# 例
set @a = 1;
set @b = 2;
set @c = '';
delimiter //
create procedure pro_test2(in a int, in b int, out c char(10))
begin
	if @a > @b then set @c = 'a比较大';
	else set @c = 'b比较大';
	end if;
end //
delimiter ;

call pro_test2(@a, @b, @c);
Query OK, 0 rows affected (0.00 sec)

select @c;
+------------+
| @c         |
+------------+
| b比较大    |
+------------+
1 row in set (0.00 sec)

declaración del caso

CASE case_value
    WHEN when_value THEN ...
    [WHEN when_value THEN ...]
    ...
    [ELSE statement_list]
END CASE
或者
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
# 类似于一些编程语言中的switch语句

# 例
# 使用第一种case
DELIMITER //
CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 1 THEN SELECT 'OK';
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END//
DELIMITER ;

# 使用第二张case
DELIMITER //
CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE
      WHEN v = 1 THEN SELECT 'OK';
      WHEN v = 2 THEN SELECT v;
      WHEN v = 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END//
DELIMITER ;

# 两者执行的输出结果一样
call p;
+----+
| OK |
+----+
| OK |
+----+
1 row in set (0.00 sec)

caso

declaración de bucle

dejar y iterar

Cualquiera que haya estudiado lenguajes de programación debe saber que existen dos palabras clave para bucles en los lenguajes de programación: romper y continuar . Salir de aquí es como una pausa en los lenguajes de programación; iterar es como continuar.

declaración de bucle while

[begin_label:] WHILE search_condition DO
    statement_list
END WHILE [end_label]

# 例
DELIMITER //
CREATE PROCEDURE dowhile()
BEGIN
  DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    SELECT concat('Hello MySQL', v1); # 输出
    SET v1 = v1 - 1;
  END WHILE;
END//
DELIMITER ;

# 输出结果
CALL dowhile;
+---------------------------+
| concat('Hello MySQL', v1) |
+---------------------------+
| Hello MySQL5              |
+---------------------------+
1 row in set (0.00 sec)

+---------------------------+
| concat('Hello MySQL', v1) |
+---------------------------+
| Hello MySQL4              |
+---------------------------+
1 row in set (0.00 sec)

+---------------------------+
| concat('Hello MySQL', v1) |
+---------------------------+
| Hello MySQL3              |
+---------------------------+
1 row in set (0.00 sec)

+---------------------------+
| concat('Hello MySQL', v1) |
+---------------------------+
| Hello MySQL2              |
+---------------------------+
1 row in set (0.00 sec)

+---------------------------+
| concat('Hello MySQL', v1) |
+---------------------------+
| Hello MySQL1              |
+---------------------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mientras

declaración de bucle

[begin_label:] LOOP
    statement_list
END LOOP [end_label]

# 例
DELIMITER //
CREATE PROCEDURE doiterate(p1 INT)
BEGIN
  label1: LOOP
    SET p1 = p1 + 1;
    IF p1 < 10 THEN
      ITERATE label1; # 结束本次循环并回到label1处继续之后的内容
    END IF;
    LEAVE label1;
  END LOOP label1;
  SET @x = p1;
END//
DELIMITER ;

# 结果
call doiterate(0);
Query OK, 0 rows affected (0.00 sec)

mysql> select @x;
+------+
| @x   |
+------+
|   10 |
+------+
1 row in set (0.00 sec)

repetir declaración de bucle

[begin_label:] REPEAT
    statement_list
UNTIL search_condition
END REPEAT [end_label]

Supongo que te gusta

Origin blog.csdn.net/weixin_45345384/article/details/120893212
Recomendado
Clasificación