16 JAVA MySQL 8.0

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

  • 安装后通过命令行连接:

    bash 复制代码
    cd C:\Program Files\MySQL\MySQL Server 8.0\bin
    mysql -u root -p
    输入密码
  • 常用命令:

    sql 复制代码
    SHOW 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 :自动匹配同名列作为连接条件。

    sql 复制代码
    SELECT e.ename, d.dname FROM emp e NATURAL JOIN dept d;
  • USING :手动指定同名列。

    sql 复制代码
    SELECT e.ename, d.dname FROM emp e JOIN dept d USING(deptno);
  • ON :最灵活,可指定任意连接条件(等值、不等值)。

    sql 复制代码
    SELECT 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;

视图可以用于 INSERTUPDATEDELETE,但必须满足可更新视图的条件(如不包含 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 复制代码
今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文
相关推荐
2301_773643621 小时前
MySQLmha
mysql
Dovis(誓平步青云)1 小时前
《QT学习第五篇:QSS美化界面与API绘图》
开发语言·数据库·qt·学习·时序数据库·开源智能体
无忧.芙桃1 小时前
数据结构之栈
c语言·开发语言·数据结构
ywl4708120871 小时前
IDEA 集成 Claude Code (Beta)
java·ide·intellij-idea
wyhwust1 小时前
web应用技术--springboot01
java·开发语言
lulu12165440781 小时前
GPT-5.6 vs Claude Fable 5/Mythos 深度技术对比:kindle/kepler/Levi三版本实测全解析
java·人工智能·python·gpt
焦虑的说说1 小时前
mysql深分页性能瓶颈根源分析
数据库·mysql
想你依然心痛1 小时前
数据库技术在电力业务中的核心应用场景
java·开发语言·数据库
nice_lcj5201 小时前
排序(3)-第三篇:交换排序专题——从冒泡排序到快速排序的效率飞跃
java·数据结构·算法·排序算法