MySQL数据更新:

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

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

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

第一部分:

1、插入数据

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

Sno:9512102 Sname:刘晨 Ssex:男 Sage:20 Sdept:计算机系Insert into student (sno,sname,ssex,sage,sdept) values('9512102','刘晨','男',20,'计算机系');

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

Cno:C06 Cname:数据结构 Ccredit:5 Semster:4insert 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 库存数

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 成绩 SMALLINTdelete 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 库存数

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

delete from book

where bno not in (

select bno

from borrow

where borrow.bno = book.bno

);

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

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

表结构如下

course表:

student表:

sc表:

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 成绩 SMALLINTupdate 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 成绩 SMALLINTUPDATE 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 班级

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

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 成绩 SMALLINTINSERT 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学时SMALLINTinsert 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表:

course表:

sc表:

用法: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表结构:

sc表结构:

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

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

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

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

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

9520104,王大力,男,19。

student表结构:

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

14.向course中插入数据

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

course表结构:

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 成绩 SMALLINTdelete from sc where sno='9531102' and cno='c05';

结束:

DATE_ADD函数相关用法:https://blog.csdn.net/l1028386804/article/details/87790243

第一部分:MySQL查询练习 https://www.cnblogs.com/xbhog/p/13971373.html

第二部分:MySQL查询练习2 https://www.cnblogs.com/xbhog/p/14021013.html

理论部分:

第一部分:MySQL必知必会(1-12章) https://www.cnblogs.com/xbhog/p/13721359.html

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

感谢各位看到最后!

mysql数据更新c_MySQL数据更新相关推荐

  1. vue2 通过 axios  访问koa2,从mysql 拿到数据更新vue2中的内容

    vue2 通过 axios  访问koa2,从mysql 拿到数据更新vue2中的内容 axios 类似ajax 注意红色字体 node --inspect index.js (启用debug模式) ...

  2. mysql事务实现数据更新_MySql事务select for update及数据的一致性处理讲解

    MySQL中的事务,默认是自动提交的,即autocommit = 1: 但是这样的话,在某些情形中就会出现问题:比如: 如果你想一次性插入了1000条数据,mysql会commit1000次的, 如果 ...

  3. MySQL数据库的数据更新

    插入数据 向表中插入数据有两种情况,一种是插入一个元组,也就是一条数据.另一种是插入查询结果,也就是插入多条数据. 插入元组 insertinto <表名>[(<属性列1>[, ...

  4. mysql 参数化 c_MySQL(16):参数化、封装

    1.sql语句参数化 创建testInsertParam.py文件,向学生表中插入一条数据#encoding=utf-8 import pymysql try: conn=pymysql.connec ...

  5. mysql 与c_mysql基础:mysql与C结合实例

    一个简单的mysql与C的交互,使用了一些mysql的C API! 老鸟掠过,新手能够看看! /****************************************** 本文件学习mysq ...

  6. 量化选股策略搭建(二)(数据更新)

    量化选股策略搭建(二)(数据更新) 接上一篇文章,上一篇文章数据下载,这里我们讲如何进行数据更新操作. 数据更新思想较为简单,只需要获取更新的数据,并将其写入csv文件末尾即可.部分获取更新数据和追加 ...

  7. MySQL分布式集群

    一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...

  8. go连接mysql集群_什么是MySQL集群-Go语言中文社区

    一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...

  9. mysql 集群与主从_Mysql集群和主从

    1.Mysql cluster: share-nothing,分布式节点架构的存储方案,以便于提供容错性和高性能. 需要用到mysql cluster安装包,在集群中的每一个机器上安装. 有三个关键概 ...

最新文章

  1. 敏捷开发流程的8个步骤
  2. Windows7下Caffe-SSD的应用(一)——在Windosw7下编译配置Caffe-SSD CPU版本
  3. Python-OpenCV 参考文档
  4. 20、磁贴和磁贴通知(tile)(上)
  5. ADO.NET连接数据库
  6. [Windows编程] 通过GetModuleHandleEx 得到函数调用者所在的DLL/EXE 原创陈本峰2009-02
  7. java教程java自学_15必须阅读Java 8教程
  8. java 集群会话管理_架构设计之Spring-Session分布式集群会话管理
  9. python开发wince_零基础学习WinCE开发
  10. Helloworld之Spring依赖注入/控制反转(DI/IoC)版
  11. NIVC-gt;IPR[IPADDR]
  12. FISCO BCOS 日志分析 关键词 格式
  13. 怎样利用通达信公式选股?
  14. VBScript编程教程 [上]
  15. 2017 年,最热开源静态网站生成器 TOP 20 揭晓!
  16. 5. SAP S/4 运维基础知识(Basic Knowledge) - SAP S/4 Basis Learning
  17. 安卓设备互相投屏_安卓投屏电脑版-安卓投屏下载v7.9.1-IE浏览器中文网站
  18. (理财七)如何挑选合适的贷款
  19. linux操作系统下 c语言编程入门
  20. python中int(true)为什么是1_【python之路7】python基本数据类型(一)int bool string

热门文章

  1. 计算机软件著作财产权包括,著作财产权
  2. 友情链接交换的方法、标准、原则以及注意事项
  3. ubuntu 10.10 安装compiz方法
  4. jpcsp源码解读之三:Screen类
  5. 2018年html模板,2018年最好用的20个bootstrap网站模板
  6. 可微偏导数一定存在_函数可微,那么偏导数一定存在,且连续吗?
  7. oracle 全文索引 报错,oracle全文索引
  8. PMP报考条件及考试时间。
  9. iPhone屏蔽APP广告的方法
  10. 网页在微信中转发,自定义图片和文字