添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

使用关联子查询时思路是相同的,但在性能上有劣势,而且个人认为可读性要弱于上面使用集合运算的方法。

DELETE FROM deletetest t1
WHERE id <> ( SELECT MIN(t2.id)
				FROM deletetest t2
				WHERE t1.name = t2.name
				AND t1.price = t2.price);

这里的 <> 换成 NOT IN 应该也是可以的。

得到的结果:

如下图所示,目的是删除红框中出现的行可以使用关联子查询的方法来实现:DELETE FROM deletetest t1WHERE id &lt;&gt; ( SELECT MIN(t2.id) FROM deletetest t2 WHERE t1.name = t2.name AND t1.price = t2.price);得到的结果:原理:通过关联子查询找出重复行的id,然后从原表中删除重复行中id最小行之外的所有重复行。DELETE FR
1.查找 重复 SELECT * FROM blog_user_relation a WHERE (a.account_instance_id,a.follow_account_instance_id) IN (SELECT account_instance_id,follow_account_instance_id FROM blog_user_relation GROUP BY account_instance_id, follow_account_instance_id HAVING COUNT(*) > 1) 2. 删除 重复 ( 保留 一条) PS:因为my sql 的delete,如果
对于结果集有几个处理,值得讲解一下1. 并集(union,Union all)这个很简单,是把两个结果集水平合并起来。例如SELECT * FROM AUNIONSELECT * FROM B【注意】union会 删除 重复 值,也就是说A和B中 重复 ,最终只会出现一次,而union all则会 保留 重复 。 2. 差异(Except)就是两个集中不 重复 的部分。例如SELECT * FROM AEXCEPTSELECT * FROM B这个的意思是,凡是不出现在B表中的A表的 。 3. 交集(intersect)就是两个集中共同的部分。例如SELECT * FROM AINTERSECTSELECT
WindowsXP安装 SQL server2000的图解过程 SQL 2000安装的时候出现问题:说是 SQL 服务器组件在此操作系统上不受支持,只有客户端组建才可以安装! 那说明你安装的是企业版的,但是你的系统是XP,你可以安装开发版的 sql 2000,就不会出现这样的问题了 (注意: Windows XP不能装企业版,如果你是使用四合一的安装包,请选择其他版本——比如选开发版!) ★下面将详细介绍如何安装 SQL server2000★ ★首先在介绍一下 SQL server2000在WindowsXP系统安装的一些要求。 一:确认主机(就是你的计算机)名称是只由大写字母组成; 二:当前所使用的系统帐号不能带有中文; 三:安装包所在文件夹和安装文件夹名称不能带有中文和空格。 ★下面介绍详细的安装过程和所出现问题的解决办法 打开安装包之后出现以下提示框。 请选择 "安装 SQL Server 2000 组件",出现下一个页面, 选择 "安装数据库服务器" ,将出现以下对话框 选择 "下一步",然后选择 "本地计算机" 进 安装 点击下一步,如果出现以下错误信息对话框(一般是在之前你的计算机上安装过 SQL server2000组件,才会出现) 此时重启计算机不一定有效,在这我介绍一种更为有效的方法(一定 的通) 点击“开始菜单”》点击“运 ”》输入“regedit”运 ,打开注册表编辑器》查看LOCAL MACHINE/SYSTEM/controlset001/Control/session Manager》在右侧的显示框中找到PendingFileRename0 pertions并将其删掉 。 如果出现以下对话框(则安装没有出现错误) 在 "安装选择" 窗口,选择 "创建新的 SQL Server实例..."。对于初次安装的用户,应选用这一安装模式,不需要使用 "高级选项" 进 安装。 "高级选项" 中的内容均可在安装完成后进 调整。点击下一步,出现下面对话框: 在 "用户信息" 窗口,输入用户信息,并接受软件许可证协议。在前面选择了“本地计算机”的情况下,一般都会以你的系统名作为姓名和公司,当然你也可以改成其他的信息。点击下一步,出现以下对话框: 点击“是”进入下一步的安装 在 "安装定义"窗口,选择 "服务器和客户端工具" 选项进 安装。我们需要将服务器和客户端同时安装,这样在同一台机器上,我们可以完成相关的所有操作,对于我们学习 SQL Server很有用处。如果你已经在其它机器上安装了 SQL Server,则可以只安装客户端工具,用于对其它机器上 SQL Server的存取。点击下一步,出现"实例名" 窗口: 在 "实例名" 窗口,选择 "默认" 的实例名称。这时本 SQL Server的名称将和Windows 2000服务器的名称相同。例如笔者的Windows服务器名称是 "Darkroad",则 SQL Server的名字也是 "Darkroad"。 SQL Server 2000可以在同一台服务器上安装多个实例,也就是你可以 重复 安装几次。这时您就需要选择不同的实例名称了。建议将实例名限制在 10 个字符之内。实例名会出现在各种 SQL Server 和系统工具的用户界面中,因此,名称越短越容易读取。另外,实例名称不能是 "Default" 或 "MS SQL Server" 以及 SQL Server的 保留 关键字等。设置好后点击下一步,出现以下对话框: 在 "安装类型" 窗口,选择 "典型" 安装选项,并指定 "目的文件夹"。程序和数据文件的默认安装位置都是 "C:\Program Files\Microsoft SQL Server\"。 (注:数据会随着使用时间而不断的增大,故数据文件和日志文件最好不要设置在系统盘(即C盘),选择其他应用盘(例如D盘),我还建议大家把程序文件也不要安装在系统盘,因为系统盘安装太多的软件会使计算机的速度减慢,除非一些必要安装在系统盘的软件(例如“Turbo C For Windows 集成实验与学习环境”,其它的软件都安装到其它应用盘)。 点击下一步,继续安装出现下面对话框 在 "服务账号" 窗口,请选择 "对每个服务使用统一账户..." 的选项。在 "服务设置" 处,选择 "使用本地系统账户"。如果需要 "使用域用户账户" 的话,请将该用户添加至Windows Server的本机管理员组中。 点击下一步继续安装 在 "身份验证模式" 窗口,请选择 "混合模式..." 选项,并设置管理员"sa"账号的密码。如果您的目的只是为了学习的话,可以将该密码设置为空,以方便登录。如果是真正的应用系统,则千万需要设置和保管好该密码!:)如果需要更高的安全性,则可以选择 "Windows身份验证模式" ,这时就只有Windows Server的本地用户和域用户才能使用 SQL Server了。 点击下一步,然后就是几分钟的安装时间,在此过程中,如果出现以下错误对话框: 如果出现上面的对话框,则说明你的计算机名没有按要求设置(即计算机名要全由大写字母组成的要求),出现此错误,回到计算机里更改计算机名即可。 ★更改计算机名的方法: 在“我的电脑”单击右键,弹出“系统属性”对话框 把计算机名改成只由大写字母组成的名字,单击“确定”按钮,这样就完成了计算机名的更改, (注:如果出现“确定”按钮呈灰色,无法更改计算机名的情况,可以用直接按“Enter”键(这招很有用),若还不 ,就借用一些软件(如Windows优化大师)进 修改计算机名) 如果出现以下对话框(即安装没有出现错误),则安装完毕! 15.3.2 使用create procedure创建存储过程 309 15.3.3 使用execute语句调用存储过程 310 15.3.4 使用create function创建函数 312 15.3.5 使用enterprise manager创建存储过程和函数 315 15.3.6 修改和 删除 存储过程和函数 317 15.4 oracle中的流控制语句 319 15.4.1 条件语句 319 15.4.2 循环语句 320 15.4.3 标号和goto 322 15.5 oracle数据库中的存储过程 322 15.5.1 存储过程的创建与调用 322 15.5.2 oracle中存储过程和函数的管理 324 第16章 sql 触发器 325 16.1 触发器的基本概念 325 16.1.1 触发器简介 325 16.1.2 触发器执 环境 325 16.2 sql server中的触发器 326 16.2.1 sql server触发器的种类 326 16.2.2 使用create trigger命令创建触发器 326 16.2.3 insert触发器 328 16.2.4 delete触发器 329 16.2.5 update触发器 330 16.2.6 instead of触发器 332 16.2.7 嵌套触发器 334 16.2.8 递归触发器 336 16.2.9 sql server中触发器的管理 338 16.3 oracle数据库中触发器的操作 340 16.3.1 oracle触发器类型 340 16.3.2 触发器的创建 341 16.3.3 创建系统触发器 342 16.3.4 触发器的触发次序和触发谓词的使用 343 16.3.5 oracle触发器的管理 346 第17章 sql 中游标的使用 349 17.1 sql 游标的基本概念 349 17.1.1 游标的概念 349 17.1.2 游标的作用及其应用 350 17.2 sql 游标的使用 351 17.2.1 使用declare cursor语句创建游标 351 17.2.2 使用open/close语句打开/关闭游标 352 17.2.3 使用fetch语句检索数据 352 17.2.4 基于游标的定位delete语句 354 17.2.5 基于游标的定位update语句 356 17.3 sql server中游标的扩展 357 17.3.1 transact_ sql 扩展declare cursor语法 357 17.3.2 @@cursor_rows全局变量确定游标的 数 359 17.3.3 @@fetch_status全局变量检测fetch操作的状态 360 17.3.4 游标的关闭与释放 361 17.3.5 游标变量 362 17.3.6 使用系统过程管理游标 363 17.4 oracle中游标的使用 365 17.4.1 显式游标与隐式游标 365 17.4.2 游标的属性 366 17.4.3 %type、%rowtype定义记录变量 367 17.4.4 参数化游标 368 17.4.5 游标中的循环 369 17.4.6 游标变量 371 17.5 小结 372 第18章 事务控制与并发处理 373 18.1 sql 事务控制 373 18.1.1 事务控制的引入 373 18.1.2 事务的特性 373 18.1.3 sql 中与事务有关的语句 374 18.2 事务控制的具体实现 376 18.2.1 开始事务 376 18.2.2 set constraints语句设置约束的延期执 377 18.2.3 终止事务 378 18.3 并发控制 380 18.3.1 并发操作的问题 381 18.3.2 事务隔离级别 382 18.3.3 set transaction设置事务属性 383 18.4 sql server中的并发事务控制 384 18.4.1 锁的分类 384 18.4.2 sql server中表级锁的使用 385 18.4.3 设置隔离级别实现并发控制 387 18.4.4 死锁及其预防 391 18.5 oracle中的并发事务控制 393 18.5.1 通过加锁避免写数据丢失 393 18.5.2 设置只读事务(read only) 394 18.5.3 oracle中的隔离级别 395 第19章 嵌入式 sql 397 19.1 sql 的调用 397 19.1.1 直接调用 sql 397 19.1.2 嵌入式 sql 398 19.1.3 sql 调用层接口(cli) 399 19.2 嵌入式 sql 的使用 401 19.2.1 创建嵌入式 sql 语句 401 19.2.2 sql 通信区 402 19.2.3 主变量 404 19.2.4 嵌入式 sql 中使用游标 406 19.3 检索、操作 sql 数据 407 19.3.1 不需要游标的 sql dml操作 407 19.3.2 使用游标的 sql dml操作 410 19.3.3 动态 sql 技术 412 19.4 sql server中嵌入式 sql 的编译运 413 19.4.1 嵌入式 sql 代码 413 19.4.2 预编译文件 415 19.4.3 设置visual c++ 6.0连接 417 19.4.4 编译运 程序 419 19.5 oracle中嵌入式 sql 的编译运 420 19.5.1 嵌入式 sql 代码 420 19.5.2 预编译文件 421 19.5.3 设置visual c++ 6.0编译环境 423 19.5.4 编译运 程序 424 附录a sql 保留 字 427 附录b 常用的 sql 命令 431 附录c 关于运 环境的说明 435 c.1 sql server 2000 435 c.1.1 直接访问 435 c.1.2 从企业管理器访问 436 c.2 oracle系统 436
是在年提出的一种关系数据库语言。 由于语言接近英语的语句结构,方便简洁、使用灵活、功能强人,倍受用户及计算机工业 界的欢迎,被众多计算机公司和数据库厂商所采用,经各公司的不断修改、扩充和完善,语 言最终发展成为关系数据库的标准语言。 的第一个标准是年月由美国国家标准化组织公布的 数据库语言 年国际标准化组织也通过了这一标准。以后通过对 的不断修改和完善,于年第二次公布了标准 年又公布了标准 。最新的标准是 《信息技术——数据库语言》发布。我国也相继 公布了数据库语言的国家标准。 成为国际标准以后,其影响远远超出了薮据库领域。例如在 软件工程、人工智 能、分布式等领域,人们不仅把作为检索数据的语言规范,而且也把作为检索图形、 图象、声音、文字等信息类型的语言规范。目前,世界上大型的著名数据库管理系统均支持 等。在未来相当长的时间里,仍将是数据库领 域以至信息领域中数据处理的主流语言之 由于不同的产品,大都按自己产品的特点对语言进 了扩充,很难完全符合 标准。目前在 市场上已将的符合夲作为衡量产品质量的重要指标,并研制成专门的 测试软件,如 入门级和过渡级的符合率均达到,并且部分支持 标准。同时还兼容 的部分语言特性。本章主要 介绍系统所支持的语言 语言的特点 语言符合结构化査询语言标准,是标准的扩充。它集数据定乂、数据査 询、薮据操纵和数据控制于一体,是一种统一的、综合的关系数据库语言。它功能强大,使用简 单方便、容易为用户掌握 语言具有如下特点: 功能一体化 的功能一体化表现在以下两个方面 支持多媒体数据类型,用户在建表时可直接使用。系统在处理常规数据与 多媒体数据时达到了四个一体化:一体化定义、一体化存储、一体化检索、一体化处理,最大限 度地提高了数据库管理系统处理多媒体的能力和速度; 语言集数据库的定义、査询、更新、控制、维护、恢复、安全等一系列操作于 体,每一项操作都只需一种操作符表示,格式规范,风格一致,简单方便,很容易为用户所掌 两种用户接口使用统一语法结构的语言 语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能独立运 于联机交 互方式。作为嵌入式语言, 浯句能够嵌入到和语言程序中,将高级语言也称主 语言灵活的表达能力、强大的计算功能与 语言的数据处理功能相结合,完成各种复杂 的事务处理。而在这两种不同的使用方式中, 语言的语法结构是一致的,从而为用户使 第1章结构化查询语言简介 用提供了极大的方使性和灵活性。 高度非过程化 语言是·种非过程化语言。用户只需指出“做什么”,而不需指出“怎么做”,对数 据存取路径的选择以及 语句功能的实现均由系统自动完成,与用户编制的应用程序与 具体的机器及关系 的实现细节无关,从而方便了用户,提高了应用程序的开发效率,也 增强了数据独立性和应用系统的叮移植性。 面向集合的操作方式 语言采用了集合操作方式。不仅查询结果可以是元组的集合,而且一次插入、 删除 、 修改操作的对象也可以是元组的集合,相对于面向记录的数据库语言一次只能操作一条记录来 语言的使用简化了用户的处理,提高了应用程序的运 效率 语言简洁,方便易学 语言功能强大,格式规范,表达简洁,接近英语的语法结构,容易为用户所掌握。 保留 字与标识符 标识符的语法规则兼容标准 ,标识符分为正规标识符和定界标识符两大类。 正规标识符以字母、、、或汉字开头,后面可以跟随字母、数字、、、或者汉字,正 规标识符的最大长度是个英文字符或个汉字。正规标识符不能是 保留 字 正规标识符的例子:, 定界标识符的标识符体用双引号括起来时,标识符体可以包含任意字符,特别地,其中使用 连续两个双引号转义为一个双引号 定界标识符的例子: 保留 字的清单参见附录 语言的功能及语句 语言是一种介于关系代数与关系演算之间的语言,其功能主要包括数据定义、查询 操纵和控制四个方面,通过各种不同的语句米实现。按照所实现的功能, 为以下几种 数据库、登录、用户、模式、基表、视图、索引、序列、全文索引、存储过程和触发器 的定义和 删除 语句,登录、基表、视图、仝文索引的修改语句,对象的更名语句; 査询(含全文检索)、插入、 删除 、修改语句; 数据库安全语句。包括创建角色语句、 删除 角色语句,授权语句、回收权限语句,修改 登录口令语句,审计设置语句、取消审计设置语句等。 在嵌入方式中,为了协调 语言与主语言不同的数据处理方式 了游标的概念。因此在嵌入方式下,除了数据查询语句一次查询一条记录外,还有几种与游标 有关的语句: 游标的定义、打廾、关闭、拨动语句 游标定位方式的数据修改与 删除 语句。 为了有效维护数据库的完整性和一致性,支持 的并发控制机制 了事务的回滚( )与提交( )语句。同时允许选择实施事务级读一致 性,它保证同一事务内的可 重复 读,为此提供用户多种手动上锁语句,和设置事务隔离级别 第1章结构化查询语言简介 所支持的数据类型 数据类型是可表示值的集。值的逻辑表示是字值。值的物理表示依赖于实现。系统具 的绝大部分数据类型,以及部分 的数据类型。 常规数据类型 字符数据类型 语法:长度 数据类型指定定长字符串。在基表中,定义 类型的列时,可以指 定一个不超过的正整数作为字符长度,例如 如果未指定长度,缺省为。 确保存储在该列的所有值都具有这一长度。 数据类型的最大长度由数据库页面大 小决定,字符类型最大长度和页面大小的对应关系请见下表支持按字节存放字符 数据库页面大 数据类型指定变长字符串,用法类似 数据类型,可以指定一 个不超过的正整数作为字符长度,例如: 。如果未指定长度,缺省为 在系统中, 数据类型的实际最大长度由数据库页面大小决定,具体最 大长度算法如表 的区别在于前者长度不足时,系统自动填充空 格,而后者只占用实际的字节空间。 数据库页面大 实际最大长度 注:这个限制长度只针对建表的情况,在定义变量的时候,可以不受这个限制长度的限 数值数据类型
1.(错误操作)查所有的 重复 数据 很明显下列代码运 速度很慢 select * from 表 t where (select count(*) from 表 where 字段1=t.字段1 AND 字段2=t.字段2)>1 所以我们使用下面的分组 1.(速度优化) 查所有的 重复 数据 SELECT * FROM 表 WHERE (字段1, 字段2, 字段3) IN (SELECT 字段1, 字段2, 字段3 FROM 表 GROUP BY 字段1, 字段2, 字段3 HAVING COUNT(*
1、查找表中多余的 重复 记录, 重复 记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、 删除 表中多余的 重复 记录, 重复 记录是根据单个字段(peopleId)来判断,只留有...
sql 的使用中,我们总是碰到需要 删除 重复 数据的情况,但是又不能全部 删除 完,必须要 保留 至少一个 重复 的数据。 重复 的记录根据两个字段uid, qid判断(实际使用中可以拓展为多个)。
如何 删除 sql server中的 重复 数据 先来看下有多少 重复 数据,伪代码如下: select count( 重复 字段)-count(distinct 重复 字段) from 表名 执 这个 SQL 伪代码候就能看到有多少数据是 重复 的,以便后面查看是否全部 删除 然后通过如下 SQL 伪代码对 重复 数据进 删除 ,使得表中 只 保留 唯一的数据: delete 表名 from (select Row_Number() Over(Partition By [ 重复 字段] order by [id]) as RowNumber, *