【SQL 编程&商务智能BI】
文章平均质量分 67
LongRui888
龙腾虎跃,睿意进取,加油!
展开
-
python中pandas模块(join方法)实现SQL Server中的表关联join
python连接sql server的方法,可以参考这篇文章:python连接SQL Server:Pymssql模块基于下面的数据,分别用sql 和 python,实现数据集的关联,得到 学生、课程、成绩 的数据。建表可以参考:python中pandas的集合关联(merge) 与SQL Server中表关联join的对比SQL Server中用join实现表的关联,在p原创 2018-02-03 21:34:23 · 4995 阅读 · 0 评论 -
【Transact-SQL】T-SQL中的Like
先进行一下简单的说明:表tblb的address字段可能是包含了表tbla的address字段的内容,如果确实是包含了,那么返回tbla中的项目名称。以前用游标来实现的功能,大概要写个几十行,现在用Like来实现,只要一句SQL就行了,感觉方便多了,不过没有在大数据量的情况之下进行测试。具体代码如下:--先建立2个表格create table tbla (ename var原创 2011-08-05 21:52:32 · 1417 阅读 · 0 评论 -
SQL Server 大师级人物 Ken Henderson
借帖子中的问题 http://topic.csdn.net/u/20080916/08/fde28e86-7c54-4d8b-8e27-542f4bbff720.html,回忆SQL Server 大师级人物 Ken Henderson 问题如下:数据结构 a b c 1 x1 11 2 x2 15 3 x3 15 4 x3 14 5 x原创 2011-08-05 22:41:14 · 1209 阅读 · 0 评论 -
SQL SERVER中QUOTED_IDENTIFIER选项的使用
虽然经常看到SET QUOTED_IDENTIFIER ON/OFF 这样的语句,但是不会太注意到底会有什么作用,或者说在什么情况下使用。看了联机帮助文档上得介绍,挺晕的,我打算自己通过实验,来总结一下这个选项的用法。一般我们在创建一个表时,不管是QUOTED_IDENTIF原创 2011-08-06 21:04:36 · 3134 阅读 · 0 评论 -
【Transact-SQL】一句SQL删除重复记录
星期五去一家公司面试SQL数据库工程师,有一份笔试题目,其中有一题是:现在有一个表t(姓名,手机号,联系方式),手机号字段存在重复记录,要求用一句SQL删除重复记录。我想了想写了一句创建唯一索引的语句:create unique index t_index on t(手机号)交卷了,后来想想也不对,这样只能保证以后不能添加重复的记录,这样写会导致:当添加了重复记录时,发生错误,导致整原创 2011-08-14 13:57:24 · 2678 阅读 · 0 评论 -
【Transact-SQL】求列最大值(比较特别)
原问题的联接是:http://topic.csdn.net/u/20111009/09/71ab2fe5-9c15-4670-b605-3144b84389cb.html下面是问题描述:例如 列A0.4mA0.5mA1.0A1.2A1.6A单位为A的字段值肯定是大于单位为mA的字段值,如何求出列A中的最大值? 呵呵,原来写的时候用group b原创 2011-10-11 11:03:36 · 963 阅读 · 0 评论 -
【Transact-SQL】通过递归来实现:将多条记录的某个字段的值,用斜杠拼接在一起
需要把表@tt中的idd相同的记录中tchar字段的内容拼接在一起,结果如下1,'abc/xyz/ggg'2,'111/soft' declare @tt table(idd int,tchar varchar(10))insert into @tt select 1,'abc' union allselect 1,'xyz' union allselec原创 2011-11-19 10:14:13 · 3175 阅读 · 0 评论 -
【SQL Server学习笔记】SELECT语句
本文主要记录在学习select语句中,需要特别注意的知识点。版本是SQL Server 2008 R2。1、让%不被认为是通配符,可以用escape关键字。--查找产品名称中包含%字符的记录,用/表示后面的%不是通配符SELECT *FROM PRODUCTWHERE PRODUCT_NAME LIKE '%/%%' ESCAPE '/'2、声明变量、赋值。--原创 2012-06-01 21:59:12 · 2101 阅读 · 0 评论 -
【SQL Server学习笔记】INSERT、UPDATE 语句
1、INSERT语句 --通过default关键字显式插入默认值insert into Production.Location(Name,CostRate,Availability,ModifiedDate)values('Wheel Storage',11.25,80.00, DEFAULT) --如整个表所有列原创 2012-06-25 11:53:33 · 2620 阅读 · 0 评论 -
SQL Server中实现数据换行
在sql server 里,可以这么合并数据:with tas(select 1 as id,'产品1' p,'类型1' as v union allselect 2 as id,'产品2','类型1' as v union allselect 3 as id,'产品3','类型1' as v union allselect 4 as id,'产品1','类型2' as v u原创 2016-10-20 16:36:49 · 10718 阅读 · 0 评论 -
【SQL 编程你也行】SQL Server 2012新功能之函数:转换函数
3台机器:本机A的ip:192.168.100.70局域网内的另一台机器B的ip:192.168.100.148机器B上的Linux虚拟机C现在,本机A要连接局域网内的另一台机器B上的Linux虚拟机,要如何配置虚拟机的网络连接呢?1、配置虚拟机的网络连接方式选择“虚拟网络编辑器”。这里要选择机器B上的实际的网卡。原创 2015-11-04 16:58:57 · 1270 阅读 · 0 评论 -
【SQL 编程你也行】SQL Server新功能之函数:sum函数(2005、2008、2012、2014)
sum函数在SQL Server 2005中,添加了 over(partition by )的功能。在2012、1014中添加了 over(partition by order by )的功能,以及rows/range功能。下面是具体的例子:if object_id('test') is not null drop table testgocreate table原创 2016-01-14 16:02:48 · 3231 阅读 · 0 评论 -
【SQL 编程你也行】SQL Server 2012新功能之函数:choose函数
choose(id,value1,value2,value3,...) choose函数可以根据传入的id值,返回值所对应的参数值,比如传入2,那么就返回 value1,value2,value3,... 中的第二个参数值,也就是value2,下面是具体的例子。select choose(id ,'one','two','three','four') itemfrom( s原创 2016-01-05 11:40:16 · 2639 阅读 · 0 评论 -
【SQL 编程你也行】SQL Server 2012新功能之函数:iif函数
iif(布尔表达式,value1,value2)也就是说如果表达式成立,那么就返回value1,如果不成立,就返回value2.1、下面是一个简单的例子,大家一看就明白iif函数的功能。2、就像上面说到的一样,如果第一个参数不是布尔表达式,就会报错,这个需要大家注意。3、这里把iif和nullif做了比较,iif轻松实现了nullif原创 2016-01-06 11:32:36 · 8925 阅读 · 0 评论 -
【SQL 编程你也行】SQL Server 2012新功能之函数:concat函数
concat(value1,value2,value3,...)字符串的连接,就是把传入的多个参数,按照顺序,连接起来。下面是一个简单的例子:实际上,concat函数在sql server中的作用不是很大,因为在这个函数之前,直接通过 + 号,就能实现字符串的相加,而且非常方便:所以,我猜测增加这个函数,可能是考虑了代码的可移植性,因为在OR原创 2016-01-06 11:57:36 · 1930 阅读 · 0 评论 -
【SQL 编程你也行】SQL Server 2012新功能之函数:format函数
format(value,format,culture)第一个参数是要格式化的值,第二个是格式,第三个是区域,比如是中国,还是美国,还是大不列颠等等。下面举个简单的例子,第一个参数指定了一个要格式化的日期,第二个是标准的格式字符串,第三个是区域:原创 2016-01-06 12:11:36 · 2630 阅读 · 0 评论 -
【SQL 编程你也行】学习SQL Server的经历
说说自己的学习经历。在学校里学了数据库课程,里面有一章专门讲sql,当时对数据库比较感兴趣,但由于各种原因,毕业后一直没有做数据库方面的工作。虽然不做数据库,但是有空的时候就会看数据库方面的书,积累了基础知识,但是在工作中一直没有用到,慢慢这些学过的东西都忘记了。。。后来专门做数据库的时候,发现以前学的东西在工作中着实不够用,于是把之前几年看过的书,再看一次,学习的内容也从sq原创 2016-01-12 10:37:24 · 1738 阅读 · 0 评论 -
【SQL 编程你也行】count函数(SQL Server 2005、2008版本 over partition by)
count函数是聚合函数,在2005之前,主要就是用在group by中,计算分组之后,每个分组的数据条数,或者是计算总的记录条数。建表:if object_id('test') is not null drop table testgocreate table test(id int primary key,name varchar(20),groupnam原创 2016-01-11 10:47:46 · 1768 阅读 · 0 评论 -
【SQL 编程你也行】SQL Server 2014新功能之动态视图:sys.dm_exec_query_profiles
当查询正在执行时,监控实时查询过程。这个动态性能视图,可以确定查询的哪个部分运行的慢。具体的用法:1、开启跟踪SET STATISTICS PROFILE ON;GO2、在一个会话中运行一个sql注意,这个sql是写法有问题的,是笛卡尔积,会产生大量垃圾数据。select *from [dbo].t1cross join t1 t2原创 2016-01-14 11:03:43 · 1415 阅读 · 0 评论 -
【SQL 编程你也行】SQL Server 2014新功能之序列Sequence
在SQL Server中提供了 identity关键字,在创建表的时候指定,可以让某列实现自动增长。而在SQL Server 2014中新增了序列Sequence,通过这个序列,不仅可以实现单表的某列的增长,还可以实现多表中的某列的自动增长。下面是一个例子:1、创建表、创建序列drop sequence dbo.sequence_testcreate seq原创 2016-01-14 11:35:51 · 4117 阅读 · 1 评论 -
【SQL Server学习笔记】表基础:数据类型、创建表、键、约束、表变量、
1、表中字段类型SQL Server的字段类型大致可以分成这么几类:A、字符型:char、nchar、varchar、nvarcharB、精确数值型:bit、tinyint、smallint、int、bigint、smallmoney、money、numeric、decimal(与numeric完全一样)C、非精确数值型:float、realD、日期时间型:date、small原创 2012-07-10 10:39:51 · 2210 阅读 · 0 评论 -
【SQL Server学习笔记】数据库对象维护、对象依赖
数据库对象维护CREATE TABLE T(vid int primary key,v varchar(100))create index idx_v on T(v)--改变表名--注意: 更改对象名的任一部分都可能会破坏脚本和存储过程。EXEC sp_rename @objname = 'dbo.T', --架构.表名 @newname = 'TT原创 2012-07-31 21:51:16 · 1441 阅读 · 0 评论 -
【Transact-SQL】BOM按节点排序
问题是这样的:CREATE TABLE [dbo].[BOM_Table]( [Code] [nvarchar](50) NULL, [Z_Name] [nvarchar](50) NULL, [B_Code] [nvarchar](50) NULL, [B_Name] [nvarchar](50) NULL) ON [PRIMARY]GOINSERT INTO BOM_Ta原创 2014-03-20 14:45:16 · 1914 阅读 · 0 评论 -
SQL Server中几个扩展存储过程
--1.返回计算机名称execute master..xp_getnetname --自动报告计算机网络名的更改select SERVERPROPERTY('MachineName') --不报告计算机网络名的更改select @@SERVERNAME --2.返回错误日志内容if exists(select 1 from sys.tables whe原创 2012-10-26 15:32:51 · 1157 阅读 · 0 评论 -
排序规则的应用
对于char、nchar、varchar、nvarchar类型的列,可以指定Windows或SQL排序规则。--显示SQL Server实例的默认的排序规则select SERVERPROPERTY('Collation') --显示:Chinese_PRC_CI_AS--显示数据库默认的排序规则select DATABASEPROPERTYEX('master','Colla原创 2012-10-26 11:55:04 · 1023 阅读 · 0 评论 -
【SQL Server学习笔记】SQL Server中的异常处理
系统定义错误消息是为响应标准SQL Server错误而引发的消息。用户定义错误消息经常在第三方应用程序中使用,应用程序为了在其内部使用而定义的一组错误消息,这些消息允许参数化,就是可以对消息进行自定义的消息。 严重级别范围为1~25,使用下面的分类:1、0-10:表示信息性消息。2、11-16:是用户可以纠正的数据库引擎错误(当执行查询时丢失的数据库对象,不兼容的锁定提示,事务死锁原创 2012-09-07 11:56:50 · 2449 阅读 · 0 评论 -
如何向视图插入数据
/*--建立2个表create table t1(id int not null primary key,tbl varchar(5) not null)create table t2(id int not null primary key,tbl varchar(5) not null)go--插入数据insert into t1select obje原创 2013-08-31 12:55:01 · 24763 阅读 · 0 评论 -
有趣的自定义类型:表
--创建自定义类型,这里的自定义类型是表,可存储记录CREATE TYPE LocationTableType AS TABLE ( LocationName VARCHAR(50) , CostRate INT )GO declare @t LocationTableType/*--通过表变量来中转declare @tt table ( LocationNa原创 2013-08-27 12:34:42 · 2867 阅读 · 0 评论 -
【Transact-SQL】一个计算用电量的问题
下面是一个计算用电量的问题,原本是一个excel方面的面试题:白日平均用电:30度以内,0.4元每度, 70度以上,1.2元每度 ,30到70,0.8元每度 ; 晚间用电22点到早6点,价格统一按0.3元每度收取 。现在有3户,用电量是:户,人数,白天用电,晚上用电'a' , 4, 315 , 115'b', 3, 105 ,原创 2013-08-26 16:37:52 · 1486 阅读 · 0 评论 -
【Transact-SQL】找出不包含字母、不包含汉字的数据
测试的同事,让我帮忙写个sql语句,找出表中xx列不包含汉字的行。 下面的代码就能实现。 IF EXISTS(SELECT * FROM sys.tables WHERE name = 't') DROP TABLE tgoCREATE TABLE t(str VARCHAR(100))INSERT INTO tVALUES('abc'),('ABZ原创 2013-05-15 13:20:14 · 8194 阅读 · 0 评论 -
【SQL Server学习笔记】表和列增加注释
给表和列增加注释,通过增加扩展属性来实现代码如下:create table ttt(id int not null primary key, v varchar(100) ) --给表添加注释--注意后面的各层类型和名称,指出了要给什么增加扩展属性 exec sp_addextendedproperty @name = 'ttt_desc1', --扩展属性原创 2016-01-14 16:34:21 · 3166 阅读 · 0 评论 -
趣味SQL:用SQL计算瓷砖费用
最近家里在装修,于是去建材市场看瓷砖,问了价格。一开始用计算机,计算到头晕,完全计算不对。于是,想想可以用sql来计算,很方便,有准确。代码如下:select t1.prod_name, t1.price [每块瓷砖的价格], t1.area [每一块瓷砖的面积], t2.use_area [使用面积(平米)],原创 2016-01-14 18:10:29 · 763 阅读 · 0 评论 -
SQL Server与Oracle在 count() over() 函数的差异
最近一个项目使用了oracle(11g),在编写sql时,要知道数据总条数,可以这么写:select id, v, count(*) over() as numfrom ( select 1 as id,'a' v from dual union all select 2 as id,'b' v from dual union all select 3 as原创 2016-10-13 11:06:10 · 6741 阅读 · 0 评论 -
【SQL Server学习笔记】XML、分层、空间数据
1、XMLxml数据可以组成为多个属性,或者多个项目CREATE DATABASE TestUSE TESTGOdrop table dbo.bookcreate table dbo.book (BookID int identity(1,1) primary key, BookNM char(100) not null, AuthorID in原创 2012-08-04 22:02:52 · 1494 阅读 · 0 评论 -
【SQL Server学习笔记】SQL SERVER 视图
视图包括:普通视图,索引视图,分布式分区视图。关于视图的最佳实践: A、对视图进行性能优化的过程和普通的select查询语句的优化过程是一样的。 B、不要在一个视图的定义中调用另一个视图。 C、如果可能的话尽量使用存储过程而不是视图。因为存储过程能重用执行计划,性能会有提升,存储过程还能减少网络流量,并且实现复制的业务逻辑,而且与视图相比,编码限制更少。原创 2012-08-08 15:21:38 · 1372 阅读 · 0 评论 -
【SQL Server学习笔记】T-SQL中的流程控制、游标
1、流控制 --一直到11:07:00才运行--waitfor time '11:07:00'declare @temp table(schematable varchar(100))declare @tablename varchar(100)insert into @temp(schematable)select s.name + '.' + t.nam原创 2012-08-09 09:49:19 · 804 阅读 · 0 评论 -
【SQL Server学习笔记】存储过程、sp_executesql存储过程、try catch错误处理
存储过程就是把一个或多个T-SQL语句组合到一个逻辑单元中,在SQL Server数据库中保存为一个对象。在创建完成后,定义会保存在sys.sql_modules系统目录视图中。存储过程的有点:1、存储过程是在数据层汇集的T-SQL代码,可以促进代码的重复使用,同时有助于调试、寻找bug。也就是说这些代码就存放在数据库里,而不是嵌入在应用程序中的SQL代码,再由这些代码连接起来,最后发送到原创 2012-08-10 15:25:38 · 2633 阅读 · 0 评论 -
【SQL Server学习笔记】SQL Server 用户定义函数、用户定义类型
用户定义函数分为:标量函数,内联表值函数,多语句表值函数。 1、标量函数create table dbo.t (id int not null primary key clustered, mStr varchar(300) ) create table dbo.tt (main_id int not null, v varchar(100) not nu原创 2012-08-10 22:19:36 · 1243 阅读 · 0 评论 -
【SQL Server学习笔记】DML触发器、DDL触发器
触发器包含:dml触发器和ddl触发器。dml触发器包含了用于对表或视图的insert、update、delete操作做出响应的T-SQL代码,而ddl触发器对服务器或数据库事件做出响应而不是数据修改。触发器能够自动响应某种行为,所以对于必须对某种行为做出业务级别响应的情况,触发器很合适。在用触发器时,需要注意的:1、触发器通常比较隐蔽,很容易被忘记,在检查性能或逻辑问题的时候,经原创 2012-08-12 12:24:28 · 3431 阅读 · 0 评论 -
【Transact-SQL】计算整个表中所有值的出现的次数
一个表有3列,5行,那么一共有15个值,现在要计算整个表中所有值在表中出现的次数,不过这里表的列数是不确定的,上面的例子是3列,实际上也有可能是5列、20列,所以解决问题的步骤是这样的:1、必须知道有多少列,然后构造动态语句,把这些列合并到一列中。2、然后去重计算出所有的可能值。3、最后计算每个值在表中出现了多少次。 if(OBJECT_ID('dbo.wc') is not原创 2012-08-14 11:50:47 · 1433 阅读 · 0 评论