美文网首页
MySQL 3.2 数据库完整性与运算符

MySQL 3.2 数据库完整性与运算符

作者: 爱吃鱼的猫_mycat | 来源:发表于2019-01-24 18:22 被阅读0次

    前面虽然对MySQL数据库进行了DDL,DML和基本的DQL的相关知识做了讲解,但是我们在实际开发时, 确实需要遵循一定的规范对数据库进行设计的。同时了解一定的规则(例如外键关联时主表记录的删除等),而这正是正是数据库完整性需要解决的问题。

    一.数据库完整性

    1.数据库完整性体现

    1)实体(记录)完整性

    主键约束:唯一标识一个字段,例如商品编号,不可以为null
    唯一约束:也是唯一标识,但是却可以为空,同时本身是索引字段
    主键自增:从1开始增加,数据库自己维护主键字段的值。
    

    首先注意的是,之所以设计主键的目的其一是为了唯一标识,其二是为了提高查询性能,本身没有实际含义,认为设计的,而唯一约束在内存中维护的是一颗B+树(索引),因此建议在进行查询的时候尽量根据主键或者索引(包括唯一约束字段)进行查询,一定程度上能够提升性能

    主键约束使用(primary key 关键字):

    创建表的同时创建:

    create table student(
      sid int primary key,
      sname varchar(20),
      age int
    );
    

    创建表完毕后添加主键:

    alter table mktest.mkt add primary key(sid);
    

    唯一约束使用(unique关键字):

    创建表的同时创建:

    create table student(
      sid int primary key,
      sname varchar(20) unique,
      age int
    );
    

    创建表完毕后添加唯一约束:

    alter table mktest.mkt add unique(sname);
    

    主键自增(auto_increment):

    create table student(
      sid int primary key auto_increment,
      sname varchar(20),
      age int
    );
    

    2) 域(字段)完整性

    类型约束   -- 不同字段定义成对应数据类型
    非空约束   -- not null
    默认值     --default 
    

    非空约束使用:

    create table student( -- 实际开发中最常用
      sid int primary key,
      sname varchar(20) not null,
      age int
    );
    
    alter table student change sname sname not null;
    

    默认值使用:

    create table student( -- 实际开发中最常用
      sid int primary key,
      sname varchar(20) not null,
      age int default 20
    );
    

    3) 引用完整性

    外键约束
    

    创建表时添加外键:

    create table student( -- 实际开发中最常用
      sid int primary key,
      sname varchar(20) not null,
      age int default 20,
      deptno int(11),
      foreign key (deptno) references dept(deptno)
    );
    

    创建表完毕后添加外键:

    alter table student add foreign key(deptno) references dept(deptno);
    

    2.删除约束

    -- 删除主键约束
    alter table student drop primary key;
    
    -- 删除外键约束
    alter table student drop foreign key;
    
    -- 删除唯一约束
    drop unique index index_name on tname;        
    

    二.运算符

    1.算术运算符

    四则运算:+   -    *   /    -- 需要注意的是 除法 /  得到的是整数部分,即求商,不带余数
    
    select 1+2;        select  3/2; 得到1.5         select 3 div 2;   得到1;
    

    2.比较运算符

    大小比较: >   <   >=  <=  <>  !=   
    
    select 2>1;   得到1,否则为0
    

    3.逻辑运算符

    and    or     !     --  与    或    非
    

    4.位运算符

    &  |  ^      -- 按位与   按位或   按位异或
    

    相关文章

      网友评论

          本文标题:MySQL 3.2 数据库完整性与运算符

          本文链接:https://www.haomeiwen.com/subject/keyujqtx.html