1.数据类型
2.数据库管理语句
3.表管理语句
4.约束
5.自增
1.数字类型
1.1整形
类型 | 字节数 | 范围 |
Tinyint
|
1 | 有符号:-128~127
无符号:0~255
|
Smallint
|
2 | 有符号:-32768~32767
无符号:0~65535
|
Mediumint
|
3 | 有符号:-8388608~8388607
无符号:0~1677215
|
Int
|
4 | 有符号:- 2147483648~2147483647
无符号:0~4294967295
|
Bigint
|
8 | 有符号:-9223372036854775808~9223372036854775807
无符号:0~9223372036854775807*2+1
|
类型 | 字节数 | 范围 |
float
|
4 | ±1.75494351E-38~±3.402823466E+38
|
double
|
6 | ±2.2250738585072014E-308~
±1.7976931348623157E+308
|
DECIMAL(M,D)
|
M+2 | 最大取值范围与double相同,给定decimal的有效取值范围由M(长度)和D(小数位数)
决定
|
类型 | 字节数 | 范围 |
Bit(M)
|
1-8 | bit(1)~bit(8)
|
类型 | 字节数 | 范围 |
char(M)
|
M | M为0~255之间的整数
|
varchar(M)
|
M | M为0~65535之间的整数
|
类型 | 字节数 | 范围 |
binary(n) | n | n 值从 1 到 8,000 ,存储空间为 n 字节 |
varbinary( n | max) | n | max 是指最大存储空间是 2^31-1 个字节,即最大4GB |
类型 | 字节 | 最小值 | 最大值 |
date
|
4 | 1000-01-01
|
9999-12-31
|
datetime
|
8 | 1000-01-01 00:00:00
|
9999-12-31 23:59:59
|
timestamp
|
4 | 19700101080001
|
2038年的某个时刻
|
time
|
3 | -838:59:59
|
838:59:59
|
year
|
1 | 1901
|
2155
|
DATE
DATE 用于表示 年月日,如果实际应用值需要保存 年月日 就可以使用 DATE。
DATETIME
DATETIME 用于表示 年月日 时分秒,是 DATE 和 TIME 的组合,并且记录的年份(见上表)比较长久。如果实际应用中有这样的需求,就可以使用 DATETIME 类型。
TIMESTAMP
- TIMESTAMP 用于表示 年月日 时分秒,但是记录的年份(见上表)比较短暂。
- TIMESTAMP 和时区相关,更能反映当前时间。当插入日期时,会先转换为本地时区后再存放;当查询日期时,会将日期转换为本地时区后再显示。所以不同时区的人看到的同一时间是 不一样的。
- 表中的第一个 TIMESTAMP 列自动设置为系统时间(CURRENT_TIMESTAMP)。当插入或更新一行,但没有明确给 TIMESTAMP 列赋值,也会自动设置为当前系统时间。如果表中有第二个 TIMESTAMP 列,则默认值设置为0000-00-00 00:00:00。
- TIMESTAMP 的属性受 Mysql 版本和服务器 SQLMode 的影响较大。
如果记录的日期需要让不同时区的人使用,最好使用 TIMESTAMP。
TIME
TIME 用于表示 时分秒,如果实际应用值需要保存 时分秒 就可以使用 TIME。
YEAR
YEAR 用于表示 年份,YEAR 有 2 位(最好使用4位)和 4 位格式的年。 默认是4位。如果实际应用只保存年份,那么用 1 bytes 保存 YEAR 类型完全可以。不但能够节约存储空间,还能提高表的操作效率。
2.数据库的管理
略
3.表的管理
略
4.常见约束
4.1简介
约束是表级的强制规定,可以在创建表时规定约束(通过 CREATETABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)
4.2类型
1)主键约束:
格式:alter table 表格名称 add constraint 约束名称 增加的约束类型 (列名)
例子:alter table emp add constraint xxx primary key (id);
2)check约束:就是给一列的数据进行了限制
格式:alter table 表名称 add constraint 约束名称 增加的约束类型 (列名)
例子:alter table emp add constraint xxx check(age>20);
3)unique约束:这样的约束就是给列的数据追加的不重复的约束类型
格式:alter table 表名 add constraint 约束名称 约束类型(列名)
例子:alter table emp add constraint qwe unique(ename);
4)默认约束:意思很简单就是让此列的数据默认为一定的数据
格式:alter table 表名称 add constraint 约束名称 约束类型 默认值) for 列名
例子: alter table emp add constraint jfsd default 10000 for gongzi;
5)外键约束:
格式:alter table 表名 add constraint 约束名称 约束类型 (列名) references 被引用的表名称 (列名)
例子:alter table emp add constraint jfkdsj foreign key (did) references dept (id);
CREATE TABLE `jsnh_free` ( `free_id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `title` varchar(256) DEFAULT NULL COMMENT '标题', `create_time` datetime DEFAULT NULL COMMENT '创建时间' PRIMARY KEY (`free_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='自由行表';
mysql中自增长,涉及到两个变量:auto_increment_offset和auto_increment_increment。
- auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535
- auto_increment_increment表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535
查看变量值:
show variables like '%auto_inc%';
show session variables like '%auto_inc%'; -- //session会话变量
show global variables like '%auto_inc%'; -- //全局变量
设置变量值
SET @auto_increment_increment = 3 ;
SET session auto_invrement_increment=2;
SET global auto_increment_increment=1;
第一种和第二种是一样的效果,第三个是修改全局的变量;
应用实例:在主主同步配置时,将两台服务器的auto_increment_increment增长量都配置为2,而要把auto_increment_offset分别配置为1和2。这样才可以避免两台服务器同时做更新时自增长字段的值之间发生冲突。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?