蓝底图片为测试图片

黑底图片为开发图片



实验目的:

掌握创建表、修改表、删除表的方法


掌握创建主键约束、外键约束、用户自定义约束的方法


掌握创建查询表的方法及使用截断表的方法


理解约束在数据库中的作用


实验内容:


一、创建表


创建图书馆管理系统所涉及的表



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



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

mysql数据库期末大作业主题类型 数据库大作业案例_数据

mysql数据库期末大作业主题类型 数据库大作业案例_主键_02



书库表lib(lid,lname,address)

mysql数据库期末大作业主题类型 数据库大作业案例_mysql数据库期末大作业主题类型_03

mysql数据库期末大作业主题类型 数据库大作业案例_字段_04





读者表reader(rid,rname,dept)

mysql数据库期末大作业主题类型 数据库大作业案例_字段_05



借阅表loan(bid,rid,loanDate)


mysql数据库期末大作业主题类型 数据库大作业案例_数据_06



二、修改表



1、为各表创建约束


DBMS自动实现数据的完整性---借助于约束的作用:保证数据库中永久数据的正确性(主键唯一,不能引用不存在的对象,满足用户定义的条件)


创建主键约束(为图书表、读者表、借阅表创建主键)


主键:唯一标识,该字段的值必须与别的实体必须是不一样的


由dbms保证数据的正确性


创建外键约束(为借阅表创建外键)


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

mysql数据库期末大作业主题类型 数据库大作业案例_数据_07




2、对各表进行字段调整操作


添加新字段


在图书表中添加“是否热门”字段


修改字段类型


修改图书表中书名字段为变长字符串


mysql数据库期末大作业主题类型 数据库大作业案例_字段_08


删除不用的字段


删除图书表中“是否热门”字段


三、删除表



删除无关联表


删除包含外键引用的表

mysql数据库期末大作业主题类型 数据库大作业案例_数据_09



四、创建查询表



创建所有昂贵书籍表


mysql数据库期末大作业主题类型 数据库大作业案例_数据_10



五、对借阅情况表进行截断操作


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;