[SQL] SQL 基础知识梳理(二) - 查询基础

时间:2022-09-06 21:40:46

SQL 基础知识梳理(二) - 查询基础

【博主】反骨仔    【原文】http://www.cnblogs.com/liqingwen/p/5904824.html

[SQL] SQL 基础知识梳理(二) - 查询基础

  这是《SQL 基础知识梳理(一)- 数据库与 SQL》的下篇。

目录

一、SELECT 语句基础

  1.查询指定列:SELECT 关键字

--语法:
--SELECT <列名>, ... -- 希望查询列的名称
--FROM <表名> -- 指定选取数据的表
-- 从 Shohin 中取 3 列
SELECT shohin_id, shohin_mei, hanbai_tanka  -- 列的顺序可以任意指定,逗号(“,”)分隔,查询结果的顺序和 SELECT 子句中的顺序相同
FROM Shohin;

[SQL] SQL 基础知识梳理(二) - 查询基础

  2.查询表的所有列:星号(*)

--语法
--SELECT * -- 星号(*)代表所有列
--FROM <表名>;

[SQL] SQL 基础知识梳理(二) - 查询基础

  【备注】使用星号(*)的话就无法设定列的显示顺序

  3.为列设定别名:AS 关键字

SELECT shohin_id AS Id, shohin_mei AS Name, shiire_tanka Price
FROM Shohin; -- 不用 AS 关键字也可以

[SQL] SQL 基础知识梳理(二) - 查询基础

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

[SQL] SQL 基础知识梳理(二) - 查询基础

  4.常数的查询

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

