mysql 50道经典面试题_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 and sc.co=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

where c.co='c002'

and c.co=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 so

HAVING COUNT(co)=(SELECT COUNT(co) FROM c)

);

/*5 查询选修了课程的学员人数*/

SELECT COUNT(DISTINCT so) as 选修课程人数 from sc_1;

/*6 查新选修课程大于5门的学员姓名跟所属单位*/

SELECT sn,sd from s

where 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

where sno not IN

(SELECT DISTINCT(sc1.cno) from class c,sc sc1,student s

where c.cno=sc1.cno and sc1.sno=s.sno

and c.cteacher='李明'

);

/*第二题 列出有两门以上不及格课程的学生姓名跟平均成绩*/

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 sc2.cno=c2.cno AND c2.cno IN('1','2')

GROUP BY sc2.sno

HAVING COUNT(DISTINCT c2.cno)=2

);

/*第四题 列出1号课成绩比2号该门课成绩高的所有学生学号*/

SELECT sc1.sno as 学生编号 from sc sc1,sc sc2 where

sc1.cno='1'

and sc2.cno='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

sc1.cno='1'

and sc2.cno='2'

and sc1.sno=sc2.sno

and sc1.scgrade>sc2.scgrade

数据库MySQL经典面试题之SQL语句

数据库MySQL经典面试题之SQL语句 1.需要数据库表1.学生表Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学 ...

MySQL 经典面试题

MySQL 面试 1 存储过程 什么是存储过程 存储过程是一些编译好的SQL语句 因为系统在调用SQL的时候比较浪费时间,所以之前先将一些基本的额SQL语句代码进行编译(对单表或多表的增删改查),然后 ...

面试BAT前先搞定这18道MySQL经典面试题(含答案解析)

一.MySQL的复制原理以及流程 (1)复制基本原理流程 1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中: 2. 从:io线程——在使用start ...

mysql经典面试题之学生成绩表

需要数据库表1.学生表 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 2.课程表 Course(CID, ...

100道MySQL数据库经典面试题解析(收藏版)

前言 100道MySQL数据库经典面试题解析,已经上传github啦 https://github.com/whx123/JavaHome/tree/master/Java面试题集结号 公众号:捡田螺 ...

php经典面试题与答案&lpar;转先锋教程网&rpar;

php经典面试题与答案 时间:2016-02-29 16:06:23来源:网络 导读:php经典面试题与答案,包括腾讯php面试题.百度php面试题.新浪php面试题等   php面试题及答案 1,禁 ...

Linux 经典面试题

[Linux  经典面试题] 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统中每个文 ...

经典面试题:从 URL 输入到页面展现到底发生什么?

前言 打开浏览器从输入网址到网页呈现在大家面前,背后到底发生了什么?经历怎么样的一个过程?先给大家来张总体流程图,具体步骤请看下文分解! 本文首发地址为GitHub 博客,写文章不易,请多多支持与关注 ...

MySQL开发面试题

……继上一篇MySQL的开发总结之后,适当的练习还是很有必要的…… SQL语法多变,不敢保证唯一,也不敢保证全对,如果错误欢迎指出,即刻修改. 一.现有表结构如下图 TABLENAME:afinfo ...

随机推荐

oracle优化思考-双刃剑

oracle优化是一个双刃剑,特别注意这把剑用的场合:系统规划OLTP or OLAP 优化1:索引 在DML操作时.必须维护索引.假设大量的DML操作,想想看,IO是不是老高了? 索引长处:在非常多 ...

MVC5

MVC5 不知不觉 又逢年底, 穷的钞票 所剩无几. 朋友圈里 各种装逼, 抹抹眼泪 MVC 继续走起.. 本系列纯属学习笔记,如果哪里有错误或遗漏的地方,希望大家高调指出,当然,我肯定不会低调改正的 ...

有关XSS的一个系列教程

在乌云发现了一个有关XSS的教程,目前有21篇,够我慢慢儿学的了. 这个系列教程的地址:http://www.wooyun.org/whitehats/心伤的瘦子/page/1 几个常见的语句 &lt ...

再起航,我的学习笔记之JavaScript设计模式09&lpar;原型模式&rpar;

我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 我们 ...

JVM内部原理

这篇文章详细描述了Java虚拟机的内在结构.下面这张图来自,它展示了一个 ...

Elasticsearch &period;net client NEST 5&period;x 使用总结

目录: Elasticsearch .net client NEST 5.x 使用总结 elasticsearch_.net_client_nest2.x_到_5.x常用方法属性差异 Elastics ...

【Git】Git常用命令

git remote -v : 查看远程仓库地址

delphi 的 ORM 框架

delphi 的 ORM 框架,收集如下: 1.EntityDac    https://www.devart.com/entitydac/download.html 2.mORMot    The  ...

flask数据库迁移理解及命令

前言: 使用数据库迁移,可以直接建表,而不用我们自己写sql语句用来建表.就是将关系型数据库的一张张表转化成了Python的一个个类. 在开发中经常会遇到需要修改原来的数据库模型,修改之后更新数据库, ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值