南京邮电大学数据库实验一(SQL语言)
作者:mmseoamin日期:2024-04-27

文章目录

  • 一、 实验目的和要求
  • 二、实验环境(实验设备)
  • 三、实验原理及内容
    • 1、了解并掌握SQL*Plus环境的使用
    • 2、用SQL的DDL语句图书管理系统创建基表
    • 3、为基表“读者”补充定义:职称只能取初级、中级、高级之一。
    • 4、用SQL的DML语句向上述基表中增加、修改和删除数据
    • 5、用SQL的QL语句完成查询
    • 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)
      • (一)实验中遇到的主要问题及解决方法
      • (二)实验心得
      • (三)意见与建议(没有可省略)

        一、 实验目的和要求

        (1) 通过上机实践,熟悉Oracle的SQL * Plus环境及使用方法

        (2) 掌握SQL语言,能熟练运用SQL语言进行数据定义和数据操纵

        (3) 加深对关系数据模型的数据结构和约束的理解

        二、实验环境(实验设备)

        硬件:微型计算机

        软件:Windows 操作系统、ORACLE 10G

        三、实验原理及内容

        实验原理基于第二、三、五章的相关内容。

        实验内容如下:

        1、了解并掌握SQL*Plus环境的使用

        (1) 以管理员身份登录到Oracle SQL*Plus;

        (2) 以学号为用户名创建一个用户,并授予其权限;

        (3) 管理员退出Oracle,重新用新创建的用户登录Oracle。

        create user wer identified by wer123;
        Grant dba to wer;
        Connect wer/wer123
        
        1. 创建用户

        2、用SQL的DDL语句图书管理系统创建基表

        CREATE TABLE Book(
            BookId      CHAR(4),
            Class       CHAR(10),
            BookName    CHAR(50),
            Author      CHAR(25),
            Publish     CHAR(25),
            Price       FLOAT(4),
            PRIMARY     KEY(BookId));
        

        创建读者表

        CREATE TABLE Reader(
            ReaderId    CHAR(4),
            ReaderName  CHAR(20),
            COMPANY     CHAR(50),
            POSITION    CHAR(20),
            PRIMARY     KEY(ReaderId));
        

        创建图书借阅表

        CREATE TABLE BR(
            Book        CHAR(4),
            Reader      CHAR(4),
            BookDATE    DATE,
            OTHER       CHAR(50),
            FOREIGN KEY(Book)  REFERENCES Book(BookId),
            FOREIGN KEY(Reader) REFERENCES Reader(ReaderId));
        

        3、为基表“读者”补充定义:职称只能取初级、中级、高级之一。

        ALTER TABLE Reader ADD CHECK(POSITION IN('初级', '中级', '高级'));
        

        4、用SQL的DML语句向上述基表中增加、修改和删除数据

        (1) 向三个基表中插入数据

        1向书表中插入元组

        INSERT INTO Book VALUES ('0001','TP31','计算机基础','WANG','高等教育',12.00);
        INSERT INTO Book VALUES ('0002', 'TP32','数据库原理', NULL,NULL,16.50);
        INSERT INTO Book VALUES ('0003','TN31','并行计算机','YANF','清华大学',12.80);
        INSERT INTO Book VALUES ('0004','TP34','大型数据库','XIA','高等教育',25.00);
        INSERT INTO Book VALUES ('0005','TN30','INTER多核程序设计','SUN','高等教育',11.23);
        INSERT INTO Book VALUES ('0006','TP30','数据结构',NULL,NULL,100);
        

        2向读者表中插入四个元组

        INSERT INTO Reader VALUES ('T201','张三','计算机系','中级');
        INSERT INTO Reader VALUES ('S981','李四','通信系','高级');
        INSERT INTO Reader VALUES ('Z003','王五','工厂','初级');
        INSERT INTO Reader VALUES ('L001','赵六','计算机系','高级');
        INSERT INTO Reader VALUES ('qwer', 'll', 'CS', '初级');
        

        3向图书借阅表中插入借阅数据

        INSERT INTO BR VALUES ('0001', 'Z003', '2022-3-3',    NULL);
        INSERT INTO BR VALUES ('0001', 'T201', '2022-3-6',    NULL);
        INSERT INTO BR VALUES ('0005', 'L001', '2022-4-11',   NULL);
        

        (2) 数据的修改和删除

        UPDATE Book SET AUTHOR='Yan', PUBLISH='高等教育' WHERE BookId=0001;
        

        可以看见两张图片的Author由WANG变为了Yan

        UPDATE Book SET CLASS='TP50' WHERE BookName LIKE '数据库原理';
        

        可以发现前后两张图片书名为《数据库原理》的Class由TP31变为TP50

        UPDATE Book SET Price=Price*1.10;
        

        可以发现前后两张图片所有图书的价格变为原来的1.1倍。

        UPDATE Book SET Price=Price*1.10;
        

        前后两张图片可以发现,借阅记录中读者为L001的所有记录均被删除。

        5、用SQL的QL语句完成查询

        (1)

        SELECT BookName, Author FROM Book;
        

        (2)

        SELECT * FROM Book WHERE Price>ALL(SELECT Price FROM Book WHERE Author='Yan') ;
        

        (3)

        SELECT MAX(Price),MIN(Price),AVG(Price) FROM Book GROUP BY Author;
        

        (4)

        SELECT BookDATE FROM BR;
        

        6.用SQL的DDL语句创建视图、索引

        在以下序号后分别写出对应的SQL语句

        (1)

        CREATE VIEW V1(COMP,R_NUM,BORROW_NUM) AS SELECT Reader.ReaderID, COUNT(DISTINCT Book.BookName), COUNT (Book.BookName) FROM Book, BR, Reader WHERE Book.BookName=BR.Book GROUP BY Reader.ReaderName;
        

        (2)

        SELECT * FROM V1;
        

        (3)

        CREATE INDEX I1 ON Book(PUBLISH DESC);
        

        四、实验小结(包括问题和解决方法、心得体会、意见与建议等)

        (一)实验中遇到的主要问题及解决方法

        (1)如何切换数据库的问题,解决方法是进入系统后,输入命令SHOW DATABASES;显示所有的数据库,然后输入命令USE DATABASENAME; DATABASENAME是我们要是用的数据库的名字。

        (2)向表中插入一个元组后,如果在插入一个相同主键的元组,会失败,如果不想挨个替换除主键之外的每个值,可以先删除该元组,然后重新插入。使用命令TRUNCATE TABLE TABLENAME;TABLENAME是表名,可以清空当前的表。

        (二)实验心得

        (1)熟悉了SQL基本操作,基本语法。

        (2)学会了如何创建用户,切换不同的用户登录。

        (3)学会了如何增删改查数据,创建视图。

        (三)意见与建议(没有可省略)