小白学语句:SQL笔记2

空值处理函数
isnull(expression,value):如果expression不为空则返回
expression,否则返回value。select isnull(Name,’匿名’) as姓
名from dbo_Person1

CASE函数用法
单值判断,相当于switch case
case expression
when value1 then returnvalue1
when value2 then returnvalue2
when value3 then returnvalue3
else defaultreturnvalue
end

例子
select Name,
(case FLevel when 1 then ‘VIP客户’
when 2 then ‘高级客户’
when 3 then ‘普通客户’
else ‘客户类型错误’
end) as FLevelName
from T_Customer
这里写图片描述
select Name
(case
when FSalary<3500 then ‘低收入’
when FSalary>=3500 and FSalary<5000 then ‘中等收入’
else ‘高收入’
end)as 收入水平
from dbo_Person1
这里写图片描述

练习1:
单号 金额
Rk1 10
Rk2 20
Rk3 -30
Rk4 -10
将上表格输出以下格式
单号 收入 支出
Rk1 10 0
Rk2 20 0
Rk3 0 30
Rk4 0 10
添加行
Insert into T_Text1(FNumber,FAmourt)Values(‘Rk2’,20)
Insert into T_Text1(FNumber,’FAmourt)Values(‘Rk3’,-30)
Insert into T_Text1(FNumber,FAmourt)Values(‘Rk4’,-10)
select FNumber as 单号,
(case when FAmourt>0 then FAmourt else 0 end)as 收入,
(case when FAmourt<0 then ABS(FAmourt) else 0 end)as 支出,
from T_Text1
这里写图片描述

练习2:
有一张表T_Scores,记录比赛成绩
Date Name Score
2018-9-11 拜仁 胜
2018-9-12 奇才 胜
2018-9-13 湖人 胜
2018-9-14 拜仁 负
2018-9-15 拜仁 负
2018-9-16 奇才 胜

要求输出以下格式
Name 胜 负
拜仁 1 2
奇才 2 0
湖人 1 0

添加表和数据

Create Table T_Scores(Date date null,Name nvarchar(50),Score nvarchar(10))
insert into T_Scores(Date,Name,Score)values(cast('2018-9-11'as datetime),N'拜仁',N'胜')
insert into T_Scores(Date,Name,Score)values(cast('2018-9-12'as datetime),N'奇才',N'胜')
insert into T_Scores(Date,Name,Score)values(cast('2018-9-13'as datetime),N'湖人',N'胜')
insert into T_Scores(Date,Name,Score)values(cast('2018-9-14'as datetime),N'拜仁',N'负')
insert into T_Scores(Date,Name,Score)values(cast('2018-9-15'as datetime),N'拜仁',N'负')
insert into T_Scores(Date,Name,Score)values(cast('2018-9-16'as datetime),N'奇才',N'胜')

首先定义如果是“胜”,那么输出1,否则输出0,定义为胜
然后定义如果是“负”,那么输出1,否则输出0,定义为负
select Name,
(case Score when N’胜’ then 1 else 0 end)as 胜,
(case Score when N’负’ then 1 else 0 end)as 负
from T_Scores
这里写图片描述
最后把每个名字下结果加起来sum
select Name,
SUM(case Score when N’胜’ then 1 else 0 end)as 胜,
SUM(case Score when N’负’ then 1 else 0 end)as 负
from T_Scores
group by Name
这里写图片描述

表连接Join
有客户表(T_Customers)和订单表(T_Orders)两个表,客户表字

段为:Id、Name、Age,订单表字段为:Id、BillNo、CustomerId,订

单表通CustomerId关联客户表
select o.BillNo,c.Name,c.Age
from T_Orders as o
join T_Customers as c on o.CustomerId=C.Id
要求显示所有年龄大于15岁的顾客购买的订单号、客户姓名、客户年龄
要求显示年龄大于平均年龄的顾客购买的订单
inner join 、Left join、Right join

添加表和数据

create table [T_Customers](
[Id] [int] not null,
[Name] [nvarchar](50) collate Chinese_PRC_CI_AS null,[Age] [int] null);
insert [T_Customers]([Id],[Name],[Age])values(1,N'Tom',10);
insert [T_Customers]([Id],[Name],[Age])values(2,N'Jerry',10);
insert [T_Customers]([Id],[Name],[Age])values(3,N'John',10);
insert [T_Customers]([Id],[Name],[Age])values(4,N'Lily',10);
insert [T_Customers]([Id],[Name],[Age])values(5,N'Lucy',10);

create table [T_Orders](
[Id] [int] not null,
[BillNo] [nvarchar](50) collate Chinese_PRC_CI_AS null,[CustomersId] [int] null);
insert [T_Orders]([Id],[BillNo],[CustomersId])values(1,N'001',1);
insert [T_Orders]([Id],[BillNo],[CustomersId])values(2,N'002',1);
insert [T_Orders]([Id],[BillNo],[CustomersId])values(3,N'003',3);
insert [T_Orders]([Id],[BillNo],[CustomersId])values(4,N'004',2);
insert [T_Orders]([Id],[BillNo],[CustomersId])values(5,N'005',2);
insert [T_Orders]([Id],[BillNo],[CustomersId])values(6,N'006',5);
insert [T_Orders]([Id],[BillNo],[CustomersId])values(7,N'007',4);
insert [T_Orders]([Id],[BillNo],[CustomersId])values(8,N'008',5);

建立两表的关系:
select o.BillNo ,c.Name,c.Age
from T_Orders as o join T_Customers as c on o.CustomersId=c.Id
–定义T_Orders的副名为o,定义T_Customers的副名为c,
o的CustomersId等于c的Id
这里写图片描述
–要求显示所有年龄大于15岁的顾客购买的订单号、客户姓名、客户年龄
select o.BillNo ,c.Name,c.Age
from T_Orders as o join T_Customers as c on o.CustomersId=c.Id
where c.Age>15
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值