(8)列属性:是否允许为空、默认属性值、主键、自动增长
来源:互联网 发布:信捷xc软件 编辑:程序博客网 时间:2024/06/05 19:30
一、是否允许为空 null 、not null
规定一个字段的值,是否可以为null,默认允许为空
null not null
create table php1( a int not null, b int );
若字段不允许为空,还没默认值,插入一条记录时,自然会报错,但是报的错误是没有默认值,从此错误可以看出,当不允许为空的字段,插入记录,不插入此字段时,会先找默认属性值,若没有,才报错,在二中就指定了属性值,所以没报错
二、默认属性值:default value
create table php2(a it not null default 10, b int not null 21)
在含有默认值的情况下,即使有列属性not null,插入时此值不写,也能插入成功
insert into php2 values(null,null);不能插入,因为不允许为空。
create table php3( a int not null default 10,b int default 21);
insert into php3 values (20,null);
b 允许为空,所以赋null也可以
一、二常见的用法:一个字段不能为空,而且存在默认值
三、主键 primary key
定义:可以唯一表示,某条记录的字段或者字段的集合
主键的规则: 可以是真实实体的属性,但是常用的好的解决方案是利用一个与实体不相关的属性,作为唯一的标识,只是用于标识记录
第一种定义格式:
create table teacher(t_id int primary key, t_name varchar(5),class_name varchar (6),days tinyint unsigned);
第二种定义格式:
create table teacher1( t_id int, t_name varchar(5),class_name varchar(6), days tinyint unsigne primary key(t_id));
这两种格式如何选取:当是字段集合作为主键是,通常用第二种格式,中间用“,”隔开
注意是一个主键包含多个字段,而不是多个字段都是主键。
①主键在一个表中必须唯一
②主键字段在插入时不能为空,只要是主键,就暗含了not null条件,否则会报错
若字符串中含有中文, set names gbk; utf8在sql中并不能很好的支持中文。
insert into teacher values(2,’张家明哈哈’,’02’,44);//varchar(5),最多为5个中文,或者最多5个字母,无论字母还是中文都是一个字符。
③主键可以作为查找的条件
select * from teacher where t_id=1;
④常见的设计:每个表中都应该有唯一标识的主键字段,最好与实体没联系
四、自动增长auto_increment
为每条记录提供唯一的标识,每次插入记录时,将某个字段的值自动增长1,使用auto_increment标识。
需要整型,还需要索引
①一般把自动增长写在主键上,主键就是一种索引
create table teacher2(t_id int primary key auto_increment, t_name varchar(5),class_name varchar(6), days tinyint unsigned);
两种插入数据的方式,因为有自动增长,所以可以写null,或者不写此字段
insert into teacher2 values(null,’小B’,’03’,23);
insert into teacher2(t_name,class_name,days) values(‘小C’,’04’,53);
②自动增长有时需要从某个值开始,而不是都从1(默认)开始
alter table teacher2 auto_increment=50;(修改表定义,而不是某列的定义)
有时可能多次设置自动增长的值,但是插入都是从大的增长值之后增长的,因为随着数据的增加,若从小的处增长,会与大的自动增长时设的数据重复,造成主键不唯一的情况,所以从大的开始增长
③是否可以手动增长?
可以手动插入,但是要保证主键唯一。若自动增长的字段不是主键,则可以重复
insert into teacher2 values (3,’小F’,’05’,78);
④自动增长的列可以进行手动更新
update teacher2 set t_id=4 where t_id=100;(注意在sql中“=”就是判断,而不是赋值)
⑤开始设置了自动增长为20,然后自动添加到表中的元素,自然从20开始,比如插入20,21,然后删除20之后的元素,再插入元素时,从22开始插入
- (8)列属性:是否允许为空、默认属性值、主键、自动增长
- MySQL 学习教程(四)【整理】-列属性(空属性、列描述和默认值/ 主键/ 自动增长/ 唯一键)
- MySQL 列属性-自动增长
- sql server查询表结构(字段名,数据类型,长度,描述,是否允许为空,是否为主键)
- java中判断对象中属性值是否为空
- 关于@Autowired自动注入属性为空
- 史上最简单的 MySQL 教程(十五)「列属性 之 自动增长」
- 获取数据库所有列以及列的类型是否为空是否为默认值是否为主键
- 自定义对象属性为空自动转换为字符串
- 主键生成策略为自动增长
- 主键定义为自动增长类型
- SQL server修改主键为自动增长
- 【SQL】取得表的字段、默认、类型、是否允许为空
- 设置Grails中的domain的字段默认是否允许为空
- 设置Grails中的domain的字段默认是否允许为空
- SQL2005 查询表字段信息(是否标示列 字段名 主键 字段类型 长度 小数位 允许空 默认值 说明)
- SQL2005 查询表字段信息(是否标示列 字段名 主键 字段类型 长度 小数位 允许空 默认值 说明)
- JQuery验证jsp页面属性是否为空
- Zabbix系列之Zabbix安装搭建及汉化
- 各路人马,想了解OCJP认证有用吗?
- 微信图像接口:拍照或从手机相册中选图接口chooseImage+预览图片接口previewImage+上传图片接口uploadImage+下载图片接口downloadImage
- Linux环境变量的区分
- ZK框架的apply属性
- (8)列属性:是否允许为空、默认属性值、主键、自动增长
- PTX ISA Special Registers
- 使用Java原生API编写发送HTTP_POST请求的工具类
- SMIL小结
- CodeForces
- 浅谈web项目的跨域
- 小技巧
- Activemq基础之消费者和生产者
- Intellij Idea git切换远程分支