目录
1.1MySQL数据库介绍
MySQL 是一款 开源、关系型数据库管理系统(RDBMS) ,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下产品。它基于 Client-Server 架构 ,支持多用户、多线程,广泛应用于 Web 应用开发、企业级系统、数据分析等场景,是 LAMP(Linux + Apache + MySQL + PHP) 等经典技术栈的核心组件之一。
SQL语言主要由以下几部分组成:
DDL(Data Definition Language,数据定义语言):用来建立数据库,数据库对象和定义字段,如CREATE,ALTER,DROP.
DML(Data Manipulation Language,数据操纵语言):用来插入,删除和修改数据库中的数据,如INSERT,UPDATE,DELETE.
DQL(Data Query Language,数据查询语言):用来查询数据库中的数据,如SELECT.
DCL(Data Control Language,数据控制语言):用来控制数据库组件的存取许可,存取权限,如COMMIT,ROLLBACK,GRANT,REVOKE.
2.1MySQL库操作
2.1.1系统数据库
经初始化后的MySQL服务器,默认建立了四个数据库: sys,mysql,information_schema,performance_schema.
组件 | 类型 | 核心功能 | 数据来源 |
---|---|---|---|
MySQL | 数据库系统 | 存储和管理业务数据,提供数据库服务 | 磁盘文件、内存 |
information_schema | 系统数据库 | 存储元数据(表结构、权限等) | 服务器内部字典 |
performance_schema | 系统数据库 | 监控运行时性能数据(语句、锁、资源等) | 服务器运行时状态 |
sys | 工具型数据库 | 封装性能分析视图,简化复杂查询 | information_schema + performance_schema |
2.1.2数据库操作
1.创建数据库
语法:mysql>create database 数据库名;

2.数据库命名规则
可以由字母,数字,下划线,@,#,$
区分大小写
唯一性
不能使用关键字如create select
不能单独使用数字
最长128位
3.选择数据库
mysql>USE 数据库名;

4.查看数据库
3.1MySQL表操作
3.1.1表介绍
表是由若干行和列组成的二维结构,用于组织和呈现具有相关性的数据或信息。每一行代表一个独立的记录或对象,每一列代表该对象的一个属性或特征。
3.1.2查看表
使用SHOW TABLES查看当前所在的数据库中包含的表,在操作前,需要使用USE语句切换到所使用的数据库。

3.1.3创建表
1.语法
CREATE TABLE table_name (
column1 datatype [constraint],
column2 datatype [constraint],
column3 datatype [constraint],
...
[PRIMARY KEY (column1, column2, ...)]
);
2.类型介绍
MySQL支持多种类型,大致可以分为三类:数值,日期,类型。
数值的类型
分类 | 子类型 | 特点 | 典型取值范围 | 存储大小 | 应用场景 |
---|---|---|---|---|---|
整数类型 | TINYINT |
小范围整数,通常用于枚举值或状态标识 | 无符号:0~255 有符号:-128~127 | 1 字节 | 性别标识(0/1)、状态码(如 0 = 禁用,1 = 启用) |
SMALLINT |
中等范围整数,适用于较小计数场景 | 无符号:0~65535 有符号:-32768~32767 | 2 字节 | 年龄、年份(非跨世纪场景) | |
INT (标准整数) |
通用整数类型,满足大多数常规计数需求 | 无符号:0~4294967295 有符号:-2147483648~2147483647 | 4 字节 | 用户 ID、订单数量、商品库存 | |
BIGINT |
大范围整数,适用于需要存储极大值的场景(如时间戳、资产金额) | 无符号:0~18446744073709551615 有符号:-9223372036854775808~9223372036854775807 | 8 字节 | 毫秒级时间戳(如1685289600000 )、财务金额 |
|
浮点类型 | FLOAT |
单精度浮点数,精度较低(约 6~7 位有效数字),存储空间小但可能存在精度误差 | ±1.175494351×10⁻³⁸ ~ ±3.402823466×10³⁸ | 4 字节 | 非精确计算场景(如概率、科学实验近似值) |
DOUBLE |
双精度浮点数,精度较高(约 15~17 位有效数字),适合需要更高精度的计算 | ±2.2250738585072014×10⁻³⁰⁸ ~ ±1.7976931348623157×10³⁰⁸ | 8 字节 | 科学计算、金融计算(需结合舍入规则) | |
定点类型 | DECIMAL(p, s) |
高精度定点数,p 为总位数,s 为小数位数,完全精确存储(无精度损失) |
取决于p 和s (如DECIMAL(10, 2) 表示总 10 位,2 位小数) |
可变(1~17 字节) | 财务计算(如金额、汇率)、高精度测量数据 |
日期类型
分类 | 子类型 | 特点 | 格式 / 取值范围 | 存储大小 | 应用场景 |
---|---|---|---|---|---|
日期类型 | DATE |
存储纯日期(年 - 月 - 日),不包含时间部分 | 格式:YYYY-MM-DD (如2023-10-01 ) 范围:0001-01-01 ~9999-12-31 |
3 字节 | 生日、纪念日、合同生效日期 |
时间类型 | TIME |
存储纯时间(时 - 分 - 秒),不包含日期部分 | 格式:HH:MM:SS (如14:30:45 ) 范围:00:00:00 ~23:59:59 |
3 字节 | 会议时间、航班起飞时间、考勤打卡时间 |
日期时间类型 | DATETIME |
存储完整日期和时间(年 - 月 - 日 时 - 分 - 秒),不依赖时区 | 格式:YYYY-MM-DD HH:MM:SS (如2023-10-01 15:45:00 ) 范围:1000-01-01 00:00:00 ~9999-12-31 23:59:59 |
8 字节 | 订单创建时间、日志记录时间(服务器本地时间) |
TIMESTAMP |
存储日期和时间,通常关联时区(不同数据库实现不同),自动转换为 UTC 存储 | 格式同DATETIME ,但存储为 UTC 时间戳(如 MySQL 中范围:1970-01-01 00:00:01 ~2038-01-19 03:14:07 ) |
4 字节(MySQL) | 跨国业务时间、需要时区转换的场景(如用户登录时间) | |
时间间隔类型 | INTERVAL |
存储时间间隔(如天数、小时数、分钟数),用于计算时间差 | 格式:PnYnMnDTnHnMnS (如P1Y2M3DT4H5M6S 表示 1 年 2 个月 3 天 4 小时 5 分 6 秒) |
可变 | 计算项目周期、租赁时长、倒计时 |
其他类型 | YEAR |
存储年份(简化格式),可指定 2 位或 4 位表示 | 格式:YYYY (4 位,如2023 )或YY (2 位,如23 对应 2023) |
1 字节 | 书籍出版年份、学年(如2024学年 ) |
字符串类型
数据类型 | 存储方式 | 长度限制 | 适用场景 |
---|---|---|---|
CHAR | 固定长度存储 | 0-255 字符(取决于数据库) | - 存储长度固定的数据(如身份证号、性别代码) - 查询效率高(长度固定易定位) |
VARCHAR | 可变长度存储(需额外 1-2 字节记录长度) | 0-65,535 字符(取决于数据库) | - 存储长度可变的文本(如用户名、文章摘要) - 节省空间(按需分配) |
BLOB | 二进制大对象(Binary Large Object) | 最大支持 4GB(取决于具体类型,如 TINYBLOB、MEDIUMBLOB 等) | - 存储二进制数据(如图像、音频、文件) - 不处理字符编码,直接存储原始字节 |
TEXT | 文本大对象(Text Large Object) | 最大支持 4GB(取决于具体类型,如 TINYTEXT、MEDIUMTEXT 等) | - 存储长文本(如文章内容、日志信息) - 支持字符编码(如 UTF-8) |
3.创建表

