mysqld,也称为 MySQL Server,是 MySQL 数据库系统中的核心组件。它是一个服务守护进程(daemon),负责管理数据库的访问和操作。在 Linux 系统中,服务通常以“d”结尾,代表守护进程。mysqld 作为服务器端程序,它处理来自客户端程序的网络连接请求,并管理对数据库的访问。
常用命令
初始化 mysql 服务,初始化数据目录,但不生成随机密码(设置数据库空密码),同时指定运行 mysqld 服务器的用户名为 root,端口号为 3307
mysql 是 MySQL 自带的命令行客户端程序,用于交互式输入 SQL 语句或以批处理模式从文件执行它们。
常用命令
登录 mysql
mysql -u root -P 3307
修改 mysql 密码
1 2 3
mysql>ALTER USER 'root'@'localhost'IDENTIFIED WITH mysql_native_password BY 'root1234'; mysql>flush privileges; mysql>quit;
查看所有数据库
1
mysql>show databases;
MySQL 常用 SQL
SELECT
获取数据库中所有 TRUNCATE 语句
1 2 3 4 5 6
SELECT CONCAT('TRUNCATE TABLE ', table_schema, '.', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE table_schema IN ('db_name');
TRUNCATE/DROP/DELETE
TRUNCATE 只能操作表,将表中数据全部删除,在功能上和不带 WHERE 子句的 DELETE 语句相同,但是 TRUNCATE 会释放表空间,且不能回滚事务。TRUNCATE 一般会配合禁用/启动外键约束的语句使用。
1 2 3 4 5
-- 禁用外键约束 SET FOREIGN_KEY_CHECKS=0; TRUNCATETABLE [table_name] -- 开启外键约束 SET FOREIGN_KEY_CHECKS=1;
DROP 将删除表的结构,以及被依赖的约束、触发器、索引。DROP 执行速度最快。
1
DROPTABLE [table_name]
DELETE 将表中数据全部删除,但是不会释放表空间,可以回滚事务。DELETE 执行速度最慢。
1
DELETEFROMTABLE [table_name]
存储函数
举例,对 int 类型的字段值进行转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14
-- 创建存储函数 DELIMITER // DROPFUNCTION IF EXISTS convert_function // CREATEFUNCTION convert_function([var_name] INT) RETURNSINT BEGIN DECLARE res INT; IF [var_name] =100THEN SET res =0; END IF; RETURN res; END;
-- 创建存储过程 DELIMITER // DROPPROCEDURE IF EXISTS update_json_array // CREATEPROCEDURE update_json_array() BEGIN DECLARE done INTDEFAULTFALSE; DECLARE json_index INTDEFAULT0; DECLARE json_length INT; DECLARE current_id char(36); DECLARE current_json JSON; DECLARE cursor_json CURSORFOR SELECT id, json FROM [table_name]; DECLARE CONTINUE HANDLER FORNOT FOUND SET done =TRUE;
OPEN cursor_json; read_loop: LOOP FETCH cursor_json INTO current_id, current_json; IF done THEN LEAVE read_loop; END IF; SET json_length = JSON_LENGTH(current_json); WHILE json_index < json_length DO -- 更新json数组中每个对象的属性值 SET current_json = JSON_SET(current_json, CONCAT('$[', json_index, '].myProperty'), convert_function(JSON_EXTRACT(current_json, CONCAT('$[', json_index, '].myProperty')))); SET json_index = json_index +1; END WHILE;
-- 更新表中的记录 UPDATE [table_name] SET files = current_json WHERE id = current_id; SET json_index =0; END LOOP; CLOSE cursor_json; END// DELIMITER ;
-- 执行存储过程 CALL update_json_array();
全局参数修改
Error Code: 1418. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)