前言
MySQL 8数据库提供了丰富的SQL语句操作功能以及一系列高级特性,这些功能使得数据库的管理、查询、更新和维护变得更加高效和灵活。以下是对MySQL 8数据库SQL语句操作大全及高级特性的详细概述:
一、SQL语句操作大全
1. 数据定义语言(DDL)
DDL主要用于定义或修改数据库的结构,包括创建、修改和删除数据库、表、索引等。
- 创建数据库:
CREATE DATABASE database_name;
- 删除数据库:
DROP DATABASE database_name;
- 创建表:
CREATE TABLE table_name ( column1 datatype constraints, column2 datatype constraints, ... );
- 修改表结构:
- 添加列:
ALTER TABLE table_name ADD column_name datatype;
- 删除列:
ALTER TABLE table_name DROP COLUMN column_name;
- 修改列类型:
ALTER TABLE table_name MODIFY COLUMN column_name new_datatype;
- 重命名列:
ALTER TABLE table_name CHANGE old_column_name new_column_name datatype;
- 添加列:
2. 数据操作语言(DML)
DML用于对数据库中的数据进行增、删、改等操作。
- 插入数据:
- 单条记录:
INSERT INTO table_name (column1, column2) VALUES (value1, value2);
- 多条记录:
INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4);
- 单条记录:
- 更新数据:
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
- 删除数据:
- 单条记录:
DELETE FROM table_name WHERE condition;
- 批量删除:同单条记录删除,通过调整WHERE条件实现
- 截断表:
TRUNCATE TABLE table_name;
- 单条记录:
3. 数据查询语言(DQL)
DQL用于从数据库中查询数据。
- 基本查询:
SELECT column1, column2 FROM table_name;
- 条件查询:
SELECT column1, column2 FROM table_name WHERE condition;
- 模糊查询:
SELECT column1 FROM table_name WHERE column2 LIKE 'pattern%';
- 聚合函数:如
COUNT()
,AVG()
,SUM()
,MAX()
,MIN()
等 - 排序与分组:
- 排序:
SELECT * FROM table_name ORDER BY column1 ASC|DESC;
- 分组:
SELECT column1, COUNT(*) FROM table_name GROUP BY column1;
- 排序:
4. 数据控制语言(DCL)
DCL用于定义数据库、表、字段等的访问权限和安全级别。
- 创建用户:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
- 授权:
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
- 撤销权限:
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';
二、高级特性
1. 公用表表达式(CTE)
CTE(Common Table Expressions)是一个命名的临时结果集,可以在一个SQL语句中被多次引用。CTE提供了一种编写复杂查询的清晰方式,特别是对于递归查询和多层嵌套的子查询。
WITH cte_name AS (
SELECT column1, column2
FROM table_name
WHERE condition
)
SELECT * FROM cte_name;
2. 窗口函数
窗口函数提供了一种对一组行执行聚合计算的方式,但它与普通的聚合函数不同,因为它会为结果集中的每一行都返回一个值。窗口函数通常与OVER()子句一起使用,以指定窗口的分区和排序规则。
SELECT column1,
AVG(column2) OVER (PARTITION BY column3 ORDER BY column4) AS avg_column2
FROM table_name;
3. 索引优化
MySQL 8提供了多种索引类型,包括B-Tree索引、哈希索引、全文索引等,并且支持创建复合索引和唯一索引。合理的索引设计可以显著提高查询性能。
- 创建索引:
CREATE INDEX index_name ON table_name (column_name);
- 删除索引:
DROP INDEX index_name ON table_name;
4. 事务管理
MySQL 8支持完整的事务管理,包括事务的提交、回滚和保存点等。
- 开始事务:
START TRANSACTION;
- 提交事务:
COMMIT;
- 回滚事务:
ROLLBACK;
5. 备份与恢复
MySQL 8提供了mysqldump工具用于数据库的备份,以及mysql命令用于数据库的恢复。
- 备份:
mysqldump -u username -p database_name > backup_file.sql
- 恢复:
mysql -u username -p database_name < backup_file.sql
以上是对MySQL 8数据库SQL语句操作大全及高级特性的概述。这些特性和功能使得MySQL 8成为了一个强大而灵活的数据库管理系统,能够满足各种复杂的应用场景需求。
MySQL常用函数
MySQL的其他函数涵盖了多个领域,包括但不限于字符串处理、数学计算、日期和时间处理、加密解密等。以下是一些常用的MySQL其他函数分类及其具体示例:
字符串函数
- CONCAT(str1,str2,…):将多个字符串连接成一个字符串。例如,
SELECT CONCAT('Hello', ' ', 'World');
结果为'Hello World'
。 - UPPER(str):将字符串中的所有字母转换为大写。例如,
SELECT UPPER('hello world');
结果为'HELLO WORLD'
。 - LOWER(str):将字符串中的所有字母转换为小写。例如,
SELECT LOWER('HELLO WORLD');
结果为'hello world'
。 - SUBSTRING(str,pos,len):从字符串
str
的pos
位置开始,截取长度为len
的子字符串。如果省略len
,则截取从pos
开始到字符串末尾的所有字符。 - TRIM(str):去除字符串
str
首尾的空格。 - REPLACE(str,from_str,to_str):将字符串
str
中的from_str
替换为to_str
。
数学函数
- ABS(x):返回
x
的绝对值。 - CEIL(x) 或 CEILING(x):返回大于或等于
x
的最小整数。 - FLOOR(x):返回小于或等于
x
的最大整数。 - ROUND(x,d):将
x
四舍五入到小数点后d
位。如果省略d
,则默认四舍五入到整数。 - MOD(x,y):返回
x
除以y
的余数。 - RAND():生成一个0到1之间的随机数。
日期和时间函数
- NOW():返回当前的日期和时间。
- CURDATE():返回当前的日期。
- CURTIME():返回当前的时间。
- DATE_FORMAT(date,format):根据指定的
format
格式化date
值。 - YEAR(date):从日期中提取年份。
- MONTH(date):从日期中提取月份。
- DAY(date):从日期中提取日。
- HOUR(time):从时间中提取小时。
- MINUTE(time):从时间中提取分钟。
- SECOND(time):从时间中提取秒。
加密函数
- MD5(str):返回字符串
str
的MD5加密后的32位十六进制数。 - AES_ENCRYPT(str,key):使用高级加密标准(AES)算法,以
key
为密钥对str
进行加密。 - AES_DECRYPT(str,key):使用
key
作为密钥对加密后的字符串str
进行解密。
其他函数
- FORMAT(x,d):将数字
x
格式化为带有d
位小数的字符串。 - IF(expr,v1,v2):如果
expr
为真,则返回v1
,否则返回v2
。
这些函数在MySQL中非常有用,可以用于数据查询、数据转换、数据加密等多种场景。需要注意的是,随着MySQL版本的更新,可能会有新的函数被添加,或者现有函数的行为发生变化,因此建议在使用时参考最新的MySQL官方文档。
总结
MySql作为常用关系型数据库之一,以轻量、简单、语法简洁、免费著称(后面的企业版收费,不过对中小企业和个人来说,社区版已经够用了),在WEB市场的占有率占比极高,且MySQL 通过其丰富的SQL语句操作和高级特性,为用户提供了强大的数据库管理和查询能力,能够满足各种复杂的应用场景需求。