重温SQL查询基础知识

重温SQL查询基础知识

运算符

算术运算符有4个:加减乘除 + - * /

Select id,name, age * 2 as "age"
from Student

比较运算符有8个

= , <> , >= , <= , > , <
is null 、is not null

  1. 不能对null使用比较运算符 ,查询为null数据;
select * from students
where sex  is null

逻辑运算符有3个

not and or

  1. and运算优先于or运算符

对表进行聚合查询

  1. 使用聚合函数对表中的列进行合计值或平均值等合计操作
  2. 通常,聚合函数会对null以外的对象进行合计,但是只有Count(*)函数例外
  3. 使用Distinect关键字删除重复值
    将多行汇总成一行

count:计算表中的记录数(行数)
sum:数据合计值
avg:数据平均值
max:数据最大值
min:数据最小值

不能在where语句中使用聚合函数!

select avg(a) from shohin;

对表分组 Gruop by

  1. 使用group by子句可以像切蛋糕那样将表进行分割,通过使用group by子句,将表分割后再进行聚合
  2. 聚合键中包含NULL时,在结果中会以空行形式表现出来
  3. where子句不能使用聚合函数
select 商品名称,count(*)
from store
group by 商品名称

为聚合结果指定条件 Having

  1. 使用COUNT函数等碓对表中的数据进行聚合操作时,为其指定条件的不是where子句,而是需要Having子句
  2. 聚合函数可以在SELECT子句,HAVING子句,和ORDER BY子句中使用
  3. having子句要写在group by子句之后
  4. where 子句用来指定数据行的条件,Having子句用来指定分组的条件
select a, count(*)
from shoin
group by a  //1
having count(*) > 2  //2

排序

  1. order by desc 降序 asc升序 放在最后
  2. 指定多个排序键,会优先使用左侧的建,如果存在相同值的话,会接着参考右侧的键。
  3. null的顺序,会在开头或者末尾进行汇总

事务

  1. 事务是需要在通一个处理单元中执行的一系列更新处理的集合,通过使用事务,可以对数据库中的数据更新处理的提交和取消进行管理.
  2. 事务处理的提交指令COMMIT 和 ROLLBACK取消处理两种.
  3. dbms的事务具有原子性(Atomcity)一致性(Consistency),隔离性(Isolation)和持久性(Durablity)四种特性,统称为ACID特性

sql sever:

begin transaction;
    update ...
    update ...
commit;
回滚事务
begin transaction;
    update ...
    update ...
rollback;

视图

  1. 从sql的角度来看,视图和表是相同的,两者的区别在于表中保存的是实际的数据,而视图中保存的是SQL语句(视图本身并不保存数据)
  2. 是用视图,可以轻松的完成跨多表查询数据等复杂操作
  3. 可以将常用的select语句做成视图来使用
  4. 创建视图需要使用CREATE VIVE语句
  5. 视图包含“不能使用 order by”和 “可对其进行有限制的更新”两项限制
  6. 删除视图需要使用DROP VIEW语句
  7. 多重视图 以视图为基础创建视图 消耗性能 不建议使用7.多重视图 以视图为基础创建视图 消耗性能 不建议使用

创建/删除视图

create view 视图名称(<视图列名1>,<视图列名2>,...)
AS
<select语句>

create view ShohinSum(商品名称, 合计)
as
select 商品名称,count(*)
from store
group by 商品名称

drop view ShohinSum;

视图子查询

标量子查询的书写位置(几乎所有地方都可以使用)

select shohin_id, shohinmei, hanbai_tanka
from  Shohin
where hanbai_tanka > avg(hanbai_tanka)

函数/谓词/case表达式

函数有以下几种:
算术函数(±*/)
abs (数值)–求绝对值
mod(被除数,除数) --求余
round(对象数值,保留小数的位数) --四舍五入

字符串函数
str1 || str2 --拼接
length(str) – 计算字符串长度
lower(str) --小写转换
upper(str) --大写转换
REPLACE(对象字符串,替换前的字符串,替换后的字符串),可以将字符串的一部分替换成其他的字符串
SUBSTRING(对象字符串 from 截取的起始位置 for 截取的字符数)
例如截取出字符串中第3位和第4 位的字符

select str1,SUBSTRING(str1 from 3 for 2) as sub_str from sampleStr

日期函数

select  CURRENT_DATE; 查询当前日期
select cast(current_timestamp as date) as cur_date; 日期
select cast(current_timestamp as time) as cur_date; 时间
select current_timestamp;  日期和时间

获取年月日时分秒

select current_timestamp,
DATEPART(YEAR ,current_timestamp ) as year,
DATEPART(MONTH ,current_timestamp ) as month,
DATEPART(DAY ,current_timestamp ) as day,
DATEPART(HOUR ,current_timestamp ) as hour,
DATEPART(MINUTE ,current_timestamp ) as minute,
DATEPART(SECOND ,current_timestamp ) as second;

转换函数 CAST
字符串转数值

select  CAST('0001' as integer) as int_col;

字符串转日期

select  CAST('2019-12-14' as date) as date_col;

COALESCE - 将null转换为其他值

select  COALESCE(NULL ,1) as col_1;

谓词(判断是否存在满足条件的记录)

  • like
  • between
  • is null, is not null
  • in, not in
  • exists
select shohin_mei,hanbai_kanka
	from Shohin sa S
	where EXIST (select *
	from TenpoShohin as TS
	where ts.tenpo_id = '000'
	and ts.shoin_id = s.shohin_id
)

case 表达式

正如CASE(情况)这个词的含义所示,是在区分情况时使用的,这种情况的区分在程序中通常称为“条件分歧”

使用case表达式能够将select语句的结果进行组合

CASE WHEN <判断表达式> then <表达式>
    WHEN <判断表达式> then <表达式>
    WHEN <判断表达式> then <表达式>
    。。。
    ELSE <表达式>
END

case 表达式的便利之处就在于它是一个表达式,之所以这么说,是因为表达式可以书写在任意位置,也就是像“1+1”这样写在上面位置都可以,例如,可以使用Case表达式将下述select语句结果中的行和列进行互换。

集合运算(集合运算会导致记录行数的减少)

  1. 集合运算就是对瞒住同一规则的记录进行的加减等四则运算
  2. 使用union(并集)、intersect(交集)、except(差集)等运算符来进行集合运算
  3. 集合运算符可以去除重复行
  4. 如果希望保留重复行,就需要使用All选项
select shohin_id, shohin_mei
from Shohin
except
select shohin_id, shohin_mei
from Shohin2
order by shohin_id;

联结运算(以A中的列为桥梁,将B中满足同样条件的列汇总到同一个结果中)

内连接 inner join 选取同时存在于两张表中的数据

外连接 outer join 相反 只要数据存在于某一张表中,就能够读取出来

外连接的要点 - 指定哪张表作为主表?

外链接指定哪张表作为主表,最终的结果会包含主表内所有的数据,指定主表的关键字是left 和 right

使用left 时from 子句中写在左侧的表是主表,反之,使用right时右侧的表是主表

链接: 原文链接.

本文首发自公众号:Web小项目

在这里插入图片描述
Web小项目收录了优质项目源代码,不同场景解决方案,有大量的开发资料和面试资源,利用碎片时间掌握基础,欢迎大家的关注,并提出宝贵意见,共同学习!

每个程序员,心里都有一片花海!
孤勇之后,世界尽在眼前!
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值