MySQL中存储过程与函数总结

2023-11-01

目录

1. 存储过程与函数的概念

2. 创建存储过程与函数

2.1. 参数列表

3. 使用变量

4. 定义条件与处理程序

1. 定义条件:

2. 定义处理程序:

3.六种定义处理程序的方法

方法一,捕获sqlstate_value

方法二,捕获mysql_error_code

方法三,先定义条件,然后调用

方法四,使用SQLWARNING

方法五,使用NOT FOUND

方法六,使用SQLEXCEPTION

5. 光标的使用

1. 声明光标:

2. 打开光标:

3. 使用光标:

4. 关闭光标:

6. 流程控制的使用

1. IF语句:

2. CASE语句:

3. LOOP语句:

4. LEAVE语句:

5. REPEAT语句:

6. WHILE语句:

7. 调用存储过程与函数

1. 存储过程的基本语法:

2. 存储函数的基本语法:

3.调用存储过程和存储函数的语法如下:

调用存储过程:

调用存储函数:

8. 查看存储过程与函数

1. 使用`SHOW STATUS`查看存储过程和存储函数:

2. 使用`SHOW CREATE`查看存储过程和存储函数的定义和创建语句:

3. 使用表中的元数据查看存储过程和存储函数:

9. 修改存储过程与函数

1. 修改存储过程的基本语法:

2. 修改存储函数的基本语法:

10. 删除存储过程与函数

1. 删除存储过程的基本语法:

2. 删除存储函数的基本语法:


MySQL中存储过程与函数是用于存储和执行SQL语句的一种方式,可以提高数据库的性能和安全性。

1. 存储过程与函数的概念

  • 存储过程(Stored Procedure)是一组预编译的SQL语句集合,通过一个名称进行调用和执行,可以看做是批文件但是起作用不仅限于批处理。
  • 函数(Function)是一个返回值的存储过程,可以作为一个表达式的一部分使用。

2. 创建存储过程与函数

 创建存储过程使用 `CREATE PROCEDURE` 语句,示例:

CREATE PROCEDURE procedure_name ([参数列表])
BEGIN
  -- 存储过程的SQL语句
END;
  • `CREATE PROCEDURE`:用于创建存储过程的关键字。
  • `procedure_name`:存储过程的名称,用于唯一标识存储过程。
  • `[参数列表]`:可选项,用于指定存储过程的输入、输出或输入输出参数。
  • `BEGIN` / `END`:用于定义存储过程的开始和结束位置。
  • `-- 存储过程的SQL语句`:在`BEGIN`和`END`之间的部分为存储过程的具体实现,包括各种SQL语句、控制流语句等。

创建函数使用 `CREATE FUNCTION` 语句,示例:

CREATE FUNCTION function_name ([参数列表])
RETURNS return_type
BEGIN
  -- 函数的SQL语句
  RETURN return_value;
END;
  • `CREATE FUNCTION`:用于创建函数的关键字。
  • `function_name`:函数的名称,用于唯一标识函数。
  • `[参数列表]`:可选项,用于指定函数的输入参数。
  • `RETURNS`:指定函数的返回类型。
  • `return_type`:函数的返回数据类型。
  • `-- 函数的SQL语句`:在`BEGIN`和`END`之间的部分为函数的具体实现,包括各种SQL语句、控制流语句等。
  • `RETURN return_value`:用于指定函数的返回值。

2.1. 参数列表

   存储过程可以接收零个或多个参数,并且每个参数都有一个数据类型。参数可以是输入参数、输出参数或输入输出参数。

(parameter_name1 data_type [IN|OUT|INOUT] [DEFAULT default_value],
 parameter_name2 data_type [IN|OUT|INOUT] [DEFAULT default_value], ...)
  • 输入参数(IN):存储过程接收的值只能在存储过程内部使用。使用`IN`关键字声明输入参数。
  • 输出参数(OUT):存储过程返回的值只能在存储过程外部使用。使用`OUT`关键字声明输出参数。
  • 输入输出参数(INOUT):既可以在存储过程内部使用,也可以在存储过程外部使用。使用`INOUT`关键字声明输入输出参数。
  • `parameter_name`:参数的名称,用于在存储过程或函数内部引用参数。
  • `data_type`:参数的数据类型。
  • `DEFAULT default_value`:可选项,用于指定参数的默认值。

