1.每日经典sql

 1.1.1 根据三张关系表查询雇员中工资最高的雇员的员工姓名、工资和部门号。

 salary(工资表)        employee(员工表)        department(部门表)

    

Sql语句: 

 SELECT
emp.ename AS '姓名',
sal.sal AS '薪资',
dep.depname AS '部门'
FROM
employee AS emp
INNER JOIN salary AS sal
INNER JOIN department dep ON dep.salid = sal.salid
AND dep.empid = emp.empid
AND sal.sal = ( SELECT max( sal ) FROM salary )

  1.1.2 找出各月倒数第3天受雇的所有员工.
  emp(练习表)

Sql语句:

 SELECT
*
FROM
emp
WHERE --关键点:last_day()函数返回日期的最后一天
hiredate = last_day( hiredate ) -2

  1.1.3 显示所有员工的姓名,用a替换所有"A"

Sql语句:

 SELECT REPLACE    --replace函数 替换一些字符
( ename, 'A', 'a' ) name,
job,
hiredate
FROM
emp;

  1.1.4 显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面.

 Sql语句:

 SELECT
ename,
--t o_char函数是用来截取时间的 to_char ( hiredate, 'yyyy' ) YEAR,
to_char ( hiredate, 'mm' ) months
FROM
emp
ORDER BY
months,
YEAR ASC;

  1.1.5 显示姓名字段的任何位置包含"A"的所有员工的姓名.

 Sql语句:

 SELECT    -- racle instr函数返回要截取的字符串在源字符串中的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束。
ename
FROM
emp
WHERE
instr( ename, 'A', 1 ) > 0;

  1.1.6 列出薪金比“SMITH”多的所有员工. --upper函数 小写字符转化成大写的函数

Sql语句:

 SELECT
ename,
sal
FROM
emp
WHERE
sal > ( SELECT sal FROM emp WHERE upper( ename ) = 'SMITH' );

  1.1.7 列出受雇日期早于其直接上级的所有员工

Sql语句:

 SELECT
e.ename,
m.ename
FROM
emp e,
emp m
WHERE
e.mgr = m.empno
AND ( e.hiredate < m.hiredate );

  2.1.1 50道经典的Sql题。

  2.1.2 查询“3-105”课程比“6-166”课程成绩高的所有学生的学号

Sql语句:

 SELECT
*
FROM
SCORE A
WHERE
A.Cno = '3-105'
AND A.Degree > ( SELECT B.Degree FROM SCORE B WHERE B.Cno = '6-166' AND A.Sno = B.Sno )

  2.1.2 查询平均成绩大于80分的同学的学号和平均成绩  

Sql语句:

 SELECT
Sno '学号',
avg( Degree ) '平均成绩'
FROM
score
GROUP BY
Sno
HAVING
avg( Degree ) > 80

  2.1.3 查询所有同学的学号、姓名、选课数、总成绩  

Sql语句:

 SELECT
A.Sno '学号',
A.Sname '姓名',
count( Cno ) '选课数',
sum( B.Degree ) '成绩'
FROM
student A
INNER JOIN score B ON A.Sno = B.Sno
GROUP BY
A.Sno

  2.1.4 查询姓“李”的老师的个数  

Sql语句:

 SELECT
count( 1 )
FROM
teacher A
WHERE
SUBSTR( A.Tname, 1, 1 ) = '李'

  2.1.5 查询没学过“李诚”老师课的同学的学号、姓名  --应该有比这个简便的方法但是我想不到

Sql语句: 

 SELECT
*
FROM
student
WHERE
sno NOT IN (
SELECT
S.sno
FROM
student S
INNER JOIN score SC ON S.Sno = SC.Sno
AND Sc.Cno IN ( SELECT B.Cno FROM teacher A INNER JOIN course B ON A.Tno = B.Tno AND A.Tname = '李诚' )
)

  2.1.6 查询学过“3-105”并且也学过编号“3-245”课程的同学的学号、姓名;

Sql语句: 

 --第一种方式
SELECT
Sno '学号',
Sname '姓名'
FROM
student
WHERE
Sno IN (
SELECT
A.Sno
FROM
score A
WHERE
A.Cno = '3-105'
AND A.Sno IN ( SELECT B.Sno FROM score B WHERE B.Cno = '3-245' )
)
--第二种方式
SELECT
stu.Sno '学号',
stu.Sname '姓名'
FROM
student AS stu,
score sc,
score c
WHERE
stu.Sno = sc.Sno
AND sc.Sno = c.Sno
AND sc.Cno = '3-105'
AND c.Cno = '3-245'

