文章目录
一、单表查询
二、多表查询
三、综合查询
一、单表查询

  1. 查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、客户ID和雇员ID等字段的值

SELECT 订购日期,订单ID,客户ID,雇员ID FROM 订单
WHERE 订购日期 BETWEEN ‘1996-07-01’ AND ‘1996-07-15’
1
2
在这里插入图片描述

2.查询供应商的ID、公司名称、地区、城市和电话字段的值。条件是“地区等于华北”并且“联系人头衔等于销售代表”

SELECT 供应商ID,公司名称,地区,城市,电话 FROM 供应商
WHERE 地区 = ‘华北’ AND 联系人职务 = ‘销售代表’
1
2
在这里插入图片描述

  1. 查询供应商的ID、公司名称、地区、城市和电话字段的值。其中的一些供应商位于华东或华南地区,另外一些供应商所在的城市是天津

SELECT 供应商ID,公司名称,地区,城市,电话 FROM 供应商
WHERE (地区=‘华东’ OR 地区=‘华南’)
OR (城市 = ‘天津’)
1
2
3
在这里插入图片描述

  1. 查询位于“华东”或“华南”地区的供应商的ID、公司名称、地区、城市和电话字段的值

SELECT 供应商ID,公司名称,地区,城市,电话 FROM 供应商
WHERE (地区=‘华东’ OR 地区=‘华南’)
1
2
在这里插入图片描述

二、多表查询

  1. 查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、相应订单的客户公司名称、负责订单的雇员的姓氏和名字等字段的值,并将查询结果按雇员的“姓氏”和“名字”字段的升序排列,“姓氏”和“名字”值相同的记录按“订单 ID”的降序排列

我初步答案是:

SELECT 订购日期, 订单ID, 公司名称, 姓氏, 名字
FROM 订单, 客户, 雇员
WHERE 订单.雇员ID = 雇员.雇员ID
AND 订单.客户ID = 客户.客户ID
AND 订单.订购日期 BETWEEN ‘1996-07-01’ AND ‘1996-07-15’
ORDER BY 姓氏, 名字, 订单ID DESC
1
2
3
4
5
6
在这里插入图片描述

但这是就出现问题了,姓氏这一块并没有按理论上的升序排列。

在这里插入图片描述
经过查询和S同学的帮助,发现是以下原因。

如果存储汉字的字段编码使用的是GBK字符集,因为GBK内码编码时本身就采用了拼音排序的方法,直接在查询语句后面添加ORDER BY name ASC,查询结果将按照姓氏的升序排序;如果存储姓名的字段采用的是utf8字符集,需要在排序的时候对字段进行转码,对应的代码是ORDER BY convert(name using gbk) ASC,同样,查询的结果也是按照姓氏的升序排序。

而姓氏和名字采用的是utf8字符集

在这里插入图片描述

故出现了以上问题。

最后答案如下:

SELECT 订购日期, 订单ID, 公司名称, 姓氏, 名字
FROM 订单, 客户, 雇员
WHERE 订单.雇员ID = 雇员.雇员ID
AND 订单.客户ID = 客户.客户ID
AND 订单.订购日期 BETWEEN ‘1996-07-01’ AND ‘1996-07-15’
ORDER BY convert(姓氏 using gbk)ASC, convert(名字 using gbk)ASC, convert(订单ID using gbk)DESC
1
2
3
4
5
6
在这里插入图片描述

  1. 查询“10248”和“10254”号订单的订单ID、运货商的公司名称、订单上所订购的产品的名称

SELECT 订单.订单ID, 公司名称, 产品名称
FROM 订单
LEFT JOIN 运货商 ON 订单.运货商 = 运货商.运货商ID
LEFT JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID
LEFT JOIN 产品 ON 订单明细.产品ID = 产品.产品ID
WHERE 订单.订单ID IN (10248, 10254)
1
2
3
4
5
6
在这里插入图片描述

  1. 查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称、数量、单价和折扣

此处由于需要查询的是订单上所订购产品的单价,故在SELECT时是订单明细.单价,而非 产品.单价

SELECT 订单.订单ID, 产品名称, 单位数量, 订单明细.单价, 折扣
FROM 订单
LEFT JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID
LEFT JOIN 产品 ON 订单明细.产品ID = 产品.产品ID
WHERE 订单.订单ID IN (10248, 10254)
1
2
3
4
5
在这里插入图片描述

  1. 查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称及其销售金额

由于相乘后销售金额小数点位数不同,故考虑通过ROUND取两位小数

SELECT 订单.订单ID, 产品名称, ROUND(订单明细.数量 * 订单明细.单价 * (1 - 折扣),2) AS 销售金额
FROM 订单
LEFT JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID
LEFT JOIN 产品 ON 订单明细.产品ID = 产品.产品ID
WHERE 订单.订单ID IN (10248, 10254)
1
2
3
4
5
在这里插入图片描述

三、综合查询

  1. 查询所有运货商的公司名称和电话

SELECT 公司名称, 电话
FROM 运货商
1
2
在这里插入图片描述

  1. 查询所有客户的公司名称、电话、传真、地址、联系人姓名和联系人头衔

SELECT 公司名称, 电话, 传真, 地址, 联系人姓名, 联系人职务
FROM 客户
1
2
在这里插入图片描述

  1. 查询单价介于10至30元的所有产品的产品ID、产品名称和库存量