[SQL] SQL 基础知识梳理(二) - 查询基础

  【备注】字符串和日期使用单引号(')。

  5.从结果中删除重复行:DISTINCT

[SQL] SQL 基础知识梳理(二) - 查询基础

原图

  (1)

SELECT DISTINCT shohin_bunrui FROM dbo.Shohin;  -

[SQL] SQL 基础知识梳理(二) - 查询基础

使用 DISTINCT 移除 shohin_bunrui 列中的重复数据

  (2)DISTINCT 对 NULL 类型的处理:存在多条 NULL 值的行时,会结合为一条 NULL 数据。

SELECT DISTINCT shiire_tanka FROM dbo.Shohin;

[SQL] SQL 基础知识梳理(二) - 查询基础

  (3)多列之前使用 DISTINCT

SELECT DISTINCT shohin_bunrui, torokubi
FROM dbo.Shohin

[SQL] SQL 基础知识梳理(二) - 查询基础

  DISTINCT 会将多个列的数据进行组合,将重复的数据结合为一条。

  【注意】DISTINCT 关键字只能用在第一个列名之前。

  6.筛选记录:WHERE

  WHERE 子句中可以指定“某一列的值和这个字符串相等”或者“某一列的值大于这个数字”等条件,找出只符合该条件的记录。

--语法:
--SELECT <列名>, ...
--FROM <表名>
--WHERE <条件表达式>;

[SQL] SQL 基础知识梳理(二) - 查询基础

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

[SQL] SQL 基础知识梳理(二) - 查询基础

选取行之后,再输出列

  【备注】WHERE 子句:首先通过该子句查询出符合指定条件的记录,再选取出 SELECT 语句指定的列。

  【注意】SQL 子句的书写格式是固定的,不能随意更改。如 WHERE 子句必须紧跟在 FROM 子句后。

  7.注释的写法

  注释对于 SQL 的执行没有任何影响。

--  单行注释

/*
多行注释
*/

二、算术运算符和比较运算符

  1.算术运算符

SELECT shohin_mei, hanbai_tanka, hanbai_tanka * 2 AS 'hanbai_tanka_x2'
FROM dbo.Shohin;

[SQL] SQL 基础知识梳理(二) - 查询基础

图 商品单价的两倍

四则算术运算符
含义 运算符
加法 +
减法 -
乘法 *
除法 /

  

  括号(“(”“)”)可以提高表达式的优先级。

  2.需要注意 NULL

SELECT 5 + NULL, 10 - NULL, 1 * NULL, 4 / NULL, NULL / 9;

[SQL] SQL 基础知识梳理(二) - 查询基础

  【备注】所有包含 NULL 的计算,结果肯定为 NULL。

  3.比较运算符

比较运算符
运算符 含义
= 相等
<> 不等
>= 大于等于
> 大于
<= 小于等于
< 小于
--示例1:
SELECT shohin_mei, shohin_bunrui
FROM dbo.Shohin
WHERE hanbai_tanka = 500;

[SQL] SQL 基础知识梳理(二) - 查询基础

选取 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;

[SQL] SQL 基础知识梳理(二) - 查询基础

选取 hanbai_tanka 列的值不是 500 的记录

--示例4
SELECT *
FROM dbo.Shohin
WHERE hanbai_tanka - shiire_tanka >= 500;

[SQL] SQL 基础知识梳理(二) - 查询基础

  

  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 ('');

创建表

[SQL] SQL 基础知识梳理(二) - 查询基础

原图

  

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

[SQL] SQL 基础知识梳理(二) - 查询基础

  【注意】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 的记录

[SQL] SQL 基础知识梳理(二) - 查询基础

  【注意】希望选取 NULL 记录时,使用 IS NULL;希望选取不是 NULL 的记录时,使用 IS NOT NULL。

三、逻辑运算符

  1.NOT 运算符:取反

--示例:
SELECT *
FROM dbo.Shohin
WHERE NOT hanbai_tanka >= 1000;  --等价于 hanbai_tanka < 1000

[SQL] SQL 基础知识梳理(二) - 查询基础

取 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 >= ;

[SQL] SQL 基础知识梳理(二) - 查询基础

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

[SQL] SQL 基础知识梳理(二) - 查询基础

  【备注】多个查询条件进行组合时,需要使用 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';

[SQL] SQL 基础知识梳理(二) - 查询基础

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

[SQL] SQL 基础知识梳理(二) - 查询基础

  【备注】AND 运算优先于 OR 运算,想要优先执行 OR 运算时可以使用括号。

传送门

  《SQL 基础知识梳理(一)- 数据库与 SQL

备注

  这里的语句采用 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 基础知识梳理(二) - 查询基础的更多相关文章

  1. Anliven - 基础知识梳理汇总 - 软件测试

    基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...

  2. &lbrack;SQL&rsqb; SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  3. &lbrack;SQL&rsqb; SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  4. &lbrack;SQL&rsqb; SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  5. &lbrack;SQL&rsqb; SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  6. &lbrack;SQL&rsqb; SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式

    SQL 基础知识梳理(六)-  函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2. ...

  7. &lbrack;SQL&rsqb; SQL 基础知识梳理(七)- 集合运算

    SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 ...

  8. MySQL 基础知识梳理

    MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...

  9. &lbrack;C&num; 基础知识梳理系列&rsqb;专题六&colon;泛型基础篇——为什么引入泛型

    引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...

随机推荐

  1. cvc-complex-type&period;2&period;4&period;c&colon; The matching wildcard is strict&comma; but no declaration can be found for element &&num;39&semi;mvc&colon;annotation-driven&&num;39&semi;&period;

    spring 配置文件报错报错信息:cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be ...

  2. Android 数据传递&lpar;一&rpar; Activity之间的数据传递

    bundle Google Bundle类说明 Bundle类是一个key-value对.Activity之间的数据通信可以通过bundle类来实现数据的存储.即将数据放入bundle里面,将Bund ...

  3. 理解css中的position-static&bsol;relative&bsol;fixed&bsol;absolute

    position属性有四个值: static(静态定位):是默认值,不会被特殊的定位,遵循正常的文档流对象,对象占用文档空间,该方式下,top.right.bottom.left.z-index等属性 ...

  4. SVN 提交必填备注Commit

    操作方法:在SVN的Repositories下,找到要配置的项目,在项目目录下找到hooks文件夹,在其下创建pre-commit.bat文件,把下面复制进去就可以了(无需重启,如果改动,保存bat文 ...

  5. C语言如何定义结构体

    原文地址 1. struct与typedef struct区别 struct是结构体的关键字,用来声明结构体变量如 struct  student {   char  num[10];      ch ...

  6. 菜单组件——axure线框图部件库介绍

    软件类的教程,我写不出长篇大论,这里面的都是基础的操作,希望初学者,根据一个功能演示,可以自己测试其他功能菜单的效果! Axure自带的菜单组件,我几乎没有用到过,做菜单导航,我第一时间想到的还是矩形 ...

  7. Cesium几个案例介绍

    前言 本文为大家介绍几个Cesium的Demo,通过这几个Demo能够对如何使用Cesium有进一步的了解,并能充分理解Cesium的强大之处和新功能.其他的无需多言,如果还不太了解什么是Cesium ...

  8. es6对象字面量增强

    相对于ES5,ES6的对象字面量得到了很大程度的增强.这些改进我们可以输入更少的代码同时语法更易于理解.那就一起来看看对象增强的功能.对象字面量简写(Object Literal Shorthand) ...

  9. elk的备份与恢复【转】

    elasticsearch提供了快照功能: 1.在elsticsearch的配置文件中定义一个path.repo路径配置 path.repo: ["/elk/my_backup"] ...

  10. kubernetes系列之ConfigMap使用方式

    作用理解 核心用途就是容器和配置的分离解耦. 如启用一个mysql容器,mysql容器重要的文件有两部分,一部分为存储数据文件,一部分为配置文件my.cnf,存储数据可以用持久存储实现和容器的分离解耦 ...