补充知识点 插入数据的时候可以指定字段 create table t1( id int, name char(16) ); insert into t1(name,id) values('jason',1);
default默认值
create table t2( id int, name char(16), gender enum('male','female','others') default 'male' ); insert into t2(id,name) values(1,'jason'); insert into t2 values(2,'egon','female');
不指定就为默认值
unique唯一
单列唯一 create table t3( id int unique, name char(16) ); insert into t3 values(1,'jason'),(1,'egon');#指定了id唯一,相同就会报错 insert into t3 values(1,'jason'),(2,'egon');
联合唯一 ip和port 单个都可以重复 但是加在一起必须是唯一的 create table t4( id int, ip char(16), port int, unique(ip,port) ); insert into t4 values(1,'127.0.0.1',8080); insert into t4 values(2,'127.0.0.1',8081); insert into t4 values(3,'127.0.0.2',8080); insert into t4 values(4,'127.0.0.1',8080); 报错
1) 一张表中有且只有一个主键 如果你没有设置主键 那么会从上往下搜索直到遇到一个非空且唯一的字段将它自动升级为主键 create table t6( id int, name char(16), age int not null unique, addr char(32) not null unique );
3) 一张表中通常都应该有一个主键字段 并且通常将id/uid/sid字段作为主键 单个字段主键 create table t5( id int primary key name char(16) ); 联合主键(多个字段联合起来作为表的主键 本质还是一个主键) create table t7( ip char(16), port int, primary key(ip,port) );
也意味着 以后我们在创建表的时候id字段一定要加primary key
auto_increment自增
当编号特别多的时候 人为的去维护太麻烦 create table t8( id int primary key auto_increment, name char(16) ); insert into t8(name) values('jason'),('egon'),('kevin');
注意auto_increment通常都是加在主键上的 不能给普通字段加 create table t9( id int primary key auto_increment, name char(16), cid int auto_increment ); ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
以后在创建表的id(数据的唯一标识id、uid、sid)字段的时候 id int primary key auto_increment
**补充**
delete from t1 删除表中数据后 主键的自增不会停止 truncate t1 清空表数据并且重置主键
create table book( id int primary key auto_increment, title varchar(32), price int ); create table author( id int primary key auto_increment, name varchar(32), age int ); create table book2author( id int primary key auto_increment, author_id int, book_id int, foreign key(author_id) references author(id) on update cascade # 同步更新 on delete cascade, # 同步删除 foreign key(book_id) references book(id) on update cascade # 同步更新 on delete cascade # 同步删除 );
一对一
id name age addr phone hobby email........ 如果一个表的字段特别多 每次查询又不是所有的字段都能用得到 将表一分为二 用户表 用户表 id name age 用户详情表 id addr phone hobby email........
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步