SQL基础学习_02_查询
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_查询的更多相关文章
- SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念
SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...
- Oracle SQL 基础学习
oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...
- SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)
--====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY ...
- SQL 基础学习(1):下载DB Browser for SQLite. 下载graphviz(为了使用Rails ERD的前提)出现❌,已debug.
SQL is a standard language for storing, manipulating and retrieving data in databases. 关系型数据库:RDBMS( ...
- SQL基础学习_04_视图
视图 1. 视图的创建 视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作: 由于 ...
- sql基础学习
学习参考网站:http://www.runoob.com/sql/sql-tutorial.html 一.SQL命令 1.SELECT 语句 用于从数据库中选取数据. select column_na ...
- SQL基础学习_05_函数、谓词、CASE表达式
函数 算术函数 1. 四则运算: +.-.*./ 2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的 ...
- SQL基础学习篇--字符函数
字符函数可与SELECT,UPDATE,DELETE RIGHT()----从右侧开始选择 SELECT RIGHT(列,字符数量) FROM 表 LEFT()----从左侧开始选择 SUBSTR ...
- python_基础学习_02_拆分文件(spilt)
做爬虫经常会有这样的引用场景 ,原始网页存储格式为 url+\t+ html php 有个explode的 拆分文本行方法,比较方便直接接收列值 list($url,$html)=explode(& ...
随机推荐
- linux配置分步安装lnmp环境----ghj
前台:nignx 后台:apache[linux命令]用户文件目录启动定时任务:[开启RZ命令]yum -y install lrzsz [防火墙]防火墙配置文件: /etc/sysconfig/ip ...
- Shell中处理方法返回值问题
同步发表:http://blog.hacktons.cn/2017/12/13/shell-func-return/ 背景 通过shell编程,写一些工具批处理的时候,经常需要自定义函数.更复杂点的情 ...
- 【Android源码解析】View.post()到底干了啥
emmm,大伙都知道,子线程是不能进行 UI 操作的,或者很多场景下,一些操作需要延迟执行,这些都可以通过 Handler 来解决.但说实话,实在是太懒了,总感觉写 Handler 太麻烦了,一不小心 ...
- salesforce零基础学习(八十四)配置篇: 自定义你的home page layout
当我们进入salesforce系统或者切换app后,默认第一个看到的就是home页面.home页面简单的来说可以包括左侧(narrow component)和右侧(wide component)两部分 ...
- MySQL安装出现的1045问题以及解决方法
MySQL安装出现1045的问题解决办法: 1045.的原因是已经装过了MySQL再次装的时候报的错误,那么该怎么处理那??? 首先卸载程序,从windows里找到mysql右击卸载,然后就是在dos ...
- 【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)
Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包 ...
- 新书《Linux就是这个范儿》预售
预售地址 当当 内容简单介绍 本书内容源自淘宝技术大学的培训实战.由来自阿里巴巴集团的资深Linux系统专家赵鑫磊和相同来自阿里巴巴集团的支付宝网络技术有限公司的高级专家Jie Zhang(张洁)共同 ...
- 指尖上的电商---(4).net开发solr
这一节我们看下如何把查询数据放到server端存储,这里我们须要使用client工具来操作与服务端数据打交道,网上有好多基于.NET开发的SOLRclient,我们这里选择easynet.solr,非 ...
- 二、springcloud Netflix 注册中心
Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...
- NanUI文档 - 使用网页来设计整个窗口
NanUI文档目录 NanUI简介 开始使用NanUI 打包并使用内嵌式的HTML/CSS/JS资源 使用网页来设计整个窗口 如何实现C#与Javascript相互掉用(待更新...) 如何处理Nan ...