查询基础

  • 前言
  • 整体思维导图
  • 列的查询
    • 语法2.1 基本的SELECT语句
    • 代码示例:从Product表中输出3列
      • 执行结果
  • 查询出所有的列
    • 语法2.2 查询全部的列
    • 代码示例2.2 输出Product表中全部的列
      • 执行结果
  • 为列设置别名
    • 代码示例2.3 为列设置别名
      • 执行结果
    • 代码示例2.4 设置中文别名
      • 执行结果
  • 常数的查询
    • 代码示例2.5 查询常数
      • 执行结果
  • 从结果中删除重复行
    • 代码示例2.6 使用DISTINCT删除product_type列中重复的数据
      • 执行结果
    • 代码示例2.7 在多列之前使用DISTINCT
      • 执行结果
  • 根据WHERE语句来选择记录
    • 语法示例2.3 SELECT语句中的WHERE子句
    • 代码示例2.8 用来选取product_type列为'衣服'的记录的SELECT语句
      • 执行结果
  • SQL注释的书写方法
    • 单行注释
      • 代码示例2.9 单行注释
    • 多行注释
      • 代码示例2.10 多行注释
  • 算术运算符和比较运算符
    • 比较运算符
      • 代码示例2.11 选取出销售单价大于等于1000日元的记录
        • 执行结果
      • 代码示例2.12 选取出登记日期在2009年9月27日之前的记录
        • 执行结果
      • 代码示例2.13 WHERE子句的条件表达式中也可以使用计算表达式
        • 执行结果
  • 对字符串使用不等号时的注意事项
  • 不能对NULL使用比较运算符
    • 代码示例2.14 选取NULL的记录
      • 执行结果
    • 代码示例2.15 选取不为NULL的记录
      • 执行结果
  • 逻辑运算符
    • NOT运算符
      • 代码示例2.16
        • 执行结果
    • AND运算符和OR运算符
      • 代码示例2.17 在WHERE子句的查询条件中使用AND运算符
        • 执行结果
      • 代码示例 2.18 在WHERE子句的查询条件中使用OR运算符
        • 执行结果
    • 注意 AND运算符优先于OR运算符
      • 代码示例2.19
        • 执行结果
      • 代码示例2.20 通过括号让OR运算符优先于AND运算符执行
        • 执行结果
  • 如果博主的文章对您有所帮助,可以评论、点赞、收藏,支持一下博主!!!

前言

系统学习SQL的笔记,用于记录学习过程。

整体思维导图

列的查询

从表中选取数据是需要使用SELECT语句,通过SELECT语句查询并选取出必要数据的过程称为匹配查询或查询(query)

语法2.1 基本的SELECT语句

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

该SELECT语句包含SELECT和FROM两个子句(clause)。子句是SQL语句的组成要素,是以SELECT或者FROM等作为起始的短语。

SELECT子句中列举了希望从表中查询出的列的名称,而FROM子句则指出选择出数据的表的名称。

代码示例:从Product表中输出3列

 SELECT product_id, product_name, purchase_price  FROM Product;

执行结果


SELECT语句第一行的SELECT product_id, product_name, purchase_price就是SELECT子句。查询出的列的顺序可以任意指定。查询多列时,需要使用逗号进行分隔。查询结果中列的顺序和SELECT子句中的顺序相同。

查询出所有的列

想要查询出全部列是,可以使用代表所有列的星号(*)

语法2.2 查询全部的列

 SELECT *  FROM <表名>;

代码示例2.2 输出Product表中全部的列

 SELECT *  FROM Product;

执行结果


注意:星号(*)代表全部列的意思。但是,如果使用星号的话,就无法设定列的显示顺序了。这时就会按照CREATE TABLE语句的定义对列进行排序。

为列设置别名

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

代码示例2.3 为列设置别名

SELECTproduct_id AS id,product_name AS `name`,purchase_price AS price
FROMProduct;

执行结果

代码示例2.4 设置中文别名

SELECTproduct_id AS "商品编号",product_name AS "商品名称",purchase_price AS "进货单价"
FROMProduct;

通过执行结果就可以知道相对于英文别名来说,会更好理解与操作。

