mysql数据更新c_MySQL数据更新
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数据更新相关推荐
- vue2 通过 axios 访问koa2,从mysql 拿到数据更新vue2中的内容
vue2 通过 axios 访问koa2,从mysql 拿到数据更新vue2中的内容 axios 类似ajax 注意红色字体 node --inspect index.js (启用debug模式) ...
- mysql事务实现数据更新_MySql事务select for update及数据的一致性处理讲解
MySQL中的事务,默认是自动提交的,即autocommit = 1: 但是这样的话,在某些情形中就会出现问题:比如: 如果你想一次性插入了1000条数据,mysql会commit1000次的, 如果 ...
- MySQL数据库的数据更新
插入数据 向表中插入数据有两种情况,一种是插入一个元组,也就是一条数据.另一种是插入查询结果,也就是插入多条数据. 插入元组 insertinto <表名>[(<属性列1>[, ...
- mysql 参数化 c_MySQL(16):参数化、封装
1.sql语句参数化 创建testInsertParam.py文件,向学生表中插入一条数据#encoding=utf-8 import pymysql try: conn=pymysql.connec ...
- mysql 与c_mysql基础:mysql与C结合实例
一个简单的mysql与C的交互,使用了一些mysql的C API! 老鸟掠过,新手能够看看! /****************************************** 本文件学习mysq ...
- 量化选股策略搭建(二)(数据更新)
量化选股策略搭建(二)(数据更新) 接上一篇文章,上一篇文章数据下载,这里我们讲如何进行数据更新操作. 数据更新思想较为简单,只需要获取更新的数据,并将其写入csv文件末尾即可.部分获取更新数据和追加 ...
- MySQL分布式集群
一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...
- go连接mysql集群_什么是MySQL集群-Go语言中文社区
一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...
- mysql 集群与主从_Mysql集群和主从
1.Mysql cluster: share-nothing,分布式节点架构的存储方案,以便于提供容错性和高性能. 需要用到mysql cluster安装包,在集群中的每一个机器上安装. 有三个关键概 ...
最新文章
- 敏捷开发流程的8个步骤
- Windows7下Caffe-SSD的应用(一)——在Windosw7下编译配置Caffe-SSD CPU版本
- Python-OpenCV 参考文档
- 20、磁贴和磁贴通知(tile)(上)
- ADO.NET连接数据库
- [Windows编程] 通过GetModuleHandleEx 得到函数调用者所在的DLL/EXE 原创陈本峰2009-02
- java教程java自学_15必须阅读Java 8教程
- java 集群会话管理_架构设计之Spring-Session分布式集群会话管理
- python开发wince_零基础学习WinCE开发
- Helloworld之Spring依赖注入/控制反转(DI/IoC)版
- NIVC-gt;IPR[IPADDR]
- FISCO BCOS 日志分析 关键词 格式
- 怎样利用通达信公式选股?
- VBScript编程教程 [上]
- 2017 年,最热开源静态网站生成器 TOP 20 揭晓!
- 5. SAP S/4 运维基础知识(Basic Knowledge) - SAP S/4 Basis Learning
- 安卓设备互相投屏_安卓投屏电脑版-安卓投屏下载v7.9.1-IE浏览器中文网站
- (理财七)如何挑选合适的贷款
- linux操作系统下 c语言编程入门
- python中int(true)为什么是1_【python之路7】python基本数据类型(一)int bool string