约束条件

Posted 慕沁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了约束条件相关的知识,希望对你有一定的参考价值。

作用:用于保证数据的完整性和一致性

包含:

PRIMARY KEY (PK)    标识该字段为该表的主键,可以唯一的标识记录
FOREIGN KEY (FK)    标识该字段为该表的外键
NOT NULL    标识该字段不能为空
UNIQUE KEY (UK)    标识该字段的值是唯一的(唯一性约束)
AUTO_INCREMENT    标识该字段的值自动增长(整数类型,而且为主键)
DEFAULT    为该字段设置默认值

UNSIGNED 无符号
ZEROFILL 使用0填充
------------------------------------------------------
主键在创建后默认是not null
但不是显示的是 not null的都是主键,有仅仅只是设置的非空。
null表示空,但不是代表字符串,not null 也一样



唯一性约束:
constraint host_port unique(host,port) 
#constraint host_port这个只是用来设置唯一约束的名字的,也可以不设置默认就有了
 

 

一个表中可以:

单列做主键
多列做主键(复合主键)

但一个表内只能有一个主键primary key


定义单个主键:
  1. 当没有声明主键时,第一个not null+unique默认是主键
  2. 某一个字段后加primary key
  3. 单独定义 constraint pk_name primary key(id); #创建主键并为其命名pk_name

定义多个主键:

  1. 单独定义 primary key(ip, port)

 

自增约束:

auto_incerment

偏移量:auto_increment_offset默认为1

    1. 设置自增的时候以10开头
      1. create table dep1(
        id int primary key auto_increment,
        )auto_increment = 10;
    2. a

uto_increment_increment:

    自增步长,默认为1
    1. create table dep3(
      id int primary key auto_increment,
       name char(10)
      );
      
      
      # 会话:通过客户端连到服务端(一次链接称为一次会话)
      set session auto_increment_increment = 2; #会话级,只对当前会话有效
      set global auto_increment_increment=2; #全局,对所有的会话都有效
      insert into dep3(name) values(\'IT\'),(\'HR\'),(\'SALE\'),(\'Boss\');
  1. show variables like \'%auto_in%\';#查看变量。只要包含auto_in就都查出来了

 外键约束:

 

两表之间有关系, 

先建张部门表(被关联表)主表
create table dep(
id int not null unique,
name varchar(50),
comment varchar(100)
);
再建张员工表(关联表)子表
create table emp_info(
id int primary key auto_increment,
name varchar(20),
dep_id int,
constraint FK_depid_id foreign key(dep_id) references dep(id) #references :关联
on delete cascade  #关联的表删了,被关联的表也删了
on update cascade  #关联的表修改了,被关联的表也修改了
);

 

以上是关于约束条件的主要内容,如果未能解决你的问题,请参考以下文章

条件片段和导航重用

活动中 TabLayout 内的片段的约束问题

4.3 合并重复的条件执行片段

如何有条件地将 C 代码片段编译到我的 Perl 模块?

自动刷新android片段,直到满足条件

iOS 在xib或者storyboard中添加AutoLayout后,在代码中修改AutoLayout约束条件