SELECT 产品ID, 产品名称, 库存量
FROM 产品
WHERE 单价 BETWEEN 10 AND 30
1
2
3
在这里插入图片描述

  1. 查询单价大于20元的所有产品的产品名称、单价以及供应商的公司名称、电话

SELECT 产品名称, 单价, 公司名称, 电话
FROM 产品
LEFT JOIN 供应商 ON 产品.供应商ID = 供应商.供应商ID
WHERE 单价 > 20
1
2
3
4
在这里插入图片描述

  1. 查询上海和北京的客户在1996年订购的所有订单的订单ID、所订购的产品名称和数量

初步答案为:

SELECT 订单.订单ID, 产品名称, 数量
FROM 订单
LEFT JOIN 订单明细 ON 订单.订单ID = 订单明细.订单ID
LEFT JOIN 客户 ON 订单.客户ID = 客户.客户ID
LEFT JOIN 产品 ON 订单明细.产品ID = 产品.产品ID
WHERE (订单.订购日期 >= ‘1996’ AND 订单.订购日期 < ‘1997’)
AND (客户.城市 = ‘上海’ OR 客户.城市 = ‘北京’)
1
2
3
4
5
6
7
非常冗杂

SQL查询语句练习(一)相关推荐

  1. SQL查询语句 select 详解

    查询select: 1.单表查询 2.多表查询 3.嵌套查询分类 1)单表查询 2)多表查询 A.连接查询 B.子查询 ①一般子查询 ②相关子查询*************************** ...

  2. MySQL番外篇:一条SQL查询语句是如何执行的?

    在面试的过程中,有的面试官会给出一条简单的SQL查询语句,让简单说一下执行的过程. SELECT * FROM emp where age=30; 以下问MySQL的基本架构图,从中可以看出SQL语句 ...

  3. SQL查询语句总是先执行SELECT?你们都错了。。。

    来源 | infoq.cn/article/Oke8hgilga3PTZ3gWvbg 很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否 ...

  4. R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句

    R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库.将dplyr语法查询语句翻译为SQL查询语句 目录

  5. SQL 查询语句总是先执行 SELECT?你们都错了

    很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否可以对窗口函数返回的结果进行过滤"这个问题,得出的结论是"窗口函数 ...

  6. SQL 查询语句总是先执行 SELECT?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"1024"领取惊喜资料 很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟 ...

  7. SQL查询语句基础构成

    本文是基本的SQL查询语句用法,内容主要来自Alan Learning SQL这本书第3章,包括select,from,where,group by,having,order by六个查询子句,后续会 ...

  8. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  9. 怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?...

    一.第一节:一条sql查询语句是怎样执行的 5.5.5版本以后,默认使用存储引擎为InnoDB 不使用查询缓存,MySQL8.0没有查询缓存这个功能 总体来说:MySQL分为service层和存储引擎 ...

  10. 没错,纯SQL查询语句可以实现神经网络

    我们熟知的SQL是一种数据库查询语句,它方便了开发者在大型数据中执行高效的操作.但本文从另一角度嵌套SQL查询语句而构建了一个简单的三层全连接网络,虽然由于语句的嵌套过深而不能高效计算,但仍然是一个非 ...

最新文章

  1. mysql创建新用户并分配数据库权限
  2. 开复学生网--没有学习的动力怎么办
  3. 详尽解析window.event对象
  4. 初中数学四十二个几何模型_陪伴成长的初中数学几何模型大全
  5. 微信小程序 开发过程中遇到的坑(一)
  6. amazon云服务_亚马逊Simple Worklfow服务的骆驼演示
  7. QLive EULA
  8. 【训练过程】2) Train the VAEs of domain A and domain B respectively(分别训练域A和域B的VAE)
  9. 语录系统2.0随机一段话源码
  10. netbeans基于mysql学生信息_学生信息管理系统的设计与实现(NetBeans IDE,MySQL)
  11. Auto.js 如何WIFI连接VS Code插件
  12. echarts 通过ajax实现动态数据加载
  13. Spring Data 2020.0.0 正式 GA
  14. c语言知识竞赛题库答案,2021年9月全国计算机二级C语言考试真题及答案
  15. 计算机ps基础考试题,2014计算机一级考试PS及基础模拟试题
  16. iOS Orientation 屏幕旋转
  17. 计算机科学与技术真的会掉头发吗,大学里容易“掉头发”的3个专业,为了防秃头,大家慎重报考!...
  18. [4G/5G/6G专题基础-159]: CQI值的滤波方法
  19. python里的jh是啥意思_JH是什么意思啊
  20. 你是哪个级别?(工程师级别划分)

热门文章

  1. 2022-2028全球及中国电动直线执行器行业研究及十四五规划分析报告
  2. Abnova 6-酮-PGF1-α ELISA 试剂盒说明书
  3. ANIMO 03 汉化补丁
  4. wtc java 代码 tpcall(servicename_通过wtc使tuxedo与weblogic通信开发
  5. 使 Windows 下的 Qt 应用程序获得 Administrator 权限
  6. Lettuce: Connection to xxx not allowed. This partition is not known in the cluster view.
  7. sap采购申请自动转采购订单_采购订单_参考第三方销售生成的采购申请
  8. 一个 Git 库内管理多个子项目
  9. Publish/SubScribe(发布/订阅)模式
  10. js通用获取本周起始日期