3. 使用变量

   在存储过程中可以使用变量来存储临时数据。使用`DECLARE`语句来声明变量,示例:

DECLARE variable_name data_type [DEFAULT value];

   变量的作用范围限于存储过程内部,在存储过程结束后会被销毁。

4. 定义条件与处理程序

对于定义条件和处理程序,我们使用DECLARE和DECLARE HANDLER语法。

1. 定义条件:

DECLARE condition_name CONDITION FOR condition_value;
  • condition_name: 您为条件定义的名称。
  • condition_value: 表示条件的表达式或错误码。

示例:

DECLARE custom_error CONDITION FOR SQLSTATE '45000';

在这个示例中,我们使用DECLARE关键字定义了一个条件变量custom_error,与SQLSTATE '45000'相关联。

2. 定义处理程序:

DECLARE handler_type HANDLER FOR condition_value action;
  • handler_type: 特定的处理程序类型,如CONTINUE、EXIT或UNDO。
  • CONTINUE处理程序类型用于在遇到异常情况时,继续执行程序。它不会中断程序的执行,而是继续执行接下来的语句。
  • EXIT处理程序类型用于在遇到异常情况时,终止当前的存储过程、函数或触发器的执行。
  • UNDO处理程序类型用于遇到错误后撤销之前的操作(MySQL暂时不支持这种操作)
  • condition_value: 表示条件的表达式或错误码。
  • action: 在满足条件时要执行的操作。

示例:

DECLARE CONTINUE HANDLER FOR custom_error
BEGIN
    -- 执行操作,例如输出错误消息
    SELECT 'An error occurred: Custom Error' AS message;
END;

在这个示例中,我们定义了一个处理程序,当满足custom_error条件时,程序将继续执行,并输出一条自定义的错误消息。

注意,条件和处理程序必须在BEGIN...END语句块内使用。只有在DECLARE HANDLER语句之前定义的条件和处理程序才能在块内使用。

3.六种定义处理程序的方法

方法一,捕获sqlstate_value

DECLARE CONTINUE HANDLER FOR SQLSTATE ‘42S02’ SET @info=’NO_SUCH_TABLE’;

如果,遇到sqlstate_value值为’42S02’,则执行CONTINUE操作,并且,输出”NO_SUCH_TABLE”信息

方法二,捕获mysql_error_code

DECLARE CONTINUE HANDLER FOR 1146 SET @info=’NO_SUCH_TABLE’;

如果,遇到mysql_error_code值为1146,则执行CONTINUE操作,并且,输出”NO_SUCH_TABLE”信息

方法三,先定义条件,然后调用

DECLARE no_such_table CONDITION FOR 1146;
DECLARE CONTINUE HANDLER FOR NO_SUCH_TABLE SET @info=’ERROR’;

这里先定义no_such_table条件,遇到1146错误,就执行CONTINUE操作

方法四,使用SQLWARNING

DECLARE EXIT HANDLER FOR SQLWARNING SET @info=’ERROR’;

SQLWARNING捕获所有以01开头的,sqlstate_value值,然后,执行EXIT操作,并且,输出ERROR信息

方法五,使用NOT FOUND

DECLARE EXIT HANDLER FOR NOT FOUND SET @info=’NO_SUCH_TABLE’;

NOT FOUND捕获所有以02开头的sqlstate_value值,然后,执行EXIT操作,并且,输出”NO_SUCH_TABLE”信息

方法六,使用SQLEXCEPTION

DECLARE EXIT HANDLER FOR SQLEXCEPTION SET @info=’ERROR’;

SQLEXCEPTION捕获所有没有被SQLWARNING或NOT FOUND捕获的sqlstate_value值,然后,执行EXIT操作,并且,输出”ERROR”信息
定义条件和处理程序

5. 光标的使用