Sql题目精选练习的更多相关文章

  1. LeetCode SQL题目(第一弹)

    LeetCode SQL题目 注意:Leetcode上的SQL编程题都提供了数据表的架构程序,只需要将它贴入本地数据库即可调试自己编写的程序 不管是MS-SQL Server还是MySQL都需要登陆才 ...

  2. Oracle语法 及 SQL题目(一)

    目录 课例复制 SQL题目一 SQL题目二 SQL题目三 笔记 课例复制 OCM 全称:Oracle Certified Master 认证大师 含义:Oracle 原厂推出的数据库方向最高级别认证 ...

  3. Oracle语法 及 SQL题目(三)

    目录 SQL题目六 第一个问题思路(查询酒类商品的总点击量) 第二个问题思路(查询每个类别所属商品的总点击量,并按降序排列) 第三个问题思路(查询所有类别中最热门的品种(点击量最高),并按点击量降顺序 ...

  4. 网上一些sql题目的解决(网上答案+自己答案)

    此篇博客内容引自“MySQL经典练习题及答案” 废话不不多说!!! 建表.插入数据. --建表 --学生表 CREATE TABLE Student( s_id VARCHAR(20), s_name ...

  5. 面试题中遇到的SQL题目

    1.假设有一张表示cj表 Name Subject Result 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 82 要求查询结果: 姓名 语文 ...

  6. 感觉挺有意思的SQL题目

    1.有如下数据,要求查询每个班最低分和最高分,并将最高分与最低分显示为同一列 ID Student CourseName Score1 张三 English 802 张三 Math 703 张三 Ch ...

  7. sql 题目

    1.自增列 通用: ) from table b where b.sid<a.sid) ,* from table a; ,),* from ... 第二个已经有主键自增列的就不可以用了 还有就 ...

  8. Oracle语法 及 SQL题目(二)

    目录 课例复制 思考题四 解题思路 思考题五 解题思路 课例复制 思考题四 最近,经过你的努力,你得到了一份工作,成为了百货公司的一位经理. 到位后,你发现你的销售数据库中有两张表,一个是商店促销时间 ...

  9. Leetcode中的SQL题目练习(二)

    175. Combine Two Tables https://leetcode.com/problems/combine-two-tables/description/ Description Pe ...

随机推荐

  1. 爬虫如何发现更多的url呢,怎么动态收集新的url连接

    大家在做爬虫采集数据的时候很多都会遇到增量采集的问题,有些时候是通过过滤url来进行的,有些是通过爬取网页后再进行分析判断, 以上这些过程也许大部分做爬虫的都会这么做,各位有没有想过, 除了以上的常用 ...

  2. [daily]使用iptables配置NAT的命令速查

    时常,快速的配置一个临时的NAT环境是很常用需求. 但是,每次我都要读iptables的手册,才能配出来.所以,备忘一个速查. DNAT: iptables -t nat -A PREROUTING ...

  3. [Selenium3+python3.6]自动化测试1-安装

    参考文档: http://www.cnblogs.com/yoyoketang/p/6123890.html 安装环境: win7+Py3.6 +FF45 (ESR version) +seleniu ...

  4. linux下setsockopt函数的使用

    1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO ...

  5. 算法之暴力破解和kmp算法 判断A字符串是否包含B字符串

    我们都知道java中有封装好的方法,用来比较A字符串是否包含B字符串 如下代码,contains,用法是 str1.contains(str2), 这个布尔型返回,存在返回true,不存在返回fals ...

  6. Gradle 的使用

    gradle 工具类似于maven工具,但是gradle 减少了maven中的那种使用xml 中大量的配置文件来下载依赖的jar包.而gradle大大简化了,能够很快速的添加依赖.具体关于gradle ...

  7. JS window对象详解

    window 是客户端浏览器对象模型的基类,window 对象是客户端 JavaScript 的全局对象.一个 window 对象实际上就是一个独立的窗口,对于框架页面来说,浏览器窗口每个框架都包含一 ...

  8. node.js的iconv模块----在linux上读取windows编码文件

    有时候我们在windows上会保存一些中文文字信息文件,然而由于编码集的差异,这文件在linux上显示为乱码,其中一种解决方法是node.js的iconv模块 var fs = require('fs ...

  9. mysql 数据库练习题

    前面学习了MySQL的语句的基本用法,这里就开始做一些MySQL练习,这套题目一共45题,属于比较简单的,初学先试着做这个. 参考链接:https://www.cnblogs.com/SJP666/p ...

  10. 002_linux驱动之_register_chrdev注册字符设备

    (一)解析:register_chrdev函数和unregister_chrdev函数 (二)register_chrdev函数原型 int register_chrdev(unsigned int ...