MySQL数据库实验三 数据更新

实验问题的解决:

注意:只有mysql会有这个问题,mssql与oracle都没有这个问题。

第五题第六题正常写此时报错:1093 - You can’t specify target table ‘result’ for update in FROM clause

解决方案:把结果集当作一个表,自我查询一遍
格式为:SELECT a.StudentResult FROM (结果集)a

一、实验目的:

1. 熟悉使用UPDATE/INSERT/DELETE语句进行表操作;
2. 能将这些更新操作应用于实际操作中去;


二、实验准备

1. 了解更新语句的基本语法和用法;
2. 建立相关数据库,并在数据库中建立表,表中有一定量的记录。


三、实验环境:

Navicat 15 for MySQL


四、实验内容:

(写出主要的内容)
使用课程数据库

1. 对于student表,将所有所在系部信息为’CS’的改为’计算机科学系’。

UPDATE student
SET Sdept='计算机科学系'
WHERE Sdept='CS'

2. 对于course表,将数据结构课程的学分改为3。

 UPDATE course
SET Ccredit=3
WHERE Cname='数据结构'

3. 对于student表,插入一条新记录,它的具体信息为,学号:201216011、姓名:张三、性别:男、年龄:21,所在系部:数学系。

 INSERT
INTO student
VALUES('201216011','张三','男','21','数学系')

4. 对于course表,插入两条记录,记录的值自己给定。
第一条:

INSERT
INTO course
VALUES('8','面向对象','NULL','5')

第二条:

INSERT
INTO course
VALUES('9','数字逻辑','NULL','4')

5. 对于SC表,将课程编号为2号的最低分改为在原分数*1.1

 UPDATE sc
SET Grade =Grade*1.1
WHERE Grade IN(
SELECT min_grade
FROM(
SELECT MIN(Grade) AS min_grade
FROM 	sc
WHERE Cno='2'
)
AS a
)

6. 对于SC表,将课程名为数据库的最低分改为在原分数*1.1

 UPDATE sc
SET Grade =Grade*1.1
WHERE Grade IN(
SELECT min_grade
FROM(
SELECT MIN(Grade) AS min_grade
FROM 	sc
WHERE Cno=(
SELECT Cno
FROM course
WHERE Cname='数据库'
)
)
AS a
)

7. 建立一个新表SC_T,该表的字段名称,类型与表SC一致

 CREATE TABLE  SC_T
         (Sno  CHAR(9), 
         Cno  CHAR(4),  
          Grade  SMALLINT, 
           PRIMARY KEY (Sno,Cno))

8. 在SC_T表中,插入若干选课记录,学号为student表中出现的学号,课程编号为1

 insert into SC_T values('201215121','1',21);

insert into SC_T values('201215122','1',22);

insert into SC_T values('201215123','1',23);

insert into SC_T values('201215125','1',25);

insert into SC_T values('201215126','1',26);

insert into SC_T values('201215127','1',27);

insert into SC_T values('201215128','1',28);

insert into SC_T values('201215129','1',29);

9. 在SC_T表中,插入若干选课记录,学号为student表中出现的学号,课程编号为操作系统课程的编号

 insert into SC_T values('201215121','4',21);

insert into SC_T values('201215122','4',22);

insert into SC_T values('201215123','4',23);

insert into SC_T values('201215125','4',25);

insert into SC_T values('201215126','4',26);

insert into SC_T values('201215127','4',27);

insert into SC_T values('201215128','4',28);

insert into SC_T values('201215129','4',29);

10.用select语句检查8,9的操作是否正确,如果正确,则删除SC_T表中的所有记录
Sql语句为:

SELECT *
FROM SC_T

在这里插入图片描述

所以八九操作正确,可以执行删除操作!
删除的Sql语句为:

DELETE
FROM SC_T

11. 在SC_T表中,插入若干选课记录,学号为student表中出现的学号,课程编号为在课程表中出现的所有课程号。

 insert into SC_T values('201215121','1',21);

insert into SC_T values('201215122','2',22);

insert into SC_T values('201215123','3',23);

insert into SC_T values('201215125','4',25);

insert into SC_T values('201215126','5',26);

insert into SC_T values('201215127','6',27);

insert into SC_T values('201215128','7',28);

insert into SC_T values('201215129','8',29);

insert into SC_T values('201215129','9',29);

12. 用select语句检查11的操作是否正确.
Sql语句为:

SELECT *
FROM SC_T

在这里插入图片描述

所以11操作成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南风如意

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值