在MySQL中,光标用于在存储过程或函数中处理查询结果集。使用光标可以按行遍历结果集,以便对每一行进行操作。光标的使用包括声明光标、打开光标、使用光标和关闭光标。

1. 声明光标:

DECLARE cursor_name CURSOR FOR select_statement;
  • cursor_name:给光标指定的名称,用于后续引用。
  • select_statement:一个SELECT语句,用于定义光标的结果集。

示例:

DECLARE employee_cursor CURSOR FOR SELECT * FROM employees;

在上述示例中,我们声明了一个名为`employee_cursor`的光标,用于处理`employees`表的结果集。

2. 打开光标:

OPEN cursor_name;
  • cursor_name:要打开的光标的名称。

示例:

OPEN employee_cursor;

在上述示例中,我们打开之前声明的`employee_cursor`光标。

3. 使用光标:

使用光标的主要操作包括FETCH、LOOP和CLOSE。

 FETCH:用于从结果集中获取下一行数据。

FETCH cursor_name INTO variable_list;
  • cursor_name:要使用的光标的名称。
  • variable_list:接收结果集列值的变量列表。

示例:

FETCH employee_cursor INTO @empId, @empName, @empSalary;

在上述示例中,我们使用`employee_cursor`光标从结果集中获取下一行数据,并将列值分别存储在`@empId`、`@empName`和`@empSalary`变量中。

LOOP:用于循环遍历光标的结果集。

LOOP_label: LOOP
    -- 执行操作
    -- 在每个迭代中,使用FETCH获取下一行数据
END LOOP;

 LOOP_label:LOOP语句的标签,用于在需要的时候退出循环。示例:

employee_loop: LOOP
    FETCH employee_cursor INTO @empId, @empName, @empSalary;
    -- 执行操作,例如输出员工信息

    IF condition THEN
        LEAVE employee_loop; -- 根据条件跳出循环
    END IF;
END LOOP employee_loop;

在上述示例中,我们循环遍历`employee_cursor`光标的结果集,通过FETCH获取每一行数据并执行相应的操作。根据特定条件,我们使用LEAVE语句跳出循环。

4. 关闭光标:

CLOSE cursor_name;
  • cursor_name:要关闭的光标的名称。

示例:

CLOSE employee_cursor;

在上述示例中,我们关闭之前打开的`employee_cursor`光标。

6. 流程控制的使用

在MySQL中,流程控制语句用于控制程序的流程和执行顺序。常见的流程控制语句包括IF语句、CASE语句、LOOP语句、LEAVE语句、REPEAT语句和WHILE语句。

1. IF语句:

IF condition THEN
    statements;
ELSEIF condition THEN
    statements;
ELSE
    statements;
END IF;
  • condition:条件表达式,根据其计算结果来确定执行哪个代码块。
  • statements:执行的语句或代码块。

示例:

IF score > 90 THEN
    SELECT '优秀';
ELSEIF score > 80 THEN
    SELECT '良好';
ELSE
    SELECT '及格';
END IF;

在上述示例中,根据`score`的值,会执行不同的语句块并输出相应的结果。

2. CASE语句:

CASE expression
    WHEN value1 THEN
        statements;
    WHEN value2 THEN
        statements;
    ...
    ELSE
        statements;
END CASE;
  • expression:表达式或变量,用于与不同的值进行比较。
  • value1、value2等:可能的值。
  • statements:与每个值相关联的执行语句或代码块。

示例:

CASE department
    WHEN 'IT' THEN
        SELECT 'Information Technology';
    WHEN 'HR' THEN
        SELECT 'Human Resources';
    ELSE
        SELECT 'Other Department';
END CASE;

在上述示例中,根据`department`的值,会执行相应的语句块并输出相应的结果。

3. LOOP语句:

label: LOOP
    statements;
    IF condition THEN
        LEAVE label;
    END IF;
END LOOP label;
  • label:LOOP语句的标签,用于在需要的时候退出循环。
  • statements:执行的语句或代码块。
  •  condition:循环退出的条件。

示例:

employee_loop: LOOP
    SELECT name INTO @employee_name FROM employees
    WHERE department = 'IT' LIMIT 1;
    -- 执行操作,例如输出员工信息
    
    IF @employee_name IS NULL THEN
        LEAVE employee_loop; -- 根据条件跳出循环
    END IF;
