zoukankan      html  css  js  c++  java
  • SQL语句之select

    一、DQL介绍

      DQL(data query ;anguage)数据查询语言,用于数据的查询,主要语句select

    二、select的语法(单表)

        select  列  from 表

      where  条件

      group by 条件

      having 条件

      order by 条件

      limit

        以上子句顺序不能更改

    三、练习环境说明

      world数据库

                   city 城市表(4079行)

        country 国家表 (239行)
        countrylanguage 国家的语言(984行)

    四、练习

      (1)select 配合 from 子句使用

      -- select 列,列,列 from 表

     
      1. 查询表中所有的信息(生产中几乎是没有这种需求的)
      USE world ;
      SELECT id,NAME ,countrycode ,district,population FROM city;
      或者:
      SELECT * FROM city;

      (2)select 配合 where 子句使用

      1. 查询中国所有的城市名和人口数
      SELECT NAME,population FROM city
      WHERE countrycode='CHN';

      -- where 配合 like 子句 模糊查询 *****
      例子:
      1. 查询一下contrycode中带有CH开头,城市信息

      SELECT * FROM city
      WHERE countrycode LIKE 'CH%';

      注意:不要出现‘’%CH%‘’的请况,不走索引性能极差,业务需要使用ES代替

      

      -- where 配合 in 语句

      例子:
      1. 查询中国或美国的城市信息.
      SELECT NAME,population FROM city
      WHERE countrycode='CHN' OR countrycode='USA';
      或者:
      SELECT NAME,population FROM city
      WHERE countrycode IN ('CHN' ,'USA');

      (3)配合group by使用

      作用:将某列具有相同条件的数据分成一组然后用聚合函数操作

      1. 统计每个国家,城市的个数

      SELECT countrycode ,COUNT(id) FROM city
      GROUP BY countrycode;

      2. 统计每个国家的总人口数.
      SELECT countrycode,SUM(population) FROM city
      GROUP BY countrycode;

      3. 统计每个 国家 省 的个数
      SELECT countrycode,COUNT(DISTINCT district) FROM city
      GROUP BY countrycode;

      4. 统计中国 每个省的总人口数
      SELECT district, SUM(population) FROM city
      WHERE countrycode='CHN'
      GROUP BY district ;

      5. 统计中国 每个省城市的个数
      SELECT district, COUNT(NAME) FROM city
      WHERE countrycode='CHN'
      GROUP BY district ;

      6. 统计中国 每个省城市的名字列表GROUP_CONCAT()
      guangdong guangzhou,shenzhen,foshan....

      SELECT district, GROUP_CONCAT(NAME) FROM city
      WHERE countrycode='CHN'
      GROUP BY district ;

      7. 小扩展
      anhui : hefei,huaian ....
      SELECT CONCAT(district,":" ,GROUP_CONCAT(NAME)) FROM city
      WHERE countrycode='CHN'
      GROUP BY district ;

      (4)select 配合 order by  使用

      例子:

      1. 统计所有国家的总人口数量,
      将总人口数大于5000w的过滤出来,
      并且按照从大到小顺序排列
      SELECT countrycode,SUM(population) FROM city
      GROUP BY countrycode
      HAVING SUM(population)>50000000
      ORDER BY SUM(population) DESC ;

      (5)SELECT 配合 LIMIT 子句

      例子:
      1. 统计所有国家的总人口数量,
      将总人口数大于5000w的过滤出来,
      并且按照从大到小顺序排列,只显示前三名

      SELECT countrycode,SUM(population) FROM city
      GROUP BY countrycode
      HAVING SUM(population)>50000000
      ORDER BY SUM(population) DESC
      LIMIT 3 OFFSET 0;

      SELECT countrycode,SUM(population) FROM city
      GROUP BY countrycode
      HAVING SUM(population)>50000000
      ORDER BY SUM(population) DESC
      LIMIT 3 OFFSET 3

      LIMIT M,N :跳过M行,显示一共N行
      LIMIT Y OFFSET X: 跳过X行,显示一共Y行

    五、union 和 union all 作用

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

      需求: 查询中或者美国的城市信息
      SELECT * FROM city WHERE countrycode='CHN' OR countrycode='USA';

      改写为:
      SELECT * FROM city WHERE countrycode='CHN'
      UNION ALL
      SELECT * FROM city WHERE countrycode='USA';

         union 和 union all 的区别 ?
      union all 不做去重复
      union 会做去重操作

  • 相关阅读:
    SGA_MAX_SIZE,SGA_TARGET以及PRE_PAGE_SGA参数
    关于DataPump的external_table模式
    undo backup optimization does not work on 11.2.0.1?
    发一个Oracle Dba招聘启事
    ORA600[4194]错误一例
    ORA00600: internal error code, arguments: [kdsgrp1] example
    Pending Problem
    如何修复重编译Datapump工具expdp/impdp
    Mysql:备份、还原、恢复:Mysqldump——标准免费的通用备份工具
    Mysql:SQL语句:DDL语句
  • 原文地址:https://www.cnblogs.com/shi-san/p/13451943.html
Copyright © 2011-2022 走看看