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

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

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

图片 1

 

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

 

目录

  • SELECT
    语句基础
  • 算术运算符和于运算符
  • 逻辑运算符

 

一致、SELECT 语句基础

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

--语法:
--SELECT <列名>, ...     -- 希望查询列的名称
--FROM <表名>            -- 指定选取数据的表

-- 从 Shohin 中取 3 列
SELECT shohin_id, shohin_mei, hanbai_tanka  -- 列的顺序可以任意指定,逗号(“,”)分隔,查询结果的顺序和 SELECT 子句中的顺序相同
FROM Shohin;

图片 2

 

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

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

图片 3

  【备注】使用星号(*)的语句虽无法设定列的展示顺序

 

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

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

图片 4

 

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

图片 5

 

   4.时常反复的查询

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

图片 6

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

 

  5.由结果吃除去重复行:DISTINCT

图片 7

原图

  (1)

SELECT DISTINCT shohin_bunrui FROM dbo.Shohin;  -

图片 8

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

 

   (2)DISTINCT 对 NULL 类型的拍卖:存在多长长的 NULL
值的新颖,会构成呢同一长条 NULL 数据。

SELECT DISTINCT shiire_tanka FROM dbo.Shohin;

图片 9

   (3)多列之前以 DISTINCT

SELECT DISTINCT shohin_bunrui, torokubi
FROM dbo.Shohin

图片 10

  DISTINCT 会将多单列的多少开展组合,将更的多寡做为同一修。

  【注意】DISTINCT
关键字只能用在首先只列名之前。

 

  6.罗记录:WHERE

  WHERE
子句被得指定“某同排列的价与之字符串相等”或者“某平等列的值大于此数字”等条件,找有就适合该原则的笔录。

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

图片 11

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

图片 12

慎选取行之后,再出口列

  【备注】WHERE
子句:首先通过该子句询问有符合指定条件的记录,再摘出 SELECT
语句指定的排。

  【注意】SQL
子句之写格式是一贯的,不可知自由变动。如 WHERE 子句必须紧跟以 FROM
子句后。

 

  7.注释的写法

  注释对于 SQL 的实行没有其他影响。

--  单行注释

/*
    多行注释
*/

 

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

  1.毕竟术运算符

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

图片 13

希冀 商品单价的点滴加倍

 

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

  

  括号(“(”“)”)可以增强表达式的预先级。

 

  2.得留意 NULL

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

图片 14

  【备注】所有包含
NULL 的测算,结果一定也 NULL。

 

  3.比运算符

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

图片 15

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

图片 16

 选取 hanbai_tanka 列的值未是 500 的笔录

 

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

图片 17

  

  3.对字符串使用不同号时的注意事项

图片 18图片 19

-- DDL:创建表
CREATE TABLE Chars
(chr CHAR(3) NOT NULL,
PRIMARY KEY (chr));

-- DML:插入数据
INSERT INTO Chars VALUES ('1');
INSERT INTO Chars VALUES ('2');
INSERT INTO Chars VALUES ('3');
INSERT INTO Chars VALUES ('10');
INSERT INTO Chars VALUES ('11');
INSERT INTO Chars VALUES ('222');

创建表

图片 20

原图

  

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

图片 21

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

图片 22

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

 

老三、逻辑运算符

  1.NOT 运算符:取反

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

图片 23

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

图片 24

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

图片 25

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

图片 26

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

图片 27

  【备注】AND
运算优先受 OR 运算,想如果事先履 OR 运算时可以使括号。

 

 传送门

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

 

备注

  这里的口舌以 SQL Server 进行验证。

图片 28图片 29

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 ('0001', 'T恤' ,'衣服', 1000, 500, '2009-09-20');
INSERT INTO Shohin VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
INSERT INTO Shohin VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
INSERT INTO Shohin VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
INSERT INTO Shohin VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
INSERT INTO Shohin VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20');
INSERT INTO Shohin VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
INSERT INTO Shohin VALUES ('0008', '圆珠笔', '办公用品', 100, NULL, '2009-11-11');

建表语句:CREATE TABLE Shohin

 


 【参考】《SQL
ゼロからはじめるデータベース操作》

相关文章