END LOOP employee_loop;

在上述示例中,通过LOOP语句循环遍历`employees`表中的IT部门员工,执行相应的操作。当没有符合条件的员工时,使用LEAVE语句跳出循环。

4. LEAVE语句:

LEAVE label;

 label:要跳出的语句块的标签。

示例:

employee_loop: LOOP
    -- 执行操作
    IF condition THEN
        LEAVE employee_loop; -- 根据条件跳出循环
    END IF;
END LOOP employee_loop;

在上述示例中,使用LEAVE语句根据特定条件跳出循环。

5. REPEAT语句:

REPEAT
    statements;
    IF condition THEN
        LEAVE;
    END IF;
UNTIL condition;
  •  statements:执行的语句或代码块。
  • condition:循环退出的条件。

示例:

SET @count = 0;

REPEAT
    SET @count = @count + 1;
    SELECT @count;
    IF @count = 5 THEN
        LEAVE;
    END IF;
UNTIL @count > 10;

在上述示例中,使用REPEAT语句循环输出数值,当`@count`等于5时,使用LEAVE语句跳出循环。

6. WHILE语句:

WHILE condition DO
    statements;
END WHILE;
  • condition:循环的条件表达式。
  • statements:执行的语句或代码块。

示例:

SET @count = 1;

WHILE @count <= 5 DO
    SELECT @count;
    SET @count = @count + 1;
END WHILE;

在上述示例中,使用WHILE语句循环输出数值,当`@count`小于等于5时,执行相应的语句,并每次循环后递增`@count`的值。

7. 调用存储过程与函数

在MySQL中,可以使用存储过程和存储函数来封装一系列SQL语句,并根据需要进行调用。存储过程用于执行一系列操作,而存储函数则返回单个值。:

1. 存储过程的基本语法:

CREATE PROCEDURE procedure_name ([IN | OUT | INOUT] parameter_name data_type [, ...])
    [characteristics]
    BEGIN
        -- 存储过程的执行逻辑
    END;
  • procedure_name:存储过程的名称。
  • parameter_name:存储过程的参数名。
  • data_type:参数的数据类型。
  • IN:表示参数为输入参数。
  • OUT:表示参数为输出参数。
  • INOUT:表示参数既可作为输入参数,也可作为输出参数。
  • characteristics:存储过程的特性,如语言、事务特性。
  • BEGIN和END之间是存储过程中的执行逻辑。

示例:

CREATE PROCEDURE get_employee(IN empId INT)
BEGIN
    SELECT * FROM employees WHERE employee_id = empId;
END;

在上述示例中,我们创建了一个名为`get_employee`的存储过程,它接收一个输入参数`empId`,并根据该参数查询符合条件的员工。

2. 存储函数的基本语法:

CREATE FUNCTION function_name ([parameter_name data_type [, ...]])
    RETURNS return_type
    [characteristics]
    BEGIN
        -- 存储函数的执行逻辑
        RETURN value;
    END;

  • function_name:存储函数的名称。
  • parameter_name:存储函数的参数名。
  • data_type:参数的数据类型。
  • return_type:函数返回值的数据类型。
  • characteristics:存储函数的特性,如语言、事务特性。
  • BEGIN和END之间是存储函数中的执行逻辑。
  • value:函数的返回值。

示例:

CREATE FUNCTION calculate_total(salary INT, bonus INT) RETURNS INT
BEGIN
    DECLARE total_salary INT;
    SET total_salary = salary + bonus;
    RETURN total_salary;
END;

在上述示例中,我们创建了一个名为`calculate_total`的存储函数,它接收两个输入参数`salary`和`bonus`,并返回它们的和作为函数的返回值。

3.调用存储过程和存储函数的语法如下:

调用存储过程:

CALL procedure_name([parameter_value, ...]);

示例:

CALL get_employee(1);

在上述示例中,我们调用了名为`get_employee`的存储过程,并传入参数值1,以获取员工ID为1的员工信息。

调用存储函数:

