SQL-运算符、真值表、where、groupby、having、orderby、聚合函数的用法

更新时间:2023-06-19 06:27:39 阅读: 评论:0

SQL-运算符、真值表、where、groupby、having、orderby、聚合函数的⽤法SQL-运算符、真值表、where、group by、having、order by、聚合函数的⽤法
语句遵循的原则:
from
join
香港回归
on
where
group by
avg,sum…
*having * 有时候这个也会先于lect执⾏,因为有缓存,后⾯会详细介绍
lect
distinct
20篇读书笔记order by
limit
第⼆章:基础查询与排序
2.1 SELECT语句基础
2.1.1 从表中选取数据
SELECT语句
从表中选取数据时需要使⽤SELECT语句,也就是只从表中选出(SELECT)必要数据的意思。通过SELECT语句查询并选取出必要数据的过程称为匹配查询或查询(query)。
基本SELECT语句包含了SELECT和FROM两个⼦句(clau)。⽰例如下:
SELECT<;列名>,
FROM<;表名>;
其中,SELECT⼦句中列举了希望从表中查询出的列的名称,⽽FROM⼦句则指定了选取出数据的表的名称。
2.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 ='⾐服';
2.1.3 相关法则
星号(*)代表全部列的意思。
SQL中可以随意使⽤换⾏符,不影响语句执⾏(但不可插⼊空⾏)。
设定汉语别名时需要使⽤双引号(")括起来。
在SELECT语句中使⽤DISTINCT可以删除重复⾏。
注释是SQL语句中⽤来标识说明或者注意事项的部分。分为1⾏注释"-- “和多⾏注释两种”/* */"。
-- 想要查询出全部列时,可以使⽤代表所有列的星号(*)。
SELECT*
FROM<;表名>;
-- SQL语句可以使⽤AS关键字为列设定别名(⽤中⽂时需要双引号(“”))。
李元霸简介SELECT product_id    As id,
product_name  As name,
purcha_price AS"进货单价"
FROM product;
-
- 使⽤DISTINCT删除product_type列中重复的数据
SELECT DISTINCT product_type
FROM product;
2.2 算术运算符和⽐较运算符
2.2.1 算术运算符
谢谢的英文怎么说SQL语句中可以使⽤的四则运算的主要运算符如下:
含义运算符
加法+
减法-
乘法*
除法/
2.2.2 ⽐较运算符
-- 选取出sale_price列为500的记录
SELECT product_name, product_type
FROM product迷蝴蝶
WHERE sale_price =500;
SQL常见⽐较运算符如下:
运算符含义
=和~相等
<> 或者 !=和~不相等
>=⼤于等于~
>⼤于~
运算符含义
<=⼩于等于~
<⼩于~
2.2.3 常⽤法则
SELECT⼦句中可以使⽤常数或者表达式。
使⽤⽐较运算符时⼀定要注意不等号和等号的位置。
我的家庭作文字符串类型的数据原则上按照字典顺序进⾏排序,不能与数字的⼤⼩顺序混淆。
希望选取NULL记录时,需要在条件表达式中使⽤IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使⽤IS NOT NULL运算符。
相关代码如下:
-- SQL语句中也可以使⽤运算表达式
SELECT product_name, sale_price, sale_price *2AS"sale_price x2"
FROM product;
-- WHERE⼦句的条件表达式中也可以使⽤计算表达式
SELECT product_name, sale_price, purcha_price
FROM product
WHERE sale_price-purcha_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, purcha_price
FROM product
WHERE purcha_price IS NULL;
-- 选取不为NULL的记录
SELECT product_name, purcha_price
FROM product
WHERE purcha_price IS NOT NULL;
2.3 逻辑运算符
2.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;
2.3.2 AND运算符和OR运算符
当希望同时使⽤多个查询条件时,可以使⽤AND或者OR运算符。
AND 相当于“并且”,类似数学中的取交集;
OR 相当于“或者”,类似数学中的取并集。
通过括号优先处理
如果要查找这样⼀个商品,该怎么处理?
“商品种类为办公⽤品”并且“登记⽇期是 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');
2.3.3 真值表
复杂运算时该怎样理解?
当碰到条件较复杂的语句时,理解语句含义并不容易,这时可以采⽤真值表来梳理逻辑关系。
本节介绍的三个运算符 NOT、AND 和 OR 称为逻辑运算符。这⾥所说的逻辑就是对真值进⾏操作的意思。真值就是值为真(TRUE)或假(FALSE)其中之⼀的值。
例如,对于 sale_price >= 3000 这个查询条件来说,由于 product_name 列为 ‘运动 T 恤’ 的记录的 sale_price 列的值是 2800,因此会返回假(FALSE),⽽ product_name 列为 ‘⾼压锅’ 的记录的sale_price 列的值是 5000,所以返回真(TRUE)。
AND 运算符两侧的真值都为真时返回真,除此之外都返回假。
OR 运算符两侧的真值只要有⼀个不为假就返回真,只有当其两侧的真值都为假时才返回假。
NOT运算符只是单纯的将真转换为假,将假转换为真。
含有NULL时的真值
NULL的真值结果既不为真,也不为假,因为并不知道这样⼀个值。
这时真值是除真假之外的第三种值——不确定(UNKNOWN)。⼀般的逻辑运算并不存在这第三种值。SQL 之外的语⾔也基本上只使⽤真和假这两种真值。与通常的逻辑运算被称为⼆值逻辑相对,只有 SQL 中的逻辑运算被称为三值逻辑。
三值逻辑下的AND和OR真值表特殊的为:
真 > 不确定 > 假
真 + 不确定 = 不确定
假 + 不确定 = 假
真 | 不确定 = 真
假 | 不确定 = 不确定
练习题-第⼀部分
2.1
编写⼀条SQL语句,从 product(商品) 表中选取出“登记⽇期(regist)在2009年4⽉28⽇之后”的商品,查询结果要包含 product name 和regist_date 两列。
lect product_name, regist_date
from product
where regist_date >'2009-04-28';
2.2
请说出对product 表执⾏如下3条SELECT语句时的返回结果。
中国英语单词SELECT*
FROM product
WHERE purcha_price =NULL;
SELECT*
FROM product
WHERE purcha_price <>NULL;
SELECT*
FROM product
WHERE product_name >NULL;
全部是空的, 因为null不参与运算,只能判断is null 或者 is not null
>一起塑造

本文发布于:2023-06-19 06:27:39,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/988989.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:运算符   条件   数据   语句
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图