【Mysql数据库】mysql基本操作集锦-看得会的基础(增删改查)

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 ='欧阳俊雄';
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

a box of Sweets

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

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

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

打赏作者

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

抵扣说明:

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

余额充值