标签:efault 本质 不能 sleep 自己的 删除 无法 条件 输入
   枚举(enum) 限制某个字段能够存储的数据内容
		  集合(set)   限制某个字段能够存储的数据内容
create table user( id int, name char(16), gender enum(‘male‘,‘female‘,‘others‘) ); insert into user values(1,‘jason‘,‘xxx‘) # 报错 insert into user values(2,‘egon‘,‘female‘) # 正确! create table teacher( id int, name char(16), gender enum(‘male‘,‘female‘,‘others‘), hobby set(‘read‘,‘sleep‘,‘sanna‘,‘dbj‘) ); insert into teacher values(1,‘egon‘,‘male‘,‘read,sleep,dbj‘) # 集合也可以只存一个
not null 不能为空
	default   给某个字段设置默认值(当用户写了的时候用用户的,当用户没有写就用默认值)
	create table t17(id int,name char(16) default ‘jason‘);	
往表中插入数据的时候 可以指定字段进行插入 不需要全部都插
	insert into t17(name,id) values(‘egon‘,2);
 unique 唯一	
	单列唯一   限制某一个字段是唯一的
	联合唯一(在语句的最后 用括号的形式 表示哪几个字段组合的结果是唯一的)
		ip
		port
		
		  create table server(
				  id int,
			    ip char(16),
			    port int,
			    unique(ip,port)
			  )
primary key 主键
		限制效果跟 not null + unique 组合效果一致   非空且唯一
		
		create table t18(id int primary key);
	
		
		primary key也是innodb引擎查询必备的索引
			索引你就把当成书的目录
			
		innodb引擎在创建表的时候 必须要有一个主键
		当你没有指定主键的时候
			1.会将非空切唯一的字段自动升级成主键
			2.当你的表中没有任何的约束条件  innodb会采用自己的内部默认的一个主键字段
				该主键字段你在查询时候是无法使用的
				查询数据的速度就会很慢
				类似于一页一页的翻书
				
				create table t19(
					id int,
				  name char(16),
				  age int not null unique,
				  addr char(16) not null unique
				);
				
		主键字段到底设置给谁呢???
			通常每张表里面都应该有一个id字段
			并且应该将id设置为表的主键字段
		
		联合主键:多个字段联合起来作为表的一个主键,本质还是一个主键!!!
			!!!!!!!!!!!!!!!!!ps:innodb引擎中一张表有且只有一个主键!!!!!!!!!!!!!!!!!!!!!!!
		
		
		
		create table t20(
				ip char(16),
			  port int,
			  primary key(ip,port)
			);
			desc t20;
	
	
		主键字段应该具备自动递增的特点
			每次添加数据  不需要用户手动输入
			auto_increment  自动递增
		create table t21(id int primary key auto_increment,name varchar(16));
	
		create table t22(id int primary key,name varchar(16));
	
	
	delete from  仅仅是删除数据   不会重置主键
	truncate   初始化表  会重置主键
	
	
	
	
	
	
	
	
	
	
	
	
	
	
		
标签:efault 本质 不能 sleep 自己的 删除 无法 条件 输入
原文地址:https://www.cnblogs.com/lddragon/p/11380616.html