笨小孩做开发

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  SQL 高级编程

摘要:触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。 Ø 什么是触发器 触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有c 阅读全文
posted @ 2013-03-05 17:33 笨小孩做开发 阅读(256) 评论(0) 推荐(0)

摘要:--创建登陆用户--create login login_name from windows with default_database = database | default_language = language;create login [localhost\hoojo-pc] from windows with default_database = testHome;--创建登陆用户--create login login_name with password = 'pwd' [hashed] [must_change] [check_expiration] [che 阅读全文
posted @ 2013-03-05 17:29 笨小孩做开发 阅读(174) 评论(0) 推荐(0)

摘要:一、数据库设计的必要性 在实际的软件项目中,如果系统中需要存储的数据量比较大,需要设计的表比较多,表与表之间的关系比较复杂,那我们就需要进行规范的数据库设置。如果不经过数据库的设计,我们构建的数据库不合理、不恰当,那么数据库的维护、运行效率会有很大的问题。这将直接影响到项目的运行性和可靠性。二、什么是数据库设计 数据库设计实际上就是规划和结构化数据库中的数据对象以及这些数据对象之间的关系过程。三、数据库设计的重要性 Ø 不经过设计的数据库或是设计糟糕的数据库很可能导致 1、 数据库运行效率地下 2、 更新、删除、添加数据出现问题 Ø 良好设计的数据库 1、 执行效率高 2、 阅读全文
posted @ 2013-03-05 17:26 笨小孩做开发 阅读(327) 评论(0) 推荐(0)

摘要:Ø Go批处理语句 用于同时执行多个语句 Ø 使用、切换数据库 use mastergo Ø 创建、删除数据库 方法1、 --判断是否存在该数据库,存在就删除if (exists (select * from sys.databases where name = 'testHome')) drop database testHomego--创建数据库,设置数据库文件、日志文件保存目录create database testHomeon( name = 'testHome', filename = 'c:\data\stude 阅读全文
posted @ 2013-03-05 17:25 笨小孩做开发 阅读(165) 评论(0) 推荐(0)

摘要:T-SQL语句用于管理SQL Server数据库引擎实例,创建和管理数据库对象,以及查询、插入、修改和删除数据。 Ø 变量 1、 局部变量(Local Variable) 局部变量是用户可以自定义的变量,它的作用范围是仅在程序内部,在程序中通常用来储存从表中查询到的数据或当做程序执行过程中的暂存变量。使用局部变量必须以@开头,而且必须用declare命令后才能使用。 基本语法: 声明变量declare @变量名 变量类型 [@变量名 变量类型]为变量赋值set @变量名 = 变量值;select @变量名 = 变量值; 示例: --局部变量declare @id char(10)-- 阅读全文
posted @ 2013-03-05 17:23 笨小孩做开发 阅读(350) 评论(0) 推荐(0)

摘要:高级查询在数据库中用得是最频繁的,也是应用最广泛的。 Ø 基本常用查询 --selectselect * from student;--all 查询所有select all sex from student;--distinct 过滤重复select distinct sex from student;--count 统计select count(*) from student;select count(sex) from student;select count(distinct sex) from student;--top 取前N条记录select top 3 * from s 阅读全文
posted @ 2013-03-05 17:21 笨小孩做开发 阅读(242) 评论(0) 推荐(0)

摘要:Ø 索引 1、 什么是索引 索引就是数据表中数据和相应的存储位置的列表,利用索引可以提高在表或视图中的查找数据的速度。 2、 索引分类 数据库中索引主要分为两类:聚集索引和非聚集索引。SQL Server 2005还提供了唯一索引、索引视图、全文索引、xml索引等等。聚集索引和非聚集索引是数据库引擎中索引的基本类型,是理解其他类型索引的基础。 # 聚集索引 聚集索引是值表中数据行的物理存储顺序和索引的存储顺序完全相同。聚集索引根据索引顺序物理地重新排列了用户插入到表中的数据,因此,每个表只能创建一个聚集索引。聚集索引经常创建在表中经常被搜索到的列或按顺序访问的列上。在默认情况下... 阅读全文
posted @ 2013-03-05 17:19 笨小孩做开发 阅读(203) 评论(0) 推荐(0)

摘要:Ø 事务 在数据库中有时候需要把多个步骤的指令当作一个整体来运行,这个整体要么全部成功,要么全部失败,这就需要用到事务。 1、 事务的特点 事务有若干条T-SQL指令组成,并且所有的指令昨晚一个整体提交给数据库系统,执行时,这组指令要么全部执行完成,要么全部取消。因此,事务是一个不可分割的逻辑单元。 事务有4个属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)以及持久性(Durability),也称作事务的ACID属性。 原子性:事务内的所有工作要么全部完成,要么全部不完成,不存在只有一部分完成的情况。 一致性:事务内的然后操作都不能. 阅读全文
posted @ 2013-03-05 17:18 笨小孩做开发 阅读(1622) 评论(0) 推荐(1)

摘要:Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。 Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需 阅读全文
posted @ 2013-03-05 17:15 笨小孩做开发 阅读(253) 评论(0) 推荐(0)

摘要:下列语句部分是Mssql语句,不可以在access中使用。SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name 2、说明:删除数据库drop database dbname 3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpde 阅读全文
posted @ 2013-02-18 17:25 笨小孩做开发 阅读(399) 评论(0) 推荐(0)

摘要:select * from (select a1,count(a1) num from table1 group by a1) a where num>=2 order by num 阅读全文
posted @ 2013-02-17 15:54 笨小孩做开发 阅读(188) 评论(0) 推荐(0)

摘要:情况一:表中存在完全重复的的数据,即所有字段内容都是相同的create table #(用户ID int, 姓名 varchar(10), 年龄 int )insert into #select 111, '张三', 26 union allselect 222, '李四', 25 union allselect 333, '王五', 30 union allselect 111, '张三', 26 方法: select distinct * from #情况2:表中存在部分数据重复的字段,即 重复数据中至少有一个字段不重复cre 阅读全文
posted @ 2013-02-17 15:40 笨小孩做开发 阅读(463) 评论(0) 推荐(0)

摘要:用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete from people where peopleName in 阅读全文
posted @ 2013-02-17 15:19 笨小孩做开发 阅读(418) 评论(0) 推荐(0)

摘要:这个问题是在csdn上一位朋友写的,但是答案有点复杂,而且查询使用的效率也不是很好,于是自己也写了一个。以下是表结构和数据,有以下两张表,Class表 classid classname1 高三(一)班2 高三(二)班3 高三(三)班Student表studentid studentName classid1 张三 22 李四 13 王五 14 赵六 35 钱七 26 孙九 3score表scoreid course studentid score1 数学 2 992 数学 3 603 数学 4 804 语文 5 795 语文 6 586 语文 1 667 英语 6 768 英语 4 879 阅读全文
posted @ 2013-02-17 13:55 笨小孩做开发 阅读(1697) 评论(1) 推荐(0)

摘要:游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的。而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服。 正常面向集合的思维方式是: 而对于游标来说: 这也是为什么游标是邪恶的,它会使开发人员变懒,懒得去想用面向集合的查询方式实现某些功能. 同样的,在性能上,游标会吃更多的内存,减少可用的并发,占用宽带,锁定资源,当然还有更多的代码量…… 从游标对数据库的读取方式来说,不难看出游标为什么占用更多的资源,打个比方: 当你从ATM取钱的时候,是一次取1000效率更高呢,还是取10次100?既然游标这么“邪恶”,为什么还要学习... 阅读全文
posted @ 2013-02-01 16:24 笨小孩做开发 阅读(252) 评论(0) 推荐(0)

摘要:select isnull((select count(*) from crm) ,0)as Num from table 阅读全文
posted @ 2013-01-23 09:36 笨小孩做开发 阅读(363) 评论(0) 推荐(0)

摘要:连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选连接条件所选的行。连接可分为以下几类:内连接。(典型的连接运算,使用像=或<>之类的比较运算符)。包括相等连接和自然连接。内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索students和courses表中学生标识号相同的所有行。外连接。外连接可以是左向外连接、右向外连接或完整外部连接。在FROM子句中指定外连接时,可以由下列几组关键字中的一组指定:LEFTJOIN或LEFTOUTERJOIN。左向外连接的结果集包括LEFT 阅读全文
posted @ 2013-01-09 14:19 笨小孩做开发 阅读(400) 评论(0) 推荐(0)

摘要:数据库的备份和恢复一、备份数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server2、SQL Server组-->双击打开你的服务器-->双击打开数据库目录3、选择你的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择备份数据库4、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份 二、还原数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQ 阅读全文
posted @ 2013-01-09 09:51 笨小孩做开发 阅读(1420) 评论(0) 推荐(0)

摘要:SELECT TOP 4 * FROM (SELECT DISTINCT TBL1.* FROM TBL1 LEFT JOIN dbo.VinGrape ON TBL1.VinID = dbo.VinGrape.VinID AND TBL1.VintageID = dbo.VinGrape.VintageID 阅读全文
posted @ 2013-01-06 14:24 笨小孩做开发 阅读(329) 评论(0) 推荐(0)