#實體的完整性
概述: ?實體:即表中的一行(一條記錄)代表一個實體(entity) 實體完整性的作用:標識每一行 ? ? ? ? ? ? ? ?數據不重復
約束類型有:主鍵約束 primary key ? ? ?唯一約束 unique ? 自動增長列 ?auto_increment?
? *主鍵約束
? ? ? ? ? ? 注:每個表中要有一個主鍵。特點:數據唯一,且不能為null。
? ? ? ? ? ? 第一種添加方式:
? ? ? ? ? ? ? ? ?CREATE TABLE student( id int primary key, name varchar(50));
? ? ? ? ? ? 第二種添加方式:此種方式優勢在于,可以創建聯合主鍵
? ? ? ? ? ? ? ? ?CREATE TABLE student(id int,name varchar(50),primary key(id));
? ? ? ? ? ? ? ? ?CREATE TABLE student(classid int,stuid int,name varchar(50),primary key(classid ? ? ? ? ? ? ? ? ? ? ? ? ? ,stuid));
? ? ? ? ? ?第三種添加方式:
? ? ? ? ? ? ? ? ?CREATE TABLE student(id int,name varchar(50));
? ? ? ? ? ? ? ? ? ALTER TABLE ?student ?ADD PRIMARY ?KEY (id);
*唯一約束
? ? ? ? 特點是不能重復
? ? ? ? create table student(id int primary key,name varchar(255) unique);
*自動增長列
? ? ? ?sqlserver數據庫(identity) ? ? oracle數據庫( sequence)??
? ? ? ?給主鍵添加自動增長的數值,列只能是整數類型
? ? ? create table student(id int primary key auto_increment,name varchar(255));
#域完整性
? 域完整性的作用:限制此單元格的數據正確,不對照此列的其它單元格比較 ?域代表當前單元 ? ? 格 域完整性約束:數據類型 ? 非空約束(notnull) ?默認值約束(default) ? ?check約束(mysql不支 ? ?持)check(sex='男'orsex='女')
? *數據類型
? ? ?數值類型、日期類型、字符串類型
? *非空約束 ?not null ?
? ? ? CREATE TABLE student( Id int pirmary key, Name varchar(50) not null, Sex varchar(10));
? ? ? INSERT INTO ?student values(1,’tom’,null);
? *默認值約束
? ? ? CREATE TABLE student(Id int pirmary key,Name varchar(50) not null,Sex varchar(10) default ? ? ? ‘男’);
? ? ? ?insert into student1 values(1,'tom','女');
? ? ? insert into ?student1 values(2,'jerry',default);
#引用完整性(參照完整性)
? ? 外鍵約束: ?foreing ? ? key
? ? ?分清主次關系 ?外鍵依賴主鍵 ? ?先有主鍵 ?再有外鍵
? ? ? 語法 ??
? ? ? ? ?CONSTRAINT 約束的名字? ?FOREIGN KEY(約束的字段) REFERENCES 主表(約束字段)
? ? ? ? ALTER? TABLE? 次表名稱? ADD CONSTRAINT 約束的名字 FOREIGN KEY(約束的字段) ? ? ? ? ? ? ? REFERENCES ? 主表(約束的字段);
? ? 例:
? ? CREATE TABLE student(sid int pirmary key,name varchar(50) not null,sex varchar(10) ? ? ? ? ? ? ? ? ? default‘男’);
? ? create table score(id int,score int,sid int , --外鍵列的數據類型一定要與主鍵的類型一致
? ? CONSTRAINT fk_score_sid foreign key (sid) references student(id));
? ?第二種添加外鍵方式。
? ? ALTER TABLE score1 ADD CONSTRAINT fk_stu_score FOREIGN KEY(sid) REFERENCES ? ? stu(id);