Vu Database Single table query

Single Table Query

PPT 例:

1.between and 语句

SELECT productCode,buyPrice,MSRP
from products
where MSRP between "100.17" and "104.72";

运行结果:
1
解析:

  • between所取的区间是闭区间。如图,100.17与104.72都可以被查询到。
  • 这里的MSRP的数据类型是 short text 所以我们将数字加上引号表示str型数据

2.select语句中可运算

SELECT productCode,buyPrice,MSRP,MSRP-buyprice as Gross_profit
from products ;

运行结果:
2
3.like 模糊查询

SELECT customerNumber , customerName
from customers 
where customerName like '%collectables%';

运行结果:
3
解析:

  • 这里的like代表模糊查询,前后两个%代表前后可以有任意字符(可以是多个字符,也可以是0个字符)
  • 其实如果你在Access 中输入此语句是什么都查不到的。因为Access与MySQL的SQL查询语句是有差别的。在Access中代表此意义的符号应该是*(星号)但考试的时候还写%就行了

SELECT customerNumber , customerName
from customers 
where customerName like '%collectables';
SELECT customerNumber , customerName
from customers 
where customerName like 'collectables%';

解析:

  • 这两段只有一个%,分别代表前和后任意字符

SELECT customerNumber ,city
from customers 
where customerName like 'n_c';

运行结果:
4
解析:

  • like模糊查询中的_(下划线)可以代表任意一个字符
  • MySQL中用_(下划线),Access中用?(问号)。挺坑的,考试还用_(下划线)吧

4.in的用法

SELECT customerNumber ,city
from customers 
where city in ('Nantes','Melbourne');

运行结果:
4
解析:

  • 这个是用来查询city 名等于in后括号里的城市,相当于把多个or语句简写成一行了。其等价于如下代码:
SELECT customerNumber ,city
from customers 
where city ='Nantes' or city = 'Melbourne';

5.distinct去重

SELECT distinct country 
from customers ;

运行结果:
补
解析:

  • 这个很好理解,就是将重复的去掉再按正序排序。

6.聚合函数
聚合函数(比如avg平均、sum合计、max最大、min最小、count计算行)

SELECT count (*) as num_customer
from customers 
where country = 'Australia';

解析:

  • 这是个简单的例子不多解释了
  • group by 语句必须与聚合函数一起使用
  • where语句中不可用聚合函数,这也就引出了where与having的区别和子查询的问题。这个我们之后再说。

7.group by 与 order by的辨析
order by 从英文里理解就是行的排序方式,默认的为升序(若想降序则在列名后加desc)。order by 后面必须列出排序的字段名,可以是多个字段名。
例:

SELECT employeeNumber , lastname ,firstname 
from employees
order by lastname desc,firstname;

运行结果:
6
解析:

  • 先将lastname按降序排列,之后若将排列顺序相同的在按firstname的升序排列。

group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。

SELECT country , sum(creditLimit) as sum_creditlimit 
from customers
group by country;

运行结果:
7
解析:

  • 可以想像为把种类相同的country作为一个小整体,然后在这些小整体中进行聚合函数的运算,并以小整体为单位输出结果。

练:
输出不同国家的顾客人数

SELECT country , count (*) as num_customers
from customers
group by country;

运行结果:
8
解析:

  • 这里因为每个顾客都占一行,所以以一行为计数依据或以一行中某一个元素为计数依据得出来的结果一样。即:count (*) = count (country)

8.where 与 having 的辨析:

1.where 不能放在GROUP BY 后面
2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE
3.WHERE 后面的条件中不能有聚集函数,比如SUM(),AVG()等,而HAVING 可以
4.where条件用于group by之前,having用于group by 之后对结果进行筛选。

where子句:
where自居仅仅用于从from子句中返回的值,from子句返回的每一行数据都会用where子句中的条件进行判断筛选。where子句中允许使用比较运算符(>,<,>=,<=,<>,!=|等)和逻辑运算符(and,or,not)。

having子句:
having子句通常是与group by 子句一起使用的。因为having的作用是对使用group by进行分组统计后的结果进行进一步的筛选。

例:
选出以u开头的并且顾客个数大于4的国家

SELECT country , count (country) as num_customers
from customers
where country like 'u*'
group by country
having count (country) > 4;

运行结果:
9
注:在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行,简单的理解为只有有了统计结果后我才能执行筛选。where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count),因为它是一句一句筛选的。HAVING子句可以让我们筛选成组后的对各组数据筛选。,而WHERE子句在聚合前先筛选记录。

9.null(空值)

SELECT  customerNumber ,state 
from customers 
where state is null;

运行结果:
10
空字符串(我们也可以称之为0长度字符串)与Null值(空值)的区别:

  • 空字符串(0长度字符串)其数据类型是明确的,即为字符型。存储“空字符串”是要占据物理磁盘空间的
  • Null值(空值)在代码中用关键字 “Null” 表示,代表没东西,其数据类型未知,它不占用物理磁盘空间。

10.子查询
例 1:
列出Pamela Castillo的顾客编号与姓名

SELECT  customerNumber ,customerName
from customers 
where salesRepEmployeeNumber = 
(select employeeNumber
from employees
where lastname = 'Castillo'
or firstname = 'Pamela')

运行结果:
11
解析:

  • 此处可以用子查询代替多表查询,多表查询我们之后再说。

例 2 :
列出办公室号码为6的雇员的顾客的姓名和编号。

SELECT  customerNumber ,customerName ,salesRepEmployeeNumber
from customers 
where salesRepEmployeeNumber in
(select employeeNumber
from employees 
where officeCode = '6 ')

运行结果:
12
注意:
因为这里子查询的返回值不止一个所以应该用 in。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值