3.1.4查看表结构
describe语句:用于显示表的结构,即组成表的各字段的信息。

查看表的详细结构,可加\G,\G表示长格式展示。

3.1.5修改表
1.修改表名
alter table 表名 rename 新表名;

2.添加字段
alter table 表名 add 字段名

3.修改字段
alter table 表名 modify 字段名 数据类型 [完整性约束条件...]

3.1.6复制表
只复制表结构,不复制表中数据

3.1.7删除表
删除表(DROP TABLE
)是数据库管理系统(DBMS)中用于彻底移除数据表结构及所有数据的操作。

4.1MySQL数据操作
4.1.1介绍
可以通过DML使用INSERT用来插入,DELETE删除和UPDATE更新数据库中的数据,使用SELECT查询数据。
创建示例表

4.1.2插入数据INSERT
顺序插入:


插入多条记录:

4.1.3更新数据INSERT

4.1.4查询数据INSERT
SELECT语句:用于从指定的表中查找符合条件的数据记录。
1.单表查询
(1)准备数据

(2)where条件
WHERE
条件主要用于筛选数据,其作用是限制查询结果,使结果只包含符合条件的记录。它常被用在 SELECT
、UPDATE
、DELETE
等语句中,目的是精准定位到你想要操作的记录。
1.比较运算符 :>,<,>=,<=,!=
薪资大于17000的人姓名

不是403办公室的人姓名
2.in:集合查询
薪资是9000或10000或1000000的人姓名

3.like:像,模糊匹配

4.逻辑运算符:and or not
薪资17000并且办公室是403的人

薪资17000或者办公室是403的人

薪资不是9000或10000或30000的人姓名

(3)group by 分组
1.为什么是分组?
分组指的是将所以记录按照某个相同字段进行归类。

2.聚合函数:count()计数 avg()平均值 max()最大值
min()最小值 sum()总和
(4)having过滤
有哪些岗位是平均工资大于10000的

(5)order by 排序
order by是 SQL 语句中用于对查询结果进行排序的关键字,是数据库查询中实现结果有序化的核心功能之一。
(6)limit限制结果条目
limit是 SQL 中用于限制查询结果返回行数的关键字,常用于分页查询或获取指定数量的记录。

(7)正则匹配
正则匹配(正则表达式,Regular Expression)是一种用特定模式描述、匹配和操作字符串的工具,广泛应用于文本处理、数据验证、搜索替换等场景。
Name是u结尾的姓名

Name是wan和wu之间至少1个g的姓名

2.多表查询
(1)准备数据

(2)多表连接查询
1.内连接(只连接匹配的行)

2.左连接(优先显示左表全部记录)

3.右连接(优先显示右表全部记录)

5.1MySQL数据库用户授权
用户授权 是 MySQL 通过权限系统控制用户对数据库对象(如表、视图、存储过程等)操作权限的机制,本质是通过GRANT
语句将特定权限赋予指定用户,同时可限制用户的访问来源(IP / 主机),确保数据安全与访问可控。
5.1.1创建用户

5.1.2授权操作
