-
SQLServer优化50法汇总
查询速度慢的原因很多,常见如下几种:1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2.I/O吞吐量小,形成了瓶颈效应。3.没有创建计算列导致查询不优化...
数据库操作教程 2022-09-23 16:47:10 -
浅析SQL存储过程和事务处理
在数据库编程中,事务是经常需要用到的技术,在.net平台上,事务处理是非常好用的,但是在SqlServer数据库的存储过程中如何使用事务来完成数据的批量操作呢?解决方案如下:大概都是这样处理的:复制代码代码如下:CREATEPROCRegisterUser(@usrNamevarchar(30),@usrPasswdvarchar(30),@ageint,@PhoneNumvarchar(20),@Addressvarchar(50))ASBEGINBEGINTRAN--显示定义并开始一个事务SETXACT_ABORTON--表示遇到错误立即回滚INSERTINTOUSER(userName,userPasswd)values(@usrName,@usrPasswd)IF@@error<>0 --发生错误BEGIN ROLLBACKTRANSACTION RETURN0ENDELSEBEGIN COMMITTRANSACTION RETURN1  ...
数据库操作教程 2022-09-23 16:47:04 -
sql使用cast进行数据类型转换示例
@num=1;把num类型转成nvarchar类型cast(@numasnvarchar(10))@str='123';把str转换成int类型cast(@strasint)...
数据库操作教程 2022-09-23 16:47:02 -
Sqlserver表类型和表变量介绍
表类型可以用在存储过程中,用于批量增加表类型定义:复制代码代码如下:CREATETYPEdbo.SubCardTableastable ( [SC_ID][varchar](50), [ZhuKaInfo_ID][varchar](50), [Project_KeyName][varchar](50), [SC_CardNumber][varchar](50), [Statues][int]DEFAULT0, [SC_AddTime][datetime], [SC_AddPerson][varchar](50), [SC...
数据库操作教程 2022-09-23 16:47:00 -
sqlserver自动生成拼音首字母的函数
建立一个查询,执行下面的语句生成函数fn_GetPy复制代码代码如下:--生成拼音首码CREATEfunctionfn_GetPy(@strnvarchar(4000))returnsnvarchar(4000)--WITHENCRYPTIONasbegindeclare@intLenintdeclare@strRetnvarchar(4000)declare@tempnvarchar(100)set@intLen=len(@str)set@strRet=''while@intLen>0beginset@temp=''select@temp=casewhensubstring(@str,@intLen,1)>='帀'then'Z'whensubstring(@str,@intLen,1)>='丫'then'Y'whensubstring(@str,@intLen,1)>='夕'then'X'whensubstring(@str,@intLen,1)>='屲'then'W'whensubstring(@str,@intLen,1)>='他'then'T...
数据库操作教程 2022-09-23 16:46:59 -
sqlserver的一个有趣的bit位运算分享
sqlserver中没有bool类型,而是用bit类型来表示bool值,估计是为了节省存储空间。可是要想实现取反操作似乎就麻烦写了,比如类似下面这样的语句是不行的:updatecategorysetvisible=notvisiblewhereid=1,因为visible是bit类型,而不是bool类型...
数据库操作教程 2022-09-23 16:46:58 -
SQLSERVER根据地图经纬度计算距离差示例
SQLSERVER根据地图经纬度计算距离的公式复制代码代码如下:go--创建经纬度距离计算函数CREATEFUNCTION[dbo].[fnGetDistance]--LatBegin开始经度--LngBegin开始维度(@LatBeginREAL,@LngBeginREAL,@LatEndREAL,@LngEndREAL)RETURNSFLOATASBEGIN--距离(千米)DECLARE@DistanceREALDECLARE@EARTH_RADIUSREALSET@EARTH_RADIUS=6378...
数据库操作教程 2022-09-23 16:46:55 -
sql中设置联合主键的具体方法
复制代码代码如下:ALTERTABLE表名字ADDCONSTRAINTpk_表名字PRIMARYKEY(SNumber,SDate);SNumberSDate必须不能为空字段...
数据库操作教程 2022-09-23 16:46:55 -
SQL多表连接查询实例分析(详细图文)
新建两张表:表1:student 截图如下:表2:course 截图如下:(此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。)一、外连接外连接可分为:左连接、右连接、完全外连接...
数据库操作教程 2022-09-23 16:46:55 -
SQLServer常用存储过程及示例
分页:复制代码代码如下:/*分页查找数据*/CREATEPROCEDURE[dbo].[GetRecordSet]@strSqlvarchar(8000),--查询sql,如select*from[user]@PageIndexint,--查询当页号@PageSizeint--每页显示记录ASsetnocountondeclare@p1intdeclare@currentPageintset@currentPage=0declare@RowCountintset@RowCount=0declare@PageCountintset@PageCount=0execsp_cursoropen@p1output,@strSql,@scrollopt=1,@ccopt=1,@rowcount=@rowCountoutput--得到总记录数select@PageCount=ceiling(1.0*@rowCount/@pagesize)--得到总页数,@currentPage=(@PageIndex-1)*@PageSize+1select@RowCount,@PageCountexecsp_cu...
数据库操作教程 2022-09-23 16:46:51 -
SQLcursor用法实例
复制代码代码如下:DECLARE@OldIdvarchar(50) DECLARE@CustomerIDvarchar(50) DECLAREMy_CursorCURSOR--定义游标 FOR(selectCustomerID,oldidfromCustomerwhereArea='bj')--查出需要的集合放到游标中 OPENMy_Cursor;--打开游标 FETCHNEXTFROMMy_CursorINTO@CustomerID,@OldId;--读取第一行数据 WHILE@@FETCH_STATUS=0 BEGIN DECLARE@OtherProVARCHAR(500)  ...
数据库操作教程 2022-09-23 16:46:50 -
如何优化SQL语句的心得浅谈
(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表drivingtable)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询,那就需要选择交叉表(intersectiontable)作为基础表,交叉表是指那个被其他表所引用的表...
数据库操作教程 2022-09-23 16:46:50