一.思路:首先判断这个查询的是emp表,需要接收值,声明一个rowtype类型接收数据即可,第二是,存在exception,需要处理,exception中有两种异常,分别处理即可,分别输出即可. 二.在增删改之后加上commit提交事物. 三.具体实现 declare -- 声明rowtype类型接收数据即可 v_emp emp%rowtype; begin -- 查询员工中姓为“SMITH” select * into v_emp from emp where ename='SMITH'; d
SELECT catalogid, foldername, parentid, folderpath FROM public.ic_catalog; --查询同表中的,该节点写的所有子节点 WITH RECURSIVE T(catalogid,foldername,parentid) AS( UNION ALL SELECT T1.catalogid,T1.foldername,T1.parentid FROM ic_catalog T1 JOIN T ON T1.parentid=T.cata
SQL查询一个表中类别字段中Max()最大值对应的记录 SELECT A.id, A.name, A.version FROM DOC A, (SELECT id, MAX(version) AS version FROM DOC GROUP BY id) AS B WHERE A.id = B.id AND A.version = B.version
EMP表是Oracle测试账户SCOTT中的一张雇员表,首先,我们来看看emp表的数据 SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ---------- --------- ---------- --------- ---------- ---------- ---------- SMITH CLERK ALLEN SALESMAN WARD SALESMAN JONES MANAGER M
1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 代码如下: select * from people where peopleId in (select peopleId from people group by peopleId having count (peopleId) ) 2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 代码如下: delete from people where peopleId
查询所给的表中值为空的总数 判断字段是否为空的sql语句 SELECT sex FROM id where sex is not NULL SELECT COUNT(*) t FROM id where sex is NULL UNION ALL SELECT COUNT(*) t FROM id WHERE cardid is NULL SELECT SUM(t) FROM (SELECT COUNT(*) t FROM id where sex is NULL UNION ALL SELE
users 表中有 两个字段 id 和 name 表数据大概如下: id name 1 AAA 2 BBB 3 CCC 4 AAA 请写查询语句查询出name字段中重复的值. 这个需要用到子查询 先查询出重复字段的值,根据分组统计name字段相同值的 数据条数大于1的就是重复的数据 即 select name from users group by name having count(*) > 1 查到重复的数据 指的是得到了重复
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 如果没有查询条件,则每次查询所有的行.实际应用中,一般要指定查询的条件.对记录进行过滤. 查询的语法: select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限定 1.基础查询 SELECT * FROM 表名; Select的优化: 任何地方都不要使用 select * from
SELECT 索引名称 = a.name , 表名 = c.name , 索引字段名 = d.name , 索引字段位置 = d.colid FROM sysindexes a JOIN sysindexkeys b ON a.id = b.id AND a.indid = b.indid JOIN sysobjects c ON b.id = c.id JOIN syscolumns d ON b.id = d.id AND b.colid = d.colid , ) -- and c.xty
首先描述问题,student表中有字段startID,endID.garde表中的ID需要对应student表中的startID或者student表中的endID才能查出grade表中的name字段,这时候问题就来了,如果需要一条sql一句同时查出garde表中的两条数据怎么办?(两表的关联字段为 SID) sql="select b.name,c.name as name2 from student a,garde b,grade c where a.SID=b.SID and a.SID=c
表tariff_info, 原始数据: 想要的结果:以start_time时间倒序排序, 以code分类, 查询每一类最新的一条记录 sql: SELECT a.* FROM TARIFF_INFO a, ( SELECT code, MAX (start_time) start_time FROM TARIFF_INFO GROUP BY code ) b WHERE a.start_time = b.start_time AND a.code = b.code ORDER BY a.code
##DQL:查询表中的记录 1.语法: select 字段列名 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限定 2.基础查询 1.多个字段的查询 select 字段名1,字段名2,...from 表名; *注意: * 如果查询所有字段,则可以使用*来代替字段列表. 2.去除重复 * distinct 3.计算列 * 一般可以使用四则运算计算一些列的值.(一般只会进行数值型的计算) * ifn