MySQL 基本介绍
# 一、数据类型
# 1,整形
类型 | 字节大小 | 取值范围(unsigned) | 取值范围(signed) |
---|---|---|---|
tynyint | 1字节 | 0 ~ $2^{8}$-1 | -$2^{7}$ ~ $2^{7}$-1 |
smallint | 2字节 | 0 ~ $2^{16}$-1 | -$2^{15}$ ~ $2^{15}$-1 |
mediumint | 3字节 | 0 ~ $2^{24}$-1 | -$2^{23}$ ~ $2^{23}$-1 |
int | 4字节 | 0 ~ $2^{32}$-1 | -$2^{31}$ ~ $2^{31}$-1 |
bigint | 8字节 | 0 ~ $2^{64}$-1 | -$2^{63}$ ~ $2^{63}$-1 |
# 2,浮点型
- float,单精度浮点型,占用 4 字节;
- double,双精度浮点型,占用 8 字节;
- float(M, D),double(M, D),其中 M 表示该类型包含的有效数字个数,D 表示保留小数点后十进制数字的个数;
# 3,字符串类型
类型 | 存储长度 | 含义 |
---|---|---|
char(M) | M 个字符 | 固定长度的字符串,不足时空格补全 |
varchar(M) | M 个字符 | 可变长度的字符串,最多存储 M 个 |
tynytext | $2^{8}$-1字节 | 小型字符串 |
text | $2^{16}$-1 | 普通字符串 |
mediumtext | $2^{24}$-1 | 中等大小的字符串 |
longtext | $2^{32}$-1 | 长字符串 |
# 4,日期类型
- year,年份,1901 ~ 2155;
- date,日期,1000-01-01 ~ 9999-12-31;
- time,时间;
- datetime,日期和时间;
- timestamp,时间戳,'1970-01-01 00:00:01.000000' UTC ~ '2038-01-19 03:14:07.499999' UTC;
# 二、常用命令
# 1,show
点击查看
# 显示数据库支持的所有引擎
SHOW ENGINES;
# 显示制定引擎的状态或锁信息
SHOW ENGINE engine_name {STATUS | MUTEX};
# 显示所有的数据库
SHOW DATABASES [like_or_where];
# 显示指定数据库的创建信息
SHOW CREATE DATABASE database_name;
# 显示所有的表[完整的信息]
SHOW [FULL] TABLES [FROM db_name] [like_or_where];
# 显示指定表的创建信息
SHOW CREATE TABLE table_name;
# 显示打开的非临时表[可以看表是否锁定]
SHOW OPEN TABLES [FROM db_name] [like_or_where];
# 显示表的状态信息
SHOW TABLE STATUS [FROM db_name] [like_or_where];
# 显示表的列信息
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where];
# 显示表的索引信息
SHOW INDEX FROM tbl_name [FROM db_name];
# 显示可用的字符集
SHOW {CHARACTER SET | CHARSET} [like_or_where];
# 显示可用的字符编码
SHOW COLLATION [like_or_where];
# 显示服务器状态信息
SHOW [GLOBAL | SESSION] STATUS [like_or_where];
# 显示用户的授权信息
SHOW GRANTS FOR user;
# 显示错误信息
SHOW ERRORS [LIMIT [offset,] row_count];
# 显示警告信息
SHOW WARNINGS [LIMIT [offset,] row_count];
# 显示变量
SHOW [GLOBAL | SESSION] VARIABLES [like_or_where];
# 显示字符编码相关的变量
SHOW VARIABLES LIKE 'character_set_%';
#显示所有活动进程
SHOW PROCESSLIST;
# 显示权限信息
SHOW PRIVILEGES;
# 显示指定函数的创建信息
SHOW CREATE FUNCTION func_name;
# 显示允许的SHOW语句
HELP SHOW;
like_or_where: {
LIKE 'pattern'
| WHERE expr
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 2,json 相关
- 在MySQL中,处理JSON数据的功能是从MySQL 5.7.8版本开始引入的,以下是一些常用的MySQL JSON相关命令和函数:
# 2.1 JSON 数据类型
从MySQL 5.7.8开始,MySQL引入了对JSON数据类型的支持;
定义JSON列
CREATE TABLE mytable ( id INT PRIMARY KEY, data JSON ); -- 这样就可以在`data`列中存储JSON格式的数据
1
2
3
4
5
6
# 2.2 JSON_EXTRACT
JSON_EXTRACT(json_doc, path):从JSON字符串中提取数据。
SELECT JSON_EXTRACT('{"id": 1, "name": "John"}', '$.name');
1
# 2.3 JSON_VALID
- JSON_VALID(json_val):用于校验字符串是否是JSON字符串。
SELECT JSON_VALID('{}');
1
# 2.4 JSON_UNQUOTE
JSON_UNQUOTE(json_val):去除JSON字符串的引号。
SELECT JSON_UNQUOTE('"John"');
1
# 2.5 JSON_SEARCH
JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char]):在JSON字符串中搜索指定的字符串。
SELECT JSON_SEARCH('{"id": 1, "name": "John"}', 'one', 'John');
1
# 2.6 JSON_INSERT
JSON_INSERT(json_doc, path, val[, path, val]...):向JSON字符串插入数据。
SELECT JSON_INSERT('{"id": 1}', '$.name', 'John');
1
# 2.7 JSON_REPLACE
JSON_REPLACE(json_doc, path, val[, path, val]...):替换JSON字符串中的数据。
SELECT JSON_REPLACE('{"id": 1, "name": "Jane"}', '$.name', 'John');
1
# 2.8 JSON_SET
JSON_SET(json_doc, path, val[, path, val]...):设置JSON字符串中的数据。
SELECT JSON_SET('{"id": 1}', '$.name', 'John');
1
# 2.9 JSON_CONTAINS
JSON_CONTAINS(json_doc, val[, path]):检查JSON字符串是否包含指定的值。
SELECT JSON_CONTAINS('["apple", "banana", "cherry"]', '"banana"');
1
# 2.10 JSON_LENGTH
- JSON_LENGTH(json_val):用于计算JSON数组的长度。
SELECT JSON_LENGTH(JSON_EXTRACT('{"msg":{"code":[11]}}', '$.msg.code'));
1
# 简单示例
-- 创建表格存储JSON数据
CREATE TABLE users (
id INT PRIMARY KEY,
info JSON
);
-- 插入JSON数据
INSERT INTO users VALUES (1, '{"name": "John", "age": 30}');
-- 查询JSON数据
SELECT id, info->'$.name' AS name, info->'$.age' AS age FROM users;
-- 更新JSON数据
UPDATE users SET info = JSON_SET(info, '$.age', 31) WHERE id = 1;
-- 查询包含特定值的记录
SELECT * FROM users WHERE JSON_CONTAINS(info, '"John"');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
编辑 (opens new window)
上次更新: 2024/10/22, 16:52:58