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

2019-01-24  本文已影响0人  爱吃鱼的猫_mycat

前面虽然对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.位运算符

&  |  ^      -- 按位与   按位或   按位异或
上一篇下一篇

猜你喜欢

热点阅读