SQL语句中常用关键词及其解释如下:

1)SELECT

将资料从数据库中的表格内选出,两个关键字:从 (FROM) 数据库中的表格内选出 (SELECT)。语法为
SELECT “栏位名” FROM “表格名”。

2)DISTINCT

在上述 SELECT 关键词后加上一个 DISTINCT 就可以去除选择出来的栏位中的重复,从而完成求得这个表格/栏位内有哪些不同的值的功能。语法为
SELECT DISTINCT “栏位名” FROM “表格名”。

3)WHERE

这个关键词可以帮助我们选择性地抓资料,而不是全取出来。语法为
SELECT “栏位名” FROM “表格名” WHERE “条件”

4)AND OR

上例中的 WHERE 指令可以被用来由表格中有条件地选取资料。这个条件可能是简单的 (像上一页的例子),也可能是复杂的。复杂条件是由二或多个简单条件透过 AND 或是 OR 的连接而成。语法为:
SELECT “栏位名”  FROM “表格名”  WHERE “简单条件”  {[AND|OR] “简单条件”}+

5)IN

在 SQL 中,在两个情况下会用到 IN  这个指令;这一页将介绍其中之一:与 WHERE 有关的那一个情况。在这个用法下,我们事先已知道至少一个我们需要的值,而我们将这些知道的值都放入 IN  这个子句。语法为:
SELECT “栏位名”  FROM “表格名”  WHERE “栏位名” IN (‘值一’, ‘值二’, …)

6)BETWEEN

IN 这个指令可以让我们依照一或数个不连续 (discrete)的值的限制之内抓出资料库中的值,而 BETWEEN 则是让我们可以运用一个范围 (range)  内抓出资料库中的值,语法为:
SELECT “栏位名”  FROM “表格名” WHERE “栏位名” BETWEEN ‘值一’ AND ‘值二’

7)LIKE

LIKE 是另一个在 WHERE  子句中会用到的指令。基本上, LIKE  能让我们依据一个模式(pattern) 来找出我们要的资料。语法为:
SELECT “栏位名”  FROM “表格名”  WHERE “栏位名” LIKE {模式}

8)ORDER BY

我们经常需要能够将抓出的资料做一个有系统的显示。这可能是由小往大 (ascending)  或是由大往小(descending)。在这种情况下,我们就可以运用 ORDER BY 这个指令来达到我们的目的。语法为:
SELECT “栏位名”  FROM “表格名 [WHERE “条件”] ORDER BY “栏位名” [ASC, DESC]

9)函数

函数允许我们能够对这些数字的型态存在的行或者列做运算,包括 AVG (平均)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM (总合)。语法为:
SELECT “函数名”(“栏位名”) FROM “表格名”

10)COUNT

这个关键词能够帮我我们统计有多少笔资料被选出来,语法为:
SELECT COUNT(“栏位名”) FROM “表格名”

11)GROUP BY

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。语法为:
SELECT “栏位1”, SUM(“栏位2”)  FROM “表格名”  GROUP BY “栏位1”

12)HAVING

该关键词可以帮助我们对函数产生的值来设定条件。语法为:
SELECT “栏位1”, SUM(“栏位2”)  FROM “表格名”  GROUP BY “栏位1”  HAVING (函数条件)

13)ALIAS

我们可以通过ALIAS为列名称和表名称指定别名,语法为:
SELECT “表格别名”.”栏位1” “栏位别名”  FROM “表格名” “表格别名”

下面为一个例子,通过它我们应该能很好地掌握以上关键词的使用方法。

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表

问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
select a.S#
from (select s#,score from SC where C#=’001′) a,
(select s#,score from SC where C#=’002′) b
where a.score>b.score and a.s#=b.s#;

2、查询平均成绩大于60分的同学的学号和平均成绩;
select S#,avg(score)
from sc
group by S# having avg(score) >60;

3、查询所有同学的学号、姓名、选课数、总成绩;
select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student left Outer join SC on Student.S#=SC.S#
group by Student.S#,Sname

4、查询姓“李”的老师的个数;
select count(distinct(Tname))
from Teacher
where Tname like ‘李%’;

5、查询没学过“叶平”老师课的同学的学号、姓名;
select Student.S#,Student.Sname
from Student
where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’);

6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
select Student.S#,Student.Sname
from Student,SC

where Student.S#=SC.S# and SC.C#=’001′and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);

7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
select S#,Sname
from Student
where S# in
(select S#
from SC ,Course ,Teacher
where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’ group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname=’叶平’));

8、查询所有课程成绩小于60分的同学的学号、姓名;
select S#,Sname
from Student
where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);

9、查询没有学全所有课的同学的学号、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S#
group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);

10、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
select S#,Sname
from Student,SC
where Student.S#=SC.S# and C# in (select C# from SC where S#=’1001’);

11、删除学习“叶平”老师课的SC表记录;
Delect SC
from course ,Teacher
where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname=’叶平’;

