MySQL基础
1. 概述
1.1 数据库相关概念
名称 | 全称 | 简称 |
---|---|---|
数据库 | 存储数据的仓库,数据是有组织的进行存储 | DataBase(DB) |
数据库管理系统 | 操纵和管理数据库的大型软件 | DataBase Management System(DBMS) |
SQL | 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 | Structured Query Language(SQL) |
1.2 MySQL数据库
- 启动与停止
win
+r
,输入services.msc
,进入服务,右击MySQL80
,点击启动
或停止
- 在命令行中输入
net start mysql80
以启动
,输入net stop mysql80
以停止
(注意,要以管理员身份运行
进入命令提示符
)
- 客户端连接
- MySQL提供的客户端命令行工具
- 开始菜单选择
MySQL 8.0 Command Line Client
- 输入密码
- 开始菜单选择
- 系统自带的命令行工具执行指令
mysql -u root -p
- 输入密码
- 注意:使用这种方式时,需要配置PATH环境变量
- MySQL提供的客户端命令行工具
- 数据模型
MySQL客户端
给MySQL数据库服务器
发送对应的SQL语句
- 在
MySQL服务器内部
有个DBMS
数据库管理系统,DBMS
会维护和操作数据库,它也可以创建数据库 - 一个
数据库
里可以维护多张表 - 表是最终存储数据的
1.3 MySQL数据模型
- 关系型数据库(RDBMS)
- 概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库
- 特点:
- 使用表存储数据,格式统一,便于维护
- 使用SQL语言操作,标准统一,使用方便
- 数据模型
- 我们安装完了MySQL之后,我们的计算机就成了MySQL数据库服务器
- 我们可以通过客户端来连接数据库管理系统
DBMS
- 使用
SQL
语句,通过数据库管理系统,来创建数据库 - 也可以通过
SQL
语句通过数据库管理系统,在指定的数据库当中来创建表 - 在一个数据库服务器当中可以创建多个数据库
- 在一个数据库当中可以创建多张表(二维表)
- 在表中我们可以创造一条一条记录
2. SQL
2.1 通用语法及分类
2.1.1 SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾
- SQL语句可以使用空格/缩进来增强语句的可读性
- MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
- 注释:
- 单行注释:
-- 注释内容
或# 注释内容
(MySQL特有) - 多行注释:/注释内容/
- 单行注释:
2.1.2 SQL分类
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据库定义语言,用来定义数据库对象(数据库,表,字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
2.2 DDL
2.2.1 数据库操作
小贴士
- 结束记得用
;
- 若没有输入
;
,输入完之后会出现->
,此时输入Ctrl
+C
即可退出
- 字符集不建议使用
utf8
,而建议使用utf8mb4
。
- 理由:因为
utf8
实际上是一种不完全的UTF-8
编码,只支持UTF-8
前三个字节,不支持部分特殊字符,如 Emoji 和一些罕见的汉字或其他符号。而utf8mb4
是 MySQL 中真正的完整 UTF-8 编码,能够使用完整的 4 个字节表示字符,因此可以支持 Unicode 中的所有字符,包括 Emoji 和其他 4 字节字符
- 查询
查询所有数据库
1 |
|
查询当前数据库
1 |
|
- 创建
1 |
|
- 删除
1 |
|
- 使用
1 |
|
USE
语句的分号不是必须的
2.2.2 表操作:创建&查询
查询
- 查询当前数据库所有表
1
SHOW TABLES;
- 查询表结构
1
DESC 表名;
desc - > describe
- 查询指定表的建表语句
1
SHOW CREATE TABLE 表名;
创建
1
2
3
4
5
6
7CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
......
字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];小贴士
[...]为可选参数,最后一个字段后面没有逗号
2.2.3 数据类型
数据类型主要分为三类:数值类型
,字符串类型
,日期时间类型
。
- 数值类型
分类 | 类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
---|---|---|---|---|---|
数值类型 | tinyint |
1 byte | \((-2^7,2^7-1)\) | (\(0,2^8-1\)) | 小整数值 |
数值类型 | smallint |
2 bytes | \((-2^{15},2^{15}-1)\) | \((0,2^{16}-1)\) | 大整数值 |
数值类型 | mediumint |
3 bytes | \((-2^{23},2^{23}-1)\) | \((0,2^{24}-1)\) | 大整数值 |
数值类型 | int/integer |
4 bytes | \((-2^{31},2^{31}-1)\) | \((0,2^{32}-1)\) | 大整数值 |
数值类型 | bigint |
8 bytes | \((-2^{63},2^{63}-1)\) | \((0,2^{64}-1)\) | 极大整数值 |
数值类型 | float |
4 bytes | \((-3,4028 E+38, 3.4028 E+38)\) | 0和\((1.17549 E-308, 1.79769 E+308)\) | 单精度浮点数值 |
数值类型 | double |
8 bytes | \((-1.79769 E+308, 1.79769 E+308)\) | 0和\((2.2250738585 E-308, 1.79769E+308)\) | 双精度浮点数 |
数值类型 | decimal |
依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) |
小贴士
- M(精度)和D(标度):比如123.45,总共有五位,所以精度是5,小数点后有两位,所以标度是2
- 无符号表示:比如年龄,可以写为:
age TINYINT UNSIGNED
- 位数:比如我们想输入分数,总共有四位,其中一位是小数,则用
score double(4,1)
- 字符串类型
分类 | 类型 | 大小 | 描述 |
---|---|---|---|
字符串类型 | CHAR | 0~255 bytes | 定长字符串 |
字符串类型 | VARCHAR | \(0\)~\(2^{16}-1\) bytes | 变长字符串 |
字符串类型 | TINYBLOB | 0~255 bytes | 不超过255个字符的二进制数据 |
字符串类型 | TINYTEXT | 0~255 bytes | 短文本字符串 |
字符串类型 | BLOB | \(0\)~\(2^{16}-1\) bytes | 二进制形式的长文本数据 |
字符串类型 | TEXT | \(0\)~\(2^{16}-1\) bytes | 长文本数据 |
字符串类型 | MEDIUMBLOB | 0~\(2^{24}-1\) bytes | 二进制形式的中等长度文本数据 |
字符串类型 | MEDIUMTEXT | 0~\(2^{24}-1\) bytes | 中等长度文本数据 |
字符串类型 | LONGBLOB | 0~\(2^{32}-1\) | 二进制形式的极大文本数据 |
字符串类型 | LONGTEXT | 0~\(2^{32}-1\) | 极大长文本数据 |
小贴士
BLOB
:Binary Large Object
,二进制大对象文本类型,用于存储如图片、音频、视频文件、压缩文件或其他非文本数据
TEXT
:存储文本数据
- 日期类型
分类 | 类型 | 大小 | 范围 | 格式 | 描述 |
---|---|---|---|---|---|
日期类型 | DATE | 3 | 1000-01-01 至9999-12-31 |
YYYY-MM-DD | 日期值 |
日期类型 | TIME | 3 | -838:59:59 至838:59:59 |
HH:MM:SS | 时间值或持续时间 |
日期类型 | YEAR | 1 | 1901 至2155 |
YYYY | 年份值 |
日期类型 | DATATIME | 8 | 1000-01-01 00:00:00 至9999-12-31 23:59:59 |
YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
日期类型 | TIMESTAMP | 4 | 1970-01-01 00:00:01 至2038-01-19 03:14:07 |
YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
2.2.4 表操作:修改&删除
- 修改
添加字段
1 |
|
修改数据类型
1 |
|
修改字段名和字段类型
1 |
|
删除字段
1 |
|
修改表名
1 |
|
- 删除
删除表
1 |
|
删除指定表,并重新创建该表
1 |
|
2.2.5 小结
- DDL-数据库操作
1 |
|
- DDL-表操作
1 |
|
MySQL基础
http://crazythursdayv50tome.cn/2024/08/28/MySQL/