当前位置:网站首页>【Mysql数据库】mysql基本操作集锦-看得会的基础(增删改查)
【Mysql数据库】mysql基本操作集锦-看得会的基础(增删改查)
2022-07-26 09:26:00 【a box of Sweets】
1、examdb库中有两张表如下图所示:


2、对这两张表进行操作,包括建表
user ExamDB;
#mysql自增的键要是主键
CREATE TABLE ExamDB.stuinfo(
StuName VARCHAR(8) NOT NULL ,
StuNo VARCHAR(20) NOT NULL ,
StuSex VARCHAR(4) NOT NULL DEFAULT '男',
StuAge INT(4) NOT NULL,
StuSeat INT(4) NOT NULL AUTO_INCREMENT ,
StuAddress varchar(100) DEFAULT '地址不详',
PRIMARY KEY (`StuSeat`)
);
#表2 StuMarks
CREATE TABLE ExamDB.StuMarks(
ID INT(4) NOT NULL AUTO_INCREMENT,
ExamNo VARCHAR(22) NOT NULL,
StuNo VARCHAR(20) ,
WrittenExam INT(4) NOT NULL DEFAULT 0,
LabExam INT(4) NOT NULL NULL DEFAULT 0,
PRIMARY KEY (`ID`)
);
#添加数据
INSERT INTO ExamDB.stuinfo (
StuName,StuNo,StuSex,StuAge,StuSeat,StuAddress
)
VALUE(
'张秋丽',
'2013000001',
'男',
18,
1,
'北京海淀'
);
INSERT INTO ExamDB.stuinfo (
StuName,StuNo,StuSex,StuAge,StuSeat,StuAddress
)
VALUE(
'李斯文',
'2013000002',
'女',
22,
2,
'河南洛阳'
);
INSERT INTO ExamDB.stuinfo (
StuName,StuNo,StuSex,StuAge,StuSeat
)
VALUE(
'李文才',
'2013000003',
'男',
21,
3
);
INSERT INTO ExamDB.stuinfo (
StuName,StuNo,StuSex,StuAge,StuSeat,StuAddress
)
VALUE(
'欧阳俊雄',
'2013000004',
'男',
18,
4,
'新疆克拉玛依'
);
#插入数据 成绩表
INSERT INTO ExamDB.StuMarks (
ExamNo,
StuNo,
WrittenExam ,
LabExam
)
VALUE(
'E2013000001',
'2013000001',
80,
58
);
INSERT INTO ExamDB.StuMarks (
ExamNo,
StuNo,
WrittenExam
)
VALUE(
'E2013000002',
'2013000002',
50
);
INSERT INTO ExamDB.StuMarks (
ExamNo,
StuNo,
WrittenExam ,
LabExam
)
VALUE(
'E2013000003',
'2013000003',
97,
82
);
#三、数据的增删改查
-- #(一)查询操作
-- 1)查询两表的数据
SELECT * FROM ExamDB.stumarks;
SELECT * FROM ExamDB.stuinfo;
-- 2)查询男学员名单
SELECT * FROM stuinfo WHERE StuSex='男' ;
-- 3)查询笔试成绩优秀的学员情况(75~100分)
SELECT * FROM ExamDB.stumarks WHERE WrittenExam BETWEEN 75 AND 100;
-- 4)查询参考的学员成绩,包括学员姓名,笔试成绩,机试成绩
SELECT a.StuName,b.WrittenExam,b.LabExam FROM stuinfo a LEFT JOIN StuMarks b ON a.StuNo=b.StuNo ;
-- 5)统计笔试考试平均分和机试考试平均分
SELECT AVG(WrittenExam) as WrittenExam,AVG(LabExam) as LabExam FROM ExamDB.stumarks;
-- 6)统计参加本次考试的学员人数
SELECT count(*) from ExamDB.stumarks;
-- 7)查询没有通过考试的人数(笔试或机试小于60分)
SELECT count(*) from ExamDB.stumarks where WrittenExam<60 or LabExam>60 ;
-- 8)查询学员成绩,显示学号,笔试成绩,机试成绩,平均分
SELECT StuNo,WrittenExam, LabExam,(WrittenExam+LabExam)/2 as avg FROM ExamDB.stumarks GROUP BY StuNo;
-- 9)排名次(按平均分从高到低排序),显示学号、平均分
SELECT StuNo,(WrittenExam+LabExam)/2 as avg FROM ExamDB.stumarks GROUP BY StuNo order by avg DESC;
-- 10)重点:排名次(按平均分从高到低排序),显示姓名,笔试成绩,机试成绩,平均分
SELECT a.StuName,b.WrittenExam,b.LabExam,(b.WrittenExam+b.LabExam)/2 as avgsScore FROM ExamDB.stuinfo a
LEFT JOIN ExamDB.stumarks b on a.StuNo=b.StuNo order by avgsScore DESC ;
-- 11)重点:根据平均分,显示前两名信息,包括姓名、笔试成绩、机试成绩、平均分 limit
SELECT a.StuName,b.WrittenExam,b.LabExam,(b.WrittenExam+b.LabExam)/2 as avgsScore FROM ExamDB.stuinfo a
LEFT JOIN ExamDB.stumarks b on a.StuNo=b.StuNo order by avgsScore DESC LIMIT 2;
-- (二)DML操作
-- 1)重点:将所有笔试成绩全部加5分,但不得超过100分。
UPDATE stuMarks SET WrittenExam= if(WrittenExam>95,100,WrittenExam + 5 );
-- 2)将姓名为“欧阳俊雄”的学生姓名改为“欧阳买买提”
update ExamDB.stuinfo set StuName= '欧阳买买提' WHERE StuName ='欧阳俊雄';
边栏推荐
猜你喜欢
随机推荐
字节缓冲流&字符流详解
I'm faded
Server memory failure prediction can actually do this!
[MySQL] understand the important architecture of MySQL (I)
添加dll
The problem of the sum of leetcode three numbers
The difference between thread join and object wait
【线上问题】Timeout waiting for connection from pool 问题排查
Force button list question
(2006, MySQL server has gone away) problem handling
js在控制台输出菱形
简单行人重识别代码到88%准确率 郑哲东 准备工作
js中树与数组的相互转化(树的子节点若为空隐藏children字段)
QT | about how to use EventFilter
[MySQL] detailed explanation of redo log, undo log and binlog (4)
Personality test system V1.0
搜索模块用例编写
Exception handling mechanism II
I'm faded
大二上第一周学习笔记









