c mysql 数据更新_MySQL数据更新

MySQL数据更新:

导读:

该练习是本人课程学习进行整理的,若有不对,欢迎指出!

该练习没有配套的sql文件,如果需要可以看之前的文章有student表等(MySQL查询练习);

这是最后一部分练习题,如果后面有更新,会补上。

第一部分:

1、插入数据

(1)在学生表Student中插入数据:

Sno:9512102Sname:刘晨 Ssex:男Sage:20Sdept:计算机系

Insert into student (sno,sname,ssex,sage,sdept) values('9512102','刘晨','男',20,'计算机系');

(2)在课程表Course中插入数据:

Cno:C06Cname:数据结构Ccredit:5Semster:4

insert into course (cno, cname, ccredit, semster)

values ('C06', '数据结构', '5', '4');

#或

前提是该属性列允许为NULL

insert into course values ('c06','数据结构',5,4,null);

insert into course values ('c06','数据结构',5,4,'');

(3)在选课表SC中插入95211班学生选修C04的选课信息。

提示:

多行数据插入,插入数据中的sno从student表中查询而来,插入的cno为“C04”

insert into sc(sno, cno) select sno, 'C04' from student

where sno like '95211%';

2、修改数据

(1)将所有学生的年龄增加1岁。

UPDATE student SET sage=sage+1;

(2)修改“9512101”的“C01”课程成绩为85。

UPDATE sc SET grade=85 WHERE cno='c01' AND sno='9512101';

(3)修改“王大力”的“计算机导论”课程成绩为70。

UPDATE sc SET grade=70 WHERE sno in (SELECT sno FROM student WHERE sname='王大力') AND cno in (SELECT cno from course WHERE cname='计算机导论');

或者:

UPDATE student,sc,course set grade=70 WHERE student.sno=sc.sno AND sc.cno=course.cno and sname='王大力' AND cname='计算机导论';

(4)将所有平均分为75分以上的学生的各门课成绩在原来基础上加5分。

select的结果再通过一个中间表select多一次,就可以避免这个错误

ERROR 1093 (HY000): You can’t specify target table ‘message’ for update in FROM clause

派生表必须使用别名

update sc

set grade = grade + 5

where sno in

(

select sno

from

(

select sno

from sc

group by sno

having avg(grade) >= 75

) as A

) ;

(5)修改“高等数学”课程倒数三名成绩,在原来分数上减5分。

update sc set grade=grade-5 where cno in

(select cno from course where cname='高等数学')

and grade is not null order by grade limit 3;

更通用,去除成绩重复值和为空的情况:

update sc set grade=grade-5 where cno in

(select sno from couse where cname='高等数学')

and grade in

(select grade from(

select distinct grade from sc,course where sc.cno=course.cno and

cname='高等数学' and grade is not null order by grade ase limit 3

) as newtable);

3、删除数据

(1)删除“9531102”学生“C05”课程的成绩记录

DELETE FROM sc WHERE sno='9531102' AND cno='c05';

(2)删除“张海”的所有成绩记录

DELETE FROM sc WHERE sno IN(SELECT sno FROM student where sname='张海');

(3)删除“数据库基础”的全部记录(包括课程信息,成绩信息)

DELETE from sc WHERE cno=(SELECT cno from course WHERE cname='数据库基础');

DELETE from course WHERE cname='数据库基础';

4、创建索引

导入rental表数据,在customer_id上建立普通索引(通过语句或表设计器均可)

查询customer_id=367的记录,记录查询时间:

select *

from rental

where customer_id = 367 ;

create index ix_ct_id on rental(customer_id);

drop index ix_ct_id on rental ;

有索引情况下的执行时间: 0.001ms

无索引情况下的执行时间: 0.005ms

第二部分:

1.插入图书信息:

将图书信息插入到book表中,其中书号 7, 书名 组合数学, 作者 刘迪, 价格 36.70, 数量 37。

表结构如下:

book(图书) 表:bno 书号,bname 书名,author 作者,price 单价,quantity 库存数

5a2c0604b0b8ec278fe9480cc425af39.png

insert into book values('7','组合数学','刘迪','36.70','37');

2.删除“数据库基础”的全部记录(包括课程信息,成绩信息)

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:

1、student(学生表):

SNO学号CHAR(7)

SNAME姓名CHAR(10)

SSEX性别CHAR(2)

SAGE年龄SMALLINT

SDEPT所在系 VARCHAR(20)

2、course(课程表)

CNO课程号CHAR(10)