SELECT function_name([parameter_value, ...]);

示例:

SELECT calculate_total(3000, 500) AS total_salary;

在上述示例中,我们调用了名为`calculate_total`的存储函数,并传入参数值3000和500,以计算总工资,并将结果作为查询的结果进行返回。

8. 查看存储过程与函数

在MySQL中,您可以使用不同的方法来查看存储过程和存储函数的详细信息,包括通过`SHOW STATUS`查看,通过`SHOW CREATE`查看,以及通过表中的元数据查看。

1. 使用`SHOW STATUS`查看存储过程和存储函数:

SHOW STATUS LIKE 'procedure';
SHOW STATUS LIKE 'function';
  • procedure:用于查看存储过程的状态信息。
  • function:用于查看存储函数的状态信息。

示例:

SHOW STATUS LIKE 'procedure';
SHOW STATUS LIKE 'function';

这些示例语句将显示与存储过程和存储函数相关的状态信息,包括存储过程和存储函数的计数和其他属性。

2. 使用`SHOW CREATE`查看存储过程和存储函数的定义和创建语句:

SHOW CREATE PROCEDURE procedure_name;
SHOW CREATE FUNCTION function_name;
  • procedure_name:要查看的存储过程的名称。
  • function_name:要查看的存储函数的名称。

示例:

SHOW CREATE PROCEDURE get_employee;
SHOW CREATE FUNCTION calculate_total;

这些示例语句将显示存储过程和存储函数的定义和创建语句,包括存储过程和存储函数的名称、参数、执行逻辑和返回值等详细信息。

3. 使用表中的元数据查看存储过程和存储函数:

您可以通过查询数据库中的特定表来查看存储过程和存储函数的元数据。以下是涉及的基本表和它们的解释:

  • `information_schema.ROUTINES`表:包含了所有存储过程和存储函数的信息。
  •  `information_schema.PARAMETERS`表:包含了所有存储过程和存储函数的参数信息。

示例:

SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE';
SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION';
SELECT * FROM information_schema.PARAMETERS WHERE SPECIFIC_NAME = 'get_employee';
SELECT * FROM information_schema.PARAMETERS WHERE SPECIFIC_NAME = 'calculate_total';

这些示例查询将返回存储过程和存储函数的详细信息,包括名称、参数、数据类型、执行逻辑等。

9. 修改存储过程与函数

在MySQL中,可以使用`ALTER PROCEDURE`和`ALTER FUNCTION`语句来修改已存在的存储过程和存储函数的定义。

1. 修改存储过程的基本语法:

ALTER PROCEDURE procedure_name ([IN | OUT | INOUT] parameter_name data_type [, ...])
    [characteristics]
    [COMMENT 'new_comment']
    BEGIN
        -- 修改后的存储过程的执行逻辑
    END;
  • procedure_name:要修改的存储过程的名称。
  • parameter_name:要修改的存储过程的参数名。
  • data_type:参数的数据类型。
  • IN:更新参数为输入参数。
  • OUT:更新参数为输出参数。
  • INOUT:更新参数为既可作为输入参数,也可作为输出参数。
  • characteristics:存储过程的特性,如语言、事务特性。
  • COMMENT 'new_comment':可选,用于修改存储过程的注释。
  • BEGIN和END之间是修改后的存储过程的执行逻辑。

示例:

ALTER PROCEDURE get_employee(IN empId INT)
BEGIN
    SELECT * FROM employees WHERE employee_id = empId;
    -- 修改后的逻辑
    UPDATE employees SET salary = salary + 1000 WHERE employee_id = empId;
END;

在上述示例中,我们修改了名为`get_employee`的存储过程,增加了在查询员工信息后更新员工工资的逻辑。

2. 修改存储函数的基本语法:

ALTER FUNCTION function_name ([parameter_name data_type [, ...]])
    RETURNS return_type
    [characteristics]
    [COMMENT 'new_comment']
    BEGIN
        -- 修改后的存储函数的执行逻辑
        RETURN new_value;
    END;
  • function_name:要修改的存储函数的名称。
  • parameter_name:要修改的存储函数的参数名。
  • data_type:参数的数据类型。
  • return_type:函数返回值的数据类型。
  • characteristics:存储函数的特性,如语言、事务特性。
  • COMMENT 'new_comment':可选,用于修改存储函数的注释。
  • BEGIN和END之间是修改后的存储函数的执行逻辑。
  • new_value:修改后的函数的返回值。