执行结果


注意:设定汉语别名时需要使用双引号(")括起来。

常数的查询

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

代码示例2.5 查询常数

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

执行结果

从结果中删除重复行

想要删除重复行时,可以通过在SELECT子句中使用DISTINCT来实现

代码示例2.6 使用DISTINCT删除product_type列中重复的数据

 SELECT DISTINCT product_type  FROM Product;

执行结果


注意:在SELECT语句中使用DISTINCT可以删除重复行。
在使用DISTINCT时,NULL也被视为一类数据。NULL存在于多行中时,也会被合并为一条NULL数据。

代码示例2.7 在多列之前使用DISTINCT

SELECT DISTINCTproduct_type,regist_date
FROMProduct;

执行结果


注意:DISTINCT关键字只能用在第一个列名之前,因此,请大家注意不能写成regist_date, DISTINCT product_type。

根据WHERE语句来选择记录

SELECT语句通过WHERE子句来指定查询数据的条件。

语法示例2.3 SELECT语句中的WHERE子句

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

代码示例2.8 用来选取product_type列为’衣服’的记录的SELECT语句

SELECTproduct_name,product_type
FROMProduct
WHEREproduct_type = '衣服';

执行结果


通过WHERE子句查询出符合指定条件的记录,然后再选取出SELECT语句指定的列。
注意:SQL中子句的书写顺序是固定的,不能随意更改。WHERE子句必须紧跟在FROM子句之后,书写顺序发生改变的话会造成执行错误。

SQL注释的书写方法

注释对SQL的执行没有任何影响。因此,无论是英文字母还是汉字都可以随意使用。
注释的书写方法有如下两种。

单行注释

书写在"–"之后,只能写在同一行。

代码示例2.9 单行注释

-- 本SELECT语句会从结果中删除重复行。
SELECT DISTINCTproduct_id,purchase_price
FROMProduct;
SELECT DISTINCTproduct_id,purchase_price-- 本SELECT语句会从结果中删除重复行。
FROMProduct;

多行注释

多行注释
书写在“ /*
”和“ /”之间,可以跨多行。

代码示例2.10 多行注释

/* 本SELECT语句,   会从结果中删除重复行。*/
SELECT DISTINCT
product_id,
purchase_price
FROMProduct;
SELECT DISTINCTproduct_id,purchase_price/* 本SELECT语句,   会从结果中删除重复行。*/FROMProduct;

这些SELECT语句的执行结果与没有使用注释时完全一样。注释能够帮助阅读者更好地理解SQL语句,特别是在书写复杂的SQL语句时注释不仅可以写在SELECT语句中,而且可以写在任何SQL语句当中。

算术运算符和比较运算符

四则运算使用的运算符(+,-,*,/)成为算术运算符。运算符就是使用两边的值进行四则运算或者字符串拼接、数值大小比较等运算,并返回结果的符号。加法运算符(+)前后入股欧式数字或者数字类型的列名的话,就会返回加法运算的结果。

括号可以提升运算的优先顺序(优先进行运算)。
包含NULL的运算,其结果也是NULL。

比较运算符

比较运算符可以用来判断列或者值是否相等,还可以用来比较大小。

比较运算符 含义
= 相等
<> 不相等
.>= 大于等于
.> 大于
<= 小于等于
< 小于

代码示例2.11 选取出销售单价大于等于1000日元的记录

SELECTproduct_name,product_type,sale_price
FROMProduct
WHEREsale_price >= 1000;

执行结果

代码示例2.12 选取出登记日期在2009年9月27日之前的记录

SELECTproduct_name,product_type,regist_date
FROMProduct
WHEREregist_date < '2009-09-27';

执行结果


还可以使用比较运算符对计算结果进行比较

代码示例2.13 WHERE子句的条件表达式中也可以使用计算表达式

SELECTproduct_name,sale_price,purchase_price
FROMProduct
WHEREsale_price - purchase_price >= 500;

执行结果

对字符串使用不等号时的注意事项

字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。

不能对NULL使用比较运算符

SQL提供了专门用来判断是否为NULL的IS NULL运算符。想要选取NULL的记录时,可以像代码示例2.14那样来书写条件表达式。

代码示例2.14 选取NULL的记录

SELECTproduct_name,purchase_price
FROMProduct
WHEREpurchase_price IS NULL;

执行结果


希望选取不是NULL的记录时,需要使用IS NOT NULL运算符

代码示例2.15 选取不为NULL的记录

SELECTproduct_name,purchase_price
FROMProduct
WHEREpurchase_price IS NOT NULL;

执行结果

希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符。

逻辑运算符

通过使用逻辑运算符,可以将多个查询条件进行组合。
通过NOT运算符可以生成“不是~”这样的查询条件。
两边条件都成立时,使用AND运算符的查询条件才成立。
只要两边的条件中有一个成立,使用OR运算符的查询条件就可以成立。

NOT运算符

NOT不能单独使用,必须和其他查询条件组合起来使用。例如,选取出销售单价(sale_price)不大于等于1000日元的记录的SELECT语句如下所示

代码示例2.16

SELECT product_name,product_type,sale_priceFROMProductWHERENOT sale_price >=1000;

执行结果

AND运算符和OR运算符

在实际使用当中,往往都是同时指定多个查询条件对数据进行查询的。例如,想要查询“商品种类为厨房用具、销售单价大于等于3000日元”或“进货单价大于等于5000日元或小于1000日元”的商品等情况。
在WHERE子句中使用AND运算符或者OR运算符,可以对多个查询条件进行组合。
AND运算符在其两侧的查询条件都成立是整个查询条件才成立,意思相当于“并且”
OR运算符在其两侧的查询条件有一个成立整个查询条件都成立,意思相当于“或者”

例如,从Product表中选取出“商品种类为厨房用具(product_type = ‘厨房用具’),并且销售单价大于等于3000日元(sale_price >= 3000)的商品”

代码示例2.17 在WHERE子句的查询条件中使用AND运算符

SELECTproduct_name,purchase_price
FROMProduct
WHEREproduct_type = '厨房用具' AND sale_price >= 3000;

执行结果

选取出“商品种类为厨房用具(product_type = ‘厨房用具’),或者销售单价大于等于3000日元(sale_price >= 3000)的商品”

代码示例 2.18 在WHERE子句的查询条件中使用OR运算符

SELECTproduct_name,purchase_price
FROMProduct
WHEREproduct_type = '厨房用具' OR sale_price >= 3000;

执行结果

注意 AND运算符优先于OR运算符

查询条件:“商品种类为办公用品” 并且“登记日期是2009年9月11日或者2009年9月20日”

代码示例2.19

SELECTproduct_name,product_type,regist_date
FROMProduct
WHEREproduct_type = '办公用品' AND regist_date = '2009-09-11' OR regist_date = '2009-09-20';

执行结果


过观察发现,不想要的T恤衫和菜刀和叉子也被选择出来了,这是由于AND运算符优选与OR运算符导致的。
将代码示例2.19的条件表达式会被解释翻译成下面这样:

「 product_type = '办公用品'
AND regist_date = '2009-09-11'」
OR 「 regist_date = '2009-09-20'」

也就是,“商品种类为办公用品,并且登记日期是2009年9月11日”
或者
“登记日期是2009年9月20日”这和想要指定的查询条件并不相符

想要优先执行OR运算符时,可以通过使用括号将OR运算符优先于AND运算符执行。

代码示例2.20 通过括号让OR运算符优先于AND运算符执行

SELECTproduct_name,product_type,regist_date
FROMProduct
WHEREproduct_type = '办公用品' AND ( regist_date = '2009-09-11' OR regist_date = '2009-09-20' );

执行结果

如果博主的文章对您有所帮助,可以评论、点赞、收藏,支持一下博主!!!

SQL基础——查询基础相关推荐

  1. Hive SQL数据查询基础

    教材第四章Hive SQL数据查询基础实验 提示:如果感觉sogou.500w.utf8文件太大,执行hive命令太耗时间,可以执行以下命令,截取前1万行数据,生成一个新的数据文件sogou.1w.u ...

  2. sql语句查询——基础篇(1)

    1.基础语句查询: SELECT 列名称 FROM 表名称 SELECT * FROM 表名称 2.sql去重问题: 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(dist ...

  3. SQL数据库查询基础(主讲MySQL,必要时补充了SQLServer、Access兼容性说明)

    目录 一. 逻辑运算符 1. 执行的优先级 2. 多个 or 子句的简化写法 - IN 二. 模糊查询 通配符 与 Like 三. SQL语句中的计算字段 四. SQL 子句的执行顺序 五. 系统函数 ...

  4. SQL Server 查询基础

    常用的行聚合函数和功能 行聚合函数 描述 count(*) 返回数据中的项数 count({ [ [ all或distinct ] 列名 ] } ) 返回某列的个数 avg({ [ [ all或dis ...

  5. groovy怎样从sql语句中截取表名_SQL常用的基础查询语句

    数据分析过程中,我们经常可以看到提数的SQL语句,了解SQL常用的基础查询语句,是检验提数逻辑是否正确的途径之一,并且也能更方便使用SMART BI数据分析工具.今天就让小编带大家走进SQL基础查询的 ...

  6. 【SQL】SQL(基础查询)、SQL(关联查询)

    原文链接:https://blog.csdn.net/kuangzhixuan/article/details/74299047?utm_source=blogxgwz2 SQL(基础查询) 1.1. ...

  7. SQL语法之基础查询(进阶1)and条件查询(进阶2)

    SQL语法体系学习笔记 SQL语法之基础查询(进阶1)and条件查询(进阶2) SQL语法之排序查询(进阶3)and常见函数(进阶4) SQL语法之分组函数,分组查询(进阶5)and连接查询(sql9 ...

  8. Task02:SQL基础查询与排序-天池龙珠计划SQL训练营

    Task02:SQL基础查询与排序 一.SELECT语句基础 1.1 从表中选取数据 SELECT语句 1.2从表中选取符合条件的数据 WHERE语句 1.3 相关法则 星号(*)代表全部列的意思. ...

  9. 窥探SQL: 2.基础查询与排序

    窥探SQL: 2.基础查询与排序 基础查询 语句 关键词 SELECT WHERE FROM, As, DISTINCT 基本法则 运算符 算术运算符 比较运算符 逻辑运算符 NOT AND 和 OR ...

最新文章

  1. 4514: [Sdoi2016]数字配对
  2. sql 只取一条记录_后端程序员必备:书写高质量SQL的30条建议
  3. Jq学习笔记(7)JQ动画
  4. BZOJ2208 [Jsoi2010]连通数
  5. 数据结构面试的常客,一文带你深入了解堆
  6. CM: UPDATE_PAYLOAD_FROM_ADDINSCH
  7. uva 11536——Smallest Sub-Array
  8. 手机连接蓝牙扫码枪_宝马车与手机无法蓝牙连接的技术通报
  9. ubuntu系统debootstrap的使用(构建一套基本的系统)
  10. java retry怎么用_java retry使用详解
  11. 数据库热备份 Xtrabackup安装及使用
  12. JavaScript 事件相关
  13. Python基础——pickle(保存与提取数据)
  14. 基于ADS54J40的JESD204B ADC 1GHz采样逻辑开发笔记
  15. cox回归模型python实现_生存分析Cox回归模型(比例风险模型)的spss操作实例
  16. 留美学子安全手册,这个可以有
  17. 减脂单吃全麦面包太乏味?全麦面包的N种吃法合集
  18. windows 禁用中文输入法
  19. 拼拼有礼开发功能总结 拼拼有礼APP开发分享
  20. [AGC004E] Salvage Robots (DP)

热门文章

  1. 如何开启多个独立Chrome浏览器
  2. ps烫金效果教程:ps制作烫金凹陷字体
  3. 如何正确理解企业文化
  4. RC4加密算法及其实现
  5. [Scheme]Understanding the Yin-Yang Puzzle
  6. 2022CVPR云分享 | 清华大学四位讲者带你玩转计算机视觉
  7. 中华民族传统文化精髓___二十四孝
  8. 动态规划:蜗牛爬井问题
  9. 读书笔记;月亮与六便士
  10. 设备驱动程序安装的重要文件