其实一套简单实用的SQL脚本,你总有你所需要的的问题并不复杂,但是又很多的朋友都不太了解,因此呢,今天小编就来为大家分享一套简单实用的SQL脚本,你总有你所需要的的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
创建表测试(id int,name nvarchar(20),quarter int,number int)插入测试值(1,N’apple’,1,1000)插入测试值(1,N’apple’,2,2000 )插入测试值(1,N’apple’,3,4000)插入测试值(1,N’apple’,4,5000)插入测试值(2,N’pear’,1,3000)插入插入测试值(2,N’Pear’,2,3500)插入测试值(2,N’Pear’,3,4200)插入测试值(2,N’Pear’,4,5500)select * from测试结果:
选择ID、名称、[1] 作为“第一季度”、[2] 作为“第二季度”、[3] 作为“第三季度”、[4] 作为“第四季度”fromtestpivot(sum(number)forquarter in( [1],[2],[3],[4])) 作为pvt 结果:
2.如何使用列转行UNPIOVT
创建表test2(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int)插入test2 值(1,’Apple’,1000,2000,4000,5000)插入test2 值(2 ,’Pear’,3000,3500,4200,5500)从test2 结果中选择*:
–列到行选择id,name,quarter,numberfromtest2unpivot(numberforquarter in([Q1],[Q2],[Q3],[Q4])) 作为unpvt 结果:
3.字符串替换SUBSTRING/REPLACE
SELECT REPLACE(‘abcdefg’,SUBSTRING(‘abcdefg’,2,4),’**’) 结果:
选择REPLACE(‘13512345678’,SUBSTRING(‘13512345678′,4,11),’********’) 结果:
SELECT REPLACE(‘12345678@qq.com’,’1234567′,’******’) 结果:
4.查询表HAVING中相同的记录
如果一个ID可以区分的话可以这样写
SELECT*FROMHR.Employees 结果:
select * from HR.Employeeswhere title in (select title from HR.Employeesgroup by titlehaving count(1)1) 结果:
经过对比发现,ID为1和2的被过滤掉了,因为它们只有一条记录。
如果可以用几个ID来区分的话可以这样写
select * from HR.Employeeswhere title+titleofcourtesy in(select title+titleofcourtesyfrom HR.Employeesgroup by title,titleofcourtesyhaving count(1)1) 结果:
title与titleofcourtesy拼接后,只有ID为6、7、8、9的才有资格。
我们将原来的4列增加到6列。细心的朋友可能发现了,这个结果怎么和上面的行列转换一模一样呢?其实上面的行到列的转换就省略了,这是比较常见的写法。
语法1:插入到表(字段1,字段2,) 值(值1,值2,)
语法2:Insert into Table2(field1,field2,) select value1,value2, from Table1
(要求目标表Table2存在,由于目标表Table2已经存在,所以除了插入源表Table1的字段外,我们还可以插入常量。)
语法3:从Table1 中SELECT vale1, value2 到Table2
7. 使用带有关联子查询的Update 语句更新数据
–方法一:Update Table1set c=(select c from Table2 where a=Table1.a)where c is null –方法二:update Aset newqiantity=B.qiantityfrom A,Bwhere A.bnum=B.bnum–方法3:更新(从A.bnum=B.bnum 上的Aleft join B 选择A.bnum、A.newqiantity、B.qiantity)AS Cset C.newqiantity=C.qiantitywhere C.bnum=’001’8。连接到远程服务器
–方法一:select * from openrowset(‘SQLOLEDB’,’server=192.168.0.1;uid=sa;pwd=password’,’SELECT * FROM dbo.test’) –方法二:select * from openrowset(‘ SQLOLEDB’,’192.168.0.1′;’sa’;’password’,’SELECT * FROM dbo.test’) 当然也可以参考前面的例子建立DBLINK进行远程连接
9.日期和时间样式CONVERT
CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以以不同格式显示日期/时间数据。
语法
CONVERT(数据类型(长度),要转换的数据,样式)
data_type(length) 指定目标数据类型(具有可选长度)。 data_to_be_converted包含需要转换的值。 style 指定日期/时间输出格式。
可能的样式值:
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/121822.html
用户评论
素颜倾城
这套SQL脚本真方便!我就遇到了一个查找重复值的BUG,用了这个脚本解决了,太棒了!效率超高,比自己手动写代码快多了。
有11位网友表示赞同!
减肥伤身#
这个工具我之前就一直想找呢!做数据分析经常需要查阅一部分特定数据,用这个脚本直接就能搞定了,省去很多时间和精力,简直就是神器!
有19位网友表示赞同!
ゞ香草可樂ゞ草莓布丁
说起来简单的实用的SQL脚本好像很少啊?这篇文章的标题还比较吸引人,我得看看内容吧,希望不是网上那种忽悠人的东西。
有19位网友表示赞同!
陌颜
终于找着可以帮到我的资源了!我现在手头有一堆数据需要整理,很多查询都很麻烦,这个脚本能帮忙解决大部分问题,真是太好了!
有15位网友表示赞同!
有些人,只适合好奇~
我对数据库操作不太熟悉,这套脚本看起来太复杂了,我怕还是自己用Excel更方便。不过内容看起来还不错,也许以后再详细学习一下SQL脚本吧。
有18位网友表示赞同!
志平
这套脚本里没有包含常用的统计函数吗?比如求平均值、方差这些,我经常需要用到这类的功能,看来还需要我自己修改啊。
有13位网友表示赞同!
断秋风
感觉文章写得比较浅薄,没有提供很多实际的应用例子和教程,只是简单的介绍了一下脚本的功能,希望作者能完善一下内容。
有20位网友表示赞同!
心悸╰つ
这个脚本是不是可以用来处理大型数据库的数据?我需要查询几百万条数据,不知道能不能用这套脚本。期待作者回复!
有14位网友表示赞同!
命里缺他
写的不错啊,感觉这套脚本非常实用,特别是解决重复值的查询问题,我之前就很头疼这个问题,现在终于有了解决方法了!
有14位网友表示赞同!
烟雨离殇
这个SQL脚本太棒了!以后做数据分析工作的时候可以节省很多时间了,真是太感谢作者了!
有12位网友表示赞同!
不要冷战i
文章虽然标题写的吸引人,但内容却比较单调,没有很多精辟的讲解和案例说明,感觉有点失望。
有13位网友表示赞同!
微信名字
我需要查询不同数据库类型的数据,这套脚本能适应么?我的SQL版本比较老,会不会支持不了新功能?
有9位网友表示赞同!
喜欢梅西
这个脚本可以运行在不同的系统平台上吗?我用的是Windows操作系统,担心兼容性问题。
有13位网友表示赞同!
黑夜漫长
看了下这篇文章,觉得很实用的信息!我之前使用SQL时遇到一些难题,也许用这套脚本能解决一部分,期待再学得多一些专业知识!
有18位网友表示赞同!
陌潇潇
这套简单实用的 SQL 脚本确实挺好用的,节省了我的很多时间和精力。
有6位网友表示赞同!
入骨相思
我觉得这个博客写得还不错!内容清晰易懂,而且提供了一些实用性的SQL脚本,对于学习和应用SQL的人来说很有帮助,推荐给大家!
有7位网友表示赞同!
迁心
这套SQL脚本真是一点用处都没有,我试了好几次都没能成功运行!说明文档也写的太简略了,简直就是浪费时间!
有6位网友表示赞同!
一样剩余
我觉得这种简单实用的 SQL 脚本对于入门学习数据库非常有用!它能够帮助我们快速上手,学习基本的SQL操作,然后逐渐深入复杂的操作。
有16位网友表示赞同!