随笔分类 - 数据库
对关于数据库文章的管理
摘要:NOLOCK(不加锁) 此选项被选中时,SQL Server 在读取或修改数据时不加任何锁。 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回滚(Roll Back)中的数据, 即所谓的“脏数据”。 UPDLOCK(修改锁) 此选项被选中时,SQL Ser
阅读全文
摘要:使用rowcount rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理, rowcount的设置会在整个会话中有效 SET ROWCOUNT 10SELECT * FROM dbo.Customer ORDER BY id desc 使用完之后可以设置为: SET ROW
阅读全文
摘要:优点: 允许读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改 当用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改 begin transelect * from address WI
阅读全文
摘要:ROUND 用法: --15.000 表示小数点第一位取四舍五入,将原小数点后的位数都设置为0SELECT ROUND(15.258,0) --15.300,第二个参数如果是1,则取原值小数点后第一位的四舍五入法,小数点第一位之后的参数用0代替SELECT ROUND(15.258,1) space
阅读全文
摘要:DECLARE @pageSize INT ; DECLARE @pageIndex INT ; SET @pageSize = 5 SET @pageIndex =2 ; --第二页,每页显示5条数据 SELECT * FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY CreateDate ASC ...
阅读全文
摘要:use dbnameSELECT * FROM sysobjects WHERE (xtype = 'U')goxtype可替换为如下参数--C = CHECK 约束--D = 默认值或 DEFAULT 约束--F = FOREIGN KEY 约束--L = 日志 --FN = 标量函数--IF =
阅读全文
摘要:Update Statistics语句的作用将创建的数据库表的有关统计信息更新到系统 sysmater的相关表中,以便查询优化器选择最佳的执行路径,当sysmaster库中没有相应的统计信息,或者统计不准确时,优化器会进行大量的顺序扫描,产生严重的性能问题 因此如果重新装载数据或者对表进行大量的更新
阅读全文
摘要:比如有一张兴趣表: SELECT * FROM Hobby FOR XML PATH 可以看到结果: <row> <hobbyID>1</hobbyID> <hName>爬山</hName></row><row> <hobbyID>2</hobbyID> <hName>游泳</hName></row
阅读全文
摘要:with(nolock)的功能: 1: 指定允许脏读。不发布共享锁来阻止其他事务修改当前事务读取的数据,其他事务设置的排他锁不会阻碍当前事务读取锁定数据。允许脏读可能产生较多的并发操作,但其代价是读取以后会被其他事务回滚的数据修改。这可能会使您的事务出错,向用户显示从未提交过的数据,或者导致用户两次
阅读全文
摘要:--在一个Book表里面里有字段AuthorID与Author表关联,现在要求按PublishDate字段倒序排列,列出每个作者的前五本书。要求有没有一条语句搞定的--可用游标或者临时表--最好解决方法: 使用 ROW_NUMBER () 与 PARTITION 组合 例子: IF OBJECT_I
阅读全文
摘要:创建表前先判断是否存在 IF OBJECT_ID(N'TableDataDictionary') IS NULL 存储过程头: Function : dbo.USP_GetEmployeById 按Id获取雇员信息-- Auhtor : Kerry-- Create Date : 2010-08-1
阅读全文
摘要:存储过程是一组为了完成特定功能的sql语句集,经编译后存储在数据库中,每次调用使用过程名并给出参数来执行 优点:1 速度快,性能好, 重复使用它的缓存执行计划,节省了分析解析它的服务器资源和时间 2 减少网络流量3 安全性强,参数化的过程更安全,减少sql攻击,可以通过校验参数,属于对象执行权限提高
阅读全文
摘要:动态SQL可以通过EXECUTE 或SP_EXECUTESQL这两种方式来执行 execute:可执行 系统存储过程,用户自定义存储过程,标量值用户定义函数,扩展存储过程sp_executesql:执行多次重复使用或者动态生成的sql语句或者批处理,sql语句可以包含嵌入参数在批处理,名称作用域或者
阅读全文
摘要:select into 复制表会带来灾难后果,因为只是复制了一个外壳,就像克隆人,有躯体没意识,像原表的主键 外键 约束 触发器 索引都不会被复制过来, 创建一个表:CREATE TABLE [dbo].[Users]( [UserId] BIGINT IDENTITY(1, 1) NOT NULL
阅读全文
摘要:MySQL: SUBSTR(), SUBSTRING()Oracle: SUBSTR()SQL Server: SUBSTRING() SUBSTRING ( expression, start, length ) 意思是expression从索引为start的位置开始截取长度为length的结果
阅读全文
摘要:sqlserver的行转列 列转行问题 行转列:1 使用Case when 方式 CREATE TABLE [StudentScores]( [UserName] NVARCHAR(20), --学生姓名 [Subject] NVARCHAR(30), --科目 [Score] FLOAT, --成
阅读全文
摘要:DECLARE @WeekDays TABLE( freq_interval INT, weekdays NVARCHAR(120) ) INSERT INTO @WeekDaysSELECT 1 ,N'星期日 ' UNION ALLSELECT 2 ,N'星期一 ' UNION ALLSELECT
阅读全文
摘要:判断创建的表是否存在的3种方法 IF NOT EXISTS(SELECT 1 FROM SYSOBJECTS WHERE NAME = 'Users' AND XTYPE ='U') 2 IF EXISTS( SELECT 1 FROM dbo.sysobjects WHERE id = objec
阅读全文
摘要:用户定义函数分两类,标量函数和表值函数用户定义函数可以执行复杂的逻辑,可以接受参数并返回数据 模块化设计,只编译一次,减少网络流量 标量函数可能引起性能问题 USE AdventureWorks2014;GOCREATE FUNCTION Sales.FetchProductOrderNum( @P
阅读全文
摘要:DECLARE @WeekDays TABLE( freq_interval INT, weekdays NVARCHAR(120) ) INSERT INTO @WeekDaysSELECT 1 ,N'星期日 ' UNION ALLSELECT 2 ,N'星期一 ' UNION ALLSELECT
阅读全文