《大型数据库作业3》
蓝底图片为测试图片
黑底图片为开发图片
实验目的:
掌握创建表、修改表、删除表的方法掌握创建主键约束、外键约束、用户自定义约束的方法
掌握创建查询表的方法及使用截断表的方法
理解约束在数据库中的作用
实验内容:
一、创建表
创建图书馆管理系统所涉及的表
创建产品销售系统所涉及的表
图书表book(bid,bname,price,qty)
书库表lib(lid,lname,address)
读者表reader(rid,rname,dept)
二、修改表
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;