"""
约束条件相当于是在字段类型的基础之上添加的额外约束
eg: id int unsigned
ps: 意思就是只能存数字并且还得是正数
"""
unsigned 让数字没有正负号
zerofill 多余的使用数字0填充
not null 非空
"""
新增表数据的方式
重新创库:create database dy2;
切换库: use dy2;
创表:create table t1(id int,name char(4));
方式1: 按照字段顺序一一传值
insert into t1 values(1,'jason');
方式2: 自定义传值顺序 甚至不传
insert into t1(name,id) values('jason',1);
insert into t1(id) values(1);
在MySQL中不传数据 会使用关键字NULL填充意思就是空 类似于python的None
"""
create table t2(
idint,
name varchar(32) not null
);
default 默认值
"""
所有的字段都可以设置默认值
用户不给该字段传值则使用默认的 否则使用传了的
create table t3(
id int default 911,
name varchar(16) default 'jason'
);
"""
unique 唯一值
"""
单列唯一
create table t4(
id int,
name varchar(32) unique
);
联合唯一
create table t5(
id int,
host varchar(32),
port int,
unique(host,port)
);
"""
2、primary ley (主键)
InnoDB存储引擎规定了一张表必须有且只有一个主键
"""
但从约束层面上来说 相当于是 not null + unique(非空且唯一)
在此基础之上还可以加快数据的查询
InnoDB存储引擎规定了一张表必须有且只有一个主键
因为InnoDB是通过主键的方式来构造表的
如果没有设置主键
情况1:没有主键和其他约束条件
InnoDB会采用隐藏的字段作为主键 不能加快数据的查询
情况2:没有主键但是有非空且唯一的字段
自动将该字段升级为主键
create table t6(
id int,
age int not null unique,
pwd int not null unique
);
结论:
以后我们在创建表的时候一定要设置主键
并且主键字段一般都是表的id字段(uid sid pid cid)
create table user(
id int primary key,
name varchar(32)
);
"""
3、auto_increment(自增)
"""
由于主键类似于数据的唯一标识 并且主键一般都是数字类型
我们在添加数据的时候不可能记住接下来的序号是多少 太麻烦
create table user1(
id int primary key auto_increment,
name varchar(32)
);
"""# 自增的特性
自增不会因为删除操作而回退
delete from无法影响自增
如果想要重置需要使用truncate关键字
truncate 表名 # 清空表数据并且重置主键值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)