zoukankan      html  css  js  c++  java
  • 列的约束

    1.主键约束(Primary Key)

       *约束是对表格列中的值起限定作用

      *每一个表格只有一个列可以设置为主键

      *主键约束通常用来标记表格中的一条数据唯一存在(现实中记录两条一模一样的数据是没有意义的)

      *唯一性,非空性。被设置为主键的列,不能重复,不能为空null

      *主键约束属于对表结构进行修改,归类到DDl数据定义语言

      *添加主键约束:alter table 表名 add constraint 约束名字 约束类型 (被设置为主键的列);

      alter table 表名 add constraint pk_表名 primary key (classid);

      发现我们自定义的主键约束名没有被用到,因此可以简写为

      简写:alter table 表名 add primary key(classid);//classid这里默认是主键列

      怎么发现的?通过show keys from 表;    desc 表;     show create table 表名;

      查到Key_name依然是默认的PRIMARY,而不是我们自定义的pk_表名

      *添加主键自增:有时候我们并不需要主键列有意义,只需要它作为唯一标识就行了,可以设计为自增

      语句:

      alter table 表名 modify 主键列 类型(长度) auto_increment;

      或alter table 表名 change 列名 列名 类型(长度) auto_increment;//这里是做自增,第二个列名跟第一个一样
      大概区别是modify修改原列结构,change一样,只不过可以修改列名

      主键列默认从1开始,如果需要设置起始值,语句:alter table 表名 auto_increment=10;

      *删除主键约束:

      语句:alter table 表名 drop primary key;//因为一个表格只有一个主键约束,所以无需知道约束名就可以

      如果报错:请看https://www.cnblogs.com/hebiao/p/14069531.html

      注意:删除主键后,唯一特性没有了,但非空特性还在

      语句:alter table 表名 modify 列名 类型(长度) null;//这两句执行完,主键就删除干净了

    2.唯一约束(Unique Key)

      *不能重复,但是可以为空

      *一个表格可以设置多个列

      *添加唯一约束:

      语句:alter table 表名 add constraint 约束名称 约束类型(列)

      alter table tablename add constraint uk_表名 unique [key](列);

      简写:alter table taalename add unique key(列);//约束名默认为列名

      *删除唯一约束:

      语句:alter table 表名 drop index 约束名;

      alter table 表名 drop index uk_表名;//删除唯一约束,这里不是用unique key ,而是使用的index,规则

    3.非空约束

      *给表格的某个列添加非空约束,这个列的值不能为null

      *添加非空约束:alter table 表名 modify 列名 类型 (长度) not null default 默认值;//default 默认值,如果不想填值,又不能为空,那么设个默认值。

      或                      alter table 表名 change 列名 新列名 类型(长度) not null;//如果只是想修改非空,不想修改列名,那么新列名跟列名一样

      *删除非空约束:alter table 表名 modify 列名 类型(长度) null;

    4.外键约束(Foreign Key)

      *表格中可以有多个列被设置为外键约束
      *当前列的值可以为空 可以重复
      *当前列的值不能随便的填写 值去另外一张表格内寻找
      *外键是当前列的值受到另外一张表格某一个列的影响
      *另外一张表格的列 是唯一约束(主键 唯一)

      *添加外键约束:alter table 表名 add [constraint fk_当前表_关联表] foreign key (列) references 关联表(列);

      *简写:alter table 表名 add foreign key (列) references 关联表(列);

      *总结:主键约束都用简写形式,因为定义了约束名也没用,况且一个表只有一个主键,只简写;非空没约束名,只是表结构的属性修改;

          唯一约束简写,约束名默认是列名,可简写也可定义;外键约束简写,默认约束名不是列名,是自动生成的一个名字,建议自定义。

      *删除:外键约束删除分两步,1.alter table 表名 drop foreign key 约束名;2.alter table 表名 drop key 约束名;

        外键约束是跟另一张表的关联,这个关联是相互的,建立外键的时候自动产生一个key,标识对方与自己的关系。

    5.检查约束(Check)  

      列在存值的时候做一个细致的检查 范围是否合理
      alter table student add constraint ck_sage check(sage>15 and sage<30);

      mysql数据库可以执行上面语句,但不生效,oracle数据库支持。

  • 相关阅读:
    python中计算程序用时的方法
    既生list何生tuple
    SSAS-时间维度的标准设计
    1092 最好吃的月饼 (20 分
    1091 N-自守数 (15 分)
    1149 Dangerous Goods Packaging (25 分)
    1148 Werewolf
    1144 The Missing Number (20 分)
    1141 PAT Ranking of Institutions (25 分)
    1140 Look-and-say Sequence (20 分)
  • 原文地址:https://www.cnblogs.com/hebiao/p/14062519.html
Copyright © 2011-2022 走看看