当前位置: 首页 > news >正文

常州市住房建设局网站平阴县建设局网站

常州市住房建设局网站,平阴县建设局网站,无锡注册公司流程和费用多少,合肥seo排名公司1 not null 约束not null 约束强制列不接受 null 值。not null 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。GaussDB使用pg_get_tabledef()函数获取customers表结构,如:csdn> set sea…

1 not null 约束


not null 约束强制列不接受 null 值。not null 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

GaussDB使用pg_get_tabledef()函数获取customers表结构,如:

csdn=> set search_path=csdn;
SET
csdn=>
csdn=> select * from pg_get_tabledef('customers');pg_get_tabledef
---------------------------------------------------------------------------SET search_path = csdn;                                                  +CREATE TABLE customers (                                                 +id bigint NOT NULL,                                                  +name character varying(64),                                          +addr character varying(128),                                         +city character varying(64),                                          +zip integer,                                                         +province character varying(64) NOT NULL,                             +age integer                                                          +)                                                                        +WITH (orientation=row, compression=no, storage_type=USTORE, segment=off);
(1 row)

我们看到customers表的"客户ID"与"省份"具有not null属性,如果我们向表添加数据时就会触发not null约束。

示例:

insert into customers(id,name,addr) values(90,'test not null','布吉吉华54号');

结果:

2 unique 约束

unique 约束唯一标识数据库表中的每条记录。unique 和 primary key 约束均为列或列集合提供了唯一性的保证。primary key 约束拥有自动定义的 unique 约束。请注意,每个表可以有多个unique 约束,但是每个表只能有一个 primary key 约束。

示例:我们创建Order表,设置订单id列为unique属性

create table if not exists orders 
(order_id   bigint,cust_id    bigint,empoyee_id  int,order_date    timestamp,ship_id       bigint,constraint unq_order_id unique(order_id)
);

结果:

如果我们的写入orderid有重复值,就会报ERROR:Duplicate key value

注:unique列约束是允许写入null值的:

insert into orders(order_id,cust_id,empoyee_id,order_date,ship_id) values(null,3,9,'2018-09-21 09:00:00.000',3);

3 primary key 约束

以customers表为例,客户ID与客户名称组合列为主键。

create table customers
(id   bigint,name    varchar2(64),addr     varchar2(128),city     varchar2(64),zip      varchar2(64),province    varchar2(64),constraint prikey_id_name primary key(id,name)
);

结果:

写入数据,如果客户ID与客户名称同时存在2个相同数据时就会报错。

insert into customers(id,name,addr,city,zip,province) values(1,'张三','北京路27号','上海','200000','上海市');
insert into customers(id,name,addr,city,zip,province) values(1,'李四','南京路12号','杭州','310000','浙江市');
insert into customers(id,name,addr,city,zip,province) values(1,'张三','北京路27号','上海','200000','上海市');

如果为primary key约束,同时任何为primary key字段不允许为null值,这个是与unique约束的区别。以下客户名称为空时会报:The null value in column "name"

insert into customers(id,name,addr,city,zip,province) values(1,null,'北京路27号','上海','200000','上海市');

结果:

4 foreign key 约束

一个表中的 foreign key 指向另一个表中的 primary key。让我们通过一个实例来解释外键。请看下面两个表:

"customers" 表:  "orders" 表:

请注意:"orders" 表中的 "客户id" 列指向 "customers" 表中的 "客户 id" 列。"customers" 表中的 "客户id" 列是 "customers" 表中的 primary key。"orders" 表中的 "客户 id" 列是 "orders" 表中的 foreign key。foreign key 约束用于预防破坏表之间连接的行为。foreign key 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

首先:创建客户表,主键为客户ID

create table customers
(id   bigint,name    varchar2(64),addr     varchar2(128),city     varchar2(64),zip      varchar2(64),province    varchar2(64),constraint prikey_id primary key(id)
);

再次:创建订单表,外键为客户ID

create table if not exists orders 
(order_id   bigint,cust_id    bigint,empoyee_id  int,order_date    timestamp,ship_id       bigint,constraint unq_order_id unique(order_id),foreign key (cust_id) references customers(id)
);

结果:

当我们向订单表写入一条订单,但是客户ID不在客户表的客户ID时会报错:ERROR:  insert or update on table "orders" violates foreign key constraint

示例:

insert into customers(id,name,addr,city,zip,province) values(1,'张三','北京路27号','上海','200000','上海市');

向order表写入一条订单记录,如果客户ID不再customer表

 insert into orders(order_id,cust_id,empoyee_id,order_date,ship_id) values(1,3,9,'2018-09-21 09:00:00.000',3);

由此,我们应知道外键的含义了,没有客户哪里有订单呢?必须是先有客户才有订单的。

5 default 约束

default 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。

以下创建customers表省份为default约束:

alter table customers alter province set default '广东省';

结果:

写入时用default关键字:

 insert into customers(id,name,addr,city,zip,province) values(2,'李四','南京路12号','杭州','310000',default);

结果:

6 check 约束

如果对单个列定义 check 约束,那么该列只允许特定的值。如果对一个表定义 check 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。

如:对于客户来说需要符合法律年龄的中国人,那么年龄要大于或等于18岁,这个条件我们就可以设置check约束:

alter table customers add constraint check_age check(age>=18);

结果:

以上写入一位李四的客户年龄为16岁时报:violates check constraint

7  批注

 
以上六种约束是工作中经常使用到的,主要还是用来规范数据,随着数据量的增多,如果不对表结构加以约束,那么会有越来越多的“脏数据”进入到数据库,这对业务系统来说是非常不愿意碰到的。所以为了能够高效的使用数据库,请从表结构的设计上下更多的功夫.

http://www.dtcms.com/a/477172.html

相关文章:

  • 做网站怎么字体全部变粗了网站建设应注意什么
  • 在网上做试卷的网站godaddy wordpress 备
  • 制作企业网站要花多少钱做庭院的网站
  • 八年级信息技术网站建立怎么做网络营销的优势有哪些
  • 网站建设怎么谈梵克雅宝中文官网
  • eclipse网站开发流程图app立即打开
  • 西安云众网站建设wordpress网站制作app
  • 胶州为企业做网站的公司龙口网站建设公司报价
  • 网站建设与管理实践收获手机百度seo怎么优化
  • 设计的网站都有哪些内容百度百科创建
  • 网站内页怎么做一站式服务工作总结
  • 图片交易网站源码公司网站备案材料
  • 免费职业技能培训网站智谋网站优化公司
  • 百度抓取网站登录那个相亲网站做的比较好
  • 四川自助seo建站外贸营销网站建站
  • 网站建设职业描述个人网页设计理念
  • 做网站的天津网络公司可以做哪些业务
  • 网站设计与开发培训班域名注册腾讯云
  • 苏州网站设计公司简介怎么看网站使用什么做的
  • 建设银行网站不能登录不了湘潭网络营销
  • 建材类网站模板销售类wordpress
  • 视频网站程序模板wordpress制作模板教程
  • 企业网站模板 优帮云wordpress设置静态访问
  • 网站策划岗位要求现代化专业群建设网站
  • 无锡做设计公司网站医疗营销网站建设
  • 秦州区建设局网站网站维护方案怎么做
  • 有域名如何建设网站seo优化的常用手法
  • 一般用网站服务器做自己的购物网站
  • 虚拟机做局域网网站服务器配置asp静态网站源码
  • 网站怎样做漂浮郑州最新发布