示例:

ALTER FUNCTION calculate_total(salary INT, bonus INT) RETURNS INT
BEGIN
    DECLARE total_salary INT;
    SET total_salary = salary + bonus;
    -- 修改后的逻辑
    SET total_salary = total_salary * 1.1;
    RETURN total_salary;
END;

在上述示例中,我们修改了名为`calculate_total`的存储函数,增加了将总工资乘以1.1的逻辑,然后返回修改后的结果。

10. 删除存储过程与函数

在MySQL中,您可以使用`DROP PROCEDURE`和`DROP FUNCTION`语句来删除已存在的存储过程和存储函数。

1. 删除存储过程的基本语法:

DROP PROCEDURE IF EXISTS procedure_name;
  • procedure_name:要删除的存储过程的名称。

示例:

DROP PROCEDURE IF EXISTS get_employee;

在上述示例中,如果名为`get_employee`的存储过程存在,则将其删除。

2. 删除存储函数的基本语法:

DROP FUNCTION IF EXISTS function_name;
  • function_name:要删除的存储函数的名称。

示例:

DROP FUNCTION IF EXISTS calculate_total;

在上述示例中,如果名为`calculate_total`的存储函数存在,则将其删除。

使用`DROP PROCEDURE`和`DROP FUNCTION`语句,您可以轻松删除已存在的存储过程和存储函数。通过指定要删除的存储过程或存储函数的名称,并使用`IF EXISTS`可选关键字,以确保在对象不存在时不会出现错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL中存储过程与函数总结 的相关文章

  • 在 MySQL 中对整数字段运行带引号的数字(字符串)查询时会发生哪些复杂情况

    在 SQL 中 不应引用整数 因为如果引用 它将是一个字符串 但我很好奇如果我这样做会出现什么问题 并发症 例如 SELECT FROM table WHERE id 1 正确的 vs SELECT FROM table WHERE id
  • db:schema:load 与 db:migrate 使用 capistrano

    我有一个 Rails 应用程序 我正在将其移动到另一台服务器 我认为我应该使用 db schema load 来创建 mysql 数据库 因为这是推荐的 我的问题是我正在使用 capistrano 进行部署 并且它似乎默认为 rake db
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • PHP MYSQL文件内容转义问题

    我正在尝试使用 php 将 pdf 文件上传到 mysql 数据库中 除了文件内容之外 一切都很好 无论我如何尝试转义特殊字符 查询总是失败 主要是 未知命令 n 我使用过addslashes mysql real escape strin
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 如何从批量数据中的mysql列中删除所有非数字字符

    我想从列中删除所有非数字字符 我的数据库中有大量数据 目前我正在使用以下链接中描述的方法 http venerableagents wordpress com 2011 01 29 mysql numeric functions http
  • MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。添加了 11 条消息列表。使用emitter.setMaxListeners()来增加限制

    我知道这可能会标记为重复的解决方案 但堆栈溢出的解决方案对我不起作用 Problem node 5716 MaxListenersExceededWarning Possible EventEmitter memory leak detec
  • Mysql用in语句限制

    我正在写一个查询 SELECT user bookmarks id as user bookmark id bookmark id user bookmarks user id bookmark url bookmark website b
  • MYSQL - 使用逗号分隔字符串作为变量输入的存储过程

    我希望有人能够提供帮助 我已经创建了我的第一个存储过程 没什么花哨的 但是我遇到了问题 我想给它一个字符串输入 例如 1 2 3 4 5 然后它执行一个简单的操作SELECT FROM TABLE WHERE EAN IN VAR 所以存储
  • MySQL 与日语字符

    我试图弄清楚如何创建一个表 以便我可以在其中插入日语名字 现在我有 Type InnoDB Encoding UTF 8 Unicode utf8 Collation utf8 general ci 但是 当我插入字符时 它显示为 当我使用
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • mysql排序和排名语句

    我需要一些 mysql 语句的帮助 我的表 1 有 7 列 表 2 有 8 列 额外的列名为排名 我的语句应该是这样的 从表 1 中选择全部 然后按 用户数 排序 将其插入表 2 中并排名开始 1 2 3 等 table 1 usernam
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • MySQL 转储未知选项“-no-beep”

    在旧服务器上我使用了mysql转储命令来备份 MySQL 数据库 在新服务器上 MySQL 版本为 5 6 相同的命令给出了错误 unknown option no beep 无论它插入什么 我也在互联网上搜索过 但找不到任何帮助 在 my
  • 从前端更改记录顺序

    我在编写下一个功能时遇到问题 我希望用户能够重新排列记录并更改 display order 值 我使用 Jquery UI 的可拖放功能来促进这一点 我可以看到如何简单地交换 display order 值 但我想为一条记录设置一个显示顺序
  • MySQL 与 PostgreSQL JSON 搜索功能

    我一直在寻找一篇博客文章或一个功能矩阵 通过 JSON 功能对 MySQL 和 PostgreSQL 进行比较 我找到了一个好的Postgres 的特征矩阵 https www postgresql org about featuremat
  • WHERE 值不在(子查询)

    我一直在努力解决这个问题 我有两张桌子 一张带有优惠券和发票号码的 一张带有发票号码和客户姓名的 我需要找到尚未使用优惠券的顾客 以下是表格 促销表 Promotions Invoice Coupon 1 couponA 2 couponB
  • 如何使用java避免Mysql数据库中的“数据因列被截断”?

    在我的 Java 程序中 Hibernate Bean 类定义一列 例如 TimtableVO java Column name REPEAT DAYS private WeekdayType repeatDays hear Weekday

