第二章 查询基础

Part12.1 SELECT语句基础

2.1.1 列的查询

基本语法:

SELECT <列名1>,<列名2>,……
FROM <表名>;

例子:如:  从Product (商品)表中, 查询 product_id (商品编号) 列、 product_name (商品名称)列和 purchase_price (进货单价) 列

SELECT product_id, product_name, purchase_price
FROM Product;

查询结果中列的顺序和  SELECT 子句中的顺序相同

2.1.2 查询出表中的所有列

基本语法:

SElECT *
FROM <表名>;

例子:如查询Product表中全部列

SElECT *
FROM Product;

与全部列的查询语句的结果是一样的:

SELECT product_id, product_name, product_type, sale_price,
  purchase_price, regist_date  
FROM Product;

2.1.3 为列设定别名

SQL 语句可以使用AS 关键字为列设定别名

基本语法

SELECT product_id AS id,
       product_name AS name,
       purchase_price AS price
FROM Product;

例子:别名可以使用中文, 使用中文时需要用双引号(")括起来. 请注意不是单引号(').设定中文别名的SELECT语句

SELECT product_id AS "商品编号",
       product_name AS "商品名称",
       purchase_price AS "进货单价" 
FROM Product;

2.1.4 常数的查询

SELECT子句中不仅可以书写列名, 还可以书写常数.

代码清单中的SELECT子句中的第一列'商品'是字符串常数, 第2列38是数字常数, 第3列'2009-02-24'是日期常数, 它们将与product id列和product name列一起被查询出来.

SELECT '商品' AS string, 38 AS number, '2009-02-24' AS date,  
        product_id, product_name  
FROM Product;

 

2.1.5 从结果中删除重复行

可以通过在 SELECT 子句中使用 DISTINCT 来实现

基本语法

SELECT DISTINCT <列名1>,<列名2>,......
FROM <表名>;

例子:一列数据删除重复行如:使用DISTINCT删除product_type列中重复的数据

SELECT DISTINCT product_type  
FROM Product;

多列数据删除重复行DISTINCT也可以像下面代码清单那样在多列之前使用. 此时, 会将多个列的数据进行组合, 将重复的数据合并为一条. 代码清单中的SELECT语句, 对product_type(商品种类)列和regist_date(登记日期)列的数据进行组合, 将重复的数据合并为一条.

SELECT DISTINCT product_type, regist_date  
FROM Product;
DISTINCT 关键字只能用在第一个列名之前

2.1.6 根据WHERE语句来选择记录

SELECT语句通过WHERE子句来指定查询数据的条件. 在WHERE子句中可以指定"某一列的值和这个字符串相等"或者"某一列的值大于这个数字"等条件. 执行含有这些条件的SELECT语句, 就可以查询出只符合该条件的记录了.

基本语法

SELECT <列名>, ……  
  FROM <表名>  
 WHERE <条件表达式>;

例子:如: 用来选取product_type列为'衣服'的记录的SELECT语句

SELECT product_name, product_type  
  FROM Product  
 WHERE product_type = '衣服';

 

也就是首先通过 WHERE 子句查询出符合指定条件的记录, 然后再选取出 SELECT 语句指
定的列

 如果只想知道商品名称的话, 可以只选出product_name 列 

 

SELECT product_name  
    FROM Product  
  WHERE product_type = '衣服';
SQL 中子句的书写顺序是固定的, 不能随意更改.WHERE 子句必须紧跟在 FROM 子句之后, 书写顺序发生改变的话会造成执行错误

2.1.7 注释的书写方法

基本语法:

  • 1行注释: 书写在"--"之后, 只能写在同一行
  • 多行注释: 书写在"/*"和"*/"之间, 可以跨多行

Part22.2 算术运算符和比较运算符

2.2.1 算术运算符

加减乘除(+-*/)

例:把各个商品单价的2倍(sale_price的2倍)以"sale_price_x2"列的形式读取出来.

SELECT product_name, sale_price,  
    sale_price * 2 AS "sale_price_x2"  
FROM Product;

结果

 

 

需要注意NULL 常数与NULL的加减乘除,以及NULL除以常数或者除以0, 结果都是NULL

 

2.2.2 比较运算符

WHERE子句中使用比较运算符

运算符含义
= 和~相等
<> 和~不相等
>= 大于等于~
> 大于~
<= 小于等于~
< 小于~

 

 

字符串的比较运算符
专门筛选NULL的运算符IS NULL运算符 以及选取不是NULL的运算IS NOT NULL运算符

Part32.3 逻辑运算符

2.3.1 NOT运算符

表示否定

2.3.2 AND运算符和OR运算符

  • AND运算符--在其两侧的查询条件都成立时整个查询条件才成立, 其意思相当于“并且”
  • OR运算符--在其两侧的查询条件有一个成立时整个查询条件都成立, 其意思相当于“或者”

2.3.3 通过括号强化处理

如"商品种类为办公用品"并且"登记日期是2009年9月11日或者2009年9月20日"

SELECT product_name, product_type, regist_date  
    FROM Product  
  WHERE product_type = '办公用品'  
    AND ( regist_date = '2009-09-11'  
       OR regist_date = '2009-09-20');

2.3.4 逻辑运算符和真值

和NULL相关的逻辑运算, 是不确定(UNKNOWN)

转:HeatonHsu 

posted on 2023-09-09 22:28  欢笑一声  阅读(31)  评论(0)    收藏  举报

导航