SELECT语句

1. SELECT语句查询列(字段):

    SELECT <列名>
    FROM <表名>;

    该语句使用了两个SQL子句,SELECT子句列举了希望从表中查询出的列的名称,FROM子句指定选取出的数据的表的名称;

    如:

    SELECT shohin_id, shohin_mei, shiire_tanka
    FROM Shohin; 

    SELECT *
    FROM Shohin

    等;

2. SELECT语句查询行(记录):

    SELECT <列名>
    FROM <表名>
    WHERE <条件表达式>;

    注意WHERE子句必须紧跟FROM子句之后,否则会发生错误;

    WHERE 子句指定选取记录满足的条件,如:

    SELECT shohin_id, shohin_mei, shiire_tanka
    FROM Shohin
    WHERE shiire_tanka = 320;

3. AS关键字设置别名:

    使用AS显示列的别名:

    SELECT <列名> AS <别名>

    使用AS显示某一列为常数:

    SELECT <常数>  AS <列名>

    上述两个AS关键字不可以套接使用;

4. DISTINCT关键字不显示重复行:

    SELECT DISTINCT <列名>

    DISTINCT 关键字只能用于第一个关键字之前,并且NULL也会被视为一类数据

算术运算和比较运算

1. SELECT语句中使用算术运算

    如:

    SELECT shohin_mei,hanbai_tanka,hanbai_tanka * 2 AS "hanbai_tanka_X2"
    FROM Shohin;

    四则运算符都可以被使用;

    任何包含对NULL的运算,其结果都是NULL,包括NULL / 0,也不会报错,而结果为NULL;

2. WHERE子句中使用比较运算符

    在WHERE子句中使用表达式时,需要使用各种比较运算符,如:

    =                 相等

    <>               不相等

    >=               大于等于

    >                 大于

    <=               小于等于

    <                 小于

    在WHERE子句中也可以结合算术运算和比较运算,如:

    SELECT shohin_mei, hanbai_tanka, shiire_tanka
    FROM Shohin
    WHERE hanbai_tanka - shiire_tanka >= 500; 

    对字符串进行比较时,注意是按常规字符串比较方法比较(依次按编码顺序比较),尤其当使用字符串表示数字内容时,需要注意;

    NULL不能使用任何比较运算,判断是否为NULL应该用 IS NULL、IS NOT NULL

3. 逻辑运算符

    SQL支持的逻辑运算符:AND、OR、NOT

    其中计算优先级为:NOT > AND > OR,使用小括号可以改变其优先级;

    使用逻辑运算符,可以将多个条件表达式组合起来;

    NULL在逻辑运算中的值为:UNKNOWN,在存在NULL的条件下,使用的逻辑运算为三值逻辑,

    NULL AND TRUE = NULL
    NULL AND FALSE = FALSE
    NULL AND NULL = NULL

    NULL OR TRUE = TRUE
    NULL OR FALSE = NULL
    NULL AND NULL = NULL

聚合查询

1. 聚合函数:

    COUNT:计算表中的记录数;

    SUM:计算表中数值列的数据总和;

    AVG:计算表中数值列的平均值;

    MAX:计算表中任意列的数据最大值;

    MIN:计算表中任何列中数据最小值;

    使用小括号(<列名>)来调用这些函数:

    SELECT COUNT(*)
    FROM Shohin;

    在COUNT函数中,如果使用*,则会将NULL也纳入计算,如果使用列名,则会将列中的NULL排除在外;

    SUM函数中,如果该列存在NULL,在计算时会直接忽略,而不是结果为NULL;

    AVG函数中,如果该列存在NULL,则在计算时忽略该行;

    MAX和MIN可以适用于任何类型的数据,包括整数、日期、字符串等等;

2. 在聚合函数中使用DISDINCT关键字

    如果在聚合函数中,想要去除重复行,则应该将DISDINCT关键字加在列名之前(也就是函数的小括号之内)

3. 注意点

    聚合函数只能用在SELECT子句中,WHERE子句中不能使用聚合函数

4. 对聚合结果进行分组:

    使用GROUP BY 子句对表格进行分组:

    SELECT <列名1>,<列名2>,<列名3>, ...
    FROM <表名>
    GROUP BY <列名1>, <列名2>,<列名3>,…;

    如:

    SELECT shohin_bunrui, COUNT(*)
    FROM Shohin
    GROUP BY shohin_bunrui; 

    NULL在分组结果中会被真实展示出来;

    如果有WHERE子句,则 GROUP BY 子句应该在WHERE子句之后;

    GROUP BY子句中不能使用SELECT子句中定义的别名;

5. 对聚合结果指定条件:

    使用HAVING子句指定分组的条件:

    SELECT <列名1>,<列名2>,<列名3>,…
    FROM <表名>
    GROUP BY <列名1>,<列名2>,<列名3>,...
    HAVING <分组结果对应的条件>;

    如:

    SELECT shohin_bunrui,  COUNT(*)
    FROM Shohin
    GROUP BY shohin_bunrui
    HAVING COUNT(*) = 2;

    HAVING 用于指定组所对应的条件,如果指定行对应的条件,应该使用WHERE(虽然用HAVING也能达到类似效果 )

