创建表、修改表、删除表的方法 ,创建主键约束、外键约束、用户自定义约束的方法 ,创建查询表的方法及使用截断表的方法,理解约束在数据库中的作用
撰写人——软工二班——陈喜平
– 实验内容:
– 一、创建表
– 创建图书馆管理系统所涉及的表
– 创建产品销售系统所涉及的表
– 图书表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);