前面雖然對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行了DDL臼婆,DML和基本的DQL的相關(guān)知識(shí)做了講解丁频,但是我們?cè)趯?shí)際開(kāi)發(fā)時(shí)按声, 確實(shí)需要遵循一定的規(guī)范對(duì)數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì)的裹粤。同時(shí)了解一定的規(guī)則(例如外鍵關(guān)聯(lián)時(shí)主表記錄的刪除等)终蒂,而這正是正是數(shù)據(jù)庫(kù)完整性需要解決的問(wèn)題。
一.數(shù)據(jù)庫(kù)完整性
1.數(shù)據(jù)庫(kù)完整性體現(xiàn)
1)實(shí)體(記錄)完整性
主鍵約束:唯一標(biāo)識(shí)一個(gè)字段遥诉,例如商品編號(hào)拇泣,不可以為null
唯一約束:也是唯一標(biāo)識(shí),但是卻可以為空矮锈,同時(shí)本身是索引字段
主鍵自增:從1開(kāi)始增加霉翔,數(shù)據(jù)庫(kù)自己維護(hù)主鍵字段的值。
首先注意的是苞笨,之所以設(shè)計(jì)主鍵的目的其一是為了唯一標(biāo)識(shí)债朵,其二是為了提高查詢性能子眶,本身沒(méi)有實(shí)際含義,認(rèn)為設(shè)計(jì)的葱弟,而唯一約束在內(nèi)存中維護(hù)的是一顆B+樹(shù)(索引)壹店,因此建議在進(jìn)行查詢的時(shí)候盡量根據(jù)主鍵或者索引(包括唯一約束字段)進(jìn)行查詢猜丹,一定程度上能夠提升性能
主鍵約束使用(primary key 關(guān)鍵字):
創(chuàng)建表的同時(shí)創(chuàng)建:
create table student( sid int primary key, sname varchar(20), age int );
創(chuàng)建表完畢后添加主鍵:
alter table mktest.mkt add primary key(sid);
唯一約束使用(unique關(guān)鍵字):
創(chuàng)建表的同時(shí)創(chuàng)建:
create table student( sid int primary key, sname varchar(20) unique, age int );
創(chuàng)建表完畢后添加唯一約束:
alter table mktest.mkt add unique(sname);
主鍵自增(auto_increment):
create table student(
sid int primary key auto_increment,
sname varchar(20),
age int
);
2) 域(字段)完整性
類型約束 -- 不同字段定義成對(duì)應(yīng)數(shù)據(jù)類型
非空約束 -- not null
默認(rèn)值 --default
非空約束使用:
create table student( -- 實(shí)際開(kāi)發(fā)中最常用
sid int primary key,
sname varchar(20) not null,
age int
);
alter table student change sname sname not null;
默認(rèn)值使用:
create table student( -- 實(shí)際開(kāi)發(fā)中最常用
sid int primary key,
sname varchar(20) not null,
age int default 20
);
3) 引用完整性
外鍵約束
創(chuàng)建表時(shí)添加外鍵:
create table student( -- 實(shí)際開(kāi)發(fā)中最常用
sid int primary key,
sname varchar(20) not null,
age int default 20,
deptno int(11),
foreign key (deptno) references dept(deptno)
);
創(chuàng)建表完畢后添加外鍵:
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芝加;
二.運(yùn)算符
1.算術(shù)運(yùn)算符
四則運(yùn)算:+ - * / -- 需要注意的是 除法 / 得到的是整數(shù)部分,即求商射窒,不帶余數(shù)
select 1+2; select 3/2; 得到1.5 select 3 div 2; 得到1藏杖;
2.比較運(yùn)算符
大小比較: > < >= <= <> !=
select 2>1; 得到1,否則為0
3.邏輯運(yùn)算符
and or ! -- 與 或 非
4.位運(yùn)算符
& | ^ -- 按位與 按位或 按位異或