一、SELECT语句基础

1.1 从表中选取数据

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

基本SELECT语句包含了SELECT和FROM两个子句(clause)。示例如下:

SELECT <列名>,
FROM <表名>;
其中,SELECT子句中列举了希望从表中查询出的列的名称,而FROM子句则指定了选取出数据的表的名称。

1.2从表中选取符合条件的数据

WHERE语句
当不需要取出全部数据,而是选取出满足“商品种类为衣服”“销售单价在1000日元以上”等某些条件的数据时,使用WHERE语句。

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

SELECT <列名>, ……
FROM <表名>
WHERE <条件表达式>;
比较下面两者输出结果的不同:

– 用来选取product type列为衣服’的记录的SELECT语句
SELECT product_name, product_type
FROM product
WHERE product_type = ‘衣服’;
– 也可以选取出不是查询条件的列(条件列与输出列不同)
SELECT product_name
FROM product
WHERE product_type = ‘衣服’;

1.3 相关法则

星号()代表全部列的意思。
SQL中可以随意使用换行符,不影响语句执行(但不可插入空行)。
设定汉语别名时需要使用双引号(")括起来。
在SELECT语句中使用DISTINCT可以删除重复行。
注释是SQL语句中用来标识说明或者注意事项的部分。分为1行注释"-- “和多行注释两种”/
/"。
– 想要查询出全部列时,可以使用代表所有列的星号(
)。
SELECT *
FROM <表名>;
– SQL语句可以使用AS关键字为列设定别名(用中文时需要双引号(“”))。
SELECT product_id AS id,
product_name AS name,
purchase_price AS “进货单价”
FROM product;
– 使用DISTINCT删除product_type列中重复的数据
SELECT DISTINCT product_type
FROM product;

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

2.1 算术运算符

SQL语句中可以使用的四则运算的主要运算符如下:

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

2.2 比较运算符

– 选取出sale_price列为500的记录
SELECT product_namep, roduct_type
FROM product
WHERE sale_price = 500;
SQL常见比较运算符如下:

运算符 含义
= 相等
<> 不相等

= 大于等于
大于
<= 小于等于
< 小于

2.3 常用法则

SELECT子句中可以使用常数或者表达式。
使用比较运算符时一定要注意不等号和等号的位置。
字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。
希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符。
相关代码如下:

– SQL语句中也可以使用运算表达式
SELECT product_name, sale_price, sale_price * 2 AS “sale_price x2”
FROM product;
– WHERE子句的条件表达式中也可以使用计算表达式
SELECT product_name, sale_price, purchase_price
FROM product
WHERE sale_price-purchase_price >= 500;
/* 对字符串使用不等号
首先创建chars并插入数据
选取出大于‘2’的SELECT语句*/
– DDL:创建表
CREATE TABLE chars
(chr CHAR(3)NOT NULL,
PRIMARY KEY(chr));
– 选取出大于’2’的数据的SELECT语句('2’为字符串)
SELECT chr
FROM chars
WHERE chr > ‘2’;
– 选取NULL的记录
SELECT product_name,purchase_price
FROM product
WHERE purchase_price IS NULL;
– 选取不为NULL的记录
SELECT product_name,purchase_price
FROM product
WHERE purchase_price IS NOT NULL;

三、逻辑运算符

3.1 NOT运算符

想要表示“不是……”时,除了前文的<>运算符外,还存在另外一个表示否定、使用范围更广的运算符:NOT。

NOT不能单独使用,如下例:

– 选取出销售单价大于等于1000日元的记录
SELECT product_name, product_type, sale_price
FROM product
WHERE sale_price >= 1000;
– 向代码清单2-30的查询条件中添加NOT运算符
SELECT product_name, product_type, sale_price
FROM product
WHERE NOT sale_price >= 1000;

3.2 AND运算符和OR运算符

当希望同时使用多个查询条件时,可以使用AND或者OR运算符。

  • AND 相当于“并且”,类似数学中的取交集;
  • OR 相当于“或者”,类似数学中的取并集。

如下图所示:
AND运算符工作效果图

OR运算符工作效果图

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’;
错误的原因是是 AND 运算符优先于 OR 运算符,想要优先执行OR运算,可以使用括号:

– 通过使用括号让OR运算符先于AND运算符执行
SELECT product_name, product_type, regist_date
FROM product
WHERE product_type = ‘办公用品’
AND ( regist_date = ‘2009-09-11’
OR regist_date = ‘2009-09-20’);

3.4 真值表

复杂运算时该怎样理解?

当碰到条件较复杂的语句时,理解语句含义并不容易,这时可以采用真值表来梳理逻辑关系。

什么是真值?

本节介绍的三个运算符 NOT、AND 和 OR 称为逻辑运算符。这里所说的逻辑就是对真值进行操作的意思。真值就是值为真(TRUE)或假 (FALSE)其中之一的值。

例如,对于 sale_price >= 3000 这个查询条件来说,由于 product_name 列为 ‘运动 T 恤’ 的记录的 sale_price 列的值是 2800,因此会返回假(FALSE),而 product_name 列为 ‘高压锅’ 的记录的sale_price 列的值是 5000,所以返回真(TRUE)。

AND 运算符**:**两侧的真值都为真时返回真,除此之外都返回假。

OR 运算符**:**两侧的真值只要有一个不为假就返回真,只有当其两侧的真值都为假时才返回假。

NOT运算符**:**只是单纯的将真转换为假,将假转换为真。

真值表

查询条件为P AND(Q OR R)的真值表

3.5 含有NULL时的真值
NULL的真值结果既不为真,也不为假,因为并不知道这样一个值。

那该如何表示呢?

这时真值是除真假之外的第三种值——不确定(UNKNOWN)。一般的逻辑运算并不存在这第三种值。SQL 之外的语言也基本上只使用真和假这两种真值。与通常的逻辑运算被称为二值逻辑相对,只有 SQL 中的逻辑运算被称为三值逻辑。

三值逻辑下的AND和OR真值表为:

阿里云天池龙珠计划SQL训练营Task 2:SQL基础查询与排序相关推荐

  1. Python基础入门(中)--阿里云天池龙珠计划python训练营

    一.学习内容概况 学习地址:天池龙珠计划python训练营 今天主要学习到的内容有: 列表 元祖 字符串 字典 集合 序列 二.具体学习内容 1.列表 简单数据类型 整型<class 'int' ...

  2. 阿里云天池龙珠计划SQL训练营Task 1:初识数据库与SQL

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql: 一.初识数据库 数据库是将大 ...

  3. 【学习笔记】阿里云天池龙珠计划SQL训练营-Task06:综合练习题-10道经典题目

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容 链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql 练习题1: 请使用A股上市公司 ...

  4. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql” Task06学习笔记

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql" Task06学习笔 ...

  5. 阿里云天池龙珠计划SQL训练营Task03:复杂查询方法-视图、子查询、函数等

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql: 3.1 视图 我们先来看一个 ...

  6. 【阿里云天池龙珠计划SQL训练营】SQL复习Task3

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql: 目录 Task03:复杂查询 ...

  7. 【阿里云天池龙珠计划SQL训练营】SQL复习Task2

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql: 目录 Task02:SQL基 ...

  8. 阿里云天池龙珠计划SQL训练营Task04:集合运算-表的加减法和join等

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql: 4.1表的加减法 4.1.1 ...

  9. 阿里云天池龙珠计划SQL训练营——Day2

    Day 2: 本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql: 比较运算符:& ...

  10. python海龟图画龙珠_阿里云天池龙珠计划——Python基础入门第2课:变量和赋值...

    阿里云天池龙珠计划--Python基础入门第2课:变量和赋值 [我是测试题2]下面这段代码的运行结果是什么? # 运行一下结果就出来了 a = "hello" b = " ...

最新文章

  1. JavaScript脚本文件学习总结
  2. ASP.NET MVC: EF 没有创建数据库表
  3. 解决ECSHOP后台订单里面点击编辑配送方式时出现的警告问题
  4. 2020-11-13(四大组件简单回忆内容)
  5. koa --- seesion实现登录鉴权
  6. leetcode585. 2016年的投资(SQL)
  7. Alpha冲刺(7/10)
  8. 极路由4pro(HC5962)设置阿里云DDNS
  9. Build-Docker-Image-from-Zero: 从零构建Docker镜像
  10. python文本分类算法_python编写朴素贝叶斯用于文本分类
  11. 腾达无线路由器如何开启无线中继功能
  12. 关于ws2811单片机控制方式的总结
  13. postgresal去重_postgresql数据库去重方法
  14. 富瑞和SMBC Group宣布结成战略联盟来推动增长
  15. QQ透明头像通用设置教程!不仅简单而且免费!
  16. 数据分析报告入门(3)
  17. 利用node爬取王者荣耀英雄信息,并存入数据库
  18. only女装2011春款 only2011新款春装 only女装官网专卖
  19. Java给PNG透明图片加水印,亲测可用
  20. (CVPR 2019)PointPillars: Fast Encoders for Object Detection From Point Clouds

热门文章

  1. 电子计算机计算精度不高,(1)计算机的特点是处理速度快、计算精度高、存储容量大、可靠性高、工作全自动以及...
  2. [Linux 基础] -- V4L2 实例分析 —— vivi.c 源码详解(深度好文)
  3. css3+jquery+js做的翻翻乐小游戏
  4. Java从入门到放弃09---多态/向上转型/向下转型/多态内存图/抽象类/关键字abstract不能和哪些关键字共存/接口/类与类,类与接口,接口与接口的关系/抽象类与接口的区别
  5. [nrf51][nrf52][三方通讯] PC/手机 MCU BLE 通讯模板 仅供参考
  6. 关于Endnote导入文献以及将参考文献插入到word文件的简单介绍
  7. 低代码有多爽?1个月的活,只需3天干完
  8. 《结构化思维》思维导图读书笔记精选内容,理论和实际结合运用
  9. 用计算机一级考试考的照片要求,全国计算机等级考试报名须知:如何上传照片...
  10. 富士施乐 C2560 C3060 出现代码:116-331 故障分析