-- Tips: 查询基础
-- 一, SELECT 语句基础
-- 1. 查询指定列: SELECT 关键字
-- 语法:
--SELECT <列名>, ... -- 希望查询列的名称
--FROM <表名> -- 指定选取数据的表
-- 从 Conbio 中取 3 列
SELECT Conbio_id,Conbio_name,Conbio_Varieties -- 列的顺序可以任意指定, 逗号 (",") 分隔, 查询结果的顺序和 SELECT 子句中的顺序相同.
- FROM Conbio;
- ------------------
--2. 查询表的所有列: 星号(*)
-- 语法
--SELECT * -- 星号 (*) 代表所有列
--FROM <表名>;
- ------------------
- select *
- from Conbio;
--[备注] 使用星号 (*) 的话就无法设定列的显示顺序.
--------------------------------------
--3. 为列设定别名: AS 关键字
SELECT Conbio_id AS Id, Conbio_name AS Name, Conbio_price1 Price1 -- 不用 AS 关键字也可以
- FROM Conbio;
- ------------------
- SELECT Conbio_id AS "编号", Conbio_name AS '名称', Conbio_price1 '价格 1'
- FROM Conbio;
-- 设定汉语别名: 加上双引号 (") 或单引号(')
--------------------------------------
--4. 常数的查询
SELECT '产品' AS Product, -- '产品': 字符串常数
39 AS Price, -- 38: 数字常数
'2016-09-30' AS '生产日期' -- '2016-09-30': 日期常数
--[备注] 字符串和日期使用单引号(').
------------------
select * from -- 查询表名为 Conbio 的表.
- conbio;
- --------------------------------------
-- 5. 从结果中删除重复行: DISTINCT
--(1)
SELECT DISTINCT Conbio_Varieties FROM dbo.Conbio; -- 移除重复
------------------
--(2)DISTINCT 对 NULL 类型的处理: 存在多条 NULL 值的行时, 会结合为一条 NULL 数据.
- SELECT DISTINCT conbio_price2 FROM dbo.conbio;
- ------------------
--(3)多列之前使用 DISTINCT
SELECT DISTINCT Conbio_price1, Conbio_date
FROM dbo.Conbio
--DISTINCT 会将多个列的数据进行组合, 将重复的数据结合为一条.
--[注意] DISTINCT 关键字只能用在第一个列名之前.
--------------------------------------
--6. 筛选记录: WHERE
-- WHERE 子句中可以指定 "某一列的值和这个字符串相等" 或者 "某一列的值大于这个数字" 等条件, 找出只符合该条件的记录.
-- 语法:
--SELECT <列名>, ...
--FROM <表名>
--WHERE <条件表达式>;
- ------------------
- select conbio_id,conbio_name,Conbio_Varieties
from dbo.Conbio
where Conbio_Varieties = '衣服'; --Conbio_Varieties='衣服'; 为条件表达式.
--[备注] where 子句: 首先通过该子句查询出符合指定条件的记录, 再选取出 select 语句指定的列.
--[注意] SQL 子句的书写格式是固定的, 不能随意的更改. 如 where 子句必须紧跟在 from 子句后.
--------------------------------------
--7. 注释的写法
-- 注释对于 SQL 的执行没有任何影响.
-- 单行注释
- /*
- 多行注释
- */
- --------------------------------------
-- 二, 算术运算符和比较运算符
-- 1. 算术运算符
SELECT Conbio_name, Conbio_price1, Conbio_price2 * 2 AS 'Conbio_price1_x2' -- 括号 ("("")") 可以提高表达式的优先级.
- FROM dbo.Conbio;
- --------------------------------------
--2. 需要注意 NULL
SELECT 5 + NULL, 10 - NULL, 1 * NULL, 4 / NULL, NULL / 9;
--[备注] 所有包含 NULL 的计算, 结果肯定为 NULL.
--------------------------------------
--3. 比较运算符
-- 比较运算符 运算符 含义
-- = 相等
-- <> 不等
-- >= 大于等于
-- > 大于
-- <= 小于等于
-- < 小于
-- 示例 1:
- SELECT Conbio_name, Conbio_Varieties
- FROM dbo.Conbio
- WHERE Conbio_price1 = 500;
- ------------------
-- 示例 2
- SELECT Conbio_name, Conbio_Varieties
- FROM dbo.Conbio
- WHERE Conbio_price1 <> 500;
- ------------------
-- 示例 3
- SELECT Conbio_name, Conbio_varieties
- FROM dbo.Conbio
- WHERE Conbio_Price1 != 500;
- ------------------
-- 示例 4
- select *
- from dbo.Conbio
- where Conbio_price1 - conbio_price2>=500;
- --------------------------------------
--3. 对字符串使用不等号时的注意事项
-- 示例: 选取出大于'2'的数据的 SELECT 语句
create Table Chars -- 创建表名为 chars 的表
(
chr varchar(20) -- 设定列名为 chr 类型 varchar(20)
- );
- ------------------
-- 插入值 (自定义值) 到表名为 chars 表中.
insert into chars values (1)
insert into chars values (10)
insert into Chars values (11)
insert into Chars values (2)
insert into Chars values (222)
insert into Chars values (3)
------------------
select * from Chars; -- 查询名为 chars 的表
- ------------------
- SELECT *
- FROM dbo.Chars
- WHERE chr> '2';
--[注意] chr 为字符串类型, 对字符串类型的数据进行大小比较时, 跟数字不一样.
--------------------------------------
--4. 不能对 NULL 使用比较运算符
-- 示例 1:
SELECT Conbio_name, Conbio_price2
FROM dbo.Conbio
WHERE Conbio_price2 = NULL; -- 错误的 SELECT 语句
--[注意] 希望选取 NULL 记录时, 使用 IS NULL; 希望选取, 不是(不是)(不是) "NULL" 的记录时, 使用 IS NOT NULL.
-- 示例 2
SELECT Conbio_name, Conbio_price2
FROM dbo.Conbio
WHERE Conbio_price2 IS NULL; -- 选取 NULL 的记录(无效的空值)
-- 示例 3
SELECT Conbio_name, Conbio_price2
FROM dbo.Conbio
WHERE Conbio_price2 IS NOT NULL; -- 选取不为 NULL 的记录(不为无效空值)
--------------------------------------
-- 三, 逻辑运算符
-- 1.NOT 运算符: 取反
-- 示例:
SELECT *
FROM dbo.Conbio
WHERE NOT Conbio_price1>= 1000; -- 等价于 hanbai_tanka <1000
--------------------------------------
--2.AND 运算符和 OR 运算符
-- AND 运算符: 并且, 在两侧的查询条件 <都成立> 时整个查询条件才成立.
-- OR 运算符: 在两侧的查询条件就算 <只有一个成立> 时整个查询条件都成立.
-- 示例
- SELECT Conbio_name, Conbio_price2
- FROM dbo.Conbio
- WHERE Conbio_Varieties = '厨房用具'
- AND Conbio_price1>= 3000;
- ------------------
- SELECT Conbio_name, Conbio_price2
- FROM dbo.COnbio
- WHERE Conbio_Varieties = '厨房用具'
- OR Conbio_price1>= 3000;
--[备注] 多个查询条件进行组合时, 需要使用 AND 运算符或者 OR 运算符.
--------------------------------------
--2. 通过括号进行强化
-- 示例 1
- SELECT Conbio_name,
- Conbio_Varieties,
- Conbio_date
- FROM dbo.Conbio
- WHERE Conbio_Varieties = '办公用品'
- AND Conbio_date = '2009-09-11'
- OR Conbio_date = '2009-09-20';
- ------------------
-- 示例 2
- SELECT Conbio_name,
- Conbio_Varieties,
- Conbio_date
- FROM dbo.Conbio
- WHERE Conbio_Varieties = '办公用品'
- AND (Conbio_date = '2009-09-11'
- OR Conbio_date = '2009-09-20');
--[备注] AND 运算优先于 OR 运算, 想要优先执行 OR 运算时可以使用括号.
来源: http://www.bubuko.com/infodetail-2564260.html