- 博客(69)
- 收藏
- 关注
原创 简易的日历表制作
分享一个简易日历制作。只需要用很简单的语句,就可以生成一个日历表。应用场景可以结合销售日历啊,或者考勤表什么的~还有会有好处1 创建测试表CREATE TABLE TestDate( ID INT IDENTITY PRIMARY KEY, Date DATE, --日期 WeekDay NVARCHAR(50), --星期几 IsWeekend
2018-02-07 10:07:01
2420
原创 关于Mysql 触发器
首先,测试版本 Mysql 5.6。然后再看触发器的语法CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_bodytrigger_tim
2016-07-14 09:48:29
449
原创 开窗函数 First_Value 和 Last_Value
在Sql server 2012里面,开窗函数丰富了许多,其中带出了2个新的函数 First_Value 和 Last Value .现在来介绍一下这2个函数的应用场景.首先分析一下First_Value(),用法是根据Partition By对数据进行分区,如果忽略Partition By ,那么默认整块数据一个区域,然后根据Order By 进行排序,取出第一个值。;WITH CT
2016-07-14 09:48:27
1051
原创 Mysql 里面使用row_number() 的用法和注意
虽然使用不多,但是也有情况是需要在mysql 里面写语句开发功能的。在sql server 使用惯了,习惯了使用row_number() 函数进行排序,但是mysql 确没有这样一个函数。然后找到了po主写的一篇 文章。通过变量赋值来查询的。(PS 我测试的版本是mysql 5.6)参考链接:http://www.cnblogs.com/advocate/archive/2012/03/02/
2016-07-14 09:48:24
2662
原创 测试几个xml的问题
使用sql server的时候,免不了与xml的参数打交道,xml大多数时候都给我们的程序带来方便,但是也有些时候会有变量赋值不通过的时候。(当然罗,如果你本身xml都通不过 xml spy 之类软件的检查的话那就不是这方面的范围啦~)今天分享的例子非常简单,就测试几个例子DECLARE @x XML --1SELECT @x ='1'--2SELECT @x
2016-07-14 09:48:22
720
原创 关于datetime 和 int 之间相互转换
在其他地方看到一个有点意思的东西。是记录转换规则的。DECLARE @Date1 DATETIME = '2016-06-21 11:53:00' , @Date2 DATETIME = '2016-06-22 13:25:00' SELECT DATEDIFF(day, @Date1, @Date2), CAST(@Date2 - @Date1 AS I
2016-07-14 09:48:19
3724
原创 BCP笔记整理(二)
BCP的基础用法可以参考上一篇:http://www.cnblogs.com/Gin-23333/p/5489889.html这篇是补充一些有可能会用到,但是出场几率并不算大的几个参数1、首先是 -F -L ,形象生动的来说就是 FirstRow 和LastRow 的参数,比如以下例子(测试的表用回之前那个)ID name
2016-05-17 14:18:04
425
原创 笔记整理之BCP
很多时候,需要批量的导数据,可能大家想到的第一反应就是右键数据库->任务->导入导出数据。但是其实微软自身提供的大容量导入导出工具,有bcp, bulkinsert 之类的也是很好用。今天整理一下bcp 的常规用法首先bcp 的介绍页,请:https://msdn.microsoft.com/zh-cn/library/aa337544(v=sql.120).aspx首先我们先搞个测试表来
2016-05-17 14:18:01
608
原创 使用xml 和merge 维护表数据的代码生成脚本
现在使用数据库来写存储过程,动不动参数就会用到xml ,当然罗,优势也很明显,参数相对固定,而且灵活,如果要修改或者什么的,中间接口层也不需要做变化,只需要修改封装的存储过程以及程序传参就ok了。随着时间慢慢过,有时候就有一个存储过程,一个xml 来应对整个表的新增,修改,删除的情况了。而对于这个情况,我个人比较喜欢使用 Merge关键字来处理。但是如果表里面的列很多,那么复制黏贴啊之类的
2016-05-09 11:55:23
508
原创 搭建一个Mongodb (Windows) 版本
因为有项目需要借助nosql 做一个中间层,所以选择了Mongodb 来搞,其实之前呢已经搭建过这部分的环境,这次再次搭建也是记录一下,当时给自己的一个扫盲123教程借助Mongodb 其实也是缓存一部分静态数据,除了提高查询效率之外,还可以减轻一部分系统数据库的压力~(以下说的其实官网都可以找到,详情戳这里 ) https://docs.mongodb.org/首先我们先从官网上面
2016-05-05 17:24:36
363
原创 记录一次坑自己的维护经历
今天做了一次差点坑了自己的维护因为系统里面有个数据库一开始的时候把数据库文件部署在C盘,然后发现用着用着,空间膨胀得比较快,要搬走去其它盘符。然后我看了一下,做了如下步骤1 脱机2 切换文件3 联机(然后发现这个步骤其实是不正确,并且比较蠢的),其实用分离附件的方法更加简单方便。然后这样做的步骤发生了如下的事情……1 脱机的时候因为一直有程序连服务器,所以脱机了10几分钟也
2016-05-05 17:24:33
356
原创 sql server 里面的 dynamic Data Masking
有时候啊,当我们存放在数据库里面的数据,需要明文存放,但是对于前台查询出来的,又不太希望明文放出去的时候(比方说客户的手机啊,邮箱啊)之类有点敏感的信息,之前通常是保存个明文,然后在前台展现的时候再特殊处理一下,然后就ok了。而现在呢,在2016提供了data mask的功能,可以遮掩对应列的一些基础信息事不宜迟,先做样例 1 create table t2(ID int id
2016-05-05 17:24:31
583
原创 还来一篇说下json_value 以及 json_query 的应用 (3)
上一篇说了一下openjson 的一些使用方法,这次再说一下在2016里面的查询取值,当然就是 json_query 和 json_value 这2兄弟了首先declare @json varchar(100) = '{"a":"[6,4]","b":[7,4],"c":"hi"}'select json_query(@json,'$.a'),json_value(@json,
2016-05-05 17:24:28
712
原创 继续说一下openjson 以及 json path 的使用 (2)
在openjson 里面,其实是可以把数据类型array里面的值遍历出来的,举个栗子declare @v nvarchar(500) = N'{"name":"test", "obj":{"arr":[1,"ofao",3,4,5]}}'select * from openjson(@v)/*key value typename test
2016-05-05 17:24:25
949
原创 继续说一下2016里面的json功能(1)
首先先来测试数据,数据是使用之前的,就不要在意这些细节了啊~借用上一篇的测试数据create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int)insert into t1 values ('张三',90,80),('李四',75,90),('王五',68,100),('赵六',90,null)
2016-05-05 17:24:23
393
原创 尝试一下sql server2016里面的json功能
前2天下载了一个2016的rc版本来玩一下,首先感觉是~开发者版本免费啦!!撒花!!!另外一个东西,sql server 2016能支持json 的解析和应用啦,虽然我不知道它的性能如何,先来一发测试一下功能 测试一下基本的,从查询结果里面构造一个json 的格式create table t1(ID int identity,name nvarchar(50),Chinese int
2016-05-05 17:24:20
591
原创 记一次使用openrowset 的坑
前几天被老大训斥连openrowset 都不会用,然后我就去看了文档,想测试一下栗子~openrowset 的具体语法我就不贴了,戳这里:https://msdn.microsoft.com/zh-cn/library/ms190312(v=sql.120).aspx按照文档里面的样例来测试,首先创建一个文档 values.txt1 Data 1 For2 Data
2016-05-05 17:24:18
1723
原创 遇到了 “遇到以零作除数错误” 的问题
开发的时候,写了个很简单的Sql ,大概就是 总数除以数量 得出的平均值。看起来很平常是不是!简单来说就是 Total / Count 嘛!最多转个2位小数用Convert就完事了对不对。但是呢,有些数据的Count值本身是就是0的。然后就会报遇到以0作为除数的错误的问题了啊~然后演示几种可能出现的情况,先初始化一个测试样例, 1 CREATE TABLE TmpA1 (ID
2016-05-05 17:24:15
2767
原创 基础篇之 Create Type
Create Type 的话呢,是创建一个自定义的数据类型,等于说为常用的数据类型建造一个别名的样纸。然后就可以通用当前数据库的当前架构。(当然了,一般来说我们都是使用dbo架构,所以都会无事前面那个说明)╮(╯_╰)╭。下面我来演示一下相关内容最简单的先创建一个类型TS,然后把它查出来。虽然看起来类型是 TS,但是实际上查看变量的数据类型,还是varchar ,还是对准了基础类型。所以虽
2016-05-05 17:24:13
668
原创 又来说一下顺序~关于唯一索引和唯一约束的顺序
上次说了同一个对象里面不同触发器的执行顺序。今天我也想分享一些我在同一个表里面,建上不同的唯一约束,不同的唯一索引,看下结果会怎样首先简单建个测试表,不多,就4列CREATE TABLE AAA3 (ID INT IDENTITY(1,1),Col1 VARCHAR(50),Col2 VARCHAR(50),Col3 VARCHAR(50))情况1:然后往Col1 都添加上唯一
2016-05-05 17:24:11
947
原创 今天说一下DML触发器的顺序
因为05之后的版本允许了一个对象有多个after触发器,所以呢~顺序方面还是要留意一下下的。比如我现在要往一个测试表里面添加多个触发器。USE TestGO CREATE TABLE AAA3 (ID INT IDENTITY(1,1),Name NVARCHAR(50))GOCREATE TRIGGER TR_AAA3_1 ON AAA3 FOR INSERT
2016-05-05 17:24:08
1200
原创 说完Pivot 今天说下Unpivot 的处理方式
上次说到,既然有Pivot 的行转列,那么肯定也有Unpivot 的列转行 。其实unpivot 处理的情况也是差不多,也是分3步走。首先也是先演示一下unpivot 的用法CREATE TABLE #Emp (Name NVARCHAR(50),Mon TIME,Tue TIME,Wed TIME,Thu TIME)INSERT INTO #Emp ( Na
2016-05-05 17:24:05
856
原创 说下查询动作 Pivot
上一篇说了一下查询5步走~然后就几天_(:з」∠)_ ~今天继续说一下其中 表里面操作符里面的 Pivot ~ Pivot 在实现行转列的时候灰常有用。通常一个例子CREATE TABLE #Tbl (Emp VARCHAR(50), [WeekDay] VARCHAR(50),LoginTime TIME) INSERT INTO #Tbl ( Emp,
2016-05-05 17:24:03
337
原创 逻辑查询5步走~
今天继续发整理学习篇~查询5步走,一步一回头~通常来说查询的顺序呢~从 From -> Where -> Group By -> Select -> Order By 一般来说我们一个语句从查询开始,借助了 AdventureWorks2014 来举例SELECT TOP 50 a.PersonType,a.LastName,a.FirstName,c.CardNumber,c.
2016-05-05 17:24:00
436
原创 今天说一下 Group by 这个东西
group by 这个关键字,这个语句太平凡了~基本上只要有报表的地方,就会有它的身影。常规用法就是INSERT INTO #TypeValue ( TypeID, Col2 )VALUES (1 , N'名称1'),(1 , N'名称2'),(2 , N'名称3'),(2, N'名称3'),(3 , N'名称4'),(3 , N'名称5'),(4 , N'名称
2016-05-05 17:23:58
415
原创 今天说一下Order by 这个常规东西~
Order by 在我们日常的数据库开发生活中是出镜率灰常高的。order by 的作用就是用于对查询出来的结果进行排序~对啊~人家就是这么接地气~比如按发生时间啊,首字母啊之类的都是相当常见。今天主要分享一下order by 的用法和样例。常规用法CREATE TABLE #Tmp1(ID INT IDENTITY,Col1 NVARCHAR(50),Col2 N
2016-05-05 17:23:55
565
原创 今天说一下where 中 exists 和 in 里面的一些区别
in 和 exists 已经成为我们日常查询时候的常客了。很多时候他们2个都是可以互通实现的,但是,无论兄弟怎么亲,还是会有那么一些差别的。先搞个测试表CREATE TABLE #Tmp1(ID INT,Col1 NVARCHAR(50))CREATE TABLE #Tmp2(ID INT,T1ID INT,Col1 NVARCHAR(50),Col2 NVARCHAR(50)
2016-05-05 17:23:53
1082
原创 今天简单说一下cdc 的使用
从08开始,sql server 提供了一种叫做 变更数据捕获 cdc(Change Data Capture) 的功能,可以通过启用这个功能,来实现查看数据库中的表对象的数据的变化情况。(我感觉就是有点像sql server 自己提供的用户能直接看懂的数据变化功能)。根据官方的说法。使用cdc 功能有以下好处1、这是数据库自带的功能,无需额外的开发成本。2、不需要改动表的结构,不需要
2016-05-05 17:23:50
1193
原创 关于字符串查找 charindex ,Patindex 还有一个like
字符串查找。在模糊朝找的情况下,其实3者的效率是差不多的。都需要一个一个取出来然后扫一遍╮(╯_╰)╭。然而用法还是会有一点儿的区别1 charindex (查找的字符串,字符串表达式[,开始查找的位置]) ,简单来说用法就是这样纸。然而这个函数对 text,ntext,image 类型无效,并且从1开始哦~并不是0SELECT CHARINDEX('123','12312312312
2016-05-05 17:23:48
482
原创 转换函数
一般来说,转换函数大家并不陌生。就是使用cast 和 convert 进行数据类型的转换来达到表达式的比较,语句的拼接等效果。使用倒是很容易的。一般情况下这样使用就可以了。SELECT CONVERT(INT,'123')SELECT CAST('123' AS INT)还有一个比较少用的,parse 函数。(PARSE 仅用于从字符串转换为日期/时间和数字类型。 对于一般
2016-05-05 17:23:45
396
原创 好用的排名函数~ROW_NUMBER(),RANK(),DENSE_RANK() 三兄弟
排名函数三兄弟,一看名字就知道,都是为了排名而生!但是各自有各自的特色!以下一个例子说明问题!(以下栗子没有使用Partition By 的关键字,整个结果集进行排序)RANK 每个值一个排名,同样的值排同样的位置,如第一名有2个,下一个值就要排第三,如此类推,表现如下面的 RandNr 列DENSE_RANK 每个值一个排名,跟Rank 不一致的地方在于它不跳号,会1,2,3 那样排下来
2016-05-05 17:23:43
586
原创 今天说一下 tablesample 这个东西
TableSample 平时用得少,基本上就是用于表里面抽样数据来看的。用法如下SELECT * FROM tbname TABLESAMPLE SYSTEM (N PERCENT/M Rows) REPEATABLE()TABLESAMPLE SYSTEM 这个表示使用System的方法进行数据抽样。(目前我也只知道有System这个方法)N PERCENT/M Row
2016-05-05 17:23:40
1331
原创 小说一下case ~
case 这个关键词,用的地方不少~大部分的用途都通过以下的方式去应用DECLARE @i INT = 3SELECT CASE @i WHEN 1 THEN 1 WHEN 2 THEN 2 WHEN 3 THEN 3 END AS 测试1;测试1-----------3
2016-05-05 17:23:38
265
原创 说一下output子句
Output子句日常灰常有用,而且用的地方也挺多,但是确好多时候被我们忽视,今天我就也简单扫盲一下这个语句的用法。Output子句返回受 INSERT、UPDATE、DELETE 或 MERGE 语句影响的各行中的信息,或返回基于受这些语句影响的各行的表达式。 这些结果可以返回到处理应用程序,以供在确认消息、存档以及其他类似的应用程序要求中使用。 也可以将这些结果插入表或表变量。 另外,您
2016-05-05 17:23:35
627
原创 今天说一下Top ~
Top这个关键字,大家都不陌生~尤其是很多时候打开SSMS的时候右键表名,选择前1000行的时候,就可以见到编译出来的语句 Select top 1000 XXX from XXX好~我们先看看Top 的语法[ TOP (expression) [PERCENT] [ WITH TIES ]]Top 关键字支持实际行数 Top 50 查询前50行,使用这种模式的话
2016-05-05 17:23:33
479
原创 2个小栗子~
例子一~定义临时表的问题~ 有时候我们在定义临时表的时候很习惯就这样写~IF OBJECT_ID('tempdb..#Tmp') IS NOT NULL DROP TABLE #TmpIF 1 2 SELECT * INTO #Tmp FROM dbo.TestTBELSE SELECT * INTO #Tmp FROM dbo.T
2016-05-05 17:23:31
359
原创 关于取反~的运算
今天看到一个东西SELECT ~32767------------32768按位反的话为什么结果为什么不是-520而是-521呢?然后我又看了看,才想起在二进制的世界里,第一个数位是表示正负数,所以在smallint 的2字节里面,是这样纸的327670111 1111 1111 1111所以当取反的时候就是-3276810 0000 0000
2016-05-05 17:23:28
594
原创 关于外键,再唠叨一下下
创建了一个外键,还有一点限制,就是当定义了 ON Update/Delete CASCADE 的时候,该表不能再定义Instand Of Update/Delete 触发器。这个是不允许的。如果定义了Instand Of触发器改变了 Update 或者 Delete 的行为,那么在级联删除的时候,引用表的数据就无法做出更新/删除,就会造成引用完整性有问题。但是如果定义After触发器还
2016-05-05 17:23:26
231
原创 简单说下外键
外键的使用大家都不陌生,是我们用于保持数据引用完整性的作用~辣今天我就分享一下外键的一些限制。1、外键引用的是需要其它表的主键,或者候选键。(这个比较好理解,就不写代码了╮(╯_╰)╭)2、外键创建之后并不会自动创建索引,这个是有开发人员自己考虑在外键上建相关索引是否能获取到查询效率上的提升3、默认的情况下如果在引用表插入不存在的外键值或者在主表删除了一个被引用的数据,数据库都会报错。
2016-05-05 17:23:23
349
原创 关于临时表和表变量的差别2
又是想到什么写什么系列……上次 http://www.cnblogs.com/Gin-23333/p/5096638.html 写了一下,今天补充点其它的1、在事务里面的影响,临时表可以被回滚 而表变量是不能回滚的。简单的例子DECLARE @T AS TABLE(ID INT,Name NVARCHAR(50))IF OBJECT_ID('tempdb..#T') I
2016-05-05 17:23:21
276
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人