CNAME课程名VARCHAR(20)

CCREDIT学分SMALLINT

SEMSTER学期SMALLINT

PERIOD学时SMALLINT

3、sc(选课表)

SNO 学号CHAR(7)

CNO 课程号CHAR(10)

GRADE 成绩 SMALLINT

delete from sc where cno =(select cno from course where sc.cno=course.cno and cname='数据库基础' ) ;

delete from course where cno='数据库基础';

3.删除图书信息

从BOOK表中删除当前无人借阅的图书记录。

表结构如下:

book(图书) 表:bno 书号,bname 书名,author 作者,price 单价,quantity 库存数

5dbb67cb3e20c06372b56b3af67e5a76.png

borrow(借书记录)表 :cno 借书卡号,bno 书号,rdate 还书日期

c4a63a227d741f08d54dfdb819f6872d.png

delete from book

where bno not in (

select bno

from borrow

where borrow.bno = book.bno

);

4.修改计算机系李勇的VB课程成绩为60

修改计算机系李勇的VB课程成绩为60。

表结构如下

course表:

0f35979493ff47686da914aff1799309.png

student表:

121acc56c734a1bce63293fb3f7952ce.png

sc表:

dfe1448b69a9f01021f08e6f981188aa.png

update sc set grade=60

where sno in

(select sno from student where sname='李勇' and sdept='计算机系')

and

cno in

(select cno from course where cname='VB');

5.将所有平均分为75分以上的学生的各门课成绩在原来基础上加5分

将所有平均分为75分以上的学生的各门课成绩在原来基础上加5分。

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:

1、student(学生表):

SNO学号CHAR(7)

SNAME姓名CHAR(10)

SSEX性别CHAR(2)

SAGE年龄SMALLINT

SDEPT所在系 VARCHAR(20)

2、course(课程表)

CNO课程号CHAR(10)

CNAME课程名VARCHAR(20)

CCREDIT学分SMALLINT

SEMSTER学期SMALLINT

PERIOD学时SMALLINT

3、sc(选课表)

SNO 学号CHAR(7)

CNO 课程号CHAR(10)

GRADE 成绩 SMALLINT

update sc

set grade = grade + 5

where sno in

(

select sno

from

(

select sno

from sc

group by sno

having avg(grade) >75

) as A

);

注意:

派生子查询需要设置别名。

6.修改“高等数学”课程倒数三名成绩,在原来分数上减5分

修改“高等数学”课程倒数三名成绩,在原来分数上减5分。

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:

1、student(学生表):

SNO学号CHAR(7)

SNAME姓名CHAR(10)

SSEX性别CHAR(2)

SAGE年龄SMALLINT

SDEPT所在系 VARCHAR(20)

2、course(课程表)

CNO课程号CHAR(10)

CNAME课程名VARCHAR(20)

CCREDIT学分SMALLINT

SEMSTER学期SMALLINT

PERIOD学时SMALLINT

3、sc(选课表)

SNO 学号CHAR(7)

CNO 课程号CHAR(10)

GRADE 成绩 SMALLINT

UPDATE sc

SET grade=grade-5

WHERE cno IN(

SELECT cno FROM course WHERE cname='高等数学')

ORDER BY grade ASC LIMIT 3;

7.修改borrow表增加一列;修改日期数据(两条语句完成)

修改borrow表增加借书日期bdate列,列类型为datetime;

将机械系的同学的借书日期值修改为还书日期的前两个月的时间。

用两条语句完成,日期的修改可以用date_add( )或adddate( )。

原表结构如下:

card(借书卡) 表:cno 卡号,name 姓名,class 班级

e531b57f3b0ec78b4a742b0ef1b7f3bc.png

borrow(借书记录)表 :cno 借书卡号,bno 书号,rdate 还书日期

bcf0802d4f4671985b9066caa2cbd690.png

alter table borrow

add column bdate datetime;

update borrow

set bdate = date_add(rdate,interval - 2 month)

where cno in

(select cno

from card

where deptName = '机械系');

注释:

定义和用法:

DATE_ADD() 函数向日期添加指定的时间间隔。

DATE_SUB() 函数向日期减少指定的时间间隔。

语法:

DATE_ADD(date,INTERVAL expr type)

DATE_SUB(date,INTERVAL expr type)

date :参数是合法的日期表达式。

expr:参数是您希望添加的时间间隔。

type :参数可以是下列值,具体参数及用法请查下文章最后的博客链接

