About SQL Technology
文章平均质量分 67
Johe_08
做生活中的强者!做工作上的勇者!Learn how to learn!
展开
-
关于SQL语句Count的一点细节
count语句支持*、列名、常量、变量,并且可以用distinct关键字修饰, 并且count(列名)不会累计null的记录。下面随便用一些例子示范一下count的规则:比如对如下表做统计,所有列这里都用sql_variant类型来表示。 if (object_id (t_test )> 0 ) drop table t_test go create table t_test转载 2009-09-22 16:32:00 · 875 阅读 · 0 评论 -
SQL时间函数详细说明
1. 当前系统日期、时间select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值例如:向日期加上2天select dateadd(day,2,2004-10-15) --返回:2004-10-17 00:00:00.0003. datediff 返回跨两个指定日期的日期和时间边界数。select datediff(day,2原创 2009-02-19 14:17:00 · 1188 阅读 · 0 评论 -
创建存储过程的简单例子
USE Adventureworks--Create a new procedure for queryingCREATE PROCEDURE HumanResources.GetEmployeeNameASSELECT LastName,FirstName,Department FROM HumanResources.vEmployeeDepartmentGO--when you finish原创 2009-02-19 14:12:00 · 1134 阅读 · 1 评论 -
存储过程编写经验和优化措施
一、适合读者对象:数据库开发程序员,数据库的数据量很多,涉及到对SP(存储过程)的优化的项目开发人员,对数据库有浓厚兴趣的人。 二、介绍:在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范,将会影响以后的系统维护困难和大SP逻辑的难以理解,另外如果数据库的数据量大或者项目对SP的性能要求很,就会遇到优化的问原创 2009-02-19 14:47:00 · 542 阅读 · 0 评论 -
truncate,delete,drop的异同点
注意:这里说的delete是指不带where子句的delete语句 相同点 truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但原创 2009-02-19 14:45:00 · 586 阅读 · 0 评论 -
Sqlserver中百万数据随机提取的问题
select top 2000 * from tb order by newid()但是在海量数据下,它的性能是无法忍受的。这里我用一个变通的办法来实现性能的提升,思路为:表必须存在一个guid类型的主键或者索引列,然后用这个列去like一个随机字符串,随机字符串必须为guid规定的字符集合(数字+A到Z)。下面例子只用到了数字,并且只用了4个数字来匹配,你可以更改like后面的语句来调整这个转载 2009-02-18 17:44:00 · 1082 阅读 · 0 评论 -
sql优化测试的部分知识
在上一个sql大牛提出的小测试中,优化的就是如何改变查询,来选择合适的连接方式。mssql的连接方式有三种:hash joinmerge joinloop joinhash连接的的话,是将相连的2个表的连接字段都hash化,然后再查找,这样的好处在于如果你的连接字段是字符串类型,甚至是varchar(max)类型,那可想而知,如果一个一个对比,要花费多少时间对比。如果经过hash后,对比的数据量就转载 2009-02-18 17:15:00 · 715 阅读 · 0 评论 -
如何将索引碎片数量降至最低
索引碎片能增大索引树的大小,增加不必要的IO,所以每隔一段时间对索引碎片进行检查时很有必要的。下面一个示例一起来分析如何将索引降至最低。新建一个表:create table t3(i int primary key,xx varchar(200) not null)加入数据:declare @x intset @x = 0while @x 1000begin转载 2009-02-18 17:05:00 · 937 阅读 · 0 评论 -
Creating a 60 GB Index
Recently, I needed to create an index on a 1.5 billion row table. I’ve created some large indexes before, but this was the largest, so I thought I’d share my experience in case anyone was interested.转载 2009-02-01 14:12:00 · 661 阅读 · 0 评论 -
sql isnull函数的使用
sql isnull函数的使用ISNULL使用指定的替换值替换 NULL。语法ISNULL ( check_expression , replacement_value ) 参数check_expression将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。replacement_value在 check_expression原创 2009-01-16 16:41:00 · 1066 阅读 · 0 评论 -
数据库:left join,right join,inner join
表A记录如下:aID aNum1 a200501112 a200501123 a200501134 a200501145 a20050115表B记录如下:bID bName1 20060324012 20060324023原创 2008-11-18 14:20:00 · 1070 阅读 · 0 评论 -
安装SQL Server 2005实例环境图解(4)
> 8准备好安装- 点击Install 按钮开始安装服务包 9安装进度 – 完成的时候检查一下安装的状态。 点击 Next按钮继续 10安装完成 – 检查每个安装的状态,确保状态为“成功” 点击 查看日志文件 按钮来查看安装状态的详细信息。 11日志文件 – 查看日志文件,了解安装的详细步骤和输出转载 2008-11-13 08:02:00 · 747 阅读 · 0 评论 -
SQLServer拆分字符串的三种方法
use tempdbgo--测试数据declare @s varchar(1000)set @s=ak47,mp5,1,23 /*要求输出结果S----ak47mp5123*/ --3种方法对比: --1.[朴实]动态Exec方法:declare @s1 varchar(1000)set @s1=right(repla原创 2008-11-12 19:50:00 · 1444 阅读 · 0 评论 -
SQL中的日期转换函数详细总结
convert(char(10),datetime,101)在数据库取出来的时候就转换好 select getdate() 2004-09-12 11:06:08.177 我整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下: select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08 select re原创 2009-02-19 14:23:00 · 1200 阅读 · 0 评论 -
SQL Server 2005四个新的排序函数: ROW_NUMBER、RANK、DENSE_RANK 和 NTILE
ROW_NUMBER、RANK、DENSE_RANK 和 NTILE,这些新函数使您可以有效地分析数据以及向查询的结果行提供排序值。您可能发现这些新函数有用的典型方案包括:将连续整数分配给结果行,以便进行表示、分页、计分和绘制直方图。 Speaker Statistics 方案下面的 Speaker Statistics 方案将用来讨论和演示不同的函数和它们的子句。大型计算会议包括三个议题原创 2009-02-19 14:42:00 · 1291 阅读 · 0 评论 -
UNION 和UNION ALL 的区别
在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如: select * from A unio原创 2009-07-20 14:49:00 · 831 阅读 · 0 评论 -
SQL日期格式转换
1、CONVERT在日期转换中的使用示例--字符转换为日期时,Style的使用 --1. Style=101时,表示日期字符串为:mm/dd/yyyy格式SELECT CONVERT(datetime,11/1/2003,101)--结果:2003-11-01 00:00:00.000 --2. Style=101时,表示日期字符串为:dd/mm/yyyy格式SELECT CONVERT(原创 2009-02-24 17:51:00 · 25192 阅读 · 0 评论 -
SQL语句大全
--语 句 功 能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --原创 2009-02-19 16:42:00 · 662 阅读 · 0 评论 -
SQL Server 2005 hash联接算法
这是SQL Server 2005里的介绍: 如果两个联接输入都很大,而且这两个输入的大小差不多,则预先排序的合并联接提供的性能与哈希联接相近。但是,如果这两个输入的大小相差很大,则哈希联接操作通常快得多。 哈希联接可以有效处理未排序的大型非索引输入。它们对复杂查询的中间结果很有用,因为: · 中间结果未经索引(除非已经显式保存到磁盘上然后创建索引)原创 2009-02-18 17:00:00 · 876 阅读 · 0 评论 -
使用SQL视图查出所有的数据库字典
本文中的SQL代码可以在企业管理器、查询分析器中简单执行,直接了当的查出SQL Server 2000及SQL Server 2005的所有数据字典。 (注释:数据库字典包括表结构(分SQL Server 2000和SQL Server 2005)、索引和主键.外键.约束.视图.函数.存储过程.触发器。) SQL Server 2000数据库字典—表结构.sql原创 2009-02-20 14:38:00 · 998 阅读 · 0 评论 -
如何快速给现有表添加一个自增字段
http://www.mssqltips.com/tip.asp?tip=1467大家可以看看这篇文章,讲到的是如何给一个现有表更快速的添加一个自增字段,原始的方法代码:ALTER TABLE accounts ADD id INT IDENTITY(1,1) 那么作者也贴出来了统计信息:SQL Server parse and compile time: CPU time = 0 m原创 2009-02-19 16:04:00 · 4230 阅读 · 1 评论 -
sql函数大全
--聚合函数use pubsgoselect avg(distinct price) --算平均数from titleswhere type=businessgo use pubsgoselect max(ytd_sales) --最大数from titlesgo use pubsgoselect min(ytd_sales) --最小数from titlesgo use pubsgose原创 2009-02-19 15:19:00 · 1003 阅读 · 0 评论 -
SQL 字符串函数小总结
1:replace 函数第一个参数你的字符串,第二个参数你想替换的部分,第三个参数你要替换成什么select replace(lihan,a,b) -----------------------------lihbn(所影响的行数为 1 行)========原创 2009-02-19 15:02:00 · 533 阅读 · 0 评论 -
SQL--DateADD() 和datediff()的妙用
/***************************************************作者:万泽贵**时间:2009-02-03**理由:自己整理和网上收集,方便学习**************************************************//*convert(varchar(10),字段名,转换格式)说明:此样式一般在时间类型(datetime,sma转载 2009-02-19 13:59:00 · 6208 阅读 · 0 评论 -
DateDiff 函数
返回两个日期之间的时间间隔。 DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])DateDiff 函数的语法有以下参数:参数interval必选项。String expression 表示用于计算 date1 和 date2 之间的时间间隔。有关数值,请参阅“设置”部分。date1, d转载 2009-02-19 13:56:00 · 1092 阅读 · 0 评论 -
SQL Server高效维护数据库的关键技巧(Paul S. Randal)
概览:管理数据和事务日志文件 清除索引碎片 确保统计数据准确、最新 检测遭到破坏的数据库页 建立有效的备份策略 目录 数据和日志文件管理 索引碎片 统计数据 损坏检测 备份 总结 在一周之内多次有人向我征求高效维护生产数据库的建议。有时问题来自 DBA,他们正在实施新的解决方案,希望得到帮助对维护进行精细调整适合其新数据库转载 2009-02-18 18:01:00 · 1385 阅读 · 0 评论 -
SQL Server数据库中经常用到的identity列
SQL Server中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便。但它有时还会带来一些麻烦。 示例一 :当表中被删除了某些数据的时候,自增长列的编号就不再是一个连线的数列。这种时候我们可以用以下方案来解决。 SET IDENTITY_INSERT [TABLE] [ON|OFF] 允许将显原创 2009-02-20 14:03:00 · 1117 阅读 · 0 评论 -
安装SQL Server 2005实例环境图解(3)
14调整设置– 为环境进行调整设置的配置。 点击 Next按钮继续 点击“安装”并检查你的总结日志 15准备安装– 检查安装的项目。点击“安装”按钮继续 16安装进度 – 检查过程中每个步骤的状态。安装结束后,点击Next 按钮继续 17完成微软SQL Server 2005 的安装 – 检查总结日志并点击 finish 按钮结束安转载 2008-11-13 08:00:00 · 1088 阅读 · 0 评论 -
安装SQL Server 2005实例环境图解(2)
4欢迎– 点击 Next 按钮开始安装过程。 5系统配置检查——安装应用程序需要查看服务器上的15个组件,并且判断成功和失败。 如果必要的话,检查按钮右边的报告选项。点击“next”按钮继续。 6安装–一个进度条显示安装过程的状态. 不需要动作. 选择SQL Server安装组件 7注册信息 – 输入姓名和公司,继续 SQL Serve转载 2008-11-13 07:58:00 · 1317 阅读 · 0 评论 -
DATEDIFF 函数 [日期和时间]
功能 返回两个日期之间的间隔。语法 DATEDIFF ( date-part, date-expression-1, date-expression-2 )date-part :year | quarter | month | week | day | hour | minute | second | millisecond参数 date-part 指定要测量其间隔的原创 2008-10-28 16:38:00 · 1119 阅读 · 0 评论 -
SQL SERVER性能优化综述
近期因工作需要,希望比较全面的总结下SQL SERVER数据库性能优化相关的注意事项,在网上搜索了一下,发现很多文章,有的都列出了上百条,但是仔细看发现,有很多似是而非或者过时(可能对SQL SERVER6.5以前的版本或者ORACLE是适用的)的信息,只好自己根据以前的经验和测试结果进行总结了。我始终认为,一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的原创 2008-10-27 18:34:00 · 499 阅读 · 0 评论 -
经典的SQL面试题(六)
1、在MS SQL Server中,用来显示数据库信息的系统存储过程是( ) A sp_ dbhelp B sp_ db C sp_ help D sp_ helpdb 2、SQL语言中,删除一个表的命令是( ) A DELETE B DROP C CLEAR D REMORE 3、关系数据库中,主键是(__) A、为标识表中唯一的实体 B、创建唯一的索引,允许空值 C、只允许以表中第一字段建立原创 2008-10-27 18:09:00 · 5124 阅读 · 0 评论 -
经典的SQL面试题(四)
问题描述:为管理岗位业务培训信息,建立3个表:S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄C (C#,CN ) C#,CN 分别代表课程编号、课程名称SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩要求实现如下5个处理: 1. 使用标准SQL嵌套语句查询选修课程原创 2008-10-27 18:07:00 · 856 阅读 · 0 评论 -
经典的SQL面试题(二)
21、查询不同老师所教不同课程平均分从高到低显示 SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩 FROM SC AS T,Course AS C ,Teacher AS Z where T.C#=C.C# and C.T#=Z.原创 2008-10-27 18:05:00 · 523 阅读 · 0 评论 -
经典的SQL面试题(一)
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#=001) a,(sel原创 2008-10-27 18:03:00 · 523 阅读 · 0 评论 -
EXCEL——>SQL
SQL数据库中存在一个Hotel_Gz表,其中有4个字段,分别是ID,Logtime,Mobile, GZContent。里面ID是递增的,Logtime是默认getdate(),我想把新的数据(就2列:手机号码和工资条)从excel表导入Hotel_Gz表,脚本如下: insert into Hotel_Gz select 手机号码 as Mobile,工资条 as原创 2008-10-28 13:28:00 · 579 阅读 · 0 评论 -
经典的SQL面试题(三)
问题描述:本题用到下面三个关系表:CARD 借书卡。 CNO 卡号,NAME 姓名,CLASS 班级BOOKS 图书。 BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY 库存册数 BORROW 借书记录。 CNO 借书卡号,BNO 书号,RDATE 还书日期备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。要求实现如下原创 2008-10-27 18:05:00 · 615 阅读 · 0 评论 -
如何把windows身份验证模式改为混合验证模式
1、如何解决SQL2000连接数据库失败及如何把windows身份验证模式改为混合验证模式。。。 由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa )进行连接。解决方法如下所示: 1、 在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL Server; 2、 展开"SQL Se原创 2008-10-17 10:02:00 · 10816 阅读 · 2 评论 -
如何将Excel导入数据库
先在类中定义一个方法名为ExecleDs的方法,用于将Excel表里的数据填充到DataSet中,代码如下 1 public DataSet ExecleDs(string filenameurl,string table) 2 { 3 string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "d转载 2008-10-17 10:29:00 · 1495 阅读 · 3 评论 -
比较复杂的动态SQL语句功能一例[不太懂,好好研究一下]
今天在论坛里见到一个关于动态SQL问题,觉得有点意思,于是解答了一下,顺便把我的解决方案转到这里。---------------------------------------------------------------------------------------------------------------------------------------------------转载 2008-10-17 10:14:00 · 519 阅读 · 0 评论