南京邮电大学数据库实验一(SQL语言)

news/2024/10/21 5:42:43/

文章目录

  • 一、 实验目的和要求
  • 二、实验环境(实验设备)
  • 三、实验原理及内容
    • 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)学会了如何增删改查数据,创建视图。

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


http://www.ppmy.cn/news/66117.html

相关文章

MySQL数据库——MySQL修改存储过程(ALTER PROCEDURE)

在实际开发过程中,业务需求修改的情况时有发生,所以修改 MySQL 中的存储过程是不可避免的。 MySQL 中通过 ALTER PROCEDURE 语句来修改存储过程。下面将详细讲解修改存储过程的方法。 MySQL 中修改存储过程的语法格式如下: ALTER PROCEDURE…

InnoDB线程模型

新版本结构演变 MySQL 5.7 版本 将 Undo日志表空间从共享表空间 ibdata 文件中分离出来,可以在安装 MySQL 时由用户自行指定文件大小和数量增加了 temporary 临时表空间,里面存储着临时表或临时查询结果集的数据Buffer Pool 大小可以动态修改&#xff0…

【最新可用】chatGPT镜像网站国内使用,免费稳定!

新建了一个网站 https://ai.weoknow.com/ 每天给大家更新可用的国内可用chatGPT 2023.5.8新增一个 ChatGPT 国内免翻版 【网站名称】:Chat GPT Ai 【使用环境】:移动端/电脑网页端 ChatGPT是一款功能强大的免费在线聊天机器人,具有人工智能…

Java分布式事务(十八)

文章目录 🔥最终一致性分布式事务解决方案_什么是最大努力通知型分布式事务🔥最大努力通知型分布式事务_最大努力通知与可靠消息最终一致性的区别🔥最大努力通知型分布式事务解决方案🔥最大努力通知型分布式事务_案例业务说明🔥最大努力通知型分布式事务实战_实现充值…

docker学习笔记(二)

目录 启动Docker ​编辑 建立 Docker 用户 ​编辑 测试 Docker 是否正常工作 卸载Docker Docker镜像加速器配置 配置镜像 检查加速器是否生效 如何在Linux中的.json文件下保存并退出 如果我是使用vi操作进来的,我该如何保存并退出呢? 如何在Li…

RUST 每日一省:解引用Deref

“解引用”(Deref) 是“取引用”(Ref) 的反操作。 取引用, 我们有&、 &mut等操作符, 对应的, 解引用, 我们有*操作符。 默认的“取引用”、 “解引用”操作是互补抵消的关系…

ChatGPT被封?了解这些原因避免账号被封!

随着企业数字化转型的加速,传统的商业模式正在被颠覆,越来越多的企业开始使用人工智能技术来推动业务发展。ChatGPT作为一种自然语言处理技术,可以通过对话方式回答用户的问题或提供信息,在企业市场营销、客户服务、销售等方面发挥…

【设计模式】责任链模式的介绍及其应用

责任链的介绍 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求&a…