select查询操作与联合查询

大家好,我是anyux。上一节本节是对于SQL语句select详细演示操作,本节是对于select练习演示操作。

统计中国每个省的总人口数,打印总人口数小于100万的

查看中国所有的城市,并按人口数排序(从大到小)

统计中国每个省的总人口数量,按照总人口从大到小排序

统计中国,每个省的总人口,找出总人口大于500万的,并按总人口从大到小排序,只显示前三名

union和union all

union 和union all 的区别

union会做去除重复处理,性能比union会差一些

union all 不做去除重复处理

作用:多个结果集合并查询的功能

查询中国或美国的城市信息

改写后的SQL语句,索引等级会提高

统计中国,每个省的总人口,找出总人口大于500万的,并按总人口从大到小排序,显示前三名和后三名

注意,如果这里使用了子查询,因为两个查询结果都使用了order by 子句,为排除报错使用子查询

多表连接查询(内连接)

基本语法

最核心的是找到多张表之间的关联条件列,比如下面示例中city表的countrycode和country表中的code相关联

列书写时,格式必须为 表名.列,因为如果不标识出来,就无法确定是哪个表的列进行关联

表的关联列使用=(等号)连接如city.countrycode=country.code

要查询的数据也必须将列前面加上表名称

关联条件时使用on连接条件,如(from city join country on city.countrycode=country.code)

将所有的过滤、分组、排序等条件按顺序写在on的后面

多张表关联A JOIN B on A.x=B.y JOIN B C on B.m=C.n

建议使用数据少的表做为连接的驱动表,将数据行最少的放在最左边,后续所有表的关联列尽量是主键或唯一键,至少建立一个索引

查询世界上小于100人的城市,所在的国家名,国土面积,城市名,人口数

使用别名做简化处理

查询城市shenyang,城市人口,所在国家名(name)及国土面积(SurfaceArea)

别名

Mysql别名分为列别名,和表别名

表别名可以出现在任意子句中。列别名可以使用ORDER BY,GROUP BY和HAVING子句中的列别名来引用该列

注意:不能在WHERE子句中使用列别名。原因是当MySQL评估求值WHERE子句时,SELECT子句中指定的列的值可能尚未确定。

本节是对于SQL语句select练习演示。其中如有不足还各位同学指出。下一节将进行更详细的复杂的select练习操作。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200225A05HEX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券