随机推荐

  • List> 转 Map>

    将List转成Map结构 以下为没有水平的写法 好久之前写的土方法转换 不知道有没有优秀的解法 还希望大家提供 Map
  • 吸尘器电机拆解图解_家庭打扫全能选手-美的无线吸尘器P2G

    最近美的推出了一款轻便式家用吸尘器 一改吸尘器在心中笨大重托的形象 但具体清洁效果与实际体验如何呢 现在就让我们全方位探究一下这台美的无线吸尘器P2G 部件及功能介绍 包装小巧到我惊掉下巴 这真的就可以组装成一台吸尘器吗 打开包装 有序排列
  • JAVA多态(超详细讲解)

    目录 多态的基本介绍 实现多态的条件 1 继承 必须要有子类继承父类的继承关系 2 重写 子类需要对父类中的一些方法进行重写 然后调用方法时就会调用子类重写的方法而不是原本父类的方法 3 向上转型 在多态中需要将子类的引用赋给父类对象 只有
  • Windows下搭建nginx和rtspToWebRTC以及Windows程序添加为服务开机启动和后台运行

    1 前言 之前的rtsp转webrtc的服务很好用 https blog csdn net weixin 39510813 article details 123718363 spm 1001 2014 3001 5502 测试使用效果都很
  • Axios 企业级3封装以及常见的get和post请求写法

    简洁用法 发送get请求 第一种 适合少量参数 axios get api url 参数名1 参数值1 参数2 参数值2 then res gt res data就是后端响应的数据 catch err gt err就是错误信息 请求挂掉了
  • expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘struct’

    这篇准备长期更新 1 在编译时遇到错误 错误 expected asm or attribute before struct src cli socket handle c 在函数 client login 中 这种错误第一次遇到肯定很懵逼
  • iptables的基本使用

    iptables 防火墙 防火墙的分类 Netfilter 链的概念 表的概念 表链的关系 iptables规则的匹配 iptables 的命令 查询规则 添加规则 删除规则 修改规则 保存规则 iptables的扩展模块 Tcp模块 mu
  • 基于Java设计和实现系统的自动化巡检

    系统巡检对于系统管理员并不陌生 日常工作是离不开它的 笔者记得进入运维岗位的第一天 学习的第一课就是如何系统巡检 首先远程登陆各服务器 然后通过执行命令或操作页面查看系统内存 CPU和磁盘利用率等情况 最后将相应的数值填写入系检表格 看似几
  • 新一代视频压缩编码标准-----H.264/AVC

    2 数字视频 2 1 2 数字电视PCM原理 将输入的模拟信号转化为输出的数字电视信号 经过取样 量化 编码三个步骤 由A D变换器完成 2 1 2 1 取样 在时间轴上将连续变化的模拟信号 转化为离散量 2 1 2 2 量化 因取样后的脉
  • 服务中不存在mysql 或者没有启动成功

    服务器中不存在mysql mysql admin V 查看mysql环境的配置是否成功 成功则执行services msc 去服务中查找mysql服务 如果有则设置自动启动 或者 执行net start mysql 黑窗口开启服务 如果没有
  • 【AI面试】RoI Pooling 和 RoI Align 辨析

    RoI Pooling和RoI Align是两种常用的目标检测中的RoI特征提取方法 它们的主要区别在于 如何将不同大小的RoI对齐到固定大小的特征图上 并在这个过程中保留更多的空间信息 如果你是做目标检测相关的项目 那么这个问题肯定是跑不
  • 嵌入式单元测试框架之Ceedling

    Ceedling Ceedling 是一个用 Ruby 语言编写的自动化测试框架 一个 C 项目构建系统 是对 Ruby Rake 的一个延申 Ceedling 主要目标是以测试为驱动的 C 语言开发 集成CMock Unity CExce
  • 【算法】中序与后序遍历序列构造二叉树(二叉树、递归)

    106 从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树 注意 你可以假设树中没有重复的元素 例如 给出中序遍历 inorder 9 3 15 20 7 后序遍历 postorder 9 15 7 20 3 返回如下
  • impala高级设置set之BATCH_SIZE

    官网地址 https impala apache org docs build html topics impala batch size html Number of rows evaluated at a time by SQL ope
  • [Python]考试应用界面和简单logo-学习笔记

    试题部分 list1 1 下列词语中划线字的读音完全正确的一组是 2 下列词语解释有错误的一组是 3 四川话中 瓜娃子 指的是 4 四川话中形容一个人是 干豇豆儿 是指这个人 5 四川话中 咔咔过过 是 6 妖精十怪 是 7 四川话中 呱迷
  • Mongodb 设置密码

    第一步 开机先 mongod dbpath 存放数据库文件夹路径 第二步 打开命令行窗口输入mongo 进入mongo环境 第三步 切换到 admin 数据库 use admin 第四步 给admin设置用户密码 user 用户名 pwd
  • 智能水位检测系统proteus_基于单片机控制的智能检测系统Proteus仿真设计研究

    0引言近年来 单片机发展到了一个全新阶段 广泛应用于电子 机械控制 自动化生产设计等行业 并逐步延伸到智能控制的诸多领域 以单片机为控制核心的小型自动化生产检测系统 尤其在一些液体产品的检测等复杂工程中 控制人员通过微处理单元对产品进行质量
  • mysql安装出现让输入根密码_MYSQL安装时解决要输入current root password的解决方法...

    在装MYSQL的时候发现要输入current root password不记得以前在电脑里装过 你的系统曾经装过MYSQL在重装就会要求输入原来设定的密码 如果是第一次安装就不会出现 在网上苦苦搜寻解决方法 终归结出以下解决方法 1 清除M
  • 牛逼,玩转 ChatGPT!

    ChatGPT是一种由OpenAI开发的人工智能模型 它可以模拟人类的对话交流 对话可以涉及各种话题 使用ChatGPT可以进行各种操作 例如自然语言生成 文本摘要 语言翻译 文本分类 问答系统等 下面是ChatGPT网站的可用链接 由于网
  • MySQL中存储过程与函数总结

    目录 1 存储过程与函数的概念 2 创建存储过程与函数 2 1 参数列表 3 使用变量 4 定义条件与处理程序 1 定义条件 2 定义处理程序 3 六种定义处理程序的方法 方法一 捕获sqlstate value 方法二 捕获mysql e