1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 阿里云天池龙珠计划SQL训练营Task 2:SQL基础查询与排序

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

时间:2021-08-09 23:52:02

相关推荐

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

一、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 通过括号优先处理

如果要查找这样一个商品,该怎么处理?

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

理想结果为“打孔器”,但当你输入以下信息时,会得到错误结果

– 将查询条件原封不动地写入条件表达式,会得到错误结果

SELECT product_name, product_type, regist_date

FROM product

WHERE product_type = ‘办公用品’

AND regist_date = ‘-09-11’

OR regist_date = ‘-09-20’;

错误的原因是是 AND 运算符优先于 OR 运算符,想要优先执行OR运算,可以使用括号:

– 通过使用括号让OR运算符先于AND运算符执行

SELECT product_name, product_type, regist_date

FROM product

WHERE product_type = ‘办公用品’

AND ( regist_date = ‘-09-11’

OR regist_date = ‘-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真值表为:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。