蓝底图片为测试图片

黑底图片为开发图片



实验目的:

掌握创建表、修改表、删除表的方法
掌握创建主键约束、外键约束、用户自定义约束的方法
掌握创建查询表的方法及使用截断表的方法
理解约束在数据库中的作用
实验内容:
一、创建表
创建图书馆管理系统所涉及的表

创建产品销售系统所涉及的表

图书表book(bid,bname,price,qty)





书库表lib(lid,lname,address)






读者表reader(rid,rname,dept)




借阅表loan(bid,rid,loanDate)


二、修改表

1、为各表创建约束
DBMS自动实现数据的完整性---借助于约束的作用:保证数据库中永久数据的正确性(主键唯一,不能引用不存在的对象,满足用户定义的条件)
创建主键约束(为图书表、读者表、借阅表创建主键)
主键:唯一标识,该字段的值必须与别的实体必须是不一样的
由dbms保证数据的正确性
创建外键约束(为借阅表创建外键)

创建用户自定义约束(指定图书表中价格必须为正值)




2、对各表进行字段调整操作
添加新字段
在图书表中添加“是否热门”字段
修改字段类型
修改图书表中书名字段为变长字符串

删除不用的字段
删除图书表中“是否热门”字段
三、删除表

删除无关联表

删除包含外键引用的表



四、创建查询表

创建所有昂贵书籍表


五、对借阅情况表进行截断操作
delete * from loan
dml  日志多

ddl 日志少
truncate loan;

select * from book where bid in(
select bid
from book
group by bid

having count(bid)>1);


以下为源代码:

测试数据为自己修改的数据,与课程的参考代码不同,oracle出现中文乱码,十分抱歉

-- 实验目的:
-- 掌握创建表、修改表、删除表的方法
-- 掌握创建主键约束、外键约束、用户自定义约束的方法
-- 掌握创建查询表的方法及使用截断表的方法
-- 理解约束在数据库中的作用
set pagesize 100
set linesize 100
-- 实验内容:
-- 一、创建表
-- 创建图书馆管理系统所涉及的表

-- 创建产品销售系统所涉及的表

-- 图书表book(bid,bname,price,qty)
CREATE TABLE book(
  bid char(10) not null,
  bname char(10)not null,
  price number(10,2),
  qty int);
  
-- 书库表lib(lid,lname,address)
     CREATE TABLE lib(
  lid char(10),
  lname char(10),
  address varchar(10));
-- 读者表reader(rid,rname,dept)
       CREATE TABLE reader(
  rid char(10),
  rname char(10),
  dept varchar(10));
-- 借阅表loan(bid,rid,loanDate)
      CREATE TABLE loan(
  bid char(10),
  rid char(10),
  loandate date);


-- 二、修改表

-- 1、为各表创建约束
-- DBMS自动实现数据的完整性---借助于约束的作用:保证数据库中永久数据的正确性(主键唯一,不能引用不存在的对象,满足用户定义的条件)
-- 创建主键约束(为图书表、读者表、借阅表创建主键)
-- 主键:唯一标识,该字段的值必须与别的实体必须是不一样的
-- 由dbms保证数据的正确性
        ALTER TABLE book
        ADD CONSTRAINT pk_book PRIMARY KEY (bid);


-- 创建外键约束(为借阅表创建外键)
   ALTER TABLE reader
ADD CONSTRAINT pk_reader PRIMARY KEY (rid);


-- 创建用户自定义约束(指定图书表中价格必须为正值)
       ALTER TABLE book
ADD CONSTRAINT ck_price CHECK (price>0);

INSERT INTO reader VALUES('123456','hongliang','10');
SELECT * FROM reader;
INSERT INTO reader VALUES('123456','hongliang','10');
INSERT INTO book VALUES('no.1','数学',10,1);
SELECT * FROM book;
INSERT INTO book VALUES('no.1','数学',10,1);
-- 2、对各表进行字段调整操作
-- 添加新字段
-- 在图书表中添加“是否热门”字段
  desc book;
  ALTER TABLE book
  ADD 是否热门 varchar(10);
  desc book;
-- 修改字段类型
-- 修改图书表中书名字段为变长字符串
       ALTER TABLE book
  MODIFY (bname varchar(30));
  desc book;
-- 删除不用的字段
-- 删除图书表中“是否热门”字段
-- 三、删除表
       ALTER TABLE book
  DROP COLUMN 是否热门;
  desc book;
-- 删除无关联表
       DROP TABLE lib;
  desc lib;
-- 删除包含外键引用的表
  DROP TABLE loan CASCADE CONSTRAINTS;
  desc loan;
-- 四、创建查询表


-- 创建所有昂贵书籍表
promat 定义大于100的为昂贵书籍
      CREATE TABLE expbook
 AS
 SELECT *
 FROM book
 WHERE price > 100;
 desc expbook;




-- 五、对借阅情况表进行截断操作
     TRUNCATE TABLE loan;
-- delete * from loan
-- dml  日志多


-- ddl 日志少
-- truncate loan;


-- select * from book where bid in(
-- select bid
-- from book
-- group by bid
-- having count(bid)>1);
--rollback;
drop table book;
drop table reader;
drop table expbook;