一、数据库基本概念
数据库(DB):有组织存储数据的仓库。
数据库管理系统(DBMS):管理数据库的大型软件(如MySQL、Oracle)。
SQL:操作关系型数据库的标准编程语言。
关系型数据库特点:
基于二维表结构存储数据。
支持SQL统一操作。
数据一致性和完整性高。
二、SQL分类
分类 | 功能 | 常用命令 |
---|---|---|
DDL | 定义数据库对象(库、表、字段) | CREATE , ALTER , DROP , SHOW |
DML | 操作数据增删改 | INSERT , UPDATE , DELETE |
DQL | 数据查询 | SELECT (支持条件、聚合、分组、排序、分页) |
DCL | 控制用户权限 | GRANT , REVOKE , CREATE USER |
三、DDL(数据定义语言)
数据库操作:
创建:
CREATE DATABASE [IF NOT EXISTS] 数据库名
删除:
DROP DATABASE [IF EXISTS] 数据库名
切换:
USE 数据库名
表操作:
创建表:
CREATE TABLE 表名 (字段名 类型 [约束])
修改表:
ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP 字段
删除表:
DROP TABLE [IF EXISTS] 表名
数据类型:
数值类型:
INT
,TINYINT
,DECIMAL
字符串类型:
CHAR
(定长),VARCHAR
(变长)日期时间:
DATE
,DATETIME
,TIMESTAMP
四、DML(数据操作语言)
插入数据:
INSERT INTO 表名 (字段) VALUES (值)
批量插入:
VALUES (值1), (值2)
更新数据:
UPDATE 表名 SET 字段=值 [WHERE 条件]
删除数据:
DELETE FROM 表名 [WHERE 条件]
五、DQL(数据查询语言)
基础查询:
SELECT 字段列表 FROM 表名
别名:
字段 AS 别名
去重:
DISTINCT
条件查询:
比较运算符:
>
,=
,BETWEEN
,IN
逻辑运算符:
AND
,OR
,NOT
模糊查询:
LIKE
(%
匹配任意字符,_
匹配单个字符)
聚合函数:
COUNT
,MAX
,MIN
,AVG
,SUM
分组与排序:
分组:
GROUP BY 字段 [HAVING 条件]
排序:
ORDER BY 字段 [ASC/DESC]
分页查询:
LIMIT 起始索引, 查询条数
六、DCL(数据控制语言)
用户管理:
创建用户:
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'
删除用户:
DROP USER '用户名'@'主机名'
权限控制:
授权:
GRANT 权限 ON 数据库.表 TO '用户'@'主机名'
撤销权限:
REVOKE 权限 ON 数据库.表 FROM '用户'@'主机名'
七、函数
字符串函数:
CONCAT
,LOWER
,UPPER
,SUBSTRING
,LPAD/RPAD
数值函数:
CEIL
,FLOOR
,ROUND
,RAND
日期函数:
CURDATE
,NOW
,DATE_ADD
,DATEDIFF
流程函数:
IF
,CASE ... WHEN ... THEN ... ELSE ... END
八、约束
约束类型 | 作用 | 关键字 |
---|---|---|
主键 | 唯一标识,非空 | PRIMARY KEY |
外键 | 关联其他表的主键 | FOREIGN KEY |
唯一 | 字段值唯一 | UNIQUE |
非空 | 字段不能为NULL | NOT NULL |
默认值 | 未赋值时使用默认值 | DEFAULT |
检查约束 | 字段值满足条件 | CHECK (MySQL 8.0+) |
九、多表查询
连接查询:
内连接:
INNER JOIN
(查询交集数据)左外连接:
LEFT JOIN
(左表全部 + 右表匹配)右外连接:
RIGHT JOIN
(右表全部 + 左表匹配)
自连接:同一表内连接,需起别名。
子查询:
标量子查询:返回单个值(如
SELECT MAX(salary)
)。列/行子查询:返回一列或一行(配合
IN
,ANY
,ALL
)。表子查询:返回多行多列(用于
FROM
后的临时表)。
十、事务
四大特性(ACID):
原子性:事务不可分割,全部成功或失败。
一致性:事务前后数据状态一致。
隔离性:事务间操作互不干扰。
持久性:事务提交后数据永久保存。
并发问题:
脏读:读到未提交的数据。
不可重复读:同一事务内多次读取结果不同。
幻读:查询无数据,插入时发现数据已存在。
隔离级别:
READ UNCOMMITTED
:可能脏读、不可重复读、幻读。READ COMMITTED
:避免脏读。REPEATABLE READ
(默认):避免脏读、不可重复读。SERIALIZABLE
:完全隔离,避免所有问题。
事务控制:
开启事务:
START TRANSACTION
提交事务:
COMMIT
回滚事务:
ROLLBACK
总结:MySQL基础涵盖数据库概念、SQL语法分类(DDL/DML/DQL/DCL)、函数、约束、多表查询及事务管理。掌握这些内容可进行基本的数据库设计、数据操作与查询,并确保数据安全性和一致性。