Day7 SQL常用命令续集

1、连接查询join...on

连接查询适用于当需要的结果来自多张表时。
内连接:inner join,查询两表中完全匹配的数据;
左外连接:left outer join,查询两表中完全匹配的数据,以及左表特有的数据;
左外连接:left outer join,查询两表中完全匹配的数据,以及右表特有的数据;
完全外连接:full outer join,查询两表中完全匹配的数据,以及左表特有的数据,还有右表特有的数据;

示例:

select * from StudentInfo as si inner join ClassInfo as ci on si.cid=ci.cId--查
询表StudentInfo中cid与表ClassInfo中cId完全匹配的所有列,as:为表取别名,StudentInfo
as si就是为表Student取别名为si
select * from ClassInfo as ci left join StudentInfo as si on ci.cId=si.cid--查
询表ClassInfo中cId与表StudentInfo中cid完全匹配的,以及ClassInfo特有的所有列,

2、聚合函数

聚合函数用于对行数据进行合并,一般是对数字类型的列进行操作,一条查询中可以写多个聚合函数(null不参与运算)。
常用聚合函数:sum(求和)、avg(求平均值)、count(计数)、max(求最大值)、min(求最小值)。

sum示例:计算表StudentInfo中列cid的和,并取别名为sum

select SUM(cid) as sum from StudentInfo

avg示例:计算表StudentInfo中列cid的平均值

select AVG(cid) from StudentInfo

count示例:计算StudentInfo表中一共多少行,如果存在某行的值全为null,则不计数

select COUNT(*) from StudentInfo 

max示例:查询表StudentInfo的列cid的最大值

select MAX(cid) from StudentInfo

min示例:查询表StudentInfo的列cid的最小值

select MIN(cid) from StudentInfo

3、开窗函数over()

开窗函数和聚合函数结合使用,用于将聚合结果还原至原数据,便于将聚合结果与原数据进行对比。
开窗函数还可以和排名函数ROW_NUMBER()结合使用。

结合聚合函数示例:计算表StudentInfo的列cid的平均值,并利用开窗函数与原cid进行对比

select *,AVG(cid) over() from StudentInfo

结果:

结合排名函数示例:将表StudentInfo中sGendre=1的数据进行排序,并且进行排号

select *,ROW_NUMBER() over(order by sId desc) as rowindex from 
StudentInfo where sGender=1

结果:

4、分组group by

聚合函数一般结合分组使用,进行分组内的数据统计;分组依据值相同的示例在一组,在结果列中只能出现分组依据列和聚合列。
ps:group by与where共存时,group by写where后面。

单一列依据分组示例:将表studentInfo按照sGender进行分组,并计算每组数量

select sGender,count(*) from StudentInfo group by sGender--分组将屏蔽除分组依据以
外的其他列,故结果集中只能显示分组依据列、聚合函数列

结果:

多列分组示例:将表StudentInfo按照sGender和cid进行分组,并计算每组数量

select sGender,cid,count(*) from StudentInfo group by sGender,cid
select * from StudentInfo

结果:

5、分组结果筛选having

示例:将表StudentInfo按照cid进行分组,并且计算每组数量,筛选出数量大于1的组

select cid,count(*) from StudentInfo group by cid having COUNT(*)>1

6、联合查询union

联合查询:将多个查询的结果集合并成一个结果集。
联合要求:
结果集列数一致;
对应列的类型一致。

关键字:
union:将多个结果集的数据进行合并,并且消除重复行,按照第一列从小到大排序;
union all:将多个结果集进行合并,但不消除重复行,也不排序;
except:差集,A except B表示A结果集中的数据但不包括B结果集中的数据;
intersect:交集,结果集中都有的数据。

union示例:

select cId from ClassInfo union select sId from StudentInfo

结果:

union all示例:

select cId from ClassInfo union all select sId from StudentInfo

结果:

except示例:

select cId from ClassInfo except select sId from StudentInfo

结果:

intersect示例:

select cId from ClassInfo intersect select sId from StudentInfo

结果:

7、快速备份

向未有表备份:select 列名 into 备份表名 from 源表名。
(备份表如果不存在将新建表,表的结构完全一致,但是不包含约束,如果想只包含结构不包含数据,可以加个top 0)
示例:将表ClassInfo的结构和数据快速备份到表test1,将自动新建表test1

select * into test1 from ClassInfo

向已有表备份:insert into 备份表名 select 列名 from 源表名。
示例:向已有表test2中备份表ClassInfo的列cTitle

insert into test2(cTitle) select cTitle from ClassInfo

8、内置函数

8.1、类型转换函数

cast(expression as date_type):将任意类型转到任意类型
convert(date_type ,expression[,style]):将任意类型转到任意类型,如果目标类型是字符串,则style可以设置样式
示例:将89.0000转换成89.0

select CAST(89.0000 as decimal(4,1))
select CONVERT(decimal(4,1),89.0000)
8.2、字符串函数

ascii:求字符的ascii码值;
char:根据ascii码转到字符;
left:自左开始往右截取字符串;
right:自右开始往左截取字符串;
substring:从任意位置开始截取字符串,函数参数:字符串、开始索引、截取数量(索引从1开始);
len:返回字符串的长度;
lower:转小写;
upper:转大写;
ltrim:去除左侧空格;
rtrim:去除右侧空格;

示例:
8.3、日期函数

getDate:获取当前日期时间;
dateAdd:日期加;
dateDiff:日期差;
datePart:取日期的某部分
year:取年;
month:取月;
day:取日。
(返回值都是int类型)

示例:
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容