实验一SQL语言一、实验目的(1)通过上机实践,熟悉Oracle的SQL*Plus环境及使用方法(2)掌握SQL语言,能熟练运用SQL语言进行数据定义和数据操纵(3)加深对关系数据模型的数据结构和约束的理解二、实验环境硬件:微机软件:ORACLE8i或9i三、实验内容及要求1.了解并掌握SQL*Plus环境的使用2.用SQL的DDL语句图书管理系统创建基表3.为基表“读者”补充定义:职称只能取初级、中级、高级之一4.用SQL的DML语句向上述基表中增加、修改和删除数据5.用SQL的QL语句完成指定查询6.用SQL的DDL语句创建视图、索引7.为自己创建一张结构与scott用户的员工表emp相同的员工表。四、实验过程1、用SQL的DDL语句图书管理系统创建基表图书(图书编号、分类号、书名、作者、出版单位、单价)CREATETABLE图书(图书编号VARCHAR(4)PRIMARYKEY,分类号VARCHAR(5),书名VARCHAR(18),作者VARCHAR(8),出版单位VARCHAR(10),单价DEC(5,2));读者(借书证号、姓名、单位、职称)CREATETABLE读者(借书证号VARCHAR(6)PRIMARYKEY,姓名VARCHAR(10),单位VARCHAR(10),职称VARCHAR(10));借阅(借书证号、图书编号、借阅日期、备注)CREATETABLE借阅(借书证号VARCHAR(6),图书编号VARCHAR(4),借阅日期DATE,备注VARCHAR(30),PRIMARYKEY(借书证号,图书编号),FOREIGNKEY(借书证号)REFERENCES读者(借书证号),FOREIGNKEY(图书编号)REFERENCES图书(图书编号));2、为基表“读者”补充定义:职称只能取初级、中级、高级之一ALTERTABLE读者ADDCHECK(职称IN(‘初级’,’中级’,’高级’));3、向三个基表中插入指定数据。图书表中数据:0001TP31计算机基础WANG高等教育17.000002TP32数据库原理16.500003TN31并行计算机YANG清华大学12.800004TP33高等数学WANG高等教育25.000005TN32大学英语ZHAO高等教育22.500006TN33数据库系统LIU人民邮电24.00INSERTINTO图书VALUES(0001,’TP31’,’计算机基础’,’WANG’,’高等教育’,17.00);INSERTINTO图书VALUES(0002,’TP32’,’数据库原理’,NULL,NULL,16.50);INSERTINTO图书VALUES(0003,’TN31’,’并行计算机’,’YANG’,’清华大学’,12.80);INSERTINTO图书VALUES(0004,’TP33’,’高等数学’,’WANG’,’高等教育’,25.00);INSERTINTO图书VALUES(0005,’TN32’,’大学英语’,’ZHAO’,’高等教育’,22.50);INSERTINTO图书VALUES(0006,’TN33’,’数据库系统’,’LIU’,’人民邮电’,24.00);读者表中数据:T201LIXIN计算机系中级S981WANG通信系高级Z003CHEN工厂初级T205ZHAO英语系中级INSERTINTO读者VALUES(‘T201’,’LIXIN’,’计算机系’,’中级’);INSERTINTO读者VALUES(‘S981’,’WANG’,’通信系’,’高级’);INSERTINTO读者VALUES(‘Z003’,’CHEN’,’工厂’,’初级’);INSERTINTO读者VALUES(‘T205’,’ZHAO’,’英语系’,’中级’);借阅表中数据:S98100022001-2-20Z00300012001-3-3T20100012001-3-10T20100022016-4-11T20100032016-4-12T20100042016-4-13T20100052016-4-14INSERTINTO借阅VALUES(‘S981’,0002,to_date(‘2001-2-20’,’yyyy-mm-dd’),null);INSERTINTO借阅VALUES(‘Z003’,0001,to_date(‘2001-3-3’,’yyyy-mm-dd’),null);INSERTINTO借阅VALUES(‘T201’,0001,to_date(‘2001-3-10’,’yyyy-mm-dd’),null);INSERTINTO借阅VALUES(‘T201’,0002,to_date(‘2016-4-11’,’yyyy-mm-dd’),null);INSERTINTO借阅VALUES(‘T201’,0003,to_date(‘2016-4-12’,’yyyy-mm-dd’),null);INSERTINTO借阅VALUES(‘T201’,0004,to_date(‘2016-4-13’,’yyyy-mm-dd’),null);INSERTINTO借阅VALUES(‘T201’,0005,to_date(‘2016-4-14’,’yyyy-mm-dd’),null);4、数据的修改和删除①为编号为0002的图书填上作者和出版单位。UPDATE图书SET作者=’LIU’,出版单位=’电子工业’WHERE图书编号=0002;②将所有图书单价上调5%(即:原值×1.05)。UPDATE图书SET单价=单价*1.05;③将书名包含‘计算机’的书的分类号改为‘TP38’。UPDATE图书SET分类号=’TP38’WHERE书名LIKE‘%计算机%’;④删除借书证号以S开头的所有读者信息和借阅信息。DELETEFROM借阅WHERE借书证号LIKE‘S%’;5、用SQL的QL语句完成以下查询(1)列出图书馆中所有藏书的书名及出版单位。SELECT书名,出版单位FROM图书;(2)查询工厂所有借阅了图书的读者姓名和职称。SELECT姓名,职称FROM读者,借阅WHERE读者.借书证号=借阅.借书证号AND单位=’工厂’;(3)查询藏书中比高等教育出版社所有图书单价更高的书籍。SELECT*FROM图书WHERE单价ALL(SELECT单价FROM图书WHERE出版单位=’高等教育’);(4)查询各出版社图书的最高价、最低价和平均价格。SELECTMAX(单价),MIN(单价),AVG(单价)FROM图书GROUPBY出版单位;(5)列出当前至少借阅了5本图书的读者及所在单位。SELECT姓名,单位FROM读者WHERE借书证号IN(SELECT借书证号FROM借阅GROUPBY借书证号HAVINGCOUNT(*)4);6、用SQL的DDL语句创建视图、索引(1)建立各单位当前借阅图书情况的简单统计视图,视图中包括单位名称,借书人数和借阅人次。CREATEVIEWV1(单位,借书人数,借阅人次)ASSELECT单位,COUNT(*),COUNT(借书证号)FROM读者WHERE借书证号IN(SELECT借书证号FROM借阅)GROUPBY单位;(2)对该视图进行查询。SELECT单位,借书人数,借阅人次FROMV1;(3)按出版社为图书表建立一个降序索引。CREATEINDEX索引ON图书(出版单位DESC);7.为自己创建一张结构与scott用户的员工表emp相同的员工表。connectscott/tigergrantallprivilegesonemptowang;connectwang/rootcreatetable员工表asselect*fromscott.emp;五、实验小结