1. 程式人生 > >建立表、修改表、刪除表的方法 ,建立主鍵約束、外來鍵約束、使用者自定義約束的方法 ,建立查詢表的方法及使用截斷表的方法,理解約束在資料庫中的作用

建立表、修改表、刪除表的方法 ,建立主鍵約束、外來鍵約束、使用者自定義約束的方法 ,建立查詢表的方法及使用截斷表的方法,理解約束在資料庫中的作用

撰寫人——軟工二班——陳喜平
– 實驗內容:

– 一、建立表

– 建立圖書館管理系統所涉及的表

– 建立產品銷售系統所涉及的表

– 圖書表book(bid,bname,price,qty)

– 書庫表lib(lid,lname,address)

– 讀者表reader(rid,rname,dept)

– 借閱表loan(bid,rid,loanDate)

-- set pagesize 50;

-- set linesize 300;



-- DROP TABLE if exists book;

-- DROP TABLE if exists lib;

-- DROP TABLE if exists reader;

-- DROP TABLE if exists loan;



-- CREATE TABLE book(

-- 	bid char(10),

-- 	bname varchar(30),

-- 	price number(8,2)

-- );



-- CREATE TABLE lib(

-- 	lid char(10),

-- 	lname varchar(30),

-- 	address varchar(100)

-- );





-- CREATE TABLE reader(

-- 	rid char(10),

-- 	rname varchar(30),

-- 	dept varchar(20)

-- );



-- CREATE TABLE loan(

-- 	nid char(10),

-- 	bid char(10),

-- 	rid char(10),

-- 	loanDate char(50)

-- );






在這裡插入圖片描述

-- insert into book(bid, bname, price)

-- values(

-- 	'book001',

-- 	'ComputerBook',

-- 	500

-- );



-- insert into book(bid, bname, price)

-- values(

-- 	'book002',

-- 	'AB360',

-- 	360

-- );



-- insert into book(bid, bname, price)

-- values(

-- 	'book003',

-- 	'CBook',

-- 	25

-- );



-- insert into lib(lid, lname, address)

-- values(

-- 	'lib001',

-- 	'History',

-- 	'HuNanLouDi001'

-- );



-- insert into lib(lid, lname, address)

-- values(

-- 	'lib002',

-- 	'Math',

-- 	'HuNanLouDi002'

-- );



-- prompt finish demo data for book;

在這裡插入圖片描述

-- DROP TABLE book;

-- DROP TABLE lib;

-- DROP TABLE reader;

-- DROP TABLE loan;


-- drop table book cascade constraints;

– 二、修改表

– 1、為各表建立約束

– DBMS自動實現資料的完整性—藉助於約束的作用:保證資料庫中永久資料的正確性(主鍵唯一,不能引用不存在的物件,滿足使用者定義的條件)

– 建立主鍵約束(為圖書表、讀者表、借閱表建立主鍵)

-- ALTER TABLE book

-- add constraint pk_book primary key(bid);

-- ALTER TABLE reader

-- add constraint pk_reader primary key(rid);

-- ALTER TABLE loan

-- add constraint pk_loan primary key(nid);
-- select * from book;

-- select * from lib;

-- select * from reader;

-- select * from loan;

– 主鍵:唯一標識,該欄位的值必須與別的實體必須是不一樣的

– 由dbms保證資料的正確性

– 建立外來鍵約束(為借閱表建立外來鍵)

-- ALTER TABLE loan

-- add constraint fk1_loan foreign key(bid) REFERENCES book(bid);
-- ALTER TABLE loan

-- add constraint fk2_loan foreign key(rid) REFERENCES reader(rid);

– 建立使用者自定義約束(指定圖書表中價格必須為正值)

-- ALTER TABLE book

-- add constraint ck_book check (price>0);

– 2、對各表進行欄位調整操作

– 新增新欄位

– 在圖書表中新增“是否熱門”欄位

-- alter table book

-- add (popular varchar2(30) default '是否熱門' not null);

– 修改欄位型別

-- alter table book

-- modify (popular varchar2(20) default 'IsPopular');

– 修改圖書表中書名欄位為變長字串

-- alter table book 

-- modify (bname varchar2(30)); 



-- alter table book 

-- modify (bid char(10)); 



-- alter table book 

-- modify (bname varchar2(15)); 



-- alter table lib 

-- modify (lid varchar(10)); 



-- alter table lib 

-- modify (lname varchar(15)); 



-- alter table lib 

-- modify (address varchar(16)); 



-- alter table lib 

-- modify (address varchar(20)); 





– 刪除不用的欄位

– 刪除圖書表中“是否熱門”欄位

在這裡插入圖片描述

在這裡插入圖片描述

-- alter table book

-- drop column popular;

– 三、刪除表

– 刪除無關聯表

-- DROP TABLE lib;

– 刪除包含外來鍵引用的表

-- DROP TABLE book cascade constraints;

-- DROP TABLE reader cascade constraints;

– 四、建立查詢表

– 建立所有昂貴書籍表

-- CREATE TABLE expensivebook as 

-- select * 

-- from book 

-- where price>300;



在這裡插入圖片描述
– 五、對借閱情況表進行截斷操作

-- delete * from loan

– dml 日誌多

– ddl 日誌少

-- truncate loan;

-- select * from book where bid in(

-- 	select bid

-- 	from book

-- 	group by bid

-- 	having count(bid)>1);