[SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础
【博主】反骨仔 【原文】http://www.cnblogs.com/liqingwen/p/5904824.html

序
这是《SQL 基础知识梳理(一)- 数据库与 SQL》的下篇。
目录
一、SELECT 语句基础
1.查询指定列:SELECT 关键字
--语法:
--SELECT <列名>, ... -- 希望查询列的名称
--FROM <表名> -- 指定选取数据的表
-- 从 Shohin 中取 3 列
SELECT shohin_id, shohin_mei, hanbai_tanka -- 列的顺序可以任意指定,逗号(“,”)分隔,查询结果的顺序和 SELECT 子句中的顺序相同
FROM Shohin;

2.查询表的所有列:星号(*)
--语法
--SELECT * -- 星号(*)代表所有列
--FROM <表名>;

【备注】使用星号(*)的话就无法设定列的显示顺序
3.为列设定别名:AS 关键字
SELECT shohin_id AS Id, shohin_mei AS Name, shiire_tanka Price
FROM Shohin; -- 不用 AS 关键字也可以

SELECT shohin_id AS "编号", shohin_mei AS '名称', shiire_tanka '价格'
FROM Shohin; -- 设定汉语别名:加上双引号(")或单引号(')

4.常数的查询
SELECT '产品' AS Product, -- '产品':字符串常数
38 AS Price, -- 38:数字常数
'2016-09-30' AS '生产日期' -- '2009-02-24':日期常数

【备注】字符串和日期使用单引号(')。
5.从结果中删除重复行:DISTINCT

原图
(1)
SELECT DISTINCT shohin_bunrui FROM dbo.Shohin; -

使用 DISTINCT 移除 shohin_bunrui 列中的重复数据
(2)DISTINCT 对 NULL 类型的处理:存在多条 NULL 值的行时,会结合为一条 NULL 数据。
SELECT DISTINCT shiire_tanka FROM dbo.Shohin;

(3)多列之前使用 DISTINCT
SELECT DISTINCT shohin_bunrui, torokubi
FROM dbo.Shohin

DISTINCT 会将多个列的数据进行组合,将重复的数据结合为一条。
【注意】DISTINCT 关键字只能用在第一个列名之前。
6.筛选记录:WHERE
WHERE 子句中可以指定“某一列的值和这个字符串相等”或者“某一列的值大于这个数字”等条件,找出只符合该条件的记录。
--语法:
--SELECT <列名>, ...
--FROM <表名>
--WHERE <条件表达式>;

SELECT shohin_id, shohin_mei, shohin_bunrui
FROM dbo.Shohin
WHERE shohin_bunrui = '衣服'; -- shohin_bunrui = '衣服':为条件表达式

选取行之后,再输出列
【备注】WHERE 子句:首先通过该子句查询出符合指定条件的记录,再选取出 SELECT 语句指定的列。
【注意】SQL 子句的书写格式是固定的,不能随意更改。如 WHERE 子句必须紧跟在 FROM 子句后。
7.注释的写法
注释对于 SQL 的执行没有任何影响。
-- 单行注释 /*
多行注释
*/
二、算术运算符和比较运算符
1.算术运算符
SELECT shohin_mei, hanbai_tanka, hanbai_tanka * 2 AS 'hanbai_tanka_x2'
FROM dbo.Shohin;

图 商品单价的两倍
| 含义 | 运算符 |
| 加法 | + |
| 减法 | - |
| 乘法 | * |
| 除法 | / |
括号(“(”“)”)可以提高表达式的优先级。
2.需要注意 NULL
SELECT 5 + NULL, 10 - NULL, 1 * NULL, 4 / NULL, NULL / 9;

【备注】所有包含 NULL 的计算,结果肯定为 NULL。
3.比较运算符
| 运算符 | 含义 |
| = | 相等 |
| <> | 不等 |
| >= | 大于等于 |
| > | 大于 |
| <= | 小于等于 |
| < | 小于 |
--示例1:
SELECT shohin_mei, shohin_bunrui
FROM dbo.Shohin
WHERE hanbai_tanka = 500;

选取 hanbai_tanka 列为 500 的记录
--示例2
SELECT shohin_mei, shohin_bunrui
FROM dbo.Shohin
WHERE hanbai_tanka <> 500;
--示例3
SELECT shohin_mei, shohin_bunrui
FROM dbo.Shohin
WHERE hanbai_tanka != 500;

选取 hanbai_tanka 列的值不是 500 的记录
--示例4
SELECT *
FROM dbo.Shohin
WHERE hanbai_tanka - shiire_tanka >= 500;

3.对字符串使用不等号时的注意事项
-- DDL:创建表
CREATE TABLE Chars
(chr CHAR(3) NOT NULL,
PRIMARY KEY (chr)); -- DML:插入数据
INSERT INTO Chars VALUES ('');
INSERT INTO Chars VALUES ('');
INSERT INTO Chars VALUES ('');
INSERT INTO Chars VALUES ('');
INSERT INTO Chars VALUES ('');
INSERT INTO Chars VALUES ('');
创建表

原图
--示例:选取出大于'2'的数据的 SELECT 语句
SELECT *
FROM dbo.Chars
WHERE chr > '';

【注意】chr 为字符串类型,对字符串类型的数据进行大小比较时,跟数字不一样。
4.不能对 NULL 使用比较运算符
--示例1:
SELECT shohin_mei, shiire_tanka
FROM dbo.Shohin
WHERE shiire_tanka = NULL; --错误的 SELECT 语句 --示例2
SELECT shohin_mei, shiire_tanka
FROM dbo.Shohin
WHERE shiire_tanka IS NULL; --选取 NULL 的记录 --示例3
SELECT shohin_mei, shiire_tanka
FROM dbo.Shohin
WHERE shiire_tanka IS NOT NULL; --选取不为 NULL 的记录

【注意】希望选取 NULL 记录时,使用 IS NULL;希望选取不是 NULL 的记录时,使用 IS NOT NULL。
三、逻辑运算符
1.NOT 运算符:取反
--示例:
SELECT *
FROM dbo.Shohin
WHERE NOT hanbai_tanka >= 1000; --等价于 hanbai_tanka < 1000

取 hanbai_tanka 列不大于 1000 的记录(hanbai_tanka < 1000)
2.AND 运算符和 OR 运算符
AND 运算符:并且,在两侧的查询条件都成立时整个查询条件才成立。
OR 运算符:在两侧的查询条件就算只有一个成立时整个查询条件都成立。
--示例
SELECT shohin_mei, shiire_tanka
FROM dbo.Shohin
WHERE shohin_bunrui = '厨房用具'
AND hanbai_tanka >= ;

SELECT shohin_mei, shiire_tanka
FROM dbo.Shohin
WHERE shohin_bunrui = '厨房用具'
OR hanbai_tanka >= ;

【备注】多个查询条件进行组合时,需要使用 AND 运算符或者 OR 运算符。
2.通过括号进行强化
--示例1
SELECT shohin_mei,
shohin_bunrui,
torokubi
FROM dbo.Shohin
WHERE shohin_bunrui = '办公用品'
AND torokubi = '2009-09-11'
OR torokubi = '2009-09-20';

--示例2
SELECT shohin_mei,
shohin_bunrui,
torokubi
FROM dbo.Shohin
WHERE shohin_bunrui = '办公用品'
AND (torokubi = '2009-09-11'
OR torokubi = '2009-09-20');

【备注】AND 运算优先于 OR 运算,想要优先执行 OR 运算时可以使用括号。
传送门
备注
这里的语句采用 SQL Server 进行验证。
CREATE TABLE Shohin
(shohin_id CHAR(4) NOT NULL,
shohin_mei VARCHAR(100) NOT NULL,
shohin_bunrui VARCHAR(32) NOT NULL,
hanbai_tanka INTEGER ,
shiire_tanka INTEGER ,
torokubi DATE ,
PRIMARY KEY (shohin_id)); INSERT INTO Shohin VALUES ('', 'T恤' ,'衣服', 1000, 500, '2009-09-20');
INSERT INTO Shohin VALUES ('', '打孔器', '办公用品', 500, 320, '2009-09-11');
INSERT INTO Shohin VALUES ('', '运动T恤', '衣服', 4000, 2800, NULL);
INSERT INTO Shohin VALUES ('', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
INSERT INTO Shohin VALUES ('', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
INSERT INTO Shohin VALUES ('', '叉子', '厨房用具', 500, NULL, '2009-09-20');
INSERT INTO Shohin VALUES ('', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
INSERT INTO Shohin VALUES ('', '圆珠笔', '办公用品', 100, NULL, '2009-11-11');
建表语句:CREATE TABLE Shohin
【参考】《SQL ゼロからはじめるデータベース操作》
[SQL] SQL 基础知识梳理(二) - 查询基础的更多相关文章
- Golang 基础之基础语法梳理 (二)
大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第二章节 Golang 基础之基础语法梳理 (一) Gol ...
- Anliven - 基础知识梳理汇总 - 软件测试
基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式
SQL 基础知识梳理(六)- 函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2. ...
- [SQL] SQL 基础知识梳理(七)- 集合运算
SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 ...
- Go基础知识梳理(二)
Go基础知识梳理(二) 简单函数的定义 //有参数有返回值 func sum(a int, b int) int { return a + b } //无返回值 func sum(a int, b i ...
随机推荐
- 10个最好用的HTML/CSS 工具、插件和资料库
大家在使用HTML/CSS开发项目的过程中,有使用过哪些工具,插件和库?下面介绍的10种HTML/CSS工具,插件和资料库,是国外程序员经常用到的. Firebug Lite FirebugLite ...
- C# Excel导入、导出【源码下载】
本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...
- C#多线程之线程池篇2
在上一篇C#多线程之线程池篇1中,我们主要学习了如何在线程池中调用委托以及如何在线程池中执行异步操作,在这篇中,我们将学习线程池和并行度.实现取消选项的相关知识. 三.线程池和并行度 在这一小节中,我 ...
- [C#] C# 知识回顾 - 异常介绍
异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally ...
- PHP与JAVA构造函数的区别
早期的PHP是没有面向对象功能的,但是随着PHP发展,从PHP4开始,也加入了面向对象.PHP的面向对象语法是从JAVA演化而来,很多地方类似,但是又发展出自己的特色.以构造函数来说,PHP4中与类同 ...
- 在知乎上看到 Web Socket这篇文章讲得确实挺好,从头看到尾都非常形象生动,一口气看完,没有半点模糊,非常不错
在知乎上看到这篇文章讲得确实挺好,从头看到尾都非常形象生动,一口气看完,没有半点模糊,非常不错,所以推荐给大家,非常值得一读. 作者:Ovear链接:https://www.zhihu.com/que ...
- css text-fill-color与text-stroke讲解
顾名思义"text-fill-color"就是文字填充颜色而"text-stroke"就是文字描边.还别说,两个属性可以制作出各种炫酷的文字效果,不过IE系列都 ...
- Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- yaf的简单入门
1.目录结构: 2.入口文件 入口文件是所有请求的入口,一般都借助于rewrite规则,把所有的请求都重定向到这个入口文件. 一个经典的入口文件 public/index.php 3.重写规则 需要 ...
- 安卓自定义组合控件--toolbar
最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...