8.在选课表SC中插入95211班学生选修C04的选课信息。

在选课表SC中插入95211班学生选修C04的选课信息。

提示:多行数据插入,插入的数据的sno从student表中查询而来,插入的cno为“C04”

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:

1、student(学生表):

SNO学号CHAR(7)

SNAME姓名CHAR(10)

SSEX性别CHAR(2)

SAGE年龄SMALLINT

SDEPT所在系 VARCHAR(20)

2、course(课程表)

CNO课程号CHAR(10)

CNAME课程名VARCHAR(20)

CCREDIT学分SMALLINT

SEMSTER学期SMALLINT

PERIOD学时SMALLINT

3、sc(选课表)

SNO 学号CHAR(7)

CNO 课程号CHAR(10)

GRADE 成绩 SMALLINT

INSERT INTOsc(sno,cno) select sno,'c04' from student where sno like '95211%';

9.在课程表Course中插入数据:

在课程表Course中插入数据:

Cno:C06 Cname:数据结构 Ccredit:5 Semster:4

表结构如下:course(课程表)

列名

说明

数据类型

约束

CNO

课程号

CHAR(10)

主码

CNAME

课程名

VARCHAR(20)

NOT NULL

CCREDIT

学分

SMALLINT

SEMSTER

学期

SMALLINT

PERIOD

学时

SMALLINT

insert into course (cno,cname,ccredit,semster) values('c06','数据结构','5','4');

10.在学生表Student中插入数据

在学生表Student中插入数据:

Sno:9512102 Sname:刘晨 Ssex:男 Sage:20 Sdept:计算机系

表结构如下:student(学生表)

列名

说明

数据类型

约束

SNO

学号

CHAR(7)

主码

SNAME

姓名

CHAR(10)

NOT NULL

SSEX

性别

CHAR(2)

取“男”或“女”

SAGE

年龄

SMALLINT

SDEPT

所在系

VARCHAR(20)

默认“计算机系”

insert into student values('9512102','男','20','计算机系');

11.使用insert set 语句向sc表中插入数据。

使用insert set 向sc表中插入一条选课记录,姓名为周璐的学生,课程名为数据库原理与应用的课程的选课记录。

student表:

5a76a12f33bd70f456a738796cb523a8.png

course表:

8e4635dd5c8a669818c3eb07ba57ad8a.png

sc表:

5f9679cc9cf46f90c02acba9a8687caf.png

用法:

INSERT INTO tablename SET column_name1 = value1, column_name2 = value2,…;

insert sc

set sno=(

select sno

from student

where sname='周璐'),

cno=(

select cno

from course

where cname='数据库原理与应用');

12.插入计算机系学生C01课程的选课记录。

在sc表中插入计算机系所有学生C01课程的选课记录。

student表结构:

fb60ba7f9746aaafe17d73d893503a18.png

sc表结构:

1e0fe88dc0ef35d63b55bf231ac48f4c.png

insert into sc(sno,cno) select sno,'c01' from student where sdept='计算机系';

13.一次向student表中插入多条数据

一次向student表中插入两条记录,其中王大力的系别用缺省值赋值。

两行数据的学号,姓名,性别,年龄和系别分别如下:

9520103,王敏,女,20,信息系;

9520104,王大力,男,19。

student表结构:

fb60ba7f9746aaafe17d73d893503a18.png

insert into student values('9520103','敏','女','20','信息系'),('9520104','王大力','男','19');

14.向course中插入数据

在course表中插入一新记录,课程号为c06,课程名为软件测试,学分为4。

course表结构:

8e4635dd5c8a669818c3eb07ba57ad8a.png

insert into course('c06','软甲测试',null,'4');

15.删除“9531102”学生“C05”课程的成绩记录。

删除“9531102”学生“C05”课程的成绩记录。

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:

1、student(学生表):

SNO学号CHAR(7)

SNAME姓名CHAR(10)

SSEX性别CHAR(2)

SAGE年龄SMALLINT

SDEPT所在系 VARCHAR(20)

2、course(课程表)

CNO课程号CHAR(10)

CNAME课程名VARCHAR(20)

CCREDIT学分SMALLINT

SEMSTER学期SMALLINT

PERIOD学时SMALLINT

3、sc(选课表)

SNO 学号CHAR(7)

CNO 课程号CHAR(10)

GRADE 成绩 SMALLINT

delete from sc where sno='9531102' and cno='c05';

结束:

理论部分:

.....持续更新.....有时间更新

感谢各位看到最后!

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值