建立表、修改表、刪除表的方法 ,建立主鍵約束、外來鍵約束、使用者自定義約束的方法 ,建立查詢表的方法及使用截斷表的方法,理解約束在資料庫中的作用
阿新 • • 發佈:2018-11-15
撰寫人——軟工二班——陳喜平
– 實驗內容:
– 一、建立表
– 建立圖書館管理系統所涉及的表
– 建立產品銷售系統所涉及的表
– 圖書表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);