DC's blog DC's blog
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)

DC

愿我一生欢喜,不为世俗所及.
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)
  • 计算机基础

  • linux基础

  • mysql

    • 基础

      • install_db
      • db_command
      • imp_knowledge
      • table_field
        • 约束
        • 类型
      • table_relation
      • permissions
      • single_query
      • multi_query
      • query_practice
      • pymysql
      • just_know
      • 补充(1)
      • 补充(2)
    • 进阶

  • git

  • 数据结构与算法

  • axure

  • english

  • docker

  • IT_Need
  • mysql
  • 基础
DC
2022-12-06
目录

table_field

# 约束

create table tb5(
    id int not null auto_increment primary key,	-- 不允许为空 & 主键 & 自增
    name varchar(16) not null,      -- 不允许为空
    email varchar(32) null,      		-- 允许为空(默认)
    age int default 3            		-- 插入数据时,如果不给age列设置值,默认值:3
)default charset=utf8;

主键一般用于表示当前这条数据的ID编号(类似于人的身份证),需要我们自己来维护一个不重复的值,比较繁琐。所以,在数据库中一般会将主键和自增结合。
注意:一个表中只能有一个自增列【自增列,一般都是主键】
1
2
3
4
5
6
7
8
9

MySQL还有很多其他的数据类型,例如:set、enum、TinyBlob、Blob、MediumBlob、LongBlob 等,详细见官方文档:https://dev.mysql.com/doc/refman/5.7/en/data-types.html


# 类型

int[(m)][unsigned][zerofill]
    int				       表示有符号,取值范围:-2147483648 ~ 2147483647
    int unsigned	   表示无符号,取值范围:0 ~ 4294967295
    int(5) zerofill	 仅用于显示,当不满足5位时,按照左边补0,例如:00002;满足时,正常显示
tinyint[(m)] [unsigned] [zerofill]
		大小,1字节 8个二进制位 2^8=256
		有符号,取值范围:-128 ~ 127.
		无符号,取值范围:0 ~ 255
bigint[(m)][unsigned][zerofill]
		有符号,取值范围:-9223372036854775808 ~ 9223372036854775807
		无符号,取值范围:0  ~  18446744073709551615
decimal[(m[,d])] [unsigned] [zerofill]
		准确的小数值,m是数字总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30
		eg: decimal(8,2) 5.289-->5.29  5.282-->5.28  5121321.283-->ERROR
char(m)
    定长字符串,m代表字符串的长度,最多可容纳255个字符。
    定长的体现:即使内容长度小于m,也会占用m长度。例如:char(5),数据是:yes,底层也会占用5个字符;
    如果超出m长度限制(默认MySQL是严格模式,所以会报错)。
    如果在配置文件中加入如下配置,
      	sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
        保存并重启,此时MySQL则是非严格模式,此时超过长度则自动截断(不报错)。。
    注意:默认底层存储是固定的长度(不够则用空格补齐),但是查询数据时,会自动将空白去除。 
		如果想要保留空白,在sql-mode中加入 PAD_CHAR_TO_FULL_LENGTH 即可。
    查看模式sql-mode,执行命令:show variables  like 'sql_mode';
    一般适用于:固定长度的内容。
    设置回严格模式:set global sql_mode='STRICT_TRANS_TABLES'
varchar(m)
		变长字符串,m代表字符串的长度,最多可容纳65535个字符。
		变长的体现:内容小于m时,会按照真实数据长度存储;如果超出m长度限制(默认MySQL是严格模式,所以报错)。
    如果在配置文件中加入如下配置,
        sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    保存并重启,此时MySQL则是非严格模式,此时超过长度则自动截断(不报错)
text
    text数据类型用于保存变长的大字符串,可以组多到65535 (2**16 − 1)个字符
    一般情况下,长文本会用text类型。例如:文章、新闻等
mediumtext
   A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters
longtext
   A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1)
datetime	
    YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59)
    插入数据时,此字段值可设置为NOW();
timestamp
    YYYY-MM-DD HH:MM:SS(1970-01-01 00:00:00/2037年)
    对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储
    查询时,将其又转化为客户端当前时区进行返回
    对于DATETIME,不做任何改变,原样输入和输出
date
    YYYY-MM-DD(1000-01-01/9999-12-31)
time
    HH:MM:SS('-838:59:59'/'838:59:59')
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
mysql> create table L5(
    -> id int not null primary key auto_increment,
    -> dt datetime,
    -> tt timestamp
    -> )default charset=utf8;
Query OK, 0 rows affected (0.03 sec)

mysql> insert into L5(dt,tt) values("2025-11-11 11:11:44", "2025-11-11 11:11:44");

mysql> select * from L5;
+----+---------------------+---------------------+
| id | dt                  | tt                  |
+----+---------------------+---------------------+
|  1 | 2025-11-11 11:11:44 | 2025-11-11 11:11:44 |
+----+---------------------+---------------------+
1 row in set (0.00 sec)

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    | 
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
-- “CST”指的是MySQL所在主机的系统时间,是中国标准时间的缩写,China Standard Time UT+8:00

mysql> set time_zone='+0:00';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | +00:00 |
+------------------+--------+
2 rows in set (0.01 sec)

mysql> select * from L5;
+----+---------------------+---------------------+
| id | dt                  | tt                  |
+----+---------------------+---------------------+
|  1 | 2025-11-11 11:11:44 | 2025-11-11 03:11:44 |
+----+---------------------+---------------------+
1 row in set (0.00 sec)
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
imp_knowledge
table_relation

← imp_knowledge table_relation→

最近更新
01
deepseek本地部署+知识库
02-17
02
实操-微信小程序
02-14
03
教学-cursor深度探讨
02-13
更多文章>
Theme by Vdoing | Copyright © 2023-2025 DC | One Piece
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式