数据库~MSSQL
Nemo_XP
这个作者很懒,什么都没留下…
展开
-
oracle REPLACE函数语法
oracle REPLACE 函数是用另外一个值来替代串中的某个值。REPLACE(srcstr, oldsub[, newsub ] )最简单的使用:把不吉利的数字换成吉利数字:select replace('123456789','4','88888888' ) from dual;工作情景:数据表中某字段Code中部分数据中多了N个0,如从210453变成了2’0000000‘10453,我们此次任务就是把中间引号的东西干掉。使用replace语法解决。 update ta原创 2021-04-22 16:15:49 · 8899 阅读 · 0 评论 -
sql server 2016 安装完成后没有管理工具(SSMS)
最近安装了Sql Server2016数据库,安装完成后发现桌面上没有快捷方式,去开始列表发现安装的列表里竟然也没有本以为是非完全安装漏掉SSMS工具,后来查资料发现sql2016的安装向导中并不包含SSMS管理工具组建的选项。所以安装完成后,我们仍需到安装中心,点击如下选项链接,跳到SSMS下载页,下载安装即可(564M)。下载完成后,直接安装完成即可。...原创 2020-05-09 11:53:32 · 28868 阅读 · 0 评论 -
更新一列数据为当前排序之后的行数
update employeeset emp_id=t1.rowIdfrom( --select * from --( select Emp_UserName,ROW_NUMBER() over(Order by emp_username) as rowId from employee ) as t1 where t1.Emp_UserName=employee.Emp_UserName--原创 2018-04-11 09:15:29 · 495 阅读 · 0 评论 -
SQL查询显示行号、随机查询、取指定行数据
1、显示行号如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要查询行号就需要用新的方法,在SQL Server2005之前,需要使用临时表,但在SQL Server2005中,使用ROW_NUMBER()非常方便。?selectrow_number() over (orderbyUseriD) asrowNum,* fromUserInfo 查询结果:2、...原创 2018-04-11 09:15:32 · 1574 阅读 · 0 评论 -
密码存储=密钥+密码+md5+算法
作为密码,本身就是很严肃的问题。有些网站为了方便直接把密码存到数据库中,数据库被黑,所有用户轻则被迫更改密码,重则造成隐私财产损失。所以数据库密码一定要加密,用md5是一种不错的选择。现在很多网站采用暴力破解md5,存储常用密码与md5对比的数据库对md5加密后的密码造成了威胁,虽说只可能破解小部分的密码,而且对于单纯低强度的密码很好破解,但是对于设计人员来说这也是很不合理的。为了解决以上问题,设原创 2018-04-11 09:15:40 · 2615 阅读 · 0 评论 -
SQL里类似SPLIT的分割字符串函数
SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。 一,用临时表作为数组 复制代码代码如下:create function f_split(@c varchar(2000),@split varchar(2)) returns @t tab原创 2018-04-11 09:15:50 · 3450 阅读 · 0 评论 -
EF和sql优化
EF的linq表达式如果是多条,则会采用延迟机制,用到哪条就加载哪条,同时多条sql时候会综合多条为一条sql(包括join),效率不高。众所周知,join很多条数据或者很多个表就会效率大大降低。所以linq需要查子表,综合sql需要用join时候,可以让得到的结果.ToList();缓存:数据源缓存,页面缓存对数据库的优化。优化方法:加索引,去join。用外键去重复数据。对于distincty来原创 2018-04-11 09:16:14 · 569 阅读 · 0 评论 -
Merge into用法总结
简单的说就是,判断表中有没有符合on()条件中的数据,有了就更新数据,没有就插入数据。 有一个表T,有两个字段a、b,我们想在表T中做Insert/Update,如果条件满足,则更新T中b的值,否则在T中插入一条记录。在Microsoft的SQL语法中,很简单的一句判断就可以了,SQL Server中的语法如下: if exists(select 1 from T where ......原创 2018-04-11 09:18:47 · 310092 阅读 · 9 评论 -
游标原理和使用方法
在数据库开发过程中,当你检索的数据只是一条记录时,你所编写的事务语句代码往往使用SELECT INSERT 语句。但是我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录。那么如何解决这种问题呢?游标为我们提供了一种极为优秀的解决方案。1.1 游标和游标的优点 在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包...原创 2018-04-17 16:48:28 · 4534 阅读 · 0 评论 -
sql查询语句for xml path语法
for xml path作用:将多行的查询结果,根据某一些条件合并到一行。例如:现在有一张表执行下面语句 select [Department], (SELECT [Employee]+',' FROM dbo.[People] b WHERE b.[Department]=a.[Department] For XML Path('')) AS Student from [...原创 2018-04-20 10:20:25 · 2331 阅读 · 0 评论 -
sql优化的几种方法
在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where nu...原创 2018-09-25 16:34:59 · 138 阅读 · 0 评论 -
Windows 不能在 本地计算机 启动 SQL Server(MSSQLSERVER) 10048
为了节约系统资源,通常是用到的时候才启东sql服务今天启动时报错找了半天,貌似原因很多,有说master库损坏,有说某些组件没启动的查了下日志,得到初始化失败,出现基础结构错误。请检查以前的错误。通常每个套接字地址(协议/网络地址/端口)只允许使用一次。无法初始化 TCP/IP 侦听器。ipv4等信息应该是tcp/ip协议出问题了可能是我安装了sql2008和sql2012引...原创 2019-06-12 08:47:54 · 9703 阅读 · 1 评论 -
Access数据库转成Sqlserver数据库 图文教程
当我们手上有个Access的数据库文件的时候,想要转换成Sqlserver的数据库,这时候只要按照以下步骤完成即可:首先准备Access数据库文件,这里以以test.mdb为例:启动Sqlserver 2005(其它版本的数据库类似)数据库的管理界面,并登陆:新建一个数据库,名称随便写,这里我们以demo名称为例:在demo数据库上右击选择---任务----导入数据之后展开demo数据库的表就可以...原创 2018-04-11 09:15:23 · 3477 阅读 · 0 评论 -
case when 嵌套
select id,userid, ys,case pj_yswhen NULLthen ( case pj_ys1 when NUll then ys else pj_ys1 end)else pj_ys end tfrom dbo.tbl_Emplyeeblogs但是发现结果是错的。因为case when 判断null并不是这么判断的,需要注意判...原创 2018-04-11 09:15:08 · 7803 阅读 · 0 评论 -
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT IN...原创 2018-04-14 11:40:41 · 108 阅读 · 0 评论 -
sql查询重复记录、删除重复记录方法大全
查找所有重复标题的记录: //查找where 列重复数据大于1次,结果为本表的查询列的重复记录。SELECT *FROM t_info aWHERE ((SELECT COUNT(*)FROM t_infoWHERE Title = a.Title) > 1)ORDER BY Title DESC一。查找重复记录1。查找全部重复记录Select * From 表 Where 重复字段 In ...原创 2018-04-14 11:41:06 · 205 阅读 · 0 评论 -
经典SQL问题: 行转列
情景简介学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列。数据库grade里面数据如下图,假定每个人姓名都不一样,作为主键。本文以MySQL为基础,其他数据库会有些许语法不同。数据库数据:处理后效果:下面介绍三种方法:方法一:12345SELECT DISTINCT a.name,(SELECT score FROM grade b WHERE a.name=...原创 2018-04-14 11:41:15 · 743 阅读 · 0 评论 -
Sql时间函数【一】
一、sql server日期时间函数Sql Server中的日期与时间函数 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 ...原创 2018-04-14 11:41:27 · 268 阅读 · 0 评论 -
详解SQL性能优化
关于sql优化问题,个人感觉在建表初期,数据量少,sql优化效果看不出来,但是数据量大时,便会有很大的区别。所以时时要有优化的思想。对数据库优化:建表时查询时使用时建表设计时候:合理设计,对于经常查询的大数据表要适当的添加索引(优点:索引可以大大加快数据库的查询速度,索引把表中的逻辑值映射到安全的RowID,因此索引能进行快速定位数据的物理地址。对一个建有索引的大型表的查询时,索引数据可能会用完所...原创 2018-04-13 09:20:14 · 141 阅读 · 0 评论 -
sql 时间函数【二】
1. 当前系统日期、时间select getdate() 2. dateadd <span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;ms原创 2018-04-11 09:13:11 · 238 阅读 · 0 评论 -
完美解决distinct中使用多个字段的方法[转]
众所周知,distinct可以列出不重复的记录,对于单个字段来说distinct使用比较简单,但是对于多个字段来说,distinct使用起来会使人发狂。而且貌似也没有见到微软对distinct使用多字段的任何说明。下面就提供了一种方法可以在使用distinct的时候同时使用多个字段。select 要使用字段1,要使用字段2 from 表名 where id in (select min(id) f原创 2018-04-11 09:13:46 · 3982 阅读 · 0 评论 -
Sql日期时间格式转换 sql server2000中使用convert来取得datetime数据类型样式(全)
日期数据格式的处理,两个示例:CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/CONVERT(varchar(10), 时间一, 23) 结果:2007-02-01 /*varchar(10)表示日期输出的格式,如果不够长会发生截取*/语句及查询结果:Select CONVERT(varcha原创 2018-04-11 09:14:39 · 393 阅读 · 0 评论 -
SQL Server 存储过程(包括分页)
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。 ? 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。 存储过程中可以包含逻辑控原创 2018-04-11 09:14:57 · 325 阅读 · 0 评论 -
存储过程分页
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER proc [dbo].[createPageproc]@pageIndex int,--当前的页码值@pageSize int,--每页显示的记录数.(每页显示几行数据)@rowCount float output,--表示总的记录数@pageCount float output--表示总页数asb原创 2018-04-11 09:15:02 · 129 阅读 · 0 评论 -
MSSQL导入/导出教程
MSSQL导入/导出教程及基本排错SQL Server 导入/导出教程1、打开本地企业管理器,先创建一个SQL Server注册来远程连接服务器端口SQL Server。步骤如下图:图1:2、弹出窗口后输入内容。"总是提示输入登陆名和密码"可选可不选,如图2。图2:3、注册好服务器后,点击打开。如果是选择了"总是提示输入登陆名和密码"的话再点了确定后会提示输入用户密码,如图3。图3:4、进入后,选...原创 2018-04-14 11:40:38 · 8758 阅读 · 0 评论