• mysql数据库SQL语句大全详解(下)


    六、事务管理

    1、开始事务

    START TRANSACTION;
    

    2、提交事务

    COMMIT;
    

    3、回滚事务

    ROLLBACK;
    

    4、保存点

    设置保存点:

    SAVEPOINT savepoint_name;
    

    回滚到保存点:

    ROLLBACK TO SAVEPOINT savepoint_name;
    

    七、视图

    1、创建视图

    CREATE VIEW view_name AS SELECT columns FROM table WHERE condition;
    

    示例:

    CREATE VIEW user_emails AS SELECT username, email FROM users;
    

    2、查询视图

    SELECT * FROM view_name;
    

    3、删除视图

    DROP VIEW view_name;
    

    八、存储过程和函数

    1、创建存储过程

    1. CREATE PROCEDURE procedure_name (parameters)
    2. BEGIN
    3. SQL statements;
    4. END;

    示例:

    1. CREATE PROCEDURE GetUserEmails()
    2. BEGIN
    3. SELECT username, email FROM users;
    4. END;

    2、调用存储过程

    CALL procedure_name(parameters);
    

    3、创建函数

    1. CREATE FUNCTION function_name (parameters) RETURNS datatype
    2. BEGIN
    3. SQL statements;
    4. RETURN value;
    5. END;

    示例:

    1. CREATE FUNCTION GetUserCount() RETURNS INT
    2. BEGIN
    3. DECLARE count INT;
    4. SELECT COUNT(*) INTO count FROM users;
    5. RETURN count;
    6. END;

    4、调用函数

    SELECT function_name(parameters);
    

    九、触发器

    1、创建触发器

    1. CREATE TRIGGER trigger_name BEFORE/AFTER INSERT/UPDATE/DELETE ON table_name
    2. FOR EACH ROW
    3. BEGIN
    4. SQL statements;
    5. END;

    示例:

    1. CREATE TRIGGER before_insert_user BEFORE INSERT ON users
    2. FOR EACH ROW
    3. BEGIN
    4. SET NEW.created_at = NOW();
    5. END;

    2、删除触发器

    DROP TRIGGER trigger_name;
    

    十、用户和权限管理

    1、创建用户

    CREATE USER 'username'@'host' IDENTIFIED BY 'password';
    

    2、删除用户

    DROP USER 'username'@'host';
    

    3、授予权限

    GRANT privileges ON database.table TO 'username'@'host';
    

    示例:

    GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'username'@'localhost';
    

    4、撤销权限

    REVOKE privileges ON database.table FROM 'username'@'host';
    

    示例:

    REVOKE INSERT, UPDATE ON mydb.* FROM 'username'@'localhost';
    

    5、刷新权限

    FLUSH PRIVILEGES;
    

    在对用户权限进行修改后,刷新MySQL的权限缓存以确保更改生效。

    十一、备份与恢复

    1、备份数据库 

    使用 mysqldump 命令可以备份整个数据库或单个表。

    mysqldump -u username -p database_name > backup_file.sql
    

    示例:

    mysqldump -u root -p mydb > mydb_backup.sql
    

    2、恢复数据库

    使用 mysql 命令可以从备份文件恢复数据库。

    mysql -u username -p database_name < backup_file.sql
    

    示例:

    mysql -u root -p mydb < mydb_backup.sql
    

    十二、优化和性能

    1、查询性能分析 

    使用 EXPLAIN 语句分析查询性能。

    EXPLAIN SELECT * FROM table_name WHERE condition;
    

    2、优化表

    OPTIMIZE TABLE table_name;
    

    3、更新表统计信息

    ANALYZE TABLE table_name;
    

    4、缓存查询结果

    ​​​​​​​ 配置 query_cache 参数来缓存查询结果,提高查询性能。

    1. SET GLOBAL query_cache_size = value;
    2. SET GLOBAL query_cache_type = ON;

    十三、安全和备份策略

    1、数据加密

    加密连接:配置MySQL使用SSL/TLS进行客户端与服务器之间的加密通信。

    加密数据:使用MySQL的原生加密函数,如 AES_ENCRYPT() 和 AES_DECRYPT() 进行数据加密。

    2、备份策略

    定期备份:设置定期备份策略,确保数据的定期备份。

    异地备份:将备份文件存储在异地,以防止物理灾害。

    3、访问控制

    最小权限原则:只授予用户所需的最小权限。

    审计日志:开启审计日志,记录用户的所有操作。

    十四、常用函数和操作符

    1. 1、字符串函数:
    2. CONCAT(str1, str2, ...):连接字符串。
    3. UPPER(str):转换为大写。
    4. LOWER(str):转换为小写。
    5. SUBSTRING(str, pos, len):提取子字符串。
    6. 2、日期和时间函数:
    7. NOW():当前日期和时间。
    8. CURDATE():当前日期。
    9. DATE_ADD(date, INTERVAL value unit):日期加上时间间隔。
    10. DATEDIFF(date1, date2):计算两个日期之间的天数。
    11. 3、数学函数
    12. ABS(x):绝对值。
    13. CEIL(x):向上取整。
    14. FLOOR(x):向下取整。
    15. ROUND(x, d):四舍五入到d位小数。
    16. 4、聚合函数:
    17. COUNT(column):计算列的数量。
    18. SUM(column):计算列的总和。
    19. AVG(column):计算列的平均值。
    20. MAX(column):计算列的最大值。
    21. MIN(column):计算列的最小值。
    22. 5、逻辑和比较操作符:
    23. =:等于。
    24. <> 或 !=:不等于。
    25. >:大于。
    26. <:小于。
    27. >=:大于或等于。
    28. <=:小于或等于。
    29. AND:逻辑与。
    30. OR:逻辑或。
    31. NOT:逻辑非。

    十五、示例综合应用

    以下是一个综合示例,展示了如何创建数据库、表、插入数据、查询、更新和删除数据,以及创建视图、存储过程和触发器。

    1. -- 创建数据库
    2. CREATE DATABASE company;
    3. -- 选择数据库
    4. USE company;
    5. -- 创建员工表
    6. CREATE TABLE employees (
    7. id INT AUTO_INCREMENT PRIMARY KEY,
    8. name VARCHAR(100) NOT NULL,
    9. position VARCHAR(50),
    10. salary DECIMAL(10, 2),
    11. hire_date DATE
    12. );
    13. -- 插入数据
    14. INSERT INTO employees (name, position, salary, hire_date)
    15. VALUES ('Alice', 'Manager', 75000, '2020-01-15'),
    16. ('Bob', 'Developer', 60000, '2019-03-22'),
    17. ('Charlie', 'Analyst', 55000, '2021-07-11');
    18. -- 查询数据
    19. SELECT * FROM employees;
    20. -- 更新数据
    21. UPDATE employees SET salary = 65000 WHERE name = 'Bob';
    22. -- 删除数据
    23. DELETE FROM employees WHERE name = 'Charlie';
    24. -- 创建视图
    25. CREATE VIEW manager_view AS
    26. SELECT name, salary FROM employees WHERE position = 'Manager';
    27. -- 查询视图
    28. SELECT * FROM manager_view;
    29. -- 创建存储过程
    30. CREATE PROCEDURE RaiseSalary(IN employee_id INT, IN increase DECIMAL(10, 2))
    31. BEGIN
    32. UPDATE employees SET salary = salary + increase WHERE id = employee_id;
    33. END;
    34. -- 调用存储过程
    35. CALL RaiseSalary(2, 5000);
    36. -- 创建触发器
    37. CREATE TRIGGER before_insert_employee
    38. BEFORE INSERT ON employees
    39. FOR EACH ROW
    40. BEGIN
    41. SET NEW.hire_date = IFNULL(NEW.hire_date, CURDATE());
    42. END;

  • 相关阅读:
    mybatis判断是否为空或null
    Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
    flink web-ui提交New Job报错Server Response Message: Internal server error.
    面试总结1
    第四章 数字逻辑电路设计方法【Verilog】
    【操作系统】6/35子进程
    解析赋值的用途
    注解 + spring aop切面+ SpringEl
    springboot+微信小程序基于微信小程序的宿舍管理系统
    一款免费轻量级web报表工具
  • 原文地址:https://blog.csdn.net/m0_66995023/article/details/139959602