12、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分
SELECT L.C# 课程ID,L.score 最高分,R.score 最低分
FROM SC L ,SC R
WHERE L.C# = R.C#
and
L.score = (SELECT MAX(IL.score)
FROM SC IL,Student IM
WHERE IL.C# = L.C# and IM.S#=IL.S#
GROUP BY IL.C#)
and
R.Score = (SELECT MIN(IR.score)
FROM SC IR
WHERE IR.C# = R.C#
GROUP BY IR.C# );

13、查询学生平均成绩及其名次
SELECT 1+(SELECT COUNT( distinct 平均成绩)
FROM (SELECT S#,AVG(score) 平均成绩
FROM SC
GROUP BY S# ) T1
WHERE 平均成绩 > T2.平均成绩) 名次, S# 学生学号,平均成绩
FROM (SELECT S#,AVG(score) 平均成绩 FROM SC GROUP BY S# ) T2
ORDER BY 平均成绩 desc;

14、查询各科成绩前三名的记录:(不考虑成绩并列情况)
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 3 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC)
ORDER BY t1.C#;

15、查询每门功成绩最好的前两名
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 2 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC )
ORDER BY t1.C#;

SQL语句常见面试题(一)相关推荐

  1. sql语句常见面试题

    sql语句常见面试题 1.建表 (1)student学生信息表 CREATE TABLE student (id INT (20) NOT NULL,NAME VARCHAR (20) NOT NUL ...

  2. SQL server 常见面试题

    Sql server常见面试题 受用了 1.用一条SQL 语句 查询出每门课都大于80 分的学生姓名 name kecheng fenshu 张三 语文 81 张三 数学 75 李四 语文 76 李四 ...

  3. 数据分析(SQL)常见面试题:开窗函数

    一.什么是开窗函数 开窗函数/分析函数:over()        开窗函数也叫分析函数,有两类:一类是聚合开窗函数,一类是排序开窗函数. 开窗函数的调用格式为: 函数名(列名) OVER(parti ...

  4. SQL Server常见面试题

    转自: https://blog.csdn.net/wugeek/article/details/79121189 sql理论题 1.触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触 ...

  5. mysql关于时间的面试题,mysql时间设置默认值MySQL常见面试题

    1.limit(选出10 到20 条) select * from students order by id limit 9,10; 2.MySQL 会使用索引的操作符号 =,>,=,betwe ...

  6. MySQL常见面试题及答案汇总1000道(春招+秋招+社招)

    MySQL面试题以及答案整理[最新版]MySQL高级面试题大全(2021版),发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面 ...

  7. mybatis基础综合/常见面试题

    概念/作用: 持久层框架,通过xml或注解的方式将要执行的各种 statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句.最后mybatis ...

  8. laravel mysql sum查询并排行_必看!PHP常见面试题——MySQL篇(二)

    接上期:<必看!PHP常见面试题--MySQL篇(一)> 11.MySQL的默认事务隔离级别是? 读未提交(RU): 一个事务还没提交时, 它做的变更就能被别的事务看到. 读提交(RC): ...

  9. 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)

    [前言]别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 --   [下载]个人结合诸多资料 ...

最新文章

  1. 开发工具 codepen codepen vscode
  2. 小程序能打开html页面,小程序新功能直接打开网页
  3. bs4爬取的时候有两个标签相同_利用Python爬取OPGG上英雄联盟英雄胜率及选取率信息!...
  4. Cookie与系统安全
  5. 线程之线程同步(1)
  6. C++中const与指针、引用的分析(转自china_unix GP-King)
  7. php fpm listen.owner,nginx 与 php-fpm socket 所有者权限问题
  8. 软件是计算机程序的总和 主要分为,2014年造价师考试安装工程专业讲义:计算机控制...
  9. 【资料】舵机控制原理
  10. AngularJS - $uibModal - 自定义模态框大小
  11. multiparty 和 busboy
  12. RN 启动开发服务器时报错 ReferenceError: SHA-1 for file
  13. MY-IKuai-1
  14. 计算机专业征兵,计算机应用工程系征兵宣传大会顺利召开──保家卫国,学子应征...
  15. 日语初级语法复习 Day 17 Summary(更新中)
  16. GISer从零开始学习ArcGIS API for JavaScriptArcGIS Online教程(三)免费注册和使用ArcGIS Online
  17. StratoVirt 中的 PCI 设备热插拔实现
  18. Qt快捷键之大小写切换
  19. 谷歌商店上架流程_Googleplay 上架流程(2022版)
  20. 商品打折程序 java_Java 为超市打折水果编写一个购物程序

热门文章

  1. 【NVMe】NVMe 1.3协议中文翻译——第一章简介
  2. 如何将eml格式转换成word文档
  3. 【OpenGL】二十一、OpenGL 矩阵压栈与出栈 ( 不同类型矩阵变换先后顺序 | 渲染前不设置单位阵 | 压栈出栈原理分析 | 代码示例 )
  4. win10怎么显示文件后缀_win10系统中使用win7照片查看器(无需下载安装)
  5. 实践 基于Arduino 的 HC06蓝牙 控制 TB6612FNG 驱动电机
  6. 类的继承关系,多态的体现,我的觉得题目还是有点欠缺
  7. android 记录触屏坐标,android触摸屏坐标手工校准/调整成功
  8. 重装Win10系统后导致网速卡的解决办法
  9. 《人生就是一个不断相遇与离别的过程》
  10. Window10下解决弹出兼容性助手对话框的方法