MySQL基础学习笔记:从数据模型到DDL全掌握
- 一、基础概述与数据模型
-
- [1.1 数据库相关概念](#1.1 数据库相关概念)
- [1.2 MySQL数据模型](#1.2 MySQL数据模型)
- 二、SQL通用语法及分类
-
- [2.1 SQL通用语法](#2.1 SQL通用语法)
- [2.2 SQL语句分类](#2.2 SQL语句分类)
- [三、DDL ------数据库操作](#三、DDL ——数据库操作)
-
- [3.1 查询数据库](#3.1 查询数据库)
- [3.2 创建数据库](#3.2 创建数据库)
- [3.3 使用数据库](#3.3 使用数据库)
- [3.4 删除数据库](#3.4 删除数据库)
- 四、DDL------表操作:创建&查询
-
- [4.1 创建表](#4.1 创建表)
- [4.2 查询表](#4.2 查询表)
- 五、DDL------数据类型及案例
-
- [5.1 数值类型](#5.1 数值类型)
- [5.2 字符串类型](#5.2 字符串类型)
- [5.3 日期时间类型](#5.3 日期时间类型)
- [5.4 综合案例](#5.4 综合案例)
- 六、DDL------表操作:修改&删除
-
- [6.1 添加字段](#6.1 添加字段)
- [6.2 修改字段](#6.2 修改字段)
- [6.3 删除字段](#6.3 删除字段)
- [6.4 修改表名](#6.4 修改表名)
- [6.5 删除表](#6.5 删除表)
一、基础概述与数据模型
1.1 数据库相关概念
- 数据库(DB):存储数据的仓库,按照一定数据模型组织、长期存储在计算机内,可共享。
- 数据库管理系统(DBMS):操作数据库管理系统的标准语言,定义了对DBMS进行操作的统一标准。
- SQL(结构化查询语言):操作数据库管理系统的标准语言,定义了对DBMS进行操作的统一标准。
常见的关系型数据管理系统:MySQL、Oracle、SQL Server、等
1.2 MySQL数据模型
关系型数据库是建立在关系模型基础上的数据库,由多张相互连接的二维表组成。核心概念:
| 概念 | 说明 |
|---|---|
| 数据库(Database) | 存储数据的容器 |
| 表(Table) | 二维表格,由行和列组成,是数据的基本组织单位 |
| 行(Row / Record) | 一条记录,代表一条具体数据 |
| 列(Column / Field) | 一个字段,描述数据的某个属性 |
数据模型的层级关系:数据库管理系统------>数据库------>表------>行/列。
二、SQL通用语法及分类
2.1 SQL通用语法
- SQL语句可以单行或多行书写,以分号;结尾
- 关键字通常大写(也可以小写),数据库名、表名、列名不区分大小写
- 可以使用空格或缩进来增强语句的可读性
- 注释方式:
单行注释:--注释内容 或 # 注释内容
多行注释:/*注释内容 */
2.2 SQL语句分类
| 分类 | 全称 | 说明 |
|---|---|---|
| DDL | Data Definition Language(数据定义语言) | 定义数据库结构:创建数据库、表、修改表结构等 |
| DML | Data Manipulation Language(数据操纵语言) | 对表中的数据进行增、删、改 |
| DQL | Data Query Language(数据查询语言) | 查询表中的数据 |
| DCL | Data Control Language(数据控制语言) | 定义访问权限和安全级别(GRANT / REVOKE) |
三、DDL ------数据库操作
3.1 查询数据库
sql
-- 查询所有数据库
SHOW DATABASES;
-- 查询当前使用的数据库
SELECT DATABASE();

3.2 创建数据库
sql
-- 方式一:直接创建
CREATE DATABASE 数据库名;
-- 方式二:指定字符集(推荐)
CREATE DATABASE 数据库名 DEFAULT CHARSET utf8mb4;
-- 方式三:如果不存在则创建(避免报错)
CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET utf8mb4;
3.3 使用数据库
sql
-- 切换到指定数据库
USE 数据库名;
3.4 删除数据库
sql
-- 删除数据库
DROP DATABASE 数据库名;
-- 如果存在则删除
DROP DATABASE IF EXISTS 数据库名;
四、DDL------表操作:创建&查询
4.1 创建表
sql
CREATE TABLE 表名 (
字段名1 数据类型 [约束],
字段名2 数据类型 [约束],
字段名3 数据类型 [约束]
-- 注意:最后一行不要加逗号
);
示例 :创建一个学生表
前提:1、先创建一个数据库
sql
CREATE DATABASE school;
2、切换到这个数据库
sql
USE school;
3、执行建表语句
sql
CREATE TABLE student (
id INT,
name VARCHAR(50),
age INT,
gender VARCHAR(10),
birthday DATE
);
4.2 查询表
sql
-- 查询当前数据库所有表
SHOW TABLES;
-- 查询表结构(查看表中有哪些字段、类型、约束)
DESC 表名;
-- 查询建表语句(查看创建表时的完整 SQL)
SHOW CREATE TABLE 表名;
五、DDL------数据类型及案例
MySQL常用数据类型分为三大类:数值类型、字符串类型、日期时间类型。
5.1 数值类型
| 类型 | 大小 | 说明 |
|---|---|---|
| TINYINT | 1 字节 | 小整数值 |
| SMALLINT | 2 字节 | 大整数值 |
| INT / INTEGER | 4 字节 | 大整数值 |
| BIGINT | 8 字节 | 超大整数值 |
| FLOAT | 4 字节 | 单精度浮点数 |
| DOUBLE | 8 字节 | 双精度浮点数 |
| DECIMAL(M, D) | --- | 精确小数值(常用于金额),M 总位数,D 小数位数 |
示例: 分数 98.5 用 DECIMAL(4, 1);金额 1999.99 用 DECIMAL(10, 2)。
DECIMAL(M, D) 括号里两个数字的含义:
| 参数 | 名称 | 含义 |
|---|---|---|
| M | 精度(precision) | 总共保留多少位数字(整数位 + 小数位加起来) |
| D | 标度(scale) | 小数点后保留几位 |
拆解一下:
DECIMAL(4, 1)
- M = 4:总共 4 位数字
- D = 1:小数点后 1 位
- → 整数部分 = 4 - 1 = 3 位
- → 能存的范围:-999.9 ~ 999.9
- 98.5 存进去:整数 2 位 + 小数 1 位 = 3 位,没超过 4 位上限 ✅
DECIMAL(10, 2)
- M = 10:总共 10 位数字
- D = 2:小数点后 2 位
- → 整数部分 = 10 - 2 = 8 位
- → 能存的范围:-99999999.99 ~ 99999999.99(最大约 1 亿)
- 1999.99 存进去:整数 4 位 + 小数 2 位 = 6 位,远小于 10 位上限 ✅
M 管总共能写几位,D 管小数点后留几位,整数位就是 M 减 D。
5.2 字符串类型
| 类型 | 大小 | 说明 |
|---|---|---|
| CHAR(M) | M 字节 | 定长字符串,M 为最大长度(0~255),性能高但可能浪费空间 |
| VARCHAR(M) | M 字节 | 变长字符串,M 为最大长度(0~65535),按需分配空间 |
| TEXT | --- | 长文本数据 |
| BLOB | --- | 二进制大对象(图片、文件等) |
选择建议:
- 长度固定(如性别、手机号)→ 用
CHAR - 长度不固定(如姓名、地址)→ 用
VARCHAR - 长文章内容 → 用
TEXT
5.3 日期时间类型
| 类型 | 格式 | 说明 |
|---|---|---|
| DATE | YYYY-MM-DD | 日期 |
| TIME | HH:MM:SS | 时间 |
| YEAR | YYYY | 年份 |
| DATETIME | YYYY-MM-DD HH:MM:SS | 日期 + 时间(最常用) |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS | 时间戳(会自动更新) |
5.4 综合案例
需求:设计一张员工表,包含以下字段:
- 员工编号(纯数字)
- 员工姓名(最长 50 字符)
- 性别(男 / 女,最多 2 个字符)
- 薪资(精确到小数点后 2 位,最高 999999.99)
- 出生日期(年月日)
- 入职时间(年月日时分秒)
建表SQL:
sql
CREATE TABLE emp (
id INT, -- 员工编号
name VARCHAR(50), -- 员工姓名
gender CHAR(2), -- 性别
salary DECIMAL(7, 2), -- 薪资(总7位,小数2位)
birthday DATE, -- 出生日期
entry_date DATETIME -- 入职时间
);
六、DDL------表操作:修改&删除
6.1 添加字段
sql
ALTER TABLE 表名 ADD 字段名 数据类型 [约束];
示例: 给员工表增加一个「联系方式」字段
sql
ALTER TABLE emp ADD phone VARCHAR(20);
6.2 修改字段
sql
-- 修改字段类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型;
-- 修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
示例:
sql
-- 将 phone 改名为 tel,并修改类型
ALTER TABLE emp CHANGE phone tel VARCHAR(15);
6.3 删除字段
sql
ALTER TABLE 表名 DROP 字段名;
6.4 修改表名
sql
-- 方式一
ALTER TABLE 表名 RENAME TO 新表名;
-- 方式二(MySQL 8.0+)
RENAME TABLE 表名 TO 新表名;
6.5 删除表
sql
-- 删除表(表结构和数据都会被删除)
DROP TABLE 表名;
-- 如果存在则删除
DROP TABLE IF EXISTS 表名;
TRUNCATE 也可以删除表,但会重新创建表结构(清空数据,保留表结构):
sql
TRUNCATE TABLE 表名;