-
SQL字段拆分优化
今天看到一条用函数处理连接的SQL,是群里某位网友的,SQL语句如下:SELECTSO_Order.fdate,SO_Order.fsnFROMso_orderINNERJOINso_orderitemONCHARINDEX(so_Orderitem.fid,SO_Order.fid)>=1WHEREso_order.FOrderDate='2015-09-06'语句不算复杂,只是执行比较慢,下面是关于这SQL语句的一些信息:--1.SQL执行203条数据--2.耗时12秒--3.so_order表的fid字段是字符串集合,--由1-2个字符串组成,用','分隔SELECTCOUNT(*)FROMSO_OrderWHEREso_order.FOrderDate='2015-09-06'--24SELECTCOUNT(*)FROMso_Orderitem--414154 通过分析执行计划,so_order和so_orderitem走嵌套循环是正确的,查询的瓶颈是在so_orderitem的索引扫描上。因此,我们要通过改写SQL,达到so_orderitem走索引查找的目的...
数据库操作教程 2022-09-23 17:49:09 -
SQLServer存储过程中事务的使用方法
本文为大家分享了SQLServer存储过程中事务的使用方法,具体代码如下createprocusp_Stock@GoodsIdint,@Numberint,@StockPricemoney,@SupplierIdint,@EmpIdint,@StockUnitvarchar(50),@StockDatedatetime,@TotalMoneymoney,@ActMoneymoney,@baseIdint,@Descriptionnvarchar(255)asdeclare@errorint=0--事务中操作的错误记录--开启事务begintransaction--实现进货信息的添加insertintoStockInfovalues(@GoodsId,@Number,@StockPrice,@SupplierId,@EmpId,@StockUnit,@StockDate,@TotalMoney,@ActMoney,DEFAULT,@Description,@baseId)set@error+=@@ERROR--记录有可能产生的错误号--获取当前进货信息的标识列--判断当前商品有没有进货记...
数据库操作教程 2022-09-23 17:49:02 -
详解SQLServer和Oracle的分页查询
不管是DRP中的分页查询代码的实现还是面试题中看到的关于分页查询的考察,都给我一个提示:分页查询是重要的。当数据量大的时候是必须考虑的...
数据库操作教程 2022-09-23 17:48:59 -
SQL中位数函数实例
表还是total_sales添加一项表:SQL语句:复制代码代码如下:SELECT*from( SELECTa1.Name,a1.Sales,COUNT(a2.sales)Sales_Rank FROMTotal_Salesa1,Total_Salesa2 WHEREa1.Sales<a2.Salesor(a1.Sales=a2.Salesanda1.Name=a2.Name) GROUPBYa1.Name,a1.Sales ORDERBYa1.SalesDESC,a1.NameDESC)astabWHEREtab.sales_rank=(select(count(*)+1)div2fromtotal_sales);可以查找到中间的项,count(*)+1,这个1必须要添加,总项数假如为奇数7,则count(*)+1/2=4,假如是6则为3,都是满足的,如果不+1的话,对奇数项则不满足,如7,count(*)/2...
数据库操作教程 2022-09-23 17:48:56 -
恢复sqlserver2000误删数据的解决办法
今天不小心把客户那边的数据库中删了一千多条数据,而且之前又没有备份,真的是很郁闷,后来在网上找到一工具,用起来挺方便,让我躲过一劫。首先来看一下界面:输入服务器地址,用户名及密码后点Connect,进入到下面的界面:在这里选择要恢复数据的数据库,选择UseOn-lineLog(如果你又备份文件的话就不需要用这个工具了,直接用SQL搞定了)...
数据库操作教程 2022-09-23 17:48:53 -
将string数组转化为sql的in条件用sql查询
例如:我想将String[]str={"4","5","6"}转化为“‘4',‘5',‘6'”字符串。这样我就可以用sql查询:select*fromtableNameidin(字符串)了...
数据库操作教程 2022-09-23 17:48:46 -
SQLServer数据库中批量导入数据的2种方法
在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题。其实,在SQLServer中集成了很多成批导入数据的方法...
数据库操作教程 2022-09-23 17:48:39 -
SQLSERVER数据库表记录只保留N天图文教程
本文通过图文并茂的方式给大家展示SQLSERVER数据库表记录只保留N天图文教程,具体方法步骤请看下文:第一步:首先设置SQLServer代理服务为自动启动:“开始”-->"控制面板"-->"管理工具"-->"服务"-->右键"SQLSERVER代理"-->"属性"-->"启动类型",选择"自动启动"-->"确定"...
数据库操作教程 2022-09-23 17:48:37 -
java连接sqlserver2008数据库配置
1.首先要去Microsoft官网下载sqljdbc2.0驱动——MicrosoftSQLServerJDBCDriver2.0.exe,很小大概就4M,解压后里面有2个Jar包,sqljdbc4.jar和sqljdbc.jar,这两个都一样,只是针对你的JDK的版本的不同,如果你是JDK6.0直接导入sqljdbc4.jar,以下版本的导入sqljdbc.jar,如果怕麻烦的,两个都导进去也行。2.包导完了,现在启动SQL配置器,SQL2000的默认端口是1433,所以只要开启端口就能连得上,但08的端口据说是动态的,具体的本人也不清楚,就是因为这个端口我也被整了2天,最后终于连上了...
数据库操作教程 2022-09-23 17:48:30 -
详解Sql基础语法
1.创建数据库create database数据库名称2.删除数据库dropdatabase数据库名称3.备份sqlserver创建备份数据的deviceusemasterexecsp_addumpdevice'名称','新的名称','路径'开始备份backupdatabasepubsto新的名称4.创建表createtable表名(列名1类型,列名2类型)5.根据已有表创建新表createtable新表名称like旧表名称createtable新表名称asselect列名from旧表名称defintiononly6.增加一个列Altertable表名称add列名称数据类型7.添加主键altertable表名称addprimarykey(列名称)8.自增id属性从1开始每次加1identity(1,1)9.创建索引createindex索引名on表名(列名)10.删除索引dropindexidx_name11.CTE查询;withtas(selectopenid,ROW_NUMBER()over(partitionbyopenidorderbyopenid)asrowfrom...
数据库操作教程 2022-09-23 17:48:10 -
浅析SQLServer中的执行计划缓存(上)
简介我们平时所写的SQL语句本质只是获取数据的逻辑,而不是获取数据的物理路径。当我们写的SQL语句传到SQLServer的时候,查询分析器会将语句依次进行解析(Parse)、绑定(Bind)、查询优化(Optimization,有时候也被称为简化)、执行(Execution)...
数据库操作教程 2022-09-23 17:48:06 -
mssqlserver中实现的unix时间戳函数(含生成和格式化,可以和mysql兼容)
直接上代码:CREATEFUNCTIONUNIX_TIMESTAMP(@ctimestampdatetime)RETURNSintegerASBEGIN/*Functionbody*/declare@returnintegerSELECT@return=DATEDIFF(SECOND,{d'1970-01-01'},@ctimestamp)return@returnENDCREATEFUNCTIONfrom_unixtime(@tsinteger)RETURNSdatetimeASBEGIN/*Functionbody*/declare@returndatetimeselect@return=DATEADD(second,@ts,{d'1970-01-01'})return@returnEND用法跟MySQL下的一样类似:selectdbo.UNIX_TIMESTAMP('2013-1-1')selectdbo...
数据库操作教程 2022-09-23 17:47:59