相关文章推荐
狂野的啄木鸟  ·  Understanding and ...·  1 年前    · 
深情的烈酒  ·  How to format uuid ...·  1 年前    · 
傻傻的铁链  ·  python ...·  1 年前    · 
在上一节中我们们安装了my sql 以及navicat,并掌握了如何创建库、创建表、修改表和插入、删除以及更新 数据 。这一节我们将继续学习 SQL 的简单查询语句。一、基本的查询语句1、select子句和from子句select <列名1>,<列名2>... from <表名>; select * from <表名>;(查看全部列)查询语句的运行过程如图2、...
分页思想:比如你要每页获取10条 记录 ,当你显示第5页的 记录 时, 也就是选取第40条至50条的 记录 .首先应该从所有的 记录 集中选取 50条 记录 ,同时进行倒序,再从中选10条,就完成工作了。 下面是一个具体的例子,从Northwind的Orders表中选取OrderID 大于 @OrderID的 记录 集, 分10条每页显示. --有查询条件的分页存储过程 create procedure dbo.Products_GetByPaging @PageSize int, --每页的 记录 数量 ,比如10条,传参数时就是10 @CurrentPage int --第N页,比如第5页,传参数就是5 declare @PageCount int --可分页的 数量 (总共能分多少页) declare @RowsCount int --符合查询条伯的 记录 行总数(总共有多少行 记录 ) declare @LastRows int --整除后余下来的 记录 数 declare @SelectRowsCount int --要选择的行数(每页显示多少行) set @RowsCount=(select count(*) from dbo.Orders) -- 获取总共有多少行 set @PageCount=@RowsCount/@PageSize --看下能分多少页(获取总共能分多少页) set @LastRows=@RowsCount%@PageSize --是否还有余下的 记录 set @SelectRowsCount=@PageSize --给要选取的行数赋值,如参数是10,就是每页10条 记录 if(@LastRows>0)--当整除后还剩的 记录 数,比如总有95条 记录 符合,那就可以分10页,最后一页是5条 记录 begin set @PageCount=@PageCount+1 --如果不能整除时要多加一页 if(@CurrentPage>=@PageCount) --如果选择的是最后一页时 set @SelectRowsCount=@LastRows --比如95条 记录 ,第10页只能是5条 记录 declare @SelectStr varchar(5000) -- select top 10 * from (select top 20 * from (select * from orders where orderid>orderid as t1 order by orderid asc) as t2 order by orderid desc set @SelectStr='select top '+ Convert(nvarchar(10),@SelectRowsCount)+' * from (select top '+Convert(nvarchar(10),(@CurrentPage)*@PageSize)+' * from (select * from dbo.Orders) as t1 order by OrderID asc) as t2 order by OrderID desc' exec(@SelectStr) drop proc Products_GetByPaging
数据 库应用实践》 设计报告 名称: 仓库管理系统 专 业: 班 级: 学生姓名: 学 号: "一、业务流程描述 " "审核人员负责对产品入库单.出库单进行审核,检查入库单和出库单填写的形" "式是否符和要求,产品实际入库 数量 和金额与入库单上填写的 数据 是否一致 " ",出库单上填写的出库 数量 是否 大于 产品实际库存量等。不合格的单据分别 " "返回车间和销售科,合格的单据转给记账员登记入库。记账员依据合格的入 " "库单和出库单等级产品出入库台账, 记录 每一笔出入库业务。统计员根据库 " "存台账定期分析各种产品每日,每月出入库 数量 等综合 数据 ,也可进行库存 " " 数据 的随机查询等。 " " " "二、业务流程图或 数据 流程图 " " " " " "三、E-R图 " " " " " "四、逻辑结构设计(关系模式) " " " "货物表(货物编号,货物名称,价格, 数量 ,客户编号#) " "主键为货物编号,外键引用客户表的客户编号 " "供应商表(供应商编号,供应商名称,联系人,地址,电话号码) " "主键为供应商编号 " "仓库管理员表(管理员编号,管理员姓名) " "主键为管理员编号 " "仓库
SELECT “A厂” ,定额名称,规格,year(日期) as 年份, 数量 FROM [材料进货明细表$] SELECT “A厂” as 工厂 ,定额名称,规格,year(日期) as 年份, 数量 FROM [材料进货明细表$] 比较一下上面两句 SQL 语句的区别,没有as 工厂与有as 工厂的区别 二、选择表中若干元组 1、消除取重复的行 例4、查询材料进货明细表的定额名称 SELECT 定额名称 FROM [材料进货明细表$] 该查询结果会包含很多重复的行。消除重复行的话,必须指定关键词 distinct SELECT distinct 定额名称 FROM [材料进货明细表$] 2、查询满足条件的元组 例5、查询材料进货明细表中单位为“套”的所有 记录 SELECT * FROM [材料进货明细表$] where 单位= ‘套’ 本句语句中,要学会where的用法: 要查询满足指定条件的元组,可以通过where子句实现。where子句查询条件是: 比较: =,>,<,>=,<=,!=,<>,!>,!<;not +上述比较运算符 确定范围: between and ,not between and 确定集合:in,not in 字符匹配:like,not like 空值:is null,is not null 多重条件:and,or,not 例6、查询材料进货明细表中 数量 在50—100之间的所有 记录 SELECT * FROM [材料进货明细表$] where 数量 between 50 and 100 如果是不在50-100之间的话,直接改成: SELECT * FROM [材料进货明细表$] where 数量 not between 50 and 100 例7、查询材料进货明细表中单位为“只”或“支”的所有 记录 SELECT * FROM [材料进货明细表$] where 单位 in(‘只’,'支’) 3、字符匹配 可以用like来实现,通配符%和_ a、%代表任意长度的字符串,如a%b表示以a开头,以b结尾的任意的字符串 b、_代表任意单个字符 例8、查询材料进货明细表中定额名称以“天津”开头的所有 记录 SELECT * FROM [材料进货明细表$] where 定额名称 like ‘天津%’ 例9、查询材料进货明细表中定额名称以“天津”开头且字符为4个的所有 记录 SELECT * FROM [材料进货明细表$] where 定额名称 like ‘天津__’ 例10、查询材料进货明细表中定额名称不以“天津”开头的所有 记录 SELECT * FROM [材料进货明细表$] where 定额名称 not like ‘天津%’ 4、涉及空值的查询 主要是以:null出现 例11、查询材料进货明细表中规格为空的的所有 记录 SELECT * FROM [材料进货明细表$] where 规格 is null 5、多条件查询 例12、查询材料进货明细表中定额名称为“天津三通”的并且 数量 大于 30的所有 记录 SELECT * FROM [材料进货明细表$] where 定额名称 = ‘天津三通’ and 数量 >30 三、order by 子句 desc(降序)、asc(升序) 例13、查询材料进货明细表中 数量 大于 30的所有 记录 ,并且要按照 数量 来降序排列。 SELECT * FROM [材料进货明细表$] where 数量 >30 order by 数量 desc 四、聚集函数 count(distinct/all 列名):统计元组个数 sum:求和 avg:求平均值 max:最大值 min:最小值 例14、查询材料进货明细表中天津大小头的最大 数量 。 SELECT max( 数量 ) FROM [材料进货明细表$] where 定额名称 = ‘天津大小头’ 或:SELECT max( 数量 ) as 最大 数量 FROM [材料进货明细表$] where 定额名称 = ‘天津大小头’ 2. Excel源 数据 及分析下载:Excel 数据 透视表教程:分类百分比 SQL 语句: select *, Hz1.分类销量/Hz2.分类销量 as 分类百分比 from (select 品种,分公司, sum( 数量 ) as 分类销量 from [ 数据 $] group by 品种,分公司) Hz1, (select 分公司, sum( 数量 ) as 分类销量 from [ 数据 $] group by 分公司) Hz2 where hz1.分公司=Hz2.分公司 SQL 语句解释: select 品种,分公司, sum( 数量 ) as 分类销量 from [ 数据 $] group by 品种,分公司 实现对品种、分公司两字段分组的统计求和 select 分公司, sum( 数量 ) as 分类销量 from [ 数据 $] group by 分公司 实现对分公司字段分组的统计求和 对分公司分组统计求和数是对品种、分公司两字段分组统计求和项目再对不同品种的总就和,也就是后者包含前者。 整句语句的意思就是,将两个查询结果作为新的查询表分别命名为Hz1、Hz2,用 ”where hz1.分公司=Hz2.分公司“来组合 数据 , 没有条件的制约的话,将统计的结果再进行除数运算, 各品种的分组统计数(分组含品种字段)除以各品种已求和了的分组统计数(分组不含品种字段)求得所占比率, 最后在字段单元格设置为百分数就可以了。 在Excel中使用MS Query查询外部 数据 库的内容的优点是:不用设置公式、编写VBA代码、源 数据 库不用打开。 但要注意:源 数据 库的 记录 要有字段名,由于设置查询时的路径固定,。 因此源 数据 库文件不能随意移动(如确实要移动可以通过手工修改查询或VBA解决) 以下示例采用MS Query在“查询”工作簿中查询关闭的“销售”工作簿中sheet1的指定 “店铺”和指定“颜色”的内容(sheet1有“店铺”、“ 数量 ”、“颜色”等字段名及若干 数据 )。 操作前请先确定是否安装有MS Query。附上举例文件,请解压到D盘根目录下: 销售.xls为源 数据 ,查询.xls中设置了msquery查询。 下载:MS Query查询未打开工作簿的内容例子 1、 新建一个工作表,选择菜单【 数据 】—【导入外部 数据 】—【新建 数据 库查询】, 界面如图,由于查询excel 数据 库的内容,因此选择【Excel Files*】并确定; 2、 弹出〖选择工作簿〗对话框,选择“销售”工作簿,〖确定〗; 3、 弹出〖选择列〗对话框,如果此时弹出“没用内容”,确定后在〖选项〗中将“系统表”勾上。 将所选工作簿的各个工作表及工作表中的字段名添加到查询结果中,全选可直接将工作表名添加, 〖下一步〗〖下一步〗,选择“在MS query中继续编辑查询”; 4、 弹出MS Query查询编辑,点击【显示/隐藏条件】图标,在“条件字段”中添加“店铺”, 值改为“[店]”(方括号中内容随意),再添加个条件为“颜色”,值改为“[色]”,点击【将 数据 返回Excel】 5、 回到excel的“导入 数据 ”对话框,点击〖参数〗,选中“店”字段,再选择“从下列单元格中获取 数据 ”, 选择一个用来更改查询关键字的单元格(如B1),并勾选“单元格值更改时自动刷新”, “色”字段改成从单元格“B2”中获取,〖确定〗。 数据 放置位置选择“A3”。〖确定〗。 6、 当更改B1和B2单元格的内容(做个 数据 有效性)时,A3及以下的 数据 会即时刷新。 此法对于需要经常在局域网中查询 数据 非常方便,比如: 数据 放在局域网内的一台主机上,通过MS Query即可不打开工作簿查询 数据
1711A 六组项目简介(仓库管理系统) 我们做的是一个仓库管理系统,它包含:菜单管理、基础信息、入库管理、出库管理、仓库管理、供应商管理、客户管理、财务报表 这八个模块包含注册登陆,注册用的是短信提醒,注册成功后会往邮箱发送一个提示信息 菜单管理: 1用户管理 2角色管理 用户管理展示的是用户列表信息,可以给用户赋角色,还有一个锁定按钮,点击锁定 用户状态变为锁定状态,返回登陆的时候提示此用记已被锁定 角色管理展示的是角色列表信息,可以给角色赋角色,并且回显此用户已拥有的角色信息 基础信息:1公司信息 2货品分类 3货品信息 4人员信息 我主要负责的是基础信息模块,这个模块又分成了公司信息,货品分类,货品信息,人员信息 我认为难点是一个条查,这个条查涉及到联动,需要两个下拉列表框和一个可编辑文本列表框 第一个下拉列表为从 数据 库中查询出来的表的字段,是一个动态的根据表中的字段而显示最后边的 文本列表框是一个联动的给一个改变事件,根据第一个字段不同会显示出不同的 数据 ,中间一个为 连接条件,给每个文本框一个name值,通过queryparam传值到后台,在后台定义三个参数 接收,根据改变事件选择第一个后第三个发生改变,把第一个的name传到后台从而拿到第三个的值 我还负责了redis集成spring并缓存树 redis的使用主要涉及到两个注解的使用 1.Cache able:将方法的返回值在集合中查询出来之后缓存在redis中,之后的查询就不走 数据 库了 直接从redis中查询 2.CacheEvict:根据key删除redis中对应的 数据 ,保证 数据 库在变更的时候达到刷新的效果 入库管理: 1货品入库登记 2鲜花展示(调的接口) 我在项目中主要负责入库管理,仓库租赁优惠管理,还有就是一个掉接口展示页面。在入库管理这个模块,又划分为入库登记(其中做了一个八表的查询和新增,还有一些个小业务,比如:新增时间时,不填写会默认为系统当时时间,编码和入库单号会自动生成,根据应付金额,已付金额可以自动计算出未付金额,根据单价和 数量 可以自动计算出金额,还有条件查询,和根据条件正序,倒序进行排序),今日入库明细(跟入库管理类似的一些功能,主要是可以查询出当日的一个入库订单明细)。仓库的租赁(根据客户不同的需求我们把仓库划分为大型仓库,中小型仓库,小型仓库,在客户租赁不同型号的仓库个数,我们会给出相应的优惠政策,比如:租赁两个以上五个以内会给出九折优惠,五个以上给出八八折优惠的政策),鲜花的展示(这个主要 是用到了webservice技术来调用了一组的鲜花展示接口,关于webservice的技术我还在练习阶段,并没有很深的研究,我在使用的过程中也遇到了一点小问题,不过最终还是被克服了,1.先是加入webservice配置文件,然后在pom.xml中引入两个关于cxf的jar包,在web.xml配置文件中引入关于cxf两组标签2.然后在cmd窗口反向生成实体类和包结构等等一系列的操作)。以上就是我在项目中作出的一些小功能。我会加倍努力尽我所能的在以后的项目中作出更大的贡献 出库管理: 1货品出库登记 2期间出库查询 3期间销售利润统计 仓库管理: 1仓库信息 2仓库当前内存 3货品当前内存 仓库信息,仓库当前内存,货品当前内存, 记录 了仓库、货品的一些基本信息 供应商管理: 1供应商信息 2供应商付款登记 3供应商欠款登记 供应商模块 主要分为三个部分 分别是 供应商信息 供应商信息这个这个模块就是写供应商的相关信息 这是一个三表的 类别和开户银行为附表 普通的功能呢就是增删改查 这个模块呢有一个难点 就是这个条件查询 这个条件查询是个联动查询 第一个下拉显示的是表里字段名称 第二个下拉是小于 大于 等符号 第三个就是个局第一个下拉框的信息显示出来表里已 有的信息可进行条件查询 付供商款登记 这个模块 记录 的是每个供应商的交易信息 这个模块有一个亮点就是新增的时候 这个日期呢是不可选中的 新增的信息默认是当前 时间 还有就是这个 点击工商名称文本框 会弹出来供每个应商的名称和联系人及手机号 选中一条直接在对应的框中显示出来 这个金额也是自动计算的 供商款登记 这个模块就是 记录 一下供应商付款登记 付供商款新增时就会自动新增一条 删除页会跟着 删除 就是多个 记录 客户管理: 1客户管理 2客户欠款统计 3客户期间明细 4收客户款登记 1.客户管理:展示客户信息。 2.客户期间明细:客户、出库、客户欠款表三表联查,根据出库时间展示客户信息 3.客户付款登记:登记客户付款及欠款信息,自动计算客户已付款、收款以及未付款 4.客户欠款登记:展示客户欠款付款以及收款金额 5.运用webservice调用天气接口 财务报表: 1今日人员销售统计 根据今日人员销售金额做的一个术状图报表 配置:项目用的是maven+ssm框架+httpclient+webservice+mongodb+redis缓存技术,需要配置相应的配置文件,才可以运行此文件
实例335 利用聚合函数AVG求某班学生的平均年龄 490   实例336 利用聚合函数MIN求销售额、利润最少的商品 492   实例337 利用聚合函数MAX求月销售额完成最多的员工 493   实例338 利用聚合函数COUNT求日销售额 大于 某值的商品数 495   实例339 利用聚合函数First或Last求 数据 表中第一条或最后一条 记录 496   10.11 多表查询(连接查询) 498   实例340 利用FROM子句进行多表查询 498   实例341 使用表别名 499   实例342 合并多个结果集 501   10.12 嵌套查询 503   实例343 简单嵌套查询 503   实例344 复杂嵌套查询 504   实例345 嵌套查询在查询统计中的应用 506   10.13 子查询 508   实例346 用子查询做派生的表 508   实例347 用子查询作表达式 510   实例348 在Update语句中应用子查询 511   10.14 联合语句Union 512   实例349 使用联合查询 512   实例350 多表联合查询 514   实例351 对联合查询后的结果进行排序 515   10.15 内联接查询 517   实例352 简单内联接查询 517   实例353 复杂内联接查询 518   实例354 使用内联接选择一个表与另一个表中行相关的所有行 519   10.16 外联接查询 520   实例355 left outer join查询 521   实例356 right outer join查询 522   实例357 使用外联接进行多表联合查询 523   10.17 利用IN进行查询 525   实例358 用IN查询表中的 记录 信息 525   实例359 使用IN引入子查询限定查询范围 526   10.18 交叉表查询 527   实例360 利用Trasform分析 数据 527   实例361 利用Trasform动态分析 数据 529   实例362 静态交叉表( SQL Server 2000) 531   实例363 动态交叉表( SQL Server 2000) 533   10.19 函数查询 535   实例364 在查询语句中使用格式化函数 536   实例365 在查询语句中使用字符串函数 537   实例366 在查询中使用日期函数 538   10.20 having语句应用 540   实例367 利用having语句过滤分组 数据 540   实例368 having语句应用在多表查询中 541   10.21 视图的应用 543   实例369 在C#中应用视图 543   实例370 获取 数据 库中的全部用户视图 544   实例371 通过视图修改 数据 545   10.22 存储过程的应用 546   实例372 C#应用存储过程 546   实例373 应用存储过程添加 数据 547   实例374 应用存储过程修改 数据 549   实例375 应用存储过程删除 数据 550   实例376 C#应用查询存储过程 551   实例377 获取 数据 库中全部的存储过程 552   实例378 加密存储过程 553   10.23 触发器的应用 555   实例379 Insert触发器的应用 555   实例380 Update触发器在系统日志中的应用 556   实例381 触发器的嵌套使用 557   实例382 获取 数据 库中的触发器 559 一、问题的提出  在应用系统开发初期,由于开发 数据 数据 比较少,对于查询 SQL 语句,复杂视图的的编写等体会不出 SQL 语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着 数据 库中 数据 的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是 SQL 语句的优化。对于海量 数据 ,劣质 SQL 语句和优质 SQL 语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的 SQL 语句,提高系统的可用性。   在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。但是,如果在 SQL 语句的where子句中写的 SQL 代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种 SQL 语句就是所谓的劣质 SQL 语句。在编写 SQL 语句时我们应清楚优化器根据何种原则来删除索引,这有助于写出高性能的 SQL 语句。   二、 SQL 语句编写注意问题   下面就某些 SQL 语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的 SQL ,系统在运行该 SQL 语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速度的极大降低。   1. IS NULL 与 IS NOT NULL   不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。   任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。   2. 联接列   对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。我们一起来看一个例子,假定有一个职工表(employee),对于一个职工的姓和名分成两列存放(FIRST_NAME和LAST_NAME),现在要查询一个叫比尔.克林顿(Bill Cliton)的职工。   下面是一个采用联接查询的 SQL 语句, select * from employss where first_name||''||last_name ='Beill Cliton'; 上面这条语句完全可以查询出是否有Bill Cliton这个员工,但是这里需要注意,系统优化器对基于last_name创建的索引没有使用。   当采用下面这种 SQL 语句的编写,Oracle系统就可以采用基于last_name创建的索引。 *** where first_name ='Beill' and last_name ='Cliton'; . 带通配符(%)的like语句   同样以上面的例子来看这种情况。目前的需求是这样的,要求在职工表中查询名字中包含cliton的人。可以采用如下的查询 SQL 语句: select * from employee where last_name like '%cliton%'; 这里由于通配符(%)在搜寻词首出现,所以Oracle系统不使用last_name的索引。在很多情况下可能无法避免这种情况,但是一定要心中有底,通配符如此使用会降低查询速度。然而当通配符出现在字符串其他位置时,优化器就能利用索引。在下面的查询中索引得到了使用: select * from employee where last_name like 'c%'; 4. Order by语句   ORDER BY语句决定了Oracle如何将返回的查询结果排序。Order by语句对要排序的列没有什么特别的限制,也可以将函数加入列中(象联接或者附加等)。任何在Order by语句的非索引项或者有计算表达式都将降低查询速度。   仔细检查order by语句以找出非索引项或者表达式,它们会降低性能。解决这个问题的办法就是重写order by语句以使用索引,也可以为所使用的列建立另外一个索引,同时应绝对避免在order by子句中使用表达式。 5. NOT   我们在查询时经常在where子句使用一些逻辑表达式,如 大于 、小于、等于以及不等于等等,也可以使用and(与)、or(或)以及not(非)。NOT可用来对任何逻辑运算符号取反。下面是一个NOT子句的例子: ... where not (status ='VALID') 如果要使用NOT,则应在取反的短语前面加上括号,并在短语前面加上NOT运算符。NOT运算符包含在另外一个逻辑运算符中,这就是不等于(<>)运算符。换句话说,即使不在查询where子句中显式地加入NOT词,NOT仍在运算符中,见下例: ... where status <>'INVALID'; 对这个查询,可以改写为不使用NOT: select * from employee where salary<3000 or salary>3000; 虽然这两种查询的结果一样,但是第二种查询方案会比第一种查询方案更快些。第二种查询允许Oracle对salary列使用索引,而第一种查询则不能使用索引。 虽然这两种查询的结果一样,但是第二种查询方案会比第一种查询方案更快些。第二种查询允许Oracle对salary列使用索引,而第一种查询则不能使用索引。 =============================================================================================== 我们要做到不但会写 SQL ,还要做到写出性能优良的 SQL ,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择 记录 条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大 数量 记录 的条件必须写在WHERE子句的末尾. (3) SELECT子句中避免使用 ‘ * ‘: ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询 数据 字典完成的, 这意味着将耗费更多的时间 (4) 减少访问 数据 库的次数: ORACLE在内部执行了许多工作: 解析 SQL 语句, 估算索引的利用率, 绑定变量 , 读 数据 块等; (5) 在 SQL *Plus , SQL *Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次 数据 库访问的检索 数据 量 ,建议值为200 (6) 使用DECODE函数来减少处理时间: 使用DECODE函数可以避免重复扫描相同 记录 或重复连接相同的表. (7) 整合简单,无关联的 数据 库访问: 如果你有几个简单的 数据 库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系) (8) 删除重复 记录 : 最高效的删除重复 记录 方法 ( 因为使用了ROWID)例子: DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO); (9) 用TRUNCATE替代DELETE: 当删除表中的 记录 时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将 数据 恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后, 数据 不能被恢复.因此很少的资源被调用,执行时间也会很短. (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML) (10) 尽量多使用COMMIT: 只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少: COMMIT所释放的资源: a. 回滚段上用于恢复 数据 的信息. b. 被程序语句获得的锁 c. redo log buffer 中的空间 d. ORACLE为管理上述3种资源中的内部花费 1. 确定需要查询的表和 数据 字段。 2. 写出WHERE语句,用于过滤 数据 。WHERE语句一般紧跟在SELECT语句后面,用于限制查询结果的行数或筛选满足某些条件的行 数据 。格式为:WHERE <condition>。其中,<condition>为条件表达式。 3. 在WHERE语句中用比较运算符“>”表示 大于 ,加上某个日期值作为比较对象。比如,若需要查询订单号 大于 2020年1月1日的所有订单,可写成:WHERE order_date > '2020-01-01' 4. 如果需要同时查询等于某日期的 数据 ,可以使用比较运算符“>=”,如:WHERE order_date >= '2020-01-01' 5. 如果需要查询 大于 或等于某日期,使用比较运算符“>=”,如:WHERE order_date >= '2020-01-01' 6. 查询结果可能有多行,需要使用SELECT语句来选择需要输出的 数据 列,如:SELECT order_id, order_date, order_status FROM orders WHERE order_date > '2020-01-01' 总之,查询 大于 某日期的 数据 需要用到 SQL 中的WHERE子句和比较运算符,通过语句中的条件表达式实现筛选和过滤。 善守的大龙猫: https://blog.csdn.net/weixin_43221207/article/details/129564244?spm=1001.2014.3001.5501 新写了一篇,分享给你,努力加油 log4j日志转json Õ_Õ!!!: 这公司拖欠工资,然后leader分享了你的文章,我来这儿吐槽一下 表情包 org.springframework.web.client.HttpClientErrorException:404 null 善守的大龙猫: 你是水军吗?还是电脑人? log4j日志转json 善守的大龙猫: 你什么情况? log4j日志转json Õ_Õ!!!: tj速发我工资 表情包