随笔分类 -  数据库总结

SQL Server 触发器
摘要:一: 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。二: SQL Server为每个触发器都创建了两个专用表:Inserted表和Deleted表。这两个表。 一: 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。 二: SQL Server为每个触发器都创建了两个专用表:Inserted表和Deleted表。这两个表由系统来维护﹐它们存在于内存中而不是在数据库中。这两个表的... 阅读全文
posted @ 2014-02-12 10:39 higirle 阅读(392) 评论(0) 推荐(0)
聚簇索引和聚簇索引介绍
摘要:聚簇索引和聚簇索引介绍一.什么是索引和建立索引的好处什么是索引 在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别,与书中的索引一样,数据库中的索引使您可以快速找到表中的特定信息。索引包含从表中一个或多个列生成的键,以及映射到指定数据的存储位置的指针,也就是说索引由键和指针组成。它是用于提高数据库表数据访问速度的数据库对象。建立索引的好处:索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。对于非聚集索引,有些查询甚至可以不访问数据页。如字典的目录就可以查到所有拼音第一字母为z的所有字。聚集索引可以避免数据插入操作集中于表的最后一个数据页。一些情况下,. 阅读全文
posted @ 2014-02-10 15:57 higirle 阅读(10773) 评论(1) 推荐(4)
死锁产生的原因和解锁的方法
摘要:产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。二锁的分类锁的类别有两种分法:1.从数据库系统的角度来看:分为独占锁(即排它锁),共享锁和更新锁MS-SQLServer使用以下资源锁模式。锁模式描述共享(S) :读锁,用于不更改或不更新数据的操作(只读操作),如SELECT语句。更新(U) :(介于共享和排它锁之间),可以让其他程序在不加锁的条件下读,但本程 阅读全文
posted @ 2014-02-08 16:46 higirle 阅读(125513) 评论(1) 推荐(5)
查询语句中select from where group by having order by的执行顺序
摘要:查询语句中select from where group by having order by的执行顺序1.查询中用到的关键词主要包含六个,并且他们的顺序依次为select--from--where--group by--having--order by其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行from--where--group by--having--select--order by,from:需要从哪个数据表检索数据where:过滤表中数据的条件group by:如何将上面过滤出的数据分组ha 阅读全文
posted @ 2014-01-20 16:04 higirle 阅读(40857) 评论(3) 推荐(4)
SQL经典面试题及答案
摘要:SQL经典面试题及答案1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2005-05-10 负如果要生成下列结果, 该如何写sql语句? 胜 负2005-05-09 2 22005-05-10 1 2------------------------------------------create table #tmp(rq varchar(10),shengfu nchar(1))insert into #tmp values('2005 阅读全文
posted @ 2014-01-19 15:21 higirle 阅读(13076) 评论(0) 推荐(0)
SQL 面试题及答案(一)
摘要:1. SQL 语法:update set from:http://wenku.baidu.com/link?url=aVr5EbEmx-pNK86rdnas8YDWG8txjg8GEry-HU_dFoB7tGX78mJs1jMpNpGnUAO-1AuYpHsq2cMs4ONXRL7bhGlkE_PuhwnNDGXvJPcDChi2.Student(S#,Sname,Sage,Ssex) 学生表 S#:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别Course(C#,Cname,T#) 课程表 C#,课程编号;Cname:课程名字;T#:教师编号SC(S#,C#,score) 阅读全文
posted @ 2014-01-19 15:17 higirle 阅读(6558) 评论(2) 推荐(1)
SQL面试题
摘要:现在我们假设只有一个table,名为pages,有四个字段,id, url,title,body。里面储存了很多网页,网页的url地址,title和网页的内容,然后你用一个sql查询将url匹配的排在最前, title匹配的其次,body匹配最后,没有任何字段匹配的,不返回。就是上面这道面试题,让我想了一个下午,在网上找资料,最后用下面方法实现SELECT *FROM page where url like '%baidu%' or title like '%baidu%' or like ''ORDER BY CHARINDEX('ba 阅读全文
posted @ 2014-01-19 09:52 higirle 阅读(1071) 评论(0) 推荐(0)
sql(join on 和where的执行顺序)
摘要:left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。full join:外连接,返回两个表中的行:left join + right join。cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。关键字:on数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。在使用leftjion时,on和where条件的区别如下:1、on条件是在生成临时 阅读全文
posted @ 2014-01-18 20:03 higirle 阅读(84997) 评论(8) 推荐(10)
SQL 链接字符串
摘要:链接字符串: A.B.C or A.CSql Server:create DataBase TestDemo;use TestDemoCreate Table Test1( name varchar(1024), id int )insert into Test1 values('a12',1)insert into Test1 values('^12',2)insert into Test1 values('b12',3)insert into Test1 values('m12',4)insert into Test1 val 阅读全文
posted @ 2013-06-13 14:48 higirle 阅读(301) 评论(0) 推荐(0)
表变量与临时表的优缺点
摘要:什么情况下使用表变量?什么情况下使用临时表?表变量: DECLARE @tb table(id int identity(1,1), name varchar(100)) INSERT @tb SELECT id, name FROM mytable WHERE name like ‘zhang%’ 临时表: SELECT name, address INTO #ta FROM mytable WHERE name like ‘zhang%’表变量和临时表的比较:临时表是利用了硬盘(tempdb数据库) ,表名变量是占用内存,因此小数据量当然是内存中的表变量更快。当大数据量时,就不... 阅读全文
posted @ 2013-06-13 14:14 higirle 阅读(1794) 评论(0) 推荐(0)
利用带关联子查询Update语句更新数据
摘要:利用带关联子查询Update语句更新数据 Update是T-sql中再简单不过的语句了,update table set column=expression[where condition],我们都会用到。但update的用法不仅于此,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果。 假定有表Table1(a,b,c)和Table2(a,c),现在Table1中有些记录字段c为null,要根据字段a在Table2中查找,取出字段a相等的字段c的值来更新Table1。一种常规的思路,通过游标遍历Table1中字段c为null的所有记录,在循环体内查找Table2并进行更新,即 阅读全文
posted @ 2013-06-13 13:53 higirle 阅读(432) 评论(0) 推荐(0)
union和union all的区别
摘要:Union因为要进行重复值扫描,所以效率低。如果合并没有刻意要删除重复行,那么就使用Union All两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致);如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。 union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。 Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序; Union A 阅读全文
posted @ 2013-06-13 13:49 higirle 阅读(441) 评论(0) 推荐(0)
SELECT INTO 和 INSERT INTO SELECT
摘要:a: Insert into Table2 values('AAA','90')b: INSERT Table2 select Table1.a,Table1.b from Table1C: Insert into Table2(field1,field2,...) select value1,value2,... from Table1d: SELECT vale1, value2 into Table2 from Table1转载:http://www.cnblogs.com/freshman0216/archive/2008/08/15/1268316.h 阅读全文
posted @ 2013-06-13 13:46 higirle 阅读(627) 评论(0) 推荐(0)
truncate和Delete的区别
摘要:TRUNCATETABLE在功能上与不带WHERE子句的DELETE语句相同:二者均删除表中的全部行。但TRUNCATETABLE比DELETE速度快,且使用的系统和事务日志资源少。DELETE语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATETABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。TRUNCATETABLE删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用DELETE。如果要删除表定义及其数据,请使用DROPTABLE语句。对于由FOREIGNKEY约束引 阅读全文
posted @ 2013-06-13 13:45 higirle 阅读(273) 评论(0) 推荐(0)
Examining Query Execution Plans
摘要:See Also: Main_Page - Monitoring & Tuning - Tuning Tools - SQL Server Query OptimizerSeveral ways exist to generate an execution plan in SQL Server. First, and most frequently used, are the graphical execution plans. These are followed by XML execution plans and plain text execution plans.Conten 阅读全文
posted @ 2013-02-27 16:26 higirle 阅读(362) 评论(0) 推荐(0)
SQL execution plan
摘要:Refer: http://stackoverflow.com/questions/7359702/how-do-i-obtain-a-query-execution-planThere are a number of methods of obtaining an execution plan, which one to use will depend on your circumstances. Usually you can use SQL Server Management Studio to get a plan, however if for some reason you can 阅读全文
posted @ 2013-02-27 16:11 higirle 阅读(1613) 评论(0) 推荐(1)
T-SQL 2008学习笔记(1)
摘要:1. view which created cluster index will storage data in physically。Remember that without an index, a view does not have any physical representation of its data—rather, it just has metadata information pointing to the underlying objects. However,SQL Server will physically materialize a view’s data i 阅读全文
posted @ 2012-12-05 17:52 higirle 阅读(188) 评论(0) 推荐(0)
[收藏】正确使用SqlConnection对象,兼谈数据库连接池
摘要:http://www.cnblogs.com/jeffwongishandsome/archive/2011/08/09/2133114.html 阅读全文
posted @ 2012-06-01 09:30 higirle 阅读(211) 评论(0) 推荐(0)
Create and Alter View
摘要:http://www.w3schools.com/sql/sql_view.aspSQL CREATE VIEW SyntaxCREATE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition Create(Alter) view Testestst1asSELECT Test1.Id, Test2.Id As IDD from Test1 inner join Test2 on Test1.Id = Test2.Id where Test1.Id = 1 and Test2.Name = '11 阅读全文
posted @ 2011-09-14 17:07 higirle 阅读(320) 评论(0) 推荐(0)
[转]: 视图和表的区别和联系
摘要:http://blog.csdn.net/leo870625/article/details/61278741.视图是数据库数据的特定子集。可以禁止所有用户访问数据库表,而要求用户只能通过视图操作数据,这种方法可以保护用户和应用程序不受某些数据库修改的影响。2.视图是抽象的,他在使用时,从表里提取出数据,形成虚的表。 不过对他的操作有很多的限制 。3. 而且视图是永远不会自己消失的除非你删除它。 视图有时会对提高效率有帮助。临时表几乎是不会对性能有帮助,是资源消耗者。 视图一般随该数据库存放在一起,临时表永远都是在tempdb里的。 4.视图适合于多表连接浏览时使用!不适合增、删、改.,存.. 阅读全文
posted @ 2011-09-14 16:53 higirle 阅读(588) 评论(0) 推荐(0)