数据库实验4
- 格式:doc
- 大小:562.98 KB
- 文档页数:13
数据库实验四在学习数据库的过程中,实验是帮助我们深入理解和掌握相关知识的重要环节。
本次数据库实验四主要围绕着数据库的查询、更新以及数据完整性等方面展开。
实验的目的是让我们通过实际操作,更加熟练地运用 SQL 语句来处理数据库中的数据,同时加深对数据库原理和概念的理解。
在实验开始之前,我们首先需要准备好相关的数据库环境。
这包括安装数据库管理系统,如 MySQL 或 SQL Server 等,并创建好实验所需的数据库和数据表。
本次实验中,我们创建了一个名为“students”的数据库表,用于存储学生的基本信息,如学号、姓名、年龄、性别和所在班级等。
同时,还创建了一个名为“courses”的表,用于存储课程的信息,包括课程编号、课程名称和授课教师等。
接下来,就是实验的核心部分——数据查询操作。
通过使用 SQL 的 SELECT 语句,我们可以从数据库中获取所需的数据。
例如,要查询所有年龄大于 20 岁的学生信息,可以使用以下语句:```sqlSELECT FROM students WHERE age > 20;```除了简单的条件查询,我们还学习了如何进行多表连接查询。
比如,要获取同时选修了“数据库原理”和“操作系统”两门课程的学生信息,就需要将“students”表、“courses”表以及选课关系表进行连接查询。
数据更新操作也是实验中的重要内容。
通过使用 UPDATE 语句,我们可以对数据库中的数据进行修改。
但在进行数据更新时,一定要谨慎操作,确保更新的结果符合预期,避免造成数据的错误或丢失。
例如,如果要将某个学生的年龄增加一岁,可以使用以下语句:```sqlUPDATE students SET age = age + 1 WHERE student_id ='_____';```在实验过程中,数据完整性的维护也是至关重要的。
我们通过设置主键、外键以及各种约束条件,来确保数据的准确性和一致性。
数据库运维形考实验4实验训练4:数据库系统维护作业实验目的:本实验旨在通过创建和维护数据库,掌握Mysql数据库的创建和维护的不同方法和途径,并理解实际数据库所包含的各要素。
实验内容:1.数据库创建与维护1)创建学生选课数据库中所包含的数据库表,包括学生、课程和选修表,要求为各数据库表属性选择合适的数据类型,并确定列名、数据类型、是否允许空值等。
2)查看和修改表结构,选择一个数据库表,练对其表结构进行相应的修改。
3)练用交互式的SQL语句分别完成以上操作。
4)对学生数据库中的三张表分别插入数据。
5)对表中的数据进行修改。
6)对表中的数据进行删除操作。
2.建立视图1)建立学生选修课程信息视图,包括学生学号、姓名、所在系、选修的课程编号、课程名称、成绩。
2)修改以上视图,增加学生所在班级信息。
3)对以上视图进行删除。
实验要求:1.利用SQL Server相关机制,根据具体应用领域创建并维护数据库系统,为后续各个实验提供前期准备。
2.独立完成以上实验内容,并在安装和数据库运行后熟悉SQL SERVER的各种运行管理。
3.完成实验报告。
实验环境:Windows 8 PC机、Mysql配置的环境、Mysql命令行工具、Workbench可视化工具。
实验步骤及结果分析:1.创建student数据库,通过命令行工具输入密码,使用相应数据库,使用create table语句创建数据库表,解决中文乱码问题。
2.进行属性查询操作,通过select语句查询数据库表的属性信息,包括列名、数据类型、约束等。
查询表结构,即查看各个属性和属性的完整性约束等。
使用desc student语句可以展示我们创建的数据的所有信息,包括属性名、类型、默认初始情况和约束等。
在默认数据库中,发现最后一个属性classno的属性为varchar(3),而实际数据中classno是4位数,导致存储时与原数据不匹配。
因此,需要修改该属性为4位长度。
数据库实验4_数据库查询与视图在学⽣选课数据库中完成规定查询,并创建视图。
1.查询线性代数不及格的同学的学号和姓名;SQL语句为:SELECT名单$.学号,姓名FROM名单$,学⽣选课信息和成绩$,课程$WHERE名单$.学号=学⽣选课信息和成绩$.学号AND课程$.课号=学⽣选课信息和成绩$.课号AND 课程$.课程名='线性代数'AND学⽣选课信息和成绩$.成绩<60;执⾏后结果为:2.查询没有选课记录的同学的所有基本信息;SQL语句为:SELECT*FROM名单$WHERE NOTEXISTS(SELECT*FROM学⽣选课信息和成绩$WHERE学号=名单$.学号);执⾏后结果为:3.查询具有简介先修课的课程信息及对应的先修课名;SQL语句为:SELECTFIRST.课号,SECOND.课程名FROM课程$FIRST,课程$SECONDWHEREFIRST.先修课号=SECOND.课号;执⾏后结果如下:4.统计⾼等数学(1)的平均成绩;SQL语句为:SELECT AVG(成绩)FROM学⽣选课信息和成绩$,课程$WHERE学⽣选课信息和成绩$.课号=课程$.课号AND课程$.课程名='⾼等数学(1)'; 执⾏后结果如下:5.统计各门课的选课⼈数;SQL语句为:SELECT课号,COUNT(学号)FROM学⽣选课信息和成绩$GROUPBY课号;执⾏后结果为:6.查询选修5门课以上的学⽣的学号;SQL语句为:SELECT学号FROM学⽣选课信息和成绩$GROUPBY学号HAVING COUNT(*)>5;执⾏后结果为:7.⽤你的学号查询和你⼀个班的同学的学号和姓名;SQL语句为:SELECT学号,姓名FROM名单$WHERE班级IN(SELECT班级FROM名单$WHERE学号='201000800145');执⾏后结果如下:8.查询⾼等数学(1)成绩⽐你⾼出10分以上的同学的姓名和对应成绩;SQL语句为:SELECT姓名,成绩FROM名单$,学⽣选课信息和成绩$WHERE名单$.学号=学⽣选课信息和成绩$.学号AND学⽣选课信息和成绩$.课号='82006010'AND成绩>(SELECT成绩+10FROM学⽣选课信息和成绩$,课程$WHERE学⽣选课信息和成绩$.课号=课程$.课号AND课程$.课程名='⾼等数学(1)' AND学⽣选课信息和成绩$.学号='201000800145')执⾏后结果为:9.找到每门课获得最⾼成绩的同学的学号、姓名、课名和成绩;选做。
淮海工学院计算机工程学院实验报告书课程名:《数据库原理及应用》题目:T-SQL高级应用班级:软件132学号:***********名:***一.目的与要求1.掌握复杂查询的使用方法;2.掌握多表连接的方法;3.掌握SELECT语句在多表查询中的应用。
4.掌握数据汇总、外连接查询的使用方法;5.掌握事务定义的一般方法二.实验内容1.给出教材14-16的程序运行结果。
2.编写程序,查询“1033”班的最高分的学生的学号、姓名、班号、课程号和分数。
3.编写程序,创建一个新表,包含所有学生的姓名、课程名和分数,并以姓名排序。
4.编写程序,输出每个班最高分的课程名和分数。
5.在上次实验建立的factory数据库的基础上,完成如下各题:●删除factory数据库上各个表之间建立的关系;●显示各职工的工资记录和相应的工资小计。
●按性别和部门名的所有组合方式列出相应的平均工资。
●在worker表中使用以下语句插入一个职工记录:insert into worker values(20,’陈立’,‘女’,’55/03/08’,1,’75/10/10’,4),在depart表中使用以下语句插入一个部门记录:insert into depart values(5,’设备处’)。
再对worker和depart表进行全外连接显示职工的职工号,姓名和部门名。
然后删除这两个插入的记录。
●显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。
●显示最高工资的职工所在的部门名。
●显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。
●先显示worker表中的职工人数,开始一个事务,插入一个职工记录,再显示worker表中的职工人数,回滚该事务,最后显示worker表中的职工人数。
三.实验步骤删除factory数据库上各个表之间建立的关系的操作步骤如下:①启动SQL Server管理控制器。
②在“对象资源管理器”中展开LCB-PC服务器节点。
数据库实验四答案--实验四----1.定义“IS”系学生基本情况视图V_IS 并查询结果;create view V_ISasselect *from Swhere Sdept='IS'with check option;select *from V_IS;--2.将S,C,SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G并查询结果;create view V_S_C_Gasselect S.Sno,Sname,o,Cnamefrom S,C,SCwhere S.Sno=SC.Sno and o=o;select *from V_S_C_G;--3.将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果; create view V_NUM_AVGasselect count(Sno) DeptNum ,avg(Sage) DeptAvgAge,Sdeptfrom Sgroup by Sdept;select *from V_NUM_AVG;--4.定义一个反映学生出生年份的视图V_YEAR并查询结果;create view V_YEARasselect Sno,2012-Sage birthdayfrom S;select *from V_YEAR;--5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果;create view V_AVG_S_Gasselect SC.Sno,count(o) CountCno,avg(Grade) AvgGradefrom S,C,SCwhere S.Sno=SC.Sno and o=ogroup by SC.Sno;select *from V_AVG_S_G;--6.将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G并查询结果; create view V_AVG_C_Gasselect count(SC.Sno) Cnum,avg(Grade) AvgGradefrom S,C,SCwhere S.Sno=SC.Sno and o=ogroup by o;select *from V_AVG_C_G;--7.查询平均成绩为90分以上的学生学号、姓名和成绩;select SC.Sno,Sname,avg(Grade) AvgGradefrom S,SCwhere S.Sno=SC.Snogroup by SC.Sno,Snamehaving avg(Grade) >90;--8.查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩;create view V_AVGasselect o,avg(Grade) AvgGradefrom C,SCwhere o=ogroup by o;selectdistinct S.Sno,Sname,o,Gradefrom S,SC,C,V_AVGwhere S.Sno=SC.Sno and o=V_o and Grade >V_AVG.AvgGrade ;--9.按系统计各系平均成绩在80分以上的人数,结果按降序排列;select Sdept,count(AvgGrade) Numfrom S,V_AVG_S_Gwhere S.Sno=V_AVG_S_G.Sno and AvgGrade > 80group by Sdeptorder by Num desc;--10通过视图V_IS,分别将学号为“S1”和“S4”的学生姓名更改为“S1_MMM”,”S4_MMM”并查询结果;insert into S(Sno,Sname,Ssex,Sage,Sdept) values('200215121','三毛','男',21,'IS');insert into S(Sno,Sname,Ssex,Sage,Sdept) values('200215124','紫薇','女',19,'IS');update V_IS set Sno='S1_MMM' where Sno='200215121'; update V_IS set Sno='S4_MMM' where Sno='200215124'; select *from V_IS;--11.通过视图V_IS,新增加一个学生记录('S12','YAN XI',19,'IS'),并查询结果;insert into V_IS(Sno,Sname,Sage,Sdept) values('S12','YAN XI',19,'IS');select *from V_ISwhere Sno='S12';--11.通过视图V_IS,新增加一个学生记录('S13','YAN XI',19,'MA'),并查询结果;insert into V_IS(Sno,Sname,Sage,Sdept) values('S13','YAN XI',19,'MA');-- Tip:由于该学生是MA系的,当有check约束时将会产生更新错误。
《数据库原理与应用》实验报告实验名称:班级:学号:姓名:一、实验目的(1)了解Oracle数据库中的用户管理,模式,权限管理和角色管理。
(2)掌握为用户分配权限的方法。
(3)了解为不同用户分配不同权限的目的及原因。
二、实验过程1.用系统帐户sys登录数据库,分别创建数据库内部用户user_one和user_two,创建时自己为用户分配帐户口令。
语句:create user user_oneidentified by 123456default tablespace userstemporary tablespace tempquota unlimited on users;create user user_twoidentified by 123456default tablespace userstemporary tablespace tempquota unlimited on users;执行结果:2.为了使两位用户登录数据库请为其授予相应的权限。
语句:grant create session to user_one;grant create session to user_two;执行结果:3.授予用户user_one在自己模式下创建表的权限,在任何模式下删除表的权限,授予用户user_two可以在任何模式下创建表的权限,查询任何模式下表中数据的权限和在任何模式下创建视图的权限。
语句:grant create table,drop any table to user_one;grant create any table,create any view,select any table to user_two;执行结果:4.分别用user_one和user_two登录,写出相应的SQL语句验证为其授予的权限。
(如果建立的表中有主键约束,需要预先授予user_one和user_two用户create any index的权限。
《数据库技术及应用》实验四、SQL语言数据定义语言DDL学生姓名学生班级学生学号指导老师重庆邮电大学计算机学院一.实验内容在Navicat for MySQL 中使用CREATE 命令完成对表、索引、视图、同义词的创建,使用DROP 命令完成对表、索引、视图、同义词的删除,使用ALTER 命令对表结构进行修改及完整性约束的增加、删除。
二.实验步骤1.启动Navicat for MySQL,在MySQL –新建连接中完成连接参数配置。
2.登录到本地数据库服务器后,连接到test 数据库上。
3.用SQL 语句(如下),建立如下所示的表student;4.同理5.同理6. 用Drop Table 语句删除表CourseAa。
7. 用Alter Table 语句更新表ChooseBb,添加一个属性名Bb4,类型Varchar, 长度20,完整性约束设为非空值,缺省值设为字符“系统测试值”。
8. 用Alter Table 语句更新表ChooseBb,添加一个属性名Bb5,类型Varchar, 长度10,完整性约束设为主码。
完成后,表ChooseBb 的设计如下所示。
9. 用Create View 语句建立一个视图View_Choosebb,生成的视图属性名(View_bb1,View_bb2,view_bb3), 其中View_bb1 对应于基表ChooseBb 的Bb1、View_bb2 对应于基表ChooseBb 的Bb4、view_bb3 对应于基表ChooseBb 的Bb5。
完成后,视图View_Choosebb 的设计如下所示。
10.用Drop View 语句删除视图View_Choosebb。
11. 用Create Index 语句对表ChooseBb 的Bb2 属性建立一个升序索引,索引名Index_bb2。
用Create Index 语句对表ChooseBb 的Bb4 属性建立一个降序索引,索引名Index_bb4。
数据库实验4实验报告一、实验目的本次数据库实验 4 的主要目的是深入了解和掌握数据库中的索引、存储过程以及事务处理等关键技术,通过实际操作和实践,提高对数据库管理系统的运用能力,以及解决实际问题的能力。
二、实验环境本次实验使用的数据库管理系统为 MySQL 80,操作系统为Windows 10。
实验在个人电脑上进行,配置为英特尔酷睿 i5 处理器,8GB 内存。
三、实验内容与步骤(一)索引的创建与使用1、首先,创建了一个名为`students` 的表,包含`id`(主键,自增)、`name`(姓名)、`age`(年龄)、`grade`(年级)等字段。
```sqlCREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),age INT,grade VARCHAR(20));```2、向表中插入了一些示例数据,用于后续的实验操作。
```sqlINSERT INTO students (name, age, grade)VALUES ('张三', 18, '大一'),('李四', 19, '大二'),('王五', 20, '大三'),('赵六', 21, '大四');```3、为`name` 字段创建了一个普通索引,观察查询性能的变化。
```sqlCREATE INDEX idx_name ON students (name);```4、执行查询语句,对比创建索引前后的查询时间。
```sqlSELECT FROM students WHERE name ='张三';```(二)存储过程的创建与调用1、创建了一个简单的存储过程,用于计算两个数的和。
```sqlDELIMITER //CREATE PROCEDURE add_numbers(IN num1 INT, IN num2 INT, OUT result INT)BEGINSET result = num1 + num2;END//DELIMITER ;```2、调用存储过程,传递参数并获取结果。
实验4:数据查询1.实验目的:熟练掌握SQL SELECT语句,能够运用该语句完成各种查询。
2.实验要求:熟练掌握SQL SELECT语句,完成各个实验的内容,能够举一反三,灵活运用,能够通过本章介绍的一些基本语句,构造各种各样的查询。
3.实验环境与实验器材:实验环境:计算机,网络环境,投影设备。
实验相关软件:Window XP、SQL Server 2000。
4. 实验内容与步骤本实验通过使用Transact-SQL语句,对已经建立的数据库进行查询操作。
4.1 查询指定字段编写select语句,显示“学生档案表”中的学号、姓名、籍贯、专业以及班级字段。
第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select 学号,姓名,籍贯,专业,班级from 学生档案表如图:第二步:单击“SQL查询分析器”界面上部的绿色三角形“执行查询”按钮,查询对话框下半部分显示查询结果,如图:4.2 通配符“*”的使用编写select语句,显示“学生选课表”中的所有字段。
第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select * from 学生选课表如图:查询对话框下半部分显示查询结果,如图:4.3 基于字段的表达式在学生档案表中,按“XXXX年XX月XX日”的格式显示出生日期。
使用year 函数从“出生日期”字段中取得年份数据,再使用str函数将数值型的年份数据转换成字符型,最后使用“+”将字符串拼接起来。
第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select 学号,姓名,性别,str(year(出生日期),4)+'年'+str(month(出生日期),2)+'月'+str(day(出生日期),2)+'日' as 出生日期from 学生档案表如图:查询对话框下半部分显示查询结果,如图:4.4 用WHERE子句过滤记录在学生档案表中查询所有出生日期在“1983-01-01”至“1984-12-31”之间的所有学生的信息。
大连海事大学数据库原理课程实验报告(2016-2017学年第二学期)实验四数据更新班级:智能科学与技术1班学号:***********名:***指导教师:**成绩:大连海事大学数据库原理课程实验大纲实验名称:实验四数据更新实验学时: 2适用专业:智能科学与技术实验环境: SQL.serve2008执笔者:刘宇轩编写日期: 2017-5-291实验目的(1)掌握SQL数据更新语句的基本使用方法,如UPDATE、DELETE、INSERT。
(2)掌握更新语句条件中的嵌套查询使用方法。
2实验内容2.1 掌握SQL更新语句的基本使用方法(1)INSERT基本语句。
(2)UPDATE基本语句。
(3)DELETE基本语句。
2.2 掌握SQL更新语句的高级使用方法(1)INSERT批量插入语句。
(2)UPDATE语句使用嵌套子查询。
(3)DELETE语句使用嵌套子查询。
3实验要求(1)深入复习教材第三章SQL有关更新语句。
(2)根据书上的例子,针对TPCH数据库模式设计各种更新语句,每种类型更新语句至少要设计一个,描述清楚数据更新要求,运行你所设计的更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。
也可以按照附1所列示例查询做实验。
(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。
4实验步骤4.1 掌握SQL更新语句的基本使用方法(1)INSERT基本语句(插入全部列的数据)。
插入一个新顾客的记录,要求每列都给一个合理的值插入一条订单明细记录,要求每列都给一个合理的值INSERTINTOCUSTOMER(CUSTKEY,NAME,ADDRESS,NATIONKEY,PHONE,ACCTBAL,MKTSEGMENT,COMMENT )VALUES(8,'剑心','北海道',5,594579,13.3,'同心','无')原图插入后图(2)INSERT基本语句(插入部分列的数据,要求随机生成某些数字列或者字符列的数据)。
插入一条订单记录,可以只给出必要的几个字段的值,其中数值字段可以用RANDOM函数随机生成数值INSERTINTOORDERS(ORDERKEY,CUSTKEY,ORDERSTATUS,TOTALPRICE,ORDERDATE,ORDERPRIORITY,CLER K,SHIPPRIORITY,COMMENT)VALUES(8,3,RAND()*10,10000,'2015-4-4',RAND()*1000,RAND()*1000,RAND()*1000,'无')原图更新图(3)UPDATE基本语句(修改所有记录的某些列的值)。
修改所有零件的零售价,使其价格上浮10%UPDATE PARTSET retailprice=retailprice*1.1原图更新图(4)UPDATE基本语句(修改部分记录的某些列的值)。
修改顾客张三的国籍UPDATE CUSTOMERSET NATIONKEY=2WHERE NAME='张三'原图更新后图(5)DELETE基本语句(删除所有记录)。
删除所有订单记录DELETEFROM lineitemWHERE orderkey IN(SELECT orderKEYFROM orders)DELETEFROM ORDERS(6)DELETE基本语句(删除部分记录)。
删除2016年1月1日之前订单记录DELETEFROM lineitemWHERE orderkey IN(SELECT orderKEYFROM ordersWHEREORDERDATE<'2016-1-1')DELETEFROM ORDERSWHERE ORDERDATE<'2016-1-1'4.2 掌握SQL更新语句的高级使用方法(7)INSERT基本语句(插入全部列的数据)。
插入一个新顾客的记录,要求每列都给一个合理的值插入一条订单明细记录,要求每列都给一个合理的值INSERTINTOCUSTOMER(CUSTKEY,NAME,ADDRESS,NATIONKEY,PHONE,ACCTBAL,MKTSEGMENT,COMMENT )VALUES(8,'剑心','北海道',5,594579,13.3,'同心','无')原图插入后图(8)INSERT基本语句(插入部分列的数据,要求随机生成某些数字列或者字符列的数据)。
插入一条订单记录,可以只给出必要的几个字段的值,其中数值字段可以用RANDOM函数随机生成数值INSERTINTOORDERS(ORDERKEY,CUSTKEY,ORDERSTATUS,TOTALPRICE,ORDERDATE,ORDERPRIORITY,CLER K,SHIPPRIORITY,COMMENT)VALUES(8,3,RAND()*10,10000,'2015-4-4',RAND()*1000,RAND()*1000,RAND()*1000,'无')原图更新图(9)UPDATE基本语句(修改所有记录的某些列的值)。
修改所有零件的零售价,使其价格上浮10%UPDATE PARTSET retailprice=retailprice*1.1原图更新图(10)UPDATE基本语句(修改部分记录的某些列的值)。
修改顾客张三的国籍UPDATE CUSTOMERSET NATIONKEY=2WHERE NAME='张三'原图更新后图(11)DELETE基本语句(删除所有记录)。
删除所有订单记录DELETEFROM lineitemWHERE orderkey IN(SELECT orderKEYFROM orders)DELETEFROM ORDERS(12)DELETE基本语句(删除部分记录)。
删除2016年1月1日之前订单记录DELETEFROM lineitemWHERE orderkey IN(SELECT orderKEYFROM ordersWHEREORDERDATE<'2016-1-1')DELETEFROM ORDERSWHERE ORDERDATE<'2016-1-1'(13)INSERT批量插入语句(把一个查询结果插入到另外一个表中)。
创建一个顾客购物统计表,记录每个顾客及其购物总数和总价等信息CREATE TABLE CUSTORDER(CUSTKEY INT,NAME VARCHAR(25),QUANTITY REAL,TOTALPRICE REAL)INSERTINTO CUSTORDER(CUSTKEY,NAME,QUANTITY,TOTALPRICE) SELECT C.CUSTKEY,,L.QUANTITY,O.totalpriceFROM CUSTOMER C,ORDERS O,LINEITEM LWHERE C.CUSTKEY=O.CUSTKEY AND L.ORDERKEY=O.ORDERKEY(14)INSERT批量插入语句(使某个表的数据量倍增)。
把零件表的数据插入零件表中,多次重复执行,知道总记录数达到50万为止,记录下你执行了多少次?执行过程中你是如何保证实体完整性约束的INSERTINTO PART(PARTKEY,NAME,SIZE,RETAILPRICE)SELECT PARTKEY+(SELECT COUNT(*)FROM PART),NAME,SIZE,RETAILPRICEFROM PART每次把PART加原表元组数,保证完整性约束(15)UPDATE语句使用嵌套子查询(利用一个表中的数据来判断是否修改另外一个表中的数据)。
修改顾客张三的订单明细记录中111号零件的折扣UPDATE LINEITEMSET DISCOUNT=0.90WHERE ORDERKEY IN(SELECT ORDERKEYFROM ORDERS O,CUSTOMER CWHERE O.CUSTKEY=C.CUSTKEY AND='张三')原表如图更新之后张三的折扣为0.90(16)UPDATE语句使用嵌套子查询(利用一个表中的数据修改另外一个表中的数据)。
利用LINEITEM表中的详细信息修改对应订单中的totalprice利用PARTSUPP 表中的供应价格来修改LINEITEM中的EXTENDEDPRICE,假设:UPDATE LINEITEMSET EXTENDEDPRICE=PS.SUPPLYCOST*lineitem.QUANTITY*LINEITEM.DISCOUNTFROM PARTSUPP PSWHERE PS.PARTKEY=lineitem.partkey AND PS.SUPPKEY=lineitem.suppkey原图更新之后图UPDATE ORDERSSET ORDERS.TOTALPRICE=PS.SUPPLYCOST*QUANTITYFROM LINEITEM L,PARTSUPP PSWHERE L.ORDERKEY IN(SELECT L2.ORDERKEYFROM LINEITEM L2,ORDERS O,PARTSUPP PS2WHERE O.ORDERKEY=L2.ORDERKEY AND PS2.SUPPKEY=L2.partkey AND PS2.SUPPKEY=L2.suppkey)原图更新之后图(17)DELETE语句使用嵌套子查询(利用一个表中的数据来判断是否删除另外一个表中的数据)。
删除顾客张三的订单记录DELETEFROM lineitemWHERE orderkey IN(SELECT ORDERKEYFROM ORDERSWHERE ORDERKEY IN(SELECT ORDERKEYFROM CUSTOMER CWHERE ='张三'AND C.CUSTKEY=ORDERS.CUSTKEY))DELETEFROM ORDERSWHERE ORDERKEY IN(SELECT ORDERKEYFROM CUSTOMER CWHERE ='张三'AND C.CUSTKEY=ORDERS.CUSTKEY)原图更新图5总结与体会5.1 实验中出现的问题及其解决方案相对于上一次,这次实验难度比较大。
首先出现的问题是因为没有复习,知识点大量遗忘,后经过复习终于想起来了这些知识点。