mysql初中级⾯试题_mysql经典⾯试题
数据库优化:
这个优化法则归纳为5个层次:
1、 减少数据访问(减少磁盘访问)
2、 返回更少数据(减少⽹络传输或磁盘访问)
3、 减少交互次数(减少⽹络传输)
4、 减少服务器CPU开销(减少CPU及内存开销)
5、 利⽤更多资源(增加资源)
我们⼀般在什么字段上建索引?
这是⼀个⾮常复杂的话题,需要对业务及数据充分分析后再能得出结果。主键及外键通常都要有索引,其它需要建索引的字段应满⾜以下条件:
1、字段出现在查询条件中,并且查询条件可以使⽤索引;
2、语句执⾏频率⾼,⼀天会有⼏千次以上;
3、通过字段条件可筛选的记录集很⼩,那数据筛选⽐例是多少才适合?
数据库应用系统设计案例这个没有固定值,需要根据表数据量来评估,以下是经验公式,可⽤于快速评估:
⼩表(记录数⼩于10000⾏的表):筛选⽐例<10%;
⼤表:(筛选返回记录数)
单条记录长度≈字段平均内容长度之和+字段数*2
-- 当前时间
select CURTIME();
-- 当前⽇期
select NOW();
-- 查询当天数据
select * from 表名where TO_DAYS(时间字段)=TO_DAYS(NOW());
-- 查询本周的数据
SELECT * FROM 表名 WHERE YEARWE--EK(date_format(时间字段,'%Y-%m-%d')) = YEARWEEK(now());
-- 最近7天
SELECT * FROM 表名 where date_sub(curdate(), INTERVAL 7 DAY) <= date (时间字段);
-- 查询本⽉的数据
select * from 表名 where DATE_FORMAT(时间字段,'%Y%m') =DATE_FORMAT(CURDATE(),'%Y%m');
-- 上⼀⽉
SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1
/
*-----------------------------------------第⼀⼤题--------------------------------------------------*/
S(SO,SN,SD,SA) 学号,学员姓名,所属单位,学员年龄
C(CO,CN)课程编号,课程名称
SC_1(SO,CO,G)学号,所选修的课程编号,学习成绩
/*1 查询选修课程名为‘税收基础的学员学号和姓名’*/
--⽅法⼀:连接查询
SELECT s.SO,s.SN FROM S s,C c,sc_1 sc
where c.CN='税收基础'
and s.so=sc.SO =c.CO;
--⽅法⼆:嵌套查询
SELECT so,sn from s
where so in(
SELECT so from sc_1 where co in (
SELECT co from c where cn='税收基础'
)
)
/*2 查询选修课程编号为‘c002’学员姓名和所属单位’*/ --⽅法⼀:连接查询
SELECT s.SN,s.SD from s s,c c,sc_1 sc
='c002'
isalpha函数返回值不是1=sc.CO and s.so=sc.so;
--⽅法⼆:嵌套查询
SELECT sn,sd from s
where so in(
SELECT so from sc_1 where co IN (
SELECT co from c
where co='c002'
)
)
/*3 查询不选修课程编号为‘c005的学员姓名跟所属单位’*/ SELECT sn,sd from s
where so not IN
(select so from sc_1 WHERE co='C005');
/*4 查询选修全部课程学员姓名和所属单位’*/
SELECT sn,sd from s
where so in
(
SELECT so from sc_1
GROUP BY sopluginssetupbak是什么文件夹
HAVING COUNT(co)=(SELECT COUNT(co) FROM c)
);
/*5 查询选修了课程的学员⼈数*/
SELECT COUNT(DISTINCT so) as 选修课程⼈数 from sc_1;
/*6 查新选修课程⼤于5门的学员姓名跟所属单位*/
SELECT sn,sd from s
mysql面试题sqlwhere so IN
(SELECT so from sc_1
GROUP BY so
HAVING COUNT(so)>5
);道闸系统架构图
/*-----------------------------------------第⼆⼤题--------------------------------------------------*/ S(SNO,SNAME)学⽣关系,SNO学号,SNAME姓名
C(CNO,CHAME,CTEACHER)课程关系,CNO课程号,CHAME课程名,任课⽼师
SC(SNO,CNO,SCGRADE)选课关系,SCGRADE成绩
/*第⼀题 出没有选修过李明⽼师的课程的所有学⽣*/
SELECT s.sname FROM student s
python编程快速上手第2版where sno not IN
(SELECT DISTINCT(sc1o) from class c,sc sc1,student s
where co=sc1o and sc1.sno=s.sno
acher='李明'
);
/*第⼆题 列出有两门以上不及格课程的学⽣姓名跟平均成绩*/
select s.sname as 学⽣姓名,avg(ssc.scgrade) as 平均成绩 from student s
,sc ssc,(select sno from sc
where scgrade<60
GROUP BY sno
HAVING COUNT((cno)>=2)) a
where s.sno=a.sno and ssc.sno=a.sno
GROUP BY s.sno,s.sname;
/
*第三题 列出既学过1号课程⼜学过2号课程的学⽣姓名*/
Select s.sno,s.sname FROM student s
where s.sno in
(
Select sc2.sno FROM sc sc2,class c2 Where sc2o=c2o AND c2o IN('1','2')
GROUP BY sc2.sno
HAVING COUNT(DISTINCT c2o)=2
);
/*第四题 列出1号课成绩⽐2号该门课成绩⾼的所有学⽣学号*/
SELECT sc1.sno as 学⽣编号 from sc sc1,sc sc2 where
sc1o='1'
and sc2o='2'
and sc1.sno=sc2.sno
and sc1.scgrade>sc2.scgrade;
/*第五 列出1号课成绩⽐2号同学课成绩⾼的所有学⽣学号以及1号跟2号课成绩*/
SELECT sc1.sno as 学⽣编号,sc1.scgrade as 语⽂成绩,sc2.scgrade as 数学成绩 from sc sc1,sc sc2 where sc1o='1'
and sc2o='2'
and sc1.sno=sc2.sno
and sc1.scgrade>sc2.scgrade
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论