Java 多线程编程


✨博客主页: https://blog.csdn.net/m0_63815035?type=blog
💗《博客内容》:大数据、AI开发、Java、测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识
📢博客专栏: https://blog.csdn.net/m0_63815035/category_11954877.html
📢欢迎点赞 👍 收藏 ⭐留言 📝
📢本文为学习笔记资料,如有侵权,请联系我删除,疏漏之处还请指正🙉
📢大厦之成,非一木之材也;大海之阔,非一流之归也✨

目录
-
- [一、MySQL 概述与安装](#一、MySQL 概述与安装)
-
- [1.1 数据库基本概念](#1.1 数据库基本概念)
- [1.2 MySQL 安装(8.0)](#1.2 MySQL 安装(8.0))
- 二、SQL-DQL(数据查询语言)
-
- [2.1 基础查询](#2.1 基础查询)
- [2.2 条件查询 WHERE](#2.2 条件查询 WHERE)
- [2.3 排序 ORDER BY](#2.3 排序 ORDER BY)
- [2.4 分页 LIMIT](#2.4 分页 LIMIT)
- 三、单行函数
-
- [3.1 字符串函数](#3.1 字符串函数)
- [3.2 日期函数](#3.2 日期函数)
- [3.3 数值函数](#3.3 数值函数)
- [3.4 转换函数](#3.4 转换函数)
- [3.5 加密函数(了解)](#3.5 加密函数(了解))
- 四、多行函数(聚合函数)
- [五、分组查询 GROUP BY](#五、分组查询 GROUP BY)
-
- [5.1 基础分组](#5.1 基础分组)
- [5.2 HAVING 过滤分组](#5.2 HAVING 过滤分组)
- [5.3 DQL 语句执行顺序](#5.3 DQL 语句执行顺序)
- 六、多表查询
-
- [6.1 笛卡尔积与等值连接](#6.1 笛卡尔积与等值连接)
- [6.2 连接方式(Natural Join, USING, ON)](#6.2 连接方式(Natural Join, USING, ON))
- [6.3 外连接](#6.3 外连接)
- [6.4 自连接](#6.4 自连接)
- [6.5 子查询](#6.5 子查询)
- 七、DML(数据操作语言)
-
- [7.1 INSERT](#7.1 INSERT)
- [7.2 UPDATE](#7.2 UPDATE)
- [7.3 DELETE](#7.3 DELETE)
- 八、事务(Transaction)
-
- [8.1 事务特性(ACID)](#8.1 事务特性(ACID))
- [8.2 事务操作](#8.2 事务操作)
- [8.3 事务隔离级别](#8.3 事务隔离级别)
- 九、DDL(数据定义语言)
-
- [9.1 数据库操作](#9.1 数据库操作)
- [9.2 数据类型](#9.2 数据类型)
- [9.3 表操作](#9.3 表操作)
- [9.4 约束](#9.4 约束)
-
- [主键约束 PRIMARY KEY](#主键约束 PRIMARY KEY)
- [唯一约束 UNIQUE](#唯一约束 UNIQUE)
- [非空约束 NOT NULL](#非空约束 NOT NULL)
- [外键约束 FOREIGN KEY](#外键约束 FOREIGN KEY)
- [默认值 DEFAULT](#默认值 DEFAULT)
- [自动增长 AUTO_INCREMENT](#自动增长 AUTO_INCREMENT)
- 十、索引
-
- [10.1 索引概述](#10.1 索引概述)
- [10.2 索引分类](#10.2 索引分类)
- [10.3 创建和删除索引](#10.3 创建和删除索引)
- 十一、视图
-
- [11.1 视图概念](#11.1 视图概念)
- [11.2 创建和使用视图](#11.2 创建和使用视图)
- 十二、结尾
本文基于 MySQL 8.0 整理,涵盖数据库安装、SQL 基础、DQL 查询、函数、多表查询、事务、DDL 数据类型与约束、索引、视图等内容。适合零基础入门和日常参考。

一、MySQL 概述与安装
1.1 数据库基本概念
- 数据库:按照数据结构来组织、存储和管理数据的仓库。
- 分类 :
- 非结构化数据:没有固定结构,不便检索(如文本文件)。
- 半结构化数据:有相同存储结构属性,但每条数据的属性可不同(如 XML、JSON)。
- 结构化数据:建立在关系模型基础上,使用二维表存储,便于管理。关系数据库是目前主流。
- 常见关系数据库产品 :
- MySQL → Java 开发常用,Oracle 公司旗下,社区版免费。
- SQL Server → 微软。
- Oracle → 收费。
- DB2 → IBM。
- SQL :结构化查询语言,操作关系数据库的标准语言,分为:
- DDL:数据定义语言(创建表、索引、视图等)
- DML:数据操作语言(增、删、改)
- DQL:数据查询语言(查询)
- DCL:数据控制语言(权限、用户管理)
1.2 MySQL 安装(8.0)
-
官网下载 MySQL Community Server 8.0。
-
安装路径默认
C:\Program Files\MySQL\MySQL Server 8.0。 -
设置 root 密码,例如
123456。 -
端口默认
3306。 -
安装后通过命令行连接:
bashcd C:\Program Files\MySQL\MySQL Server 8.0\bin mysql -u root -p 输入密码 -
常用命令:
sqlSHOW DATABASES; -- 显示所有数据库 USE mysql; -- 选择数据库 SELECT host, user FROM user; -- 查询用户 -
可视化工具:Navicat(需破解),或使用免费的 DBeaver、MySQL Workbench。
常见连接错误:
- 1045:用户名或密码错误。
- 2003:无法连接服务器,检查 MySQL 服务是否启动。
二、SQL-DQL(数据查询语言)
2.1 基础查询
sql
-- 查询所有列
SELECT * FROM emp;
-- 查询指定列
SELECT ename, sal FROM emp;
-- 使用别名(推荐单引号)
SELECT ename AS '员工姓名', sal AS '薪资' FROM emp;
-- 查询结果进行计算
SELECT ename, sal, sal * 12 AS '年薪' FROM emp;
2.2 条件查询 WHERE
sql
-- 普通比较符 =, >, <, >=, <=, !=, <>
SELECT * FROM emp WHERE sal > 2000;
SELECT * FROM emp WHERE deptno = 20;
-- IN 和 NOT IN
SELECT * FROM emp WHERE empno IN (7369, 7788, 7881);
SELECT * FROM emp WHERE deptno NOT IN (10, 20);
-- NULL 值查询(不能用 = null,必须用 IS NULL 或 IS NOT NULL)
SELECT * FROM emp WHERE comm IS NULL;
SELECT * FROM emp WHERE comm IS NOT NULL;
-- BETWEEN...AND(包含边界)
SELECT * FROM emp WHERE sal BETWEEN 1000 AND 4000;
-- 模糊查询 LIKE
-- % 代表任意多个字符,_ 代表单个字符
SELECT * FROM emp WHERE ename LIKE '%S%'; -- 包含S
SELECT * FROM emp WHERE ename LIKE 'S%'; -- 以S开头
SELECT * FROM emp WHERE ename LIKE '_A%'; -- 第二个字符是A
-- 多条件 AND / OR
SELECT * FROM emp WHERE deptno = 20 AND sal > 2000;
SELECT * FROM emp WHERE deptno = 20 OR sal > 2000;
2.3 排序 ORDER BY
- ASC 升序(默认),DESC 降序。
- 多列排序:先按第一列,再按第二列。
sql
-- 单列排序
SELECT * FROM emp ORDER BY sal DESC;
-- 多列排序:部门升序,薪资降序
SELECT * FROM emp ORDER BY deptno ASC, sal DESC;
2.4 分页 LIMIT
MySQL 使用 LIMIT 实现分页:
sql
-- 查询前 N 行
SELECT * FROM emp LIMIT 4;
-- 跳过前 M 行,取 N 行(M 是偏移量)
SELECT * FROM emp LIMIT 3, 3; -- 第4~6行
-- 分页公式:每页 size 条,第 page 页的数据:LIMIT (page-1)*size, size
三、单行函数
单行函数对每一行输入返回一行输出。
3.1 字符串函数
| 函数 | 说明 |
|---|---|
LENGTH(str) |
字节长度 |
CONCAT(str1, str2) |
拼接 |
SUBSTR(str, pos, len) |
截取(位置从1开始) |
UPPER(str), LOWER(str) |
大小写转换 |
REPLACE(str, from, to) |
替换 |
TRIM(str) |
去除两侧空格 |
LEFT(str, n), RIGHT(str, n) |
左侧/右侧截取 |
sql
SELECT ename, LENGTH(ename), SUBSTR(ename,1,3) FROM emp;
SELECT CONCAT(empno, '=', ename) FROM emp;
3.2 日期函数
| 函数 | 说明 |
|---|---|
NOW(), SYSDATE() |
当前日期时间 |
CURDATE() |
当前日期 |
CURTIME() |
当前时间 |
YEAR(date), MONTH(date), DAY(date) |
提取年月日 |
DATE_ADD(date, INTERVAL expr unit) |
日期加法 |
DATEDIFF(date1, date2) |
相差天数 |
DATE_FORMAT(date, format) |
格式化 |
sql
SELECT NOW();
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
SELECT DATEDIFF('2025-06-11', '2025-01-01');
3.3 数值函数
| 函数 | 说明 |
|---|---|
ABS(x) |
绝对值 |
CEIL(x) |
向上取整 |
FLOOR(x) |
向下取整 |
ROUND(x, d) |
四舍五入,d为小数位数 |
TRUNCATE(x, d) |
直接截断 |
RAND() |
0~1随机数 |
MOD(x, y) |
取余 |
sql
SELECT CEIL(12.1), FLOOR(12.9); -- 13, 12
SELECT ROUND(1.4999999, 2); -- 1.50
3.4 转换函数
- 日期 → 字符串:
DATE_FORMAT(date, format) - 字符串 → 日期:
STR_TO_DATE(str, format) - 数字 → 字符串:直接拼接
''或使用CONCAT - 空值处理:
IFNULL(expr1, expr2)如果 expr1 为 NULL,返回 expr2。
sql
SELECT IFNULL(comm, 0) FROM emp;
3.5 加密函数(了解)
sql
SELECT MD5('123456');
SELECT AES_ENCRYPT('123456', 'key'), AES_DECRYPT(AES_ENCRYPT('123456', 'key'), 'key');
四、多行函数(聚合函数)
聚合函数对多行输入返回一行结果。
| 函数 | 说明 |
|---|---|
COUNT(expr) |
计数(不统计 NULL) |
SUM(expr) |
求和(忽略 NULL) |
AVG(expr) |
平均值 |
MAX(expr) |
最大值 |
MIN(expr) |
最小值 |
sql
SELECT COUNT(*) FROM emp; -- 总行数
SELECT AVG(sal) FROM emp; -- 平均薪资
SELECT MAX(sal), MIN(sal) FROM emp;
注意:不能将普通列和聚合函数直接混用(除非该列在 GROUP BY 中)。MySQL 允许但不建议,结果可能不正确。
五、分组查询 GROUP BY
5.1 基础分组
sql
-- 查询每个部门的平均薪资
SELECT deptno, AVG(sal) FROM emp GROUP BY deptno;
-- 多列分组:每个部门、每种工作的平均薪资
SELECT deptno, job, AVG(sal) FROM emp GROUP BY deptno, job;
5.2 HAVING 过滤分组
HAVING 用于分组后的条件过滤,可以使用聚合函数。WHERE 用于分组前过滤行。
sql
-- 查询平均薪资高于 2500 的部门
SELECT deptno, AVG(sal) FROM emp GROUP BY deptno HAVING AVG(sal) >= 2500;
-- 错误用法:HAVING 中使用了非分组列(除非在 SELECT 中也出现)
-- SELECT deptno, AVG(sal) FROM emp GROUP BY deptno HAVING ename LIKE '%A%'; -- 错误
5.3 DQL 语句执行顺序
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
六、多表查询
6.1 笛卡尔积与等值连接
多表查询不加连接条件会得到两表记录的乘积,即笛卡尔积。
sql
-- 隐式内连接(等值)
SELECT e.ename, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno;
-- 显式内连接(推荐)
SELECT e.ename, d.dname
FROM emp e JOIN dept d ON e.deptno = d.deptno;
6.2 连接方式(Natural Join, USING, ON)
-
NATURAL JOIN :自动匹配同名列作为连接条件。
sqlSELECT e.ename, d.dname FROM emp e NATURAL JOIN dept d; -
USING :手动指定同名列。
sqlSELECT e.ename, d.dname FROM emp e JOIN dept d USING(deptno); -
ON :最灵活,可指定任意连接条件(等值、不等值)。
sqlSELECT e.ename, d.dname FROM emp e JOIN dept d ON e.deptno = d.deptno; -- 非等值:薪资等级 SELECT e.ename, s.grade FROM emp e JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal;
6.3 外连接
- 左外连接:保留左表所有记录,右表无匹配则为 NULL。
- 右外连接:保留右表所有记录。
- MySQL 不直接支持全外连接,可用
UNION模拟。
sql
-- 左外连接
SELECT e.ename, d.dname FROM emp e LEFT JOIN dept d ON e.deptno = d.deptno;
-- 右外连接
SELECT e.ename, d.dname FROM emp e RIGHT JOIN dept d ON e.deptno = d.deptno;
-- 模拟全外连接(UNION 去重)
SELECT e.ename, d.dname FROM emp e LEFT JOIN dept d ON e.deptno = d.deptno
UNION
SELECT e.ename, d.dname FROM emp e RIGHT JOIN dept d ON e.deptno = d.deptno;
6.4 自连接
一张表当作两张不同的表使用。
sql
-- 查询每个员工及其上级领导的名字
SELECT e.ename, m.ename
FROM emp e LEFT JOIN emp m ON e.mgr = m.empno;
6.5 子查询
- 标量子查询:返回单个值,用于 WHERE 条件。
- 列子查询 :返回一列,配合
IN,ANY,ALL。 - 表子查询:返回多行多列,放在 FROM 子句中作为临时表。
sql
-- 标量子查询:薪资最低的员工
SELECT ename, sal FROM emp WHERE sal = (SELECT MIN(sal) FROM emp);
-- 列子查询:薪资高于任意一个 20 部门员工的员工
SELECT ename, sal FROM emp WHERE sal > ANY(SELECT sal FROM emp WHERE deptno = 20);
-- 表子查询(伪表):查询高于自己部门平均薪资的员工
SELECT e.ename, e.sal, e.deptno
FROM emp e
JOIN (SELECT deptno, AVG(sal) AS avg_sal FROM emp GROUP BY deptno) d
ON e.deptno = d.deptno AND e.sal > d.avg_sal;
七、DML(数据操作语言)
7.1 INSERT
sql
-- 插入完整行(值的顺序、类型与表定义一致)
INSERT INTO dept VALUES (50, 'SALES', 'SHANGHAI');
-- 指定列插入
INSERT INTO emp (empno, ename, deptno) VALUES (6666, 'LIYI', 50);
-- 从查询结果插入(复制数据)
INSERT INTO dept (deptno, dname) SELECT empno, ename FROM emp;
7.2 UPDATE
sql
-- 全表更新(危险)
UPDATE salgrade SET losal = 888, hisal = 999;
-- 带条件更新
UPDATE salgrade SET losal = 666, hisal = 888 WHERE grade = 3;
7.3 DELETE
sql
-- 删除全表(可恢复,速度慢)
DELETE FROM dept;
-- 带条件删除
DELETE FROM emp WHERE comm IS NULL;
-- 清空表(不可回滚,速度快,重置自增)
TRUNCATE TABLE emp;
八、事务(Transaction)
8.1 事务特性(ACID)
- 原子性:事务中的操作要么全部成功,要么全部失败。
- 一致性:事务前后数据完整性保持一致。
- 隔离性:多个事务并发时互不干扰。
- 持久性:事务提交后数据永久保存。
8.2 事务操作
MySQL 默认自动提交(每条 DML 执行后自动提交)。手动控制事务:
sql
START TRANSACTION; -- 或 BEGIN
-- 执行 DML 语句
COMMIT; -- 提交
ROLLBACK; -- 回滚
- 隐式提交:执行 DDL(如 CREATE、DROP)会自动提交当前事务。
- 退出客户端:在 MySQL 中,退出时会回滚未提交的事务(某些客户端行为可能不同)。
8.3 事务隔离级别
| 级别 | 名称 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|---|
| READ UNCOMMITTED | 读未提交 | 可能 | 可能 | 可能 |
| READ COMMITTED | 读已提交 | 避免 | 可能 | 可能 |
| REPEATABLE READ | 可重复读(MySQL 默认) | 避免 | 避免 | 可能(但 InnoDB 通过间隙锁避免) |
| SERIALIZABLE | 串行化 | 避免 | 避免 | 避免 |
sql
-- 查看隔离级别
SELECT @@transaction_isolation;
-- 设置隔离级别(会话级别)
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
九、DDL(数据定义语言)
9.1 数据库操作
sql
CREATE DATABASE db_name CHARSET utf8mb4;
SHOW DATABASES;
USE db_name;
DROP DATABASE db_name;
9.2 数据类型
数值类型
| 类型 | 有符号范围 | 无符号范围 | 字节 |
|---|---|---|---|
| TINYINT | -128~127 | 0~255 | 1 |
| SMALLINT | -32768~32767 | 0~65535 | 2 |
| INT | -231~231-1 | 0~2^32-1 | 4 |
| BIGINT | -263~263-1 | 0~2^64-1 | 8 |
| FLOAT | 4 | ||
| DOUBLE | 8 | ||
| DECIMAL(M,D) | 精确小数 | M+2 |
推荐使用 DECIMAL 或整数存储金额,避免浮点精度问题。
字符串类型
| 类型 | 说明 |
|---|---|
| CHAR(n) | 定长,最大 255 字符,不足补空格(不推荐) |
| VARCHAR(n) | 变长,最大 65535 字节(实际受行大小限制),推荐 |
| TEXT | 大文本,最长 65535 字节 |
| LONGTEXT | 超大文本,最长 4GB |
日期时间类型
| 类型 | 范围 | 字节 | 说明 |
|---|---|---|---|
| DATE | '1000-01-01' ~ '9999-12-31' | 3 | 推荐存日期 |
| TIME | '-838:59:59' ~ '838:59:59' | 3 | |
| DATETIME | '1000-01-01 00:00:00' ~ '9999-12-31 23:59:59' | 8 | 推荐 |
| TIMESTAMP | 1970 ~ 2038 | 4 | 带时区,范围小 |
| YEAR | 1901~2155 | 1 |
9.3 表操作
sql
-- 创建表
CREATE TABLE t_student (
sid INT PRIMARY KEY,
sname VARCHAR(40) NOT NULL,
gender CHAR(1),
birthday DATE,
createtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 根据查询结果创建表
CREATE TABLE stu_copy AS SELECT * FROM t_student;
-- 修改表(添加列)
ALTER TABLE t_student ADD COLUMN email VARCHAR(50);
-- 修改列定义
ALTER TABLE t_student MODIFY sname VARCHAR(100);
-- 修改列名
ALTER TABLE t_student CHANGE COLUMN birthday birth DATE;
-- 删除列
ALTER TABLE t_student DROP COLUMN email;
-- 重命名表
RENAME TABLE t_student TO t_stu;
-- 删除表
DROP TABLE t_stu;
9.4 约束
主键约束 PRIMARY KEY
- 唯一且非空,一张表只能有一个主键。
- 可单列主键或多列联合主键(复合主键)。
sql
-- 创建表时指定
CREATE TABLE t_pk1 (id INT PRIMARY KEY, name VARCHAR(20));
-- 联合主键
CREATE TABLE t_pk2 (tid INT, cid INT, PRIMARY KEY(tid, cid));
-- 添加主键(已有表)
ALTER TABLE t_pk3 ADD PRIMARY KEY(id);
-- 删除主键
ALTER TABLE t_pk3 DROP PRIMARY KEY;
唯一约束 UNIQUE
- 列值不能重复,但允许 NULL(可多个 NULL)。
sql
CREATE TABLE t_uniq (id INT, phone VARCHAR(11) UNIQUE);
ALTER TABLE t_uniq ADD CONSTRAINT uni_phone UNIQUE(phone);
DROP INDEX uni_phone ON t_uniq;
非空约束 NOT NULL
sql
CREATE TABLE t_null (name VARCHAR(20) NOT NULL);
ALTER TABLE t_null MODIFY name VARCHAR(20) NOT NULL;
ALTER TABLE t_null MODIFY name VARCHAR(20) NULL;
外键约束 FOREIGN KEY
- 保证数据参照完整性,外键引用另一表的主键或唯一键。
sql
-- 主表 teacher
CREATE TABLE teacher (tid VARCHAR(40) PRIMARY KEY, name VARCHAR(40));
-- 从表 student,tid 为外键
CREATE TABLE student (
sid VARCHAR(40) PRIMARY KEY,
name VARCHAR(40),
tid VARCHAR(40),
CONSTRAINT fk_tid FOREIGN KEY (tid) REFERENCES teacher(tid)
ON DELETE CASCADE -- 级联删除
ON UPDATE CASCADE -- 级联更新
);
-- 添加外键(已有表)
ALTER TABLE student ADD CONSTRAINT fk_tid FOREIGN KEY (tid) REFERENCES teacher(tid);
-- 删除外键
ALTER TABLE student DROP FOREIGN KEY fk_tid;
外键约束影响性能,大型项目中有时仅在逻辑上维护,不实际建立外键。
默认值 DEFAULT
sql
CREATE TABLE t_default (status INT DEFAULT 1);
ALTER TABLE t_default ALTER status SET DEFAULT 0;
ALTER TABLE t_default ALTER status DROP DEFAULT;
自动增长 AUTO_INCREMENT
- 通常用于主键,自动生成唯一数字。
sql
CREATE TABLE t_auto (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20));
ALTER TABLE t_auto MODIFY id INT AUTO_INCREMENT;
十、索引
10.1 索引概述
索引是用于快速查找记录的数据结构(通常为 B+ 树)。索引能极大提升查询速度,但会降低 DML 操作性能(因为需要维护索引),并占用额外存储空间。
10.2 索引分类
| 类型 | 说明 |
|---|---|
| 普通索引(INDEX / KEY) | 基本索引,无唯一性要求 |
| 唯一索引(UNIQUE INDEX) | 列值不能重复,可加速查询 |
| 主键索引(PRIMARY KEY) | 唯一且非空,一种特殊的唯一索引 |
| 外键索引(FOREIGN KEY) | 用于外键约束,自动创建 |
| 全文索引(FULLTEXT) | 用于全文搜索(MyISAM / InnoDB 5.6+) |
10.3 创建和删除索引
sql
-- 创建普通索引
CREATE INDEX idx_dname ON dept(dname);
-- 创建唯一索引
CREATE UNIQUE INDEX idx_ename ON emp(ename);
-- 删除索引
DROP INDEX idx_dname ON dept;
-- 查看表的索引
SHOW INDEX FROM emp;
最佳实践:对 WHERE、ORDER BY、JOIN 中使用的列创建索引;避免在重复值高的列(如性别)上建索引。
十一、视图
11.1 视图概念
视图是虚拟表,内容由查询定义,不存储实际数据。视图可以简化复杂查询,提供安全的数据访问。
11.2 创建和使用视图
sql
-- 创建视图(将多个表的数据整合)
CREATE VIEW v_emp_dept AS
SELECT e.empno, e.ename, d.dname
FROM emp e
JOIN dept d ON e.deptno = d.deptno;
-- 查询视图
SELECT * FROM v_emp_dept WHERE dname = 'SALES';
-- 查看视图定义
SHOW CREATE VIEW v_emp_dept;
-- 删除视图
DROP VIEW v_emp_dept;
视图可以用于
INSERT、UPDATE、DELETE,但必须满足可更新视图的条件(如不包含 DISTINCT、GROUP BY、聚合函数等)。
十二、结尾
| 分类 | 核心内容 |
|---|---|
| DQL | SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT |
| 函数 | 单行函数(字符串、日期、数值)、聚合函数(COUNT, SUM, AVG, MAX, MIN) |
| 多表查询 | 内连接、外连接(LEFT/RIGHT)、自连接、子查询、联合查询 UNION |
| DML | INSERT, UPDATE, DELETE, TRUNCATE |
| 事务 | START TRANSACTION, COMMIT, ROLLBACK,ACID,隔离级别 |
| DDL | CREATE/DROP/ALTER DATABASE/TABLE,数据类型,约束(PRIMARY KEY, UNIQUE, NOT NULL, FOREIGN KEY, DEFAULT) |
| 索引 | 普通索引、唯一索引,CREATE INDEX,DROP INDEX |
| 视图 | CREATE VIEW,视图本质是存储的 SELECT |
本文章适合配合实际操作练习,多看多写,逐步掌握 MySQL 数据库的基本使用。
csharp
今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文
