
sql
文章平均质量分 70
码蚁农
十年磨一剑
展开
-
GROUP BY,WHERE,HAVING之间的区别和用法
having子句与where有相似之处但也有区别,都是设定条件的语句。在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。简单说来:where子句:select sum(num) as rmb from order where id>10转载 2012-11-27 22:31:48 · 2134 阅读 · 0 评论 -
用SQL语句添加删除修改字段
用SQL语句添加删除修改字段1.增加字段 alter table docdsp add dspcode char(200)2.删除字段 ALTER TABLE table_NAME DROP COLUMNcolumn_NAME3.修改字段类型 ALTER TABLEtable_name ALTER COLUMNcolumn_name ne转载 2012-12-17 09:53:39 · 480 阅读 · 0 评论 -
sp_executesql介绍和使用
execute相信大家都用的用熟了,简写为exec,除了用来执行存储过程,一般都用来执行动态Sql sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的,如: exec sp_executesql @sql, N'@count int out,@id varchar(20)', @cou out ,@id @sql为拼成的动态sql N'转载 2013-01-06 11:10:39 · 396 阅读 · 0 评论 -
WITH (NOLOCK)
WITH (NOLOCK)缺点: 1.会产生脏读 2.只适用与select查询语句优点: 1.有些文件说,加了WITH (NOLOCK)的SQL查询效率可以增加33%。 2.可以用于inner join 语句脏读: 一个用户对一个资源做了修改,此时另外一个用户正好读取了这条被修改的记录,然后,第一个用户放弃修改,数据回到修改之前,这两个不同的结果就是脏读。转载 2013-01-14 11:24:00 · 532 阅读 · 0 评论 -
UNPIVOT 关键字将查询的字段一行显示
使用 PIVOT 和 UNPIVOT可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表。PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列值。注意对升级到 SQL Ser转载 2013-02-01 15:14:12 · 787 阅读 · 0 评论 -
SQL的top 100 percent用法
ALTER view [dbo].[V_EXP_Freebeer] asselect top 100 PERCENT a.ContractNo,a.PayerID,a.PayerName,q.YearMonth,b.SKUID,C.CProduct,f.Volumefrom bd_contract_main a... order by a.ContractID,b原创 2013-02-20 17:30:36 · 2700 阅读 · 0 评论 -
锁概念 以及 例程说明
锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致 不可重复读A用户读取数转载 2013-03-19 12:18:02 · 490 阅读 · 0 评论 -
在T-SQL语句中访问远程数据库(openrowset/opendatasource/openquery)
1、启用Ad Hoc Distributed Queries在使用openrowset/opendatasource前搜先要启用Ad Hoc Distributed Queries服务,因为这个服务不安全所以SqlServer默认是关闭的启用Ad Hoc Distributed Queries的方法SQL Server 阻止了对组件 'Ad Hoc Distributed Querie转载 2013-04-09 14:08:24 · 563 阅读 · 0 评论 -
SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL
一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如果每个部转载 2013-07-18 15:03:17 · 484 阅读 · 0 评论 -
SQL中的循环、for循环、游标
我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加、修改、删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃力,翻遍网上的资料,找不到几个正确的并能执行的循环处理数据的方法,在这里,我来给大家分享一下!要SQL中写类似for循环,我这里使用的是SQL中的游标来实现,当然SQL中也有for loop、wh转载 2013-12-06 11:07:52 · 895 阅读 · 0 评论 -
sql server 发邮件
SQL SERVER提供了通过EXCHANGE或OUTLOOK收发邮件的扩展存储过程,下面将这几个过程简单的介绍一下。一、启动SQL Mailxp_startmail @user,@password@user和@password都是可选的也可打开Enterprise Manager中的Support Services,在SQL Mail上单击右键打开右键菜单,然后按Start来启动转载 2014-02-14 13:03:47 · 499 阅读 · 0 评论 -
SQL编程性能优化--ORACLE
SQL优化 ORACLE采用自后而前的顺序解析WHERE写在最后的表将做为基础驱动表表之间的连接必须写在其他WHERE条件之上可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾 [执行153.3秒]SELECT … FROM emp e WHERE sal > 50000 AND job = ‘MANAGER’转载 2015-05-08 15:35:05 · 380 阅读 · 0 评论 -
Oracle脚本编写“青铜”守则
一,原则 1,必须 注意表的顺序,主从表依次从下往上(从右往左) 2,必须 注意查询条件的顺序,主从条件依次从下往上 3,必须 在编写查询语句前,规划主从表(主表的字段,对于从表来说就是常量) 4,必须 使用表时,用别名(提升效率,而不仅仅是避免同名字段) 5,必须 在转载 2015-05-08 15:35:49 · 663 阅读 · 0 评论 -
那些高性能的SQL语句编写的事
1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。 见2的例子 2.多表关联查询时,主表放在最后。--------------------------------- 修改前 ----------------------------------------s转载 2015-05-08 15:42:15 · 609 阅读 · 0 评论 -
Oracle Hint的用法
1. /*+ALL_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;2. /*+FIRST_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.例如转载 2015-05-08 22:50:30 · 402 阅读 · 0 评论 -
Orcale 性能优化之索引使用
1.索引必须合理创建,过多的创建索引会增加增删改的负担。2.有空值的字段尽量不要建索引。3.尽可能建立唯一的索引。4.常用的字段组合可以建立复合索引。 5.不要在索引列使用以下操作,否则索引会失效。 a.not、 b. is null ,isnot null c.like,like比较特殊,当使用 like '%xx%'时,索引会失效;左模糊转载 2015-05-08 15:43:43 · 793 阅读 · 0 评论 -
MSSql数据库锁
在使用MSSql的时候,在多用户的情况下不免要进行并发控制。微软提供了锁机制。这里锁分为两个部分,一个是锁的范围(行锁、页面锁、表锁),另一个是锁的粒度(共享锁、持有锁等)在锁定数据的时候要配合锁的范围和粒度。例如 select * from Table with(RowLock,XLock) where ID=1 就可以将Table的一行设置独占锁。一般情况下在事务的开始可以先使用U转载 2012-12-14 13:52:48 · 387 阅读 · 0 评论 -
T-SQL 创建数据库
/*创建bbsDB数据库*/use masterif exists(select * from sysdatabases where name='bbsDB')drop database bbsDBcreate database bbsDBon(name='bbsDB_data',filename='D:\project\bbsDB_data.mdf',size原创 2012-12-14 10:43:53 · 547 阅读 · 0 评论 -
几种常见SQL分页方式效率比较
分页很重要,面试会遇到。不妨再回顾总结一下。1.创建测试环境,(插入100万条数据大概耗时5分钟)。create database DBTestuse DBTest--创建测试表create table pagetest(id int identity(1,1) not null,col01 int null,col02 nvarchar(50) null,col03转载 2012-11-28 23:06:07 · 396 阅读 · 0 评论 -
Sql Server 事务
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。在sql server+ .net 开发环境下,有两种方法能够完成事务的操作,保持数据库的数据完整性;一个就是用sql存储过程,另一个就是在ADO.NET中一种简单的转载 2012-12-03 00:16:12 · 331 阅读 · 0 评论 -
sql 将结果合并一行显示
废话不多说上代码:select ''''+Goods_parentNumber+''''+',' from Base_Goods where len(Goods_parentNumber)>0 for xml path('')原创 2012-05-05 14:34:39 · 726 阅读 · 0 评论 -
SQL Server 存储过程
SQL Server 存储过程Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行转载 2012-11-18 22:45:31 · 461 阅读 · 0 评论 -
表结构操作
1、复制表结构及数据到新表CREATE TABLE 新表SELECT * FROM 旧表这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、Extra(auto_increment)等属性。需要自己用"alter"添加,而且容易原创 2012-11-18 22:48:43 · 380 阅读 · 0 评论 -
SQL几种连接查询
2012-03-30 10:37:10| 分类:技术文章 | 标签:|字号大中小 订阅 一、NATURAL JOIN(自然连接) 两张表通过NATURAL JOIN连接的时候,相当于有个隐含的WHERE子句,对两张表中同名的对应列相比较看是否相等。 二、CROSS JOIN(创建笛卡尔积) 对两张表通过交叉联合产生转载 2012-11-19 21:34:23 · 664 阅读 · 0 评论 -
sql newid()随机函数
从A表随机取2条记录,用SELECT TOP 10 * FROM ywle order by newid()order by 一般是根据某一字段排序,newid()的返回值 是uniqueidentifier ,order by newid()随机选取记录是如何进行的newid()在扫描每条记录的时候都生成一个值, 而生成的值是随机的, 没有大小写顺序. 所以最终结果再按这个排序, 排序的翻译 2012-12-05 10:25:33 · 626 阅读 · 0 评论 -
sql数据类型转换(cast() and convent())函数)
数据类型转换在 Transact-SQL 中,可能有两个级别的数据类型转换: 当一个对象的数据移动到另一个对象,或两个对象之间的数据进行比较或组合时,数据可能不得不从一个对象的数据类型转换为另一个对象的数据类型。当将来自 Transact-SQL 结果列、返回代码或输出参数的数据移动到程序变量中时,必须将这些数据从 Microsoft® SQL Server™ 数据类型转换成该转载 2012-12-06 15:53:55 · 956 阅读 · 0 评论 -
使用T-SQL语句创建库,表,帐户,用户,授权的详细操作
使用T-SQL语句创建库,表,帐户,用户,授权的详细操作--跳转到master数据库use mastergo--判断如果存在Number数据库就输出if exists(select name from sysdatabases where name = 'Number')drop database Numbergo--创建数据库NumberOne转载 2012-12-06 16:41:33 · 5527 阅读 · 0 评论 -
sql 注入
当你打开百度新闻搜索“黑客”关键字时能看到什么?没错,有太多知名的网站被黑客攻破,有太多牛X的IT系统对黑客来说如入无人之境……进入WEB2.0时代,我们的IT当真变得如此脆弱了吗?记得在一次有关安全的研讨会上,有专家谈到了这样的观点:互联网在设计之初,也没能预想到互联网会发展成现在的庞大规模,如果互联网依然只应用于教育网、科研网,就不会有这么多的问题,难道我们真得需要在重新织一张网?虽然这只转载 2012-12-06 18:09:20 · 489 阅读 · 0 评论 -
SQL Server游标的使用【转】
游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的。而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服。 正常面向集合的思维方式是: 而对于游标来说: 这也是为什么游标是邪恶的,它会使开发人员变懒,懒得去想用面向集合的查询方式实转载 2012-11-24 12:22:00 · 737 阅读 · 0 评论 -
SQL利用Case When Then多条件判断
CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 WHEN 条件3 THEN 结果3 WHEN 条件4 THEN 结果4......... WHEN 条件N THEN 结果N ELSE 结果XENDCase具有两种格式。简单Case函数和Case搜索函数。--简单Case函数CASE sex转载 2012-12-06 16:32:46 · 553 阅读 · 0 评论 -
关于sql 几种分页查询效率的存储过程
创建数据库和表向表中插入十万条数据--创建数据库create database pageTestgocreate table T_page( id int identity(1,1) not null, t_Number int null, t_Name nvarchar(50) null, t_dataTime datetime)原创 2012-12-06 17:47:10 · 433 阅读 · 0 评论 -
SQL Server中常用全局变量介绍
在SQL Server中,全局变量是一种特殊类型的变量,服务器将维护这些变量的值。全局变量以@@前缀开头,不必进行声明,它们属于系统定义的函数。下表就是SQL Server中一些常用的全局变量。 【IT专家网独家】在SQL Server中,全局变量是一种特殊类型的变量,服务器将维护这些变量的值。全局变量以@@前缀开头,不必进行声明,它们属于系统定义的函数。下表就是SQL Server转载 2012-12-10 11:55:27 · 887 阅读 · 0 评论 -
简单的转账Tran 事务例子
--创建表 IF(object_id('TranMoney') IS NOT NULL)DROP TABLE TranMoneyCREATE TABLE TranMoney( ID NVARCHAR(50) NOT NULL, T_Money MONEY NOT NULL )GOINSERT INTO TranMoney VALUES(原创 2012-12-10 13:44:55 · 488 阅读 · 0 评论 -
MSSQL常用函数
函数名 作用 简单示例 字符转换 ASCLL返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错.ASCLL(‘A’) 返回 97ASCLL(1) 返回 49原创 2012-12-13 12:08:09 · 502 阅读 · 0 评论 -
【SQL】SELECT语句中集合运算符 UNION/INTERSECT/MINUS
使用UNION(ALL)、INTERSECT、MINUS可以对子查询的结果集进行结合运算:创建测试表create table test1 as select * from emp where deptno in (10,20);create table test2 as select * from emp where deptno in (20,30);测试表tes转载 2015-05-08 15:05:22 · 1147 阅读 · 0 评论