6. 对查询的结果进行排序

    使用ORDER BY子句对查询后的结果排序:

    SELECT <列名1>,<列名2>,<列名3>,…
    FROM <表名>
    ORDER BY <排序基准列1>,<排序基准列2>,...

    默认为升序排序,若要使用降序排序,则应该在ORDER BY 子句最后添加DESC关键字,如:

    SELECT shohin_id, shohin_mei, hanbai_tanka, shiire_tanka
    FROM Shohin
    ORDER BY hanbai_tanka DESC;

    如果列中包含NULL,则NULL会在列的开头或者结尾汇集显示; 

    ORDER BY子句中可以使用SELECT子句中定义的别名;

    ORDER BY子句中的列可以使用存在于表中,但不存在于SELECT子句中的列;

    ORDER BY子句可以使用聚合函数;

顺序

以上所有子句的书写顺序为:

SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY

执行顺序为:

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

 

SQL基础学习_02_查询的更多相关文章

  1. SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念

    SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...

  2. Oracle SQL 基础学习

    oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...

  3. SQL基础--&gt;层次化查询(START BY ... CONNECT BY PRIOR)

    --====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY ...

  4. SQL 基础学习(1):下载DB Browser for SQLite. 下载graphviz(为了使用Rails ERD的前提)出现❌,已debug.

    SQL is a standard language for storing, manipulating and retrieving data in databases. 关系型数据库:RDBMS( ...

  5. SQL基础学习_04_视图

    视图 1. 视图的创建     视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作:     由于 ...

  6. sql基础学习

    学习参考网站:http://www.runoob.com/sql/sql-tutorial.html 一.SQL命令 1.SELECT 语句 用于从数据库中选取数据. select column_na ...

  7. SQL基础学习_05_函数、谓词、CASE表达式

    函数 算术函数 1. 四则运算: +.-.*./  2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的 ...

  8. SQL基础学习篇--字符函数

    字符函数可与SELECT,UPDATE,DELETE RIGHT()----从右侧开始选择  SELECT RIGHT(列,字符数量) FROM 表 LEFT()----从左侧开始选择  SUBSTR ...

  9. python_基础学习_02_拆分文件(spilt)

    做爬虫经常会有这样的引用场景 ,原始网页存储格式为  url+\t+ html php 有个explode的 拆分文本行方法,比较方便直接接收列值 list($url,$html)=explode(& ...

随机推荐

  1. hiho-1015- KMP算法

    #1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...

  2. Python连接MySQL数据库中各种坑

    第一个坑 要想连接数据库,我们必须拥有MySQL-python这个模块,首先,我在安装这个模块的时候就到了第一个大坑. 常规安装方法:进入cmd 使用 pip install MySQL-python ...

  3. java 接口测试

    学习java 时间也不算太长,大学有点基础,学起来也顺手多了,其实我感觉更是因为学习完python之后,在学习别的语言的时候就简单多了,几乎所有的语言学起来都差不多.前几篇写过的都是python接口测 ...

  4. 初识java这个小姑娘(二)

    妙解垃圾回收机制 周一,早高峰. 一段考验一个人耐力.智力.开车技术以及脾气的路. 我把车开进了一个没有红绿灯的丁字路口,然后就没有然后了. 来自三个方向的大车小车开始在不大的一块空间里开始互相斗智斗 ...

  5. 安装phpnow服务[Apache_pn]提示失败的解决方法

    win 7/win 8/Win10 phpnow提示"安装服务[Apache_pn]失败"错误解决办法汇总 常常在安装phpnow的时候,提示"安装服务 [ Apache_pn ] 失败&q ...

  6. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序 Excel Services中新功能

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序  Excel Services中新功能         从S ...

  7. DirectX:在graph自己主动连线中增加自己定义filter(graph中遍历filter)

    为客户提供的视频播放的filter的測试程序中,採用正向手动连接的方式(http://blog.csdn.net/mao0514/article/details/40535791).因为不同的视频压缩 ...

  8. Jenkins具体安装与构建部署使用教程

    Jenkins是一个开源软件项目.旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins是基于Java开发的一种持续集成工具,用于监控持续反复的工作,功能包含:1.持续的软件版本号 ...

  9. 在dotnet core web api中支持CORS(跨域访问)

    最近在写的Office add-in开发系列中,其中有一个比较共性的问题就是在add-in的客户端脚本中访问远程服务时,要特别注意跨域访问的问题. 关于CORS的一些基本知识,请参考维基百科的说明:h ...

  10. 解决 ASP.NET Core MySql varchar 字符串截取(长度 255)

    ASP.NET Core 中使用 MySql,如果字段类型为varchar,不管设置多少长度,插入或更新数据的时候,会自动截断(截取 255 长度的字符). 出现问题的原因,就是使用了MySql.Da ...