SQL数据库5

本文详细介绍了SQL数据库的各种查询技巧,包括连接查询、CASE查询、索引、子查询、分页查询、外连接、自链接、多条件搜索、视图、变量设置、循环、事务、存储过程和触发器的使用,涵盖了从基础到进阶的多个方面。
摘要由CSDN通过智能技术生成

连接查询1

  • 查询数据时,当需要将多个表中的列共同显示到一个结果集中的时候,可以使用连接查询。基于笛卡尔积中相等时。
    原表
    在这里插入图片描述
    在这里插入图片描述
select 
	* 
from TblPhoneNum inner join TblPhoneType on TblPhoneNum.pTypeld=TblPhoneType.ptID

在这里插入图片描述

  • 查询部分列时,若两个表的列名相同时应该通过 表名.列名 的方式来限定指定的列时哪张表中的
--查询部分列时,若两个表的列名相同时应该通过 表名.列名 的方式来限定指定的列时哪张表中的
select
	pn.pId,
	pn.pName,
	pn.pCellPhone,
	pt.ptName
	from TblPhoneNum as pn inner join TblPhoneType as pt on pn.pTypeld=pt.ptID --表名太长时可以起别名

在这里插入图片描述

case 查询

原表
在这里插入图片描述

--相当于c#中的if-else,可以判断大于等于的范围
--要求then后面的数据类型必须一致
select
	*,
	头衔=case
			when ULevel=1 then '菜鸟'
			when ULevel=2 then '大神'
			when ULevel=3 then '大师'
			else '骨灰级大师'
		 end
from TblLevel

在这里插入图片描述

--相当于c#中的switch,只能是等值判断,不能判断大于等于的范围
select
	*,
	头衔=case ULevel
		when 1 then '菜鸟'
		when 2 then '大神'
		when 3 then '大师'
		else '骨灰级大师'
	end
from TblLevel

case查询的练习

  1. 成绩等级
    在这里插入图片描述
select
	Id,
	Name,
	English,
	等级=case
		when 95<=English then '优'
		when 80<=English then '良'--若第一个满足则不执行第二个判断,所以不用限制小于
		when 70<=English then '中'
		else '差'
	end
from TblScore

在这里插入图片描述

select * from TblTestA

 select
	*,
	是否及格=case
				when English>=60 and Math>=60 then '及格'
				else '不及格'
			end
from TblScore

在这里插入图片描述

  1. A,B,C比较
    在这里插入图片描述
select
	x=case
			when A>B then A
			else B
		end,
	y=case
			when B>C then B
			else C
		end
from TblTestA

在这里插入图片描述

  1. 显示收入支出
    在这里插入图片描述
select
	单号=number,
	收入=case
			when amount>=0 then amount
			else 0
		end,
	支出=case
			when amount<=0 then -1*amount --或者可以使用abs()求绝对值
			else 0
		end
from TblTestB

在这里插入图片描述

  1. 比赛胜负统计
    在这里插入图片描述
select
	团队=teamName,=sum(case
			when gameResult='胜' then 1
			else 0
		end),=sum(case
			when gameResult='负' then 1
			else 0
		end)
from TblTeamScore
group by teamName

---count不统计空值
select
	团队=teamName,=count(case
			when gameResult='胜' then '胜'
			else NULL
		end),=count(case
			when gameResult='负' then '负'
			else NULL
		end)
from TblTeamScore
group by teamName

在这里插入图片描述

  1. NBA得分排名
    在这里插入图片描述
select 
	teamName,1赛季得分=max(case
					when seasonName='第1赛季' then Score
					else NULL
				end),2赛季得分=max(case
					when seasonName='第2赛季' then Score
					else NULL
				end),3赛季得分=max(case
					when seasonName='第3赛季' then Score
					else NULL
				end)
from TblNBAScore
group by teamName

在这里插入图片描述

索引

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 索引演示
  1. 打开统计信息:查询—查询选项—高级—set statistics time,set statistic io
    在这里插入图片描述
  2. 打开“实际的执行计划”
    在这里插入图片描述
    创建聚集索引的语句creat clustered index 索引名 on 表名
    创建非聚集索引语句creat nonclustered index 索引名on 表名
    删除索引的语句drop index 表名.索引名
    当模糊查询的时候 最好将%放在后面才会用到索引,比如
    where column like 'aa%'

子查询

在这里插入图片描述

  • 独立子查询
select * from TblStudent where ClassId
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值