前言

本文是对黑马程序员的《Mysql从入门到精通》系列视频的基础部分的笔记。

1.SQL语句

1.1 SQL通用语法

1.SQL语句可以单行或多行书写,以分号结尾。
2.SQL语句可以使用空格/缩进来增强语句的可读性。
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4.注释:
单行注释:--注释内容或#注释内容(MySQL特有)
多行注释:/*注释内容*/

1.2 SQL分类

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象 (数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限

1.3 DDL语句的使用

1.3.1 数据库操作

查询所有数据库

SHOW DATABASES;

查询当前数据库

SELECT DATABASE();

创建

CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集 ] [ COLLATE 排序规则 ];

删除

DROP DATABASE [ IF EXISTS ] 数据库名;

使用

USE 数据库名;

1.3.2 数据表单操作

查询当前数据库所有表

SHOW TABLES;

查询表结构

DESC 表名;

查询指定表的建表语句

SHOW CREATE TABLE 表名;

创建表

CREATE TABLE表名(
字段1 字段1类型 [COMMENT 字段1注释],
字段2 字段2类型 [COMMENT 字段2注释],
字段3 字段3类型 [COMMENT 字段3注释],
...
字段n 字段n类型 [COMMENT 字段n注释]
)[COMMENT表注释];

1.3.3 Mysql字段数据类型梳理

  1. 数值类型
类型存储大小取值范围(有符号)用途
TINYINT1字节-128 ~ 127小整数,常用于布尔值(0/1)、状态标识
SMALLINT2字节-32,768 ~ 32,767较小范围的整数,例如年龄、年份(不推荐用 YEAR)
MEDIUMINT3字节-8,388,608 ~ 8,388,607中等范围整数,适合存储较大但不需要 BIGINT 的值
INT / INTEGER4字节-2,147,483,648 ~ 2,147,483,647最常用整数类型,主键 id、计数值等
BIGINT8字节-9.22e18 ~ 9.22e18超大整数,金融金额、雪花 ID、64 位数据
DECIMAL(M,D)取决于 M精确小数,常用于金额(避免浮点误差)金融计算(存储 123.45 时,M=5, D=2)
FLOAT(M,D)4字节大约 ±3.4e38,非精确单精度浮点,科学计算、非精确数据
DOUBLE / REAL8字节大约 ±1.79e308,非精确双精度浮点,更高精度的科学计算
  1. 字符串类型
类型最大长度用途
CHAR(M)0 ~ 255 字符,定长固定长度字符串,例如性别'M'/'F',国家代码 'CN'
VARCHAR(M)0 ~ 65535 字符(实际取决于行大小和编码)可变长度字符串,最常用(如姓名、邮箱)
TEXT65,535 (64KB)大文本,例如文章内容、日志
TINYTEXT255小文本
MEDIUMTEXT16,777,215 (16MB)中等长度文本
LONGTEXT4,294,967,295 (4GB)特大文本
BLOB65,535 (64KB)二进制数据,例如图片、文件(不建议存数据库,建议存文件系统)
TINYBLOB255小二进制
MEDIUMBLOB16MB中等二进制
LONGBLOB4GB特大二进制
ENUM('a','b',...)最多 65535 个成员枚举值,存储固定集合的字符串,如性别、状态
SET('a','b',...)最多 64 个成员集合,可同时选择多个值(如权限标签)
  1. 日期与时间类型
类型存储大小格式用途
DATE3字节YYYY-MM-DD只存日期(生日、节日)
DATETIME8字节YYYY-MM-DD HH:MM:SS常用,存储完整日期时间(订单时间)
TIMESTAMP4字节YYYY-MM-DD HH:MM:SS自动存储 UTC 时间,可用于更新时间戳(受时区影响)
TIME3字节HH:MM:SS只存时间(每天几点)
YEAR1字节YYYY(1901–2155)存储年份(不推荐,建议用 SMALLINT)

总结使用场景

  • 主键 ID:INT / BIGINT
  • 金额:DECIMAL(10,2)
  • 文章内容:TEXT
  • 上传的文件/图片:路径存 VARCHAR,文件本身建议存在对象存储(而不是 BLOB)
  • 时间记录:DATETIME(推荐)或 TIMESTAMP(带时区)
  • 状态/枚举值:TINYINT 或 ENUM
最后修改:2025 年 09 月 09 日
如果觉得我的文章对你有用,请随意赞赏