常见约束&标识列

目录

常见约束

    一 创建表是添加约束

  主键和唯一的对比

   二 修改表时添加约束

     三 修改表时删除约束

  标识列

 一 创建表时设置标识列

 二修改表时加上标识列


常见约束


    含义:一中限制,用于限制表中的数据,为了保证表中的数据的准确性和可靠性
   

六大约束
    not null 非空
    default 默认 用于保证字段有默认值
    primary key 主键 非空唯一
    unique  唯一 可为空
    check :检查约束,MySQL上不支持
    foreign key 外键 用于限制两个表的关系,用于保证该字段的值必须来之主表的关联列的值
     再从表添加限制,用于引用主表的某列的值

添加约束的时机 
      1.创键表的时候
      2.修改表的时候
   约束添加的分类
      1列级约束
           都支持 外键约束没有效果
      2表级约束
         除了 非空 默认 其他都支持
      
      create table 表名(
         字段名 字段类型 列级约束
         表级约束



    一 创建表是添加约束

   1.添加列级约束

  CREATE DATABASE students;
     USE students;
     
     CREATE TABLE stuinfo(
         id INT PRIMARY KEY,
         stuNume VARCHAR(20) NOT NULL,
         gender CHAR(1) CHECK(gender='nan'OR gender='nv'),
         seat INT UNIQUE,
         age INT DEFAULT 18,
         maijorId INT  REFERENCES  maijor(id)
     );
     
     CREATE TABLE maijor(
         id INT PRIMARY KEY,
         majorName VARCHAR(20)
     );
     
   DESC stuinfo;
   SHOW INDEX 

   2.表级约束

/*
      语法
       在最下面
       【constraint 约束名】 
    */

 DROP TABLE IF EXISTS stuinfo;
    
    CREATE TABLE stuinfo(
         id INT ,
         stuNume VARCHAR(20) ,
         gender CHAR(1) ,
         seat INT ,
         age INT ,
         maijorId INT  ,
         CONSTRAINT pk PRIMARY KEY(id),
          CONSTRAINT  ck CHECK(seat),
          CONSTRAINT uq UNIQUE(seat),
          CONSTRAINT fk FOREIGN KEY(majorid) REFERENCE maijor(id)
     );

#通用写法
    #外键一般用表级约束,其他一般用列级约束

   CREATE TABLE (
    
        id INT PRIMARY KEY,
         stuNume VARCHAR(20) NOT NULL,
         gender CHAR(1) CHECK(gender='nan'OR gender='nv'),
         seat INT UNIQUE,
         age INT DEFAULT 18,
         maijorId INT  REFERENCES  maijor(id),
         
         CONSTRAINT fk_stu_maijor FOREIGN KEY(major) REFERENCE maijor(id)
    
    )

  主键和唯一的对比


      1.都能保证唯一性
      2.主键非空
      3.一个表中至多一个主键,可以多个唯一
   外键特点:
     1.要求在从表设置外键关系
     2.在外键列的类型和主表中列的类型要求一致或兼容
     3.主表中关联列必须是key(一般是,主键或唯一)
     4.先插入主表,先删除从表
     
   一个字段可以添加多个列级约束

   二 修改表时添加约束

 DROP TABLE IF EXISTS stuinfo;
     CREATE TABLE stuinfo(
         id INT PRIMARY KEY,
         stuNume VARCHAR(20) ,
         gender CHAR(1) CHECK(gender='nan'OR gender='nv'),
         seat INT UNIQUE,
         age INT DEFAULT 18,
         maijorId INT  REFERENCES  maijor(id)
     );

  添加列级约束
    ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 新约束
    
    添加表记约束
    ALTER TABLE 表名 add 约束类型(字段名) 【外键的引用】
    

     #1.添加非空约束 直接在后面加上 (删除的话,改成null)

 ALTER TABLE stuifo MODIFY COLUMN  
     stuNume VARCHAR(20) NOT NULL

   #2.添加默认约束

     ALTER TABLE stuifo MODIFY COLUMN  
     age INT DEFAULT 18;

 
     #表级约束写法 外键

    ALTER TABLE stuifo MODIFY COLUMN 
      FOREIGN KEY(majorid) REFERENCES maijor(id);

     三 修改表时删除约束

/*
          1.直接不写,默认没有约束
          2.
          ALTER TABLE 表名 MODIFY COLUMN drop 
      */

       1.删除默认约束 

 ALTER TABLE stuinfo MODIFY COLUMN
        age INT ;
      

 2.删除外键

ALTER TABLE stuinfo MODIFY COLUMN
        DROP FOREIGN KEY maijorid;

  标识列

  又称自增长列
  含义:不用手动插入值,系统提供默认的序列值
 
 特点:
   1.标识列要求与一个key搭配,及唯一 unique ,primary key
   2.一个表至多一个标识列
   3.标识列的类型只能是数值型
   4. #更改步长 ,或者通过手动改设置起始位置    
  SET auto_increment_increment=3; 

 一 创建表时设置标识列

CREATE TABLE tab_identity(
      id INT PRIMARY KEY AUTO_INCREMENT,
      NAME VARCHAR(20)
   
   );
      
TRUNCATE TABLE tab_identity;
INSERT INTO tab_identity VALUES(NULL,'john');
 INSERT INTO tab_identity VALUES(3,'josh');  
  SELECT *FROM tab_identity;

 二修改表时加上标识列

 
 ALTER TABLE tab_identity MODIFY COLUMN id 
 INT PRIMARY KEY AUTO_INCREMENT;

 三 修改表时删除标识列,直接去掉就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值