Oracle常用的45个查询语句
oracle查询表语句
oracle查询表语句查询所有数据:SELECT * FROM 表名;查询指定列数据:SELECT 列名1, 列名2, 列名3 FROM 表名;带条件查询:SELECT 列名1, 列名2 FROM 表名 WHERE 条件;排序查询:SELECT 列名1, 列名2 FROM 表名 ORDER BY 列名ASC/DESC;聚合查询:SELECT 列名, 聚合函数(列名) FROM 表名 GROUP BY 列名;连接查询:SELECT 表1.列名, 表2.列名 FROM 表1 JOIN 表2 ON 表1.关联列 = 表2.关联列;子查询:SELECT 列名 FROM 表名 WHERE 列名 IN (SELECT 列名FROM 表名 WHERE 条件);复杂查询:SELECT 列名 FROM 表名 WHERE 条件 UNION SELECT 列名FROM 表名 WHERE 条件;其他:- 查询结果去重:SELECT DISTINCT 列名 FROM 表名;- 限制查询结果行数:SELECT * FROM 表名 LIMIT num;- 分页查询:SELECT * FROM 表名 LIMIT num OFFSET offset;- 对查询结果取别名:SELECT 列名 AS 别名 FROM 表名;- 对查询结果进行计数:SELECT COUNT(*) FROM 表名;- 对查询结果进行求和、平均值、最大值、最小值等计算:SELECT SUM(列名) FROM 表名;SELECT AVG(列名) FROM 表名;SELECT MAX(列名) FROM 表名;SELECT MIN(列名) FROM 表名;注意:其中"表名"需要替换为实际表的名称,"列名"需要替换为实际列的名称,"条件"需要替换为实际查询条件。
oracle的查询语句
oracle的查询语句1. 查询所有员工的基本信息SELECT * FROM employees;这条查询语句将会返回employees表中的所有记录,包括员工的姓名、工号、职位、工资等基本信息。
2. 查询部门名称为"销售部"的所有员工的工资SELECT salary FROM employees WHERE department_name = '销售部';这条查询语句将会返回销售部所有员工的工资信息。
3. 查询工资大于10000的员工的姓名和工资SELECT last_name, salary FROM employees WHERE salary > 10000;这条查询语句将会返回工资大于10000的员工的姓名和工资信息。
4. 查询员工总数SELECT COUNT(*) FROM employees;这条查询语句将会返回员工表中的总记录数,即员工的总数。
5. 查询每个部门的员工数SELECT department_name, COUNT(*) FROM employees GROUP BY department_name;这条查询语句将会返回每个部门的员工数,包括部门名称和员工数量。
6. 查询平均工资最高的部门名称和平均工资SELECT department_name, AVG(salary) FROM employees GROUP BY department_name ORDER BY AVG(salary) DESC;这条查询语句将会返回平均工资最高的部门名称和平均工资。
7. 查询入职日期在2021年的员工的姓名和入职日期SELECT last_name, hire_date FROM employees WHERE hire_date BETWEEN '2021-01-01' AND '2021-12-31';这条查询语句将会返回入职日期在2021年的员工的姓名和入职日期。
oracle数据库常用检测语句
1、--查询每台电脑的连接数select username, t.MACHINE,t.PROGRAM, t.STATUS, count(username)from v$session twhere username is not nullgroup by username, t.MACHINE,t.PROGRAM, t.STATUSorder by username, t.MACHINE,t.PROGRAM, t.STATUS;2--查询可用连接数和已经用了的连接数select RESOURCE_NAME as A,--资源名,CURRENT_UTILIZATION as b,--资源的当前使用量,MAX_UTILIZATION as c,--资源使用达到的最大值,INITIAL_ALLOCATION as d,--初始化值一般等于limit_value,LIMIT_VALUE as e--系统设置的资源值from v$resource_limitwhere resource_name in ('sessions', 'processes');3--查询数据库内存select * from v$sga;select * from v$sgastat;4--查询耗时最长的sql,采用这个语句在业务高峰监控那个查询语句耗时长,占用数据库连接不释放select *from (select SQL_TEXT,SQL_FULLTEXT,round(ELAPSED_TIME / 1000000, 2) ccc,--总时长,EXECUTIONS dd,--执行次数,round(ELAPSED_TIME / 1000000 / EXECUTIONS, 3) ee,--每次时长,trunc((elapsed_Time - cpu_time) * 100 / elapsed_Time, 2) aa,--等待时间占比,round((elapsed_Time - cpu_time) / 1000000, 2) ff,--等待时长,round(USER_IO_WAIT_TIME / 1000000, 2) gg,--IO等待时间,buffer_gets bb,--读取缓冲区次数,disk_reads hh,--读盘次数,hash_value, --SQL的hash_value,以备获取完整SQLsql_id,SORTS --排序次数from (select *from v$sqlareawhere executions > 10and PARSING_SCHEMA_NAME = '***' --注意修改schema名称order by ELAPSED_TIME desc)where rownum < 500)order by ee desc;5--数据库分区表最大分区检查---查询结果当前最大分区要比当前日期提前半年以上。
oracle常用查询语句
oracle常用查询语句Oracle是一种关系型数据库管理系统,常用于数据存储和查询。
下面列举了10个常用的Oracle查询语句。
1. SELECT语句SELECT语句是Oracle中最常用的查询语句之一。
它用于从数据库表中检索数据。
可以指定要查询的列、要查询的表以及任何过滤条件。
例如:SELECT * FROM employees;2. WHERE子句WHERE子句用于在SELECT语句中添加过滤条件。
可以使用各种运算符(如等于、大于、小于等)来指定条件。
例如:SELECT * FROM employees WHERE salary > 50000;3. ORDER BY子句ORDER BY子句用于按指定的列对结果进行排序。
可以指定升序(ASC)或降序(DESC)。
例如:SELECT * FROM employees ORDER BY hire_date DESC;4. GROUP BY子句GROUP BY子句用于根据一个或多个列对结果进行分组。
通常与聚合函数(如SUM、COUNT、AVG等)一起使用。
例如:SELECT department_id, COUNT(*) FROM employees GROUP BYdepartment_id;5. JOIN操作JOIN操作用于从多个表中检索数据,并根据指定的关联条件将它们合并在一起。
常见的JOIN类型包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)等。
例如:SELECT employees.employee_id, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.department_id;6. 子查询子查询是嵌套在其他查询语句中的查询。
oracle查询数据库语句
oracle查询数据库语句在Oracle 数据库中,用于查询数据的语句通常是SQL(Structured Query Language)语句。
以下是一些基本的Oracle 查询语句示例:1. SELECT 语句:用于从数据库表中检索数据。
```sqlSELECT column1, column2, ...FROM table_nameWHERE condition;```示例:```sqlSELECT employee_id, first_name, last_nameFROM employeesWHERE department_id = 30;```2. DISTINCT 关键字:用于返回唯一不同的值。
```sqlSELECT DISTINCT column1, column2, ...FROM table_name;```示例:```sqlSELECT DISTINCT job_idFROM employees;```3. WHERE 子句:用于过滤检索的数据。
```sqlSELECT column1, column2, ...FROM table_nameWHERE condition;```示例:```sqlSELECT employee_id, first_name, last_nameFROM employeesWHERE salary > 50000;```4. ORDER BY 子句:用于按指定的列对结果进行排序。
```sqlSELECT column1, column2, ...FROM table_nameORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;```示例:```sqlSELECT employee_id, first_name, last_nameFROM employeesORDER BY last_name ASC, first_name ASC;```5. GROUP BY 子句:用于对结果进行分组。
查询(select)相关的语句
查询(select)相关的语句一、简单查询语句================1、查询所有列select * from dept;--做练习可以,真正做开发不要这样。
2、查询指定列desc emp;select empno, ename, sal, job from emp;3、查询日期列select ename, to_char(hiredate, 'yyyy-mm-dd') from emp;4、取消重复行select distinct deptno, job from emp;5、使用算术表达式select ename, sal, sal * 12 from emp6、使用列别名select ename as NAME, sal * 12 as "ANNUALSALARY" from emp;7、处理NULLselect ename, sal, comm, sal + comm from emp;select ename, sal, comm, sal + nvl(comm, 0) from emp;8、连接字符串select ename || '的岗位是' || job from emp;9、去掉结果中的重复行select distinct job from emp;二、限制数据============1、在where子句中使用数字值select ename, sal from emp where sal > 2000;2、在where子句中使用字符值select ename, sal from emp where job = 'MANAGER';3、在where子句中使用日期值select ename, sal, hiredate from emp where hiredate > '01-1月-82';4、在where子句中使用between...and操作符select ename, sal, deptno from emp where sal between 2000 and 3000;5、在where子句中使用like操作符%:表示0个或多个字符_:表示单个字符select ename, sal, deptno from emp where ename like 'S%';select ename, sal, deptno from emp where ename like '__O';select ename, sal, deptno from emp where ename like '%a_';6、在where子句中使用in操作符select ename, sal, deptno from emp where job in ('CLERK', 'MANAGER');7、在where子句中使用is null操作符select ename, sal, deptno from emp where mgr is null;8、在where子句中使用and操作符select ename, sal, deptno from emp where deptno = 20 and job = 'CLERK';9、在where子句中使用not操作符select ename, sal, deptno from emp where comm is not null;10、显示表中前几行内容select * from emp where rownum <= 3;伪列 rownumrowid三、排序数据============1、升序排序select ename, sal, deptno from emp order by sal;2、降序排序select ename, sal, deptno from emp order by sal desc;3、使用多列排序select ename, sal, deptno from emp order by deptno asc, sal desc;4、使用非选择列表进行排序select ename, deptno from emp order by sal desc;5、使用列别名排序select ename, sal * 12 年收入, deptno from emp order by 年收入 desc;6、使用列位置排序select deptno, ename, sal from emp order by 1;四、复杂查询============1、数据分组1)分组函数max和minselect max(sal) 最高工资, min(sal) 最低工资 from emp;avg和sumselect avg(sal) 平均工资, sum(sal) 总计工资 from emp;countselect count(*) 雇员总数 from emp;count(表达式) 显示非null的总计行数2)group by和having子句使用group by进行单列分组select deptno, avg(sal) from emp group by deptno;使用group by进行多列分组select deptno, job, avg(sal), max(sal) from emp group by deptno, job;使用having子句限制分组显示结果select deptno, avg(sal) from emp group by deptno having avg(sal) < 2500;使用order by子句改变分组排序结果select deptno, avg(sal) from emp group by deptno order by avg(sal);使用数据分组的注意事项分组函数只能出现在选择列表、having子句和order by子句中。
oracle数据库语句汇总
oracle数据库语句汇总在Oracle数据库中,有许多常用的SQL语句可以用于查询、插入、更新和删除数据。
下面列举了一些常见的Oracle数据库语句,以供参考。
1. 查询表中的所有数据:```SELECT * FROM 表名;```2. 查询表中的特定字段数据:```SELECT 字段1, 字段2, ... FROM 表名;```3. 查询表中满足特定条件的数据:```SELECT * FROM 表名 WHERE 条件;```4. 对查询结果进行排序:```SELECT * FROM 表名 ORDER BY 字段 ASC/DESC;```5. 对查询结果进行分组:```SELECT 字段1, 字段2, ... FROM 表名 GROUP BY 字段;```6. 对查询结果进行统计:```SELECT COUNT(*) FROM 表名;```7. 插入数据到表中:```INSERT INTO 表名(字段1, 字段2, ...) VALUES (值1, 值2, ...);```8. 更新表中的数据:```UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2 WHERE 条件;9. 删除表中的数据:```DELETE FROM 表名 WHERE 条件;```10. 创建新表:```CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型,...);```11. 修改表结构:```ALTER TABLE 表名 ADD (字段数据类型); ```12. 删除表:DROP TABLE 表名;```13. 创建索引:```CREATE INDEX 索引名 ON 表名 (字段);```14. 删除索引:```DROP INDEX 索引名;```15. 创建视图:```CREATE VIEW 视图名 AS SELECT * FROM 表名 WHERE 条件; ```16. 删除视图:```DROP VIEW 视图名;17. 创建存储过程:```CREATE PROCEDURE 存储过程名ISBEGIN-- 存储过程的具体逻辑END;```18. 调用存储过程:```EXEC 存储过程名;```以上是一些常见的Oracle数据库语句,可以满足大部分基本的数据操作需求。
oracle数据库常用的99条查询语句
1. select * from emp;2. select empno, ename, job from emp;3. select empno 编号, ename 姓名, job 工作 from emp;4. select job from emp;5. select distinct job from emp;6. select distinct empno, job from emp;说明:因为雇员编号不重复, 所以此时证明所有的列没有重复,所以不能消除掉重复的列.7. 查询出雇员的编号, 姓名, 工作, 但是显示的格式:编号是: 7369 的雇员, 姓名是: smith, 工作是: clearselect '编号是: ' || empno || '的雇员, 姓名是: ' || ename || ', 工作是: ' || job from emp;8. 求出每个雇员的姓名及年薪select ename, sal * 12 income from emp;9. 求出工资大于 1500 的所有雇员信息select * from emp where sal > 1500;10. 查询每月可以得到奖金的雇员信息select * from emp where comm is not null;11. 查询没有奖金的雇员信息select * from emp where comm is null;12. 查询出基本工资大于 1500 同时可以领取奖金的雇员信息select * from emp where sal > 1500 and comm is not null;13. 查询出基本工资大于 1500 或者可以领取奖金的雇员信息select * from emp where sal > 1500 or comm is not null;14. 查询出基本工资不大于 1500 或者不可以领取奖金的雇员信息select * from emp where not(sal > 1500 and comm is not null);15. 查询基本工资大于 1500, 但是小于 3000 的全部雇员信息select * from emp where sal > 1500 and sal < 3000;16. 查询基本工资大于等于 1500, 但是小于等于 3000 的全部雇员信息select * from emp where sal >= 1500 and sal <= 3000;select * from emp where sal between 1500 and 3000;17. 查询出在 1981 年雇佣的全部雇员信息(1981 年 1 月 1 日到 1981 年 12 月 31 日之间的雇佣的雇员)select * from emp where hiredate between '1-1月-81' and '31-12月-81';18. 要求查询出姓名是 smith 的雇员信息select * from emp where ename = 'SMITH';19. 要求查询出雇员是 7369, 7499, 7521 的雇员的具体信息select * from emp where empno = 7369 or empno = 7499 or empno = 7521;select * from emp where empno in(7369, 7499, 7521);20. 要求查询出雇员不是 7369, 7499, 7521 的雇员的具体信息select * from emp where empno not in(7369, 7499, 7521);21. 要求查询出姓名是 smith, allen, king 的雇员信息select * from emp where ename in('SMITH', 'ALLEN', 'KING');22. 查询出所有雇员姓名中第二个字母包含 "M" 的雇员信息select * from emp where ename like '_M%';23. 查询出雇员姓名中包含字母 M 的雇员信息select * from emp where ename like '%M%';24. 要求查询出在 1981 年雇佣的雇员信息select * from emp where hiredate like '%81%';25. 查询工资中包含 5 的雇员信息select * from emp where sal like '%5%';26. 查询雇员编号不是 7369 的雇员信息select * from emp where empno != 7369;select * from emp where empno <> 7369;27. 要求按照工资由低到高排序select * frm emp order by sal;select * from emp order by sal asc;28. 要求按照工资由高到低排序select * from emp order by sal desc;29. 要求查询出 20 部门的所有雇员信息, 查询的信息按照工资由高到低排序,如果工资相等,则按照雇佣日期由早到晚排序.select * from emp where deptno = 20 order by sal desc, hiredate asc;30. 将小写字母变为大写字母select upper('hello') from dual;31. 将大写字母变为小写字母select lower('HELLO WORLD') from dual;32. 要求查询出姓名是 smith 的雇员信息select * from emp where ename = upper('smith');33. 使用 initcap() 函数将单词的第一个字母大写select initcap('hello world') from dual;34. 将雇员表中的雇员姓名变为开头字母大写select initcap(ename) from emp;35. 将字符串 "hello" 和 "world" 进行串联select concat('hello ', 'world') from dual;36. 对字符串进行操作的常用字符处理函数select substr('hello', 1, 3) 截取字符串, length('hello') 字符串的长度, replace('hello', 'l', 'x') 字符串替换 from dual;select substr('hello', 0, 3) 截取字符串, length('hello') 字符串的长度, replace('hello', 'l', 'x') 字符串替换 from dual;37. 显示所有雇员的姓名及姓名的后三个字符select ename, substr(ename, length(ename) -2) from emp;select ename, substr(ename, -3, 3) from emp;38. 使用数值函数执行四舍五入操作select round(789.536) from dual;39. 要求将 789.536 数值保留两位小数select round(789.536, 2) from dual;40. 要求将 789.536 数值中的整数的十位进行四舍五入进位select round(789.536, -2) from dual;41. 采用 trunc() 函数不会保留任何小数,而且小数点也不会执行四舍五入的操作select trunc(789.536) from dual;42. 通过 trunc() 也可以指定小数点的保留位数select trunc(789.536, 2) from dual;43. 作用负数表示位数select trunc(789.536, -2) from dual;44. 使用 mod() 函数可以进行取余的操作select mod(10, 3) from dual;45. 显示 10 部门雇员进入公司的星期数(当前日期 - 雇佣日期 = 天数 / 7 = 星期数)select empno, ename, round((sysdate - hiredate) / 7) from emp where deptno = 10;46. 日期函数months_between(): 求出给定日期范围的月数add_months(): 在指定的日期上加上指定的月数, 求出之后的日期next_day(): 指定日期的下一个日期last_day(): 求出给定日期当月的最后一天日期47.select empno, ename, months_between(sysdate, hiredate) from emp;select empno, ename, round(months_between(sysdate, hiredate)) from emp;48. select sysdate, add_months(sysdate, 4) from dual;49. select next_day(sysdate, '星期一') from dual;50. select last_day(sysdate) from dual;51. 转换函数to_char(): 转换成字符串to_number(): 转换成数字to_date(): 转换成日期52. 查询所有雇员的雇员编号, 姓名, 雇佣日期select empno,ename,to_char(hiredate, 'yyyy') year,to_char(hiredate, 'mm') months,to_char(hiredate, 'dd') dayfrom emp;select empno, ename, to_char(hiredate, 'yyyy-mm-dd') from emp;select empno, ename, to_char(hiredate, 'fmyyyy-mm-dd') from emp;53. 查询所有雇员的编号, 姓名和工资select empno, ename, sal from emp;select empno, ename, to_char(sal, '99,999') from emp;select empno, ename, to_char(sal, 'L99,999') from emp;select empno, ename, to_char(sal, '$99,999') from emp;54. select to_number('123') + to_number('123') from dual;55. 将一个字符串转换成日期类型select to_date('2009-01-01', 'yyyy-mm-dd') from dual;56. 求出每个雇员的年薪(要求加上奖金)select empno, ename, sal, comm, (sal + comm) * 12 from emp;select empno, ename, sal, comm, nvl(comm, 0), (sal + nvl(comm, 0)) * 12 income from emp;57. decode() 函数类似于 if....elsif...else 语句select decode(1, 1, '内容是 1', 2, '内容是 2', 3, '内容是 3') from dual;58. 查询出雇员的编号, 姓名, 雇佣日期及工作, 要求将雇员的工作替换成以下信息:select empno 雇员编号,ename 雇员姓名,hiredate 雇佣日期,decode(job,'CLERK', '业务员','SALESMAN', '销售人员','MANAGER', '经理','ANALYST', '分析员','PRESIDENT', '总裁') 职位from emp;59. 笛卡尔积(交差连接)select * from emp, dept;select * from emp cross join dept;60. 内连接select * from emp e, dept d where e.deptno = d.deptno;select * from emp e inner join dept d on e.deptno = d.deptno;select * from emp e join dept d on e.deptno = d.deptno;61. 自然连接select * from emp natural join dept;select * from emp e join dept d using(deptno);62. 要求查询出雇员的编号, 姓名, 部门的编号, 名称, 地址select e.empno, e.ename, d.deptno, d.dname, d.loc from emp e, dept d where e.deptno = d.deptno;63. 要求查询出雇员的姓名, 工作, 雇员的直接上级领导姓名select e.ename, e.job, m.ename from emp e, emp m where e.mgr = m.empno;64. 要求查询出雇员的姓名, 工作, 雇员的直接上级领导姓名以及部门名称select e.ename, e.job, m.ename, d.dname from emp e, emp m, dept d where e.mgr = m.empno and e.deptno = d.deptno;65. 要求查询出每个雇员的姓名, 工资, 部门名称, 工资在公司的等级(salgrade), 及其领导的姓名及工资所在公司的等级select e.ename, e.sal, d.dname, s.grade, m.ename, m.sal, ms.gradefrom emp e, dept d, salgrade s, emp m, salgrade mswhere e.deptno = d.deptnoand e.sal between s.losal and s.hisaland e.mgr = m.empnoand m.sal between ms.losal and ms.hisal;select e.ename,e.sal,d.dname,decode(s.grade, 1, '第五等级', 2, '第四等级', 3, '第三等级', 4, '第二等级', 5, '第一等级'),m.ename,m.sal,decode(ms.grade, 1, '第五等级', 2, '第四等级', 3, '第三等级', 4, '第二等级', 5, '第一等级')from emp e, dept d, salgrade s, emp m, salgrade mswhere e.deptno = d.deptno and e.sal between s.losal and s.hisal and e.mgr = m.empno and m.sal between ms.losal and ms.hisal;66. select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno = d.deptno;select empno, ename, d.deptno, dname, loc from emp e inner join dept d on e.deptno = d.deptno;67. 左外连接select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno = d.deptno(+);select empno, ename, d.deptno, dname, loc from emp e left outer join dept d on e.deptno = d.deptno;select empno, ename, d.deptno, dname, loc from emp e left join dept d on e.deptno = d.deptno(+);68. 右外连接select empno, ename, d.deptno, dname, loc from emp e, dept d where e.deptno(+) = d.deptno;select empno, ename, d.deptno, dname, loc from emp e right outer join dept d on e.deptno = d.deptno;select empno, ename, d.deptno, dname, loc from emp e right join dept d on e.deptno = d.deptno;69. select e.empno, e.ename, m.empno, m.ename from emp e, emp m where e.mgr = m.empno;70. select e.empno, e.ename, m.empno, m.ename from emp e, emp m where e.mgr = m.empno(+);71.select * from emp e, dept d where e.deptno = d.deptno and d.deptno = 30; select * from emp e inner join dept d on e.deptno = d.deptno where d.deptno = 30;select * from emp e join dept d on e.deptno = d.deptno where d.deptno = 30; select * from emp e natural join dept d where deptno = 30;select * from emp e join dept d using(deptno) where deptno = 30;72.select e.ename, d.deptno, d.dname, d.loc from emp e right outer join dept d on e.deptno = d.deptno;select e.ename, d.deptno, d.dname, d.loc from emp e right join dept d on e.deptno = d.deptno;select e.ename, d.deptno, d.dname, d.loc from emp e, dept d where e.deptno(+) = d.deptno;73. select count(ename) from emp;74. select min(sal) from emp;75. select max(sal) from emp;76. select sum(sal) from emp;77. select avg(sal) from emp;78. select sum(sal) from emp where deptno = 20;79. select avg(sal) from emp where deptno = 20;80. 求出每个部门的雇员数量select deptno, count(deptno) from emp group by deptno;select deptno, count(empno) from emp group by deptno;81. 求出每个部门的平均工资select deptno, avg(sal) from emp group by deptno;82. 按部门分组, 并显示部门的名称, 及每个部门的员工数select d.dname, count(e.empno) from emp e, dept dwhere e.deptno = d.deptnogroup by d.dname;select d.deptno, d.dname, temp.cfrom (select deptno, count(e.empno) c from emp e group by e.deptno) temp, dept dwhere temp.deptno = d.deptno;83. 要求显示出平均工资大于 2000 的部门编号和平均工资select deptno, avg(sal) from emp group by deptno having avg(sal) > 2000;84. 显示非销售人员工作名称以及从事同一工作雇员的月工资的总和,并且要满足从事同一工作的雇员的月工资合计大于 5000, 输出结果按月工资的合计升序排序.select job, sum(sal) su from emp where job <> 'SALESMAN' group by job having sum(sal) > 5000 order by su;select temp.job, sum(temp.sal) sfrom (select job, sal from emp e where job <> 'SALESMAN') tempgroup by temp.jobhaving sum(temp.sal) > 5000order by s;85. 求出平均工资最高的部门工资select max(avg(sal)) from emp group by deptno;86. 要求查询出比雇员编号为 7654 工资高的所有雇员信息select * from emp where sal >(select sal from emp where empno = 7654);87. 要求查询出工资比 7654 高, 同时与 7788 从事相同工作的全部雇员信息select * from empwhere sal >(select sal from emp where empno = 7654)and job = (select job from emp where empno = 7788);88. 要求查询出工资最低的雇员姓名, 工作, 工资select ename, job, sal from emp where sal = (select min(sal) from emp);89. 要求查询出:部门名称,部门的员工数,部门的平均工资,部门的最低收入雇员的姓名select d.dname, temp.c, temp.a, e.enamefrom dept d,(select deptno, count(empno) c, avg(sal) a, min(sal) m from emp group by deptno) temp,emp ewhere d.deptno = temp.deptno and e.sal = temp.m;select d.deptno, temp.dname, temp.c, temp.a, e.ename, e.salfrom(select d.dname , count(e.empno) c, avg(e.sal) a, min(e.sal) mfrom emp e, dept dwhere e.deptno = d.deptnogroup by d.dname) temp,emp e,dept dwhere temp.m = e.saland temp.dname = d.dname;90. 求出每个部门的最低工资的雇员的信息select * from emp where sal in(select min(sal) from emp group by deptno); select * from emp where sal =any(select min(sal) from emp group by deptno); select * from(select min(sal) m from emp group by deptno) temp,emp ewhere e.sal = temp.m;91. 范例 90 中, 比子查询条件中最低(小)的工资要大的雇员信息select * from emp where sal >any(select min(sal) from emp group by deptno); select * from emp where sal > (select min(min(sal)) from emp group by deptno);92. 范例 90 中, 比子查询条件中最高(大)的工资要小的雇员信息select * from emp where sal <any(select min(sal) from emp group by deptno); select * from emp where sal < (select max(min(sal)) from emp group by deptno);93. 范例 90 中, 比子查询条件中最高(大)的工资要大的雇员信息select * from emp where sal >all(select min(sal) from emp group by deptno); select * from emp where sal > (select max(min(sal)) from emp group by deptno);94. 范例 90 中, 比子查询条件中最低(小)的工资要小的雇员信息select * from emp where sal <all(select min(sal) from emp group by deptno); select * from emp where sal < (select min(min(sal)) from emp group by deptno);95. 查找出 20 部门中没有奖金的雇员信息select * from emp where (sal, nvl(comm, -1)) in (select sal, nvl(comm, -1) from emp where deptno = 20);select * from emp where deptno = 20 and comm is null;96. union 操作符返回两个查询选定的所有不重复的行select deptno from emp union select deptno from dept;97. union all 操作符合并两个查询选定的所有行,包括重复的行select deptno from emp union all select deptno from dept;98. intersect 操作符只返回两个查询都有的行select deptno from emp intersect select deptno from dept;99. minus 操作符只返回由第一个查询选定但是没有被第二个查询选定的行, 也就是在第一个查询结果中排除在第二个查询结果中出现的行select deptno from dept minus select deptno from emp;。
oracle数据库查询语句
SELECT [ALL | DISTINCT] [selec_columns | *] FROM table_name[WHERE search_condition][GROUP BY columns][HAVING search_condition][ORDER BY columns [ASC | DESC]](1)SELECT:查询关键字,用于选择查询的列。
(2)[ALL | DISTINCT]:用于标识查询结果集中相同数据的处理方式,all关键字表示显示查询到的所有数据,包括重复的行;DISTINCT关键字表示查询数据中的重复行只显示一次。
(3)selec_columns:表示要查询的列,列名之间使用逗号隔开,如果需要查询表中所有的列可直接用“*”表示。
(4)WHERE search_condition:指定查询操作的条件,只有符合条件的数据才会被查询出来。
(5)GROUP BY columns:用于设置分组查询的列。
(5)HAVING search_condition:用于设置分组的条件,需要与GROUP BY语句结合使用。
(6)ORDER BY columns [ASC | DESC]:用于指定结果集的排序方式,ASC为升序,DESC为降序,默认ASC升序。
1、基本查询2.条件语句查询3、模糊查询在实际应用中如果不能完全确定查询的条件,但是又了解这些条件的某些特征,就可以通过模糊查询来解决问题,在where子句中可以使用like或not like编写模糊查询的条件实现模糊查询需要用到两个通配符,分别为“%”与“_”(1)%:表示零个、一个或多个任意字符。
(2)_:表示一个任意字符。
4、排序查询如果希望对查询的结果进行排序,就需要使用order by子句,order by子句可以将查询的结果按照升序或者降序进行排列5、分组查询使用GROUP BY子句与HAVING子句实现,GROUP BY子句用于指定分组的列,HAVING语句用于指定分组的条件6、其他查询a、DISTINCT取消重复行b、列的别名7、子查询a、单行子查询执行数据库操作时,如果某个操作希望依赖于另外一个SELECT语句的查询结果,那么就可以在操作中嵌入SELECT语句,当查询操作中嵌入了SELECT语句后,就形成了一个子查询。
oracle基本查询语句总结
oracle基本查询语句总结spool E:\基本查询.txt将命令⾏的语句写⼊到指定的⽬下的指定的⽂件中host cls清屏命令show user显⽰当前操作的⽤户desc emp查看表结构select * from emp;查看所有的员⼯的信息--设置⾏宽SQL> --设置⾏宽SQL> show linesizeSQL> set linesize 150SQL> --设置列宽SQL> col ename for a8代表8为字符组成的字符串SQL> col sal for 9999 代表4位的数字SQL中的null1包含null的表达式都为null2. null永远!=null select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0)select * from emp where comm is null;已选择 14 ⾏。
SQL> --2. null永远!=nullSQL> --查询奖⾦为null的员⼯SQL> select *2 from emp3 where comm=null;未选定⾏SQL> select *2 from emp3 where comm is null;ed该命令主要⽤在当前⼀个sql语句写错时,然⼜不想重新写,这个时候可以⽤ed命令记事本调出来对先去的命令进⾏编辑,如果该命令⽤在Linux系统中,调出来的应该是vi编辑器别名设置select empno as "员⼯号",ename "姓名",sal "⽉薪",sal*12,comm,sal*12+nvl(comm,0)2* from empc 命令该命令会对错误的⾏信息进⾏修改⽰例如下:SQL> select empno,ename,sal2 form emp;form emp**第 2 ⾏出现错误:ORA-00923: 未找到要求的 FROM 关键字SQL> 22* form empSQL> --c命令 changeSQL> c /form/from2* from empSQL> /nvl(comm,0)--滤空函数select empno,ename,sal,sal*12,comm,sal*12+nvl(comm,0)distinct去掉重复记录select deptno from emp;Distinct组合 select distinct deptno,job from emp;Concat 1. select concat('Hello',' World') from dual;2. select 'hello'||' world' 值 from dual;3. SQL> --查询员⼯信息: ***的薪⽔是****SQL> select ename||'的薪⽔是'||sal 值2 from emp;过滤和查询where select * from emp where deptno=10;在where过滤中对⼤⼩写敏感date SQL> -- ⽇期格式敏感SQL> --查询⼊职⽇期是17-11⽉-81的员⼯SQL> select *2 from emp3 where hiredate='17-11⽉-81';EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- -------- --------- ---------- -------------- ----- ---------- ----------7839 KING PRESIDENT 17-11⽉-81 5000 10SQL> --修改⽇期格式SQL> select * from v$nls_parameters;alter session set NLS_DATE_FORMAT='yyyy-mm-dd';between and between and: . 包含边界 2. ⼩值在前⼤值在后SQL> --查询薪⽔1000~2000之间的员⼯SQL> select *2 from emp3 where sal between 1000 and 2000;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- -------- --------- ---------- -------------- ----- ---------- ----------7499 ALLEN SALESMAN 7698 20-2⽉ -81 1600 300 307521 WARD SALESMAN 7698 22-2⽉ -81 1250 500 307654 MARTIN SALESMAN 7698 28-9⽉ -81 1250 1400 307844 TURNER SALESMAN 7698 08-9⽉ -81 1500 0 307876 ADAMS CLERK 7788 23-5⽉ -87 1100 207934 MILLER CLERK 7782 23-1⽉ -82 1300 10in select * from emp where deptno in (10,20);SQL> --null 3: 如果集合中含义null,不能使⽤not in;但可以使⽤inSQL> ed已写⼊ file afiedt.buf1 select *2 from emp3* where deptno in (10,20,null)like % 1.查询名字以S打头的员⼯select * from emp where ename like 'S%';2.查询名字是4个字的员⼯select * from emp where ename like '____';3.-查询名字中含有下划线的员⼯> select * from emp where ename like '%\_%'; escape '\'order by 排序操作order by 后⾯ + 列,表达式,别名,序号order by 作⽤于后⾯所有的列,desc只作⽤于离他最近的⼀列排序时的下技巧当我们对某⼀类进⾏倒序排序的时候,null会放在最上⾯,这个时候为了避免前⾯n列都是null值,影响观察,可以采取下⾯的⽅法select *from emp order by comm desc nulls last单⾏函数Lower Uppper initcap select lower('Hello World') 转⼩写,upper('Hello World') 转⼤写, initcap('hello world') ⾸字母⼤写from dual;转⼩写转⼤写⾸字母⼤写----------- ----------- -----------hello world HELLO WORLD Hello Worldsubstr(a,b)substr(a,b) 从 a中,第b位开始select substr('Hello World',3) from dual;SUBSTR('H---------llo Worldsubstr(a,b,c)SQL>substr(a,b,c) 从a中,第b位开始,取c位SQL> select substr('Hello World',3,4) from dual;SUBS----llolength 字符数 lengthb字节数 select length('Hello World') 字符,lengthb('Hello World') 字节 from dual;字符字节数 lengthb字节数字符字节---------- ----------11 11select length('中国') 字符,lengthb('中国') 字节from dual字符字节---------- ----------2 4-instr(a,b) 在a中,查找b select instr('Hello World','ll') from dual;INSTR('HELLOWORLD','LL') ------------------------3lpad 左填充 rpad右填充select lpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右左右---------- ----------******abcd abcd******trim 去掉前后指定的字符select trim('H' from 'Hello WorldH') from dual;TRIM('H'FR----------ello Worldreplace 替换select replace('Hello World','l','*') from dual;REPLACE('HE-----------He**o Wor*d-四舍五⼊ select round(45.926,2) ⼀,round(45.926,1) ⼆,round(45.926,0) 三round(45.926,-1) 四, round(45.926,-2) 五from dual;⼀⼆三四五---------- ---------- ---------- ---------- ----------------------------------------45.92 45.9 45 40 0当前系统时间date 不允许⽇期 + ⽇期select sysdate from dual;SYSDATE--------------17-9⽉ -14select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss:ff') from dual;员⼯的⼯龄:天星期⽉年SQL> select ename,hiredate,(sysdate-hiredate) 天,(sysdate-hiredate)/7 星期, (sysdate-hiredate)/30 ⽉,(sysdate-hiredate)/365 年from emp;add_months select add_months(sysdate,78) from dual; 加上n个⽉后的⽇期last_day select last_day(sysdate) from dual; 本⽉的最后⼀天next_day(sysdate,'星SQL> select next_day(sysdate,'星期四') from dual;next_day(sysdate,'星SQL> select next_day(sysdate,'星期四') from dual;期四')NEXT_DAY(SYSDA--------------18-9⽉ -14⽇期的四舍五⼊select round(sysdate,'month'), round(sysdate,'year') from dual;select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI----------------------------------2014-09-17 14:40:48今天是星期三查询员⼯的薪⽔:两位⼩数千位符,货币代码 select to_char(sal,'L9,999.99') from emp;SQL> select nullif('abc','abc') 值 from dual;当a=null时,返回c;否则返回b值---SQL> select nullif('abc','abcd') 值 from dual;值---abcselect comm,sal,coalesce(comm,sal) 值 from emp;coalesce返回第⼀个为⾮空的值nvl2(a,b,c) 当a为空时,返回c,否则返回bCase SQL> --给员⼯涨⼯资,总裁1000 经理800 其他400SQL> select ename,job,sal 涨前,2 case job when 'PRESIDENT' then sal+10003 when 'MANAGER' then sal+8004 else sal+4005 end 涨后6 from emp;第⼆种⽅式SQL>select ename,job,sal 涨前,2 decode(job,'PRESIDENT',sal+1000,3 'MANAGER',sal+800,4 sal+400) 涨后5 from emp;多⾏函数Sum()select sum(sal) from emp;Count(*)select count(*) from emp;平均⼯资select sum(sal)/count(*) ⼀, avg(sal) ⼆ from emp;-null值 4: 组函数⾃动滤空;-null值 5: 组函数⾃动滤空;可以嵌套滤空函数来屏蔽滤空功能可以嵌套滤空函数来屏蔽滤空功能Having 分组后的过滤 select deptno,avg(sal)2 from emp3 group by deptno4 having avg(sal)>2000; select deptno,avg(sal)2 from emp3 group by deptno4 having avg(sal)>2000;group by的增强SQL> /*SQL> group by的增强SQL> select deptno,job,sum(sal) from emp group by deptno,jobSQL> +SQL> select deptno,sum(sal) from emp group by deptnoSQL> +SQL> select sum(sal) from empSQL>SQL> ==SQL>SQL> select deptno,job,sum(sal) from emp group by rollup(deptno,job)SQL>SQL> group by rollup(a,b)SQL> =SQL> group by a,bSQL> +SQL> group by aSQL> +SQL> group by nullSQL> */SQL> select deptno,job,sum(sal) from emp group by rollup(deptno,job);DEPTNO JOB SUM(SAL)---------- --------- ----------10 CLERK 130010 MANAGER 245010 PRESIDENT 500010 875020 CLERK 190020 ANALYST 600020 MANAGER 297520 1087520 1087530 CLERK 95030 MANAGER 285030 SALESMAN 5600DEPTNO JOB SUM(SAL)---------- --------- ----------30 940029025SQL> break on deptno skip 2SQL> break on null多表查询的理解等值连接 select e.empno,e.ename,e.sal,d.dnamefrom emp e,dept dwhere e.deptno=d.deptno;外连接左外连接:右外连接:左外连接:当where e.deptno=d.deptno不成⽴的时候,等号左边的表任然被包含SQL> 写法:where e.deptno=d.deptno(+)SQL> 右外连接:当where e.deptno=d.deptno不成⽴的时候,等号右边的表任然被包含SQL> 写法:where e.deptno(+)=d.deptno⾃连接⾃连接: 通过表的别名,将同⼀张表视为多张表⾃连接:不是适合操作⼤表SQL> --层次查询SQL> select level,empno,ename,sal,mgr2 from emp3 connect by prior empno=mgr4 start with mgr is null5 order by 1;LEVEL EMPNO ENAME SAL MGR---------- ---------- ---------- ---------- ---------- --------------------------1 7839 KING 50002 7566 JONES 2975 78392 7698 BLAKE 2850 78392 7782 CLARK 2450 78393 7902 FORD 3000 75663 7521 WARD 1250 76983 7900 JAMES 950 76983 7934 MILLER 1300 77823 7499 ALLEN 1600 76983 7788 SCOTT 3000 75663 7654 MARTIN 1250 7698LEVEL EMPNO ENAME SAL MGR---------- ---------- ---------- ---------- ---------- --------------------------3 7844 TURNER 1500 76984 7876 ADAMS 1100 77884 7369 SMITH 800 7902。
常用的oracle数据库查询语句
1、-查看ORACLE表空间的使用情况直接使用情况:SELECT D.TABLESPACE_NAME "表空间名字", D.STATUS "状态",(A.BYTES / 1024 / 1024) as "总共多少M",((A.BYTES - DECODE(F.BYTES, NULL, 0, F.BYTES)) / 1024 / 1024) as "已经用了多少M",(DECODE(F.BYTES, NULL, 0, F.BYTES) / 1024 / 1024) as "剩余多少M",((A.BYTES - DECODE(F.BYTES, NULL, 0, F.BYTES)) / 1024 / 1024)/(A.BYTES / 1024 / 1024) as "利用率",DECODE(sign(((A.BYTES - DECODE(F.BYTES, NULL, 0, F.BYTES)) / 1024 / 1024)/(A.BYTES / 1024 / 1024)-0.9),1,'剩余不到10%,请考虑扩表空间','正常') as "温馨提示"FROM SYS.DBA_TABLESPACES D, SYS.SM$TS_AVAIL A, SYS.SM$TS_FREE F WHERE D.TABLESPACE_NAME = A.TABLESPACE_NAMEAND F.TABLESPACE_NAME (+) = D.TABLESPACE_NAME;2、查看oracle连接数select count(*) from v$session --连接数Select count(*) from v$session where status='ACTIVE'--并发连接数alter system set processes = value scope = spfile;--重启数据库修改连接3、为表空间扩容--为表空间增加数据文件alter tablespace users add datafile 'c:\oracle\ora81\oradata\sid\user002.dbf' size 100M;--增加表空间原有数据文件尺寸alter database datafile 'c:\oracle\ora81\oradata\\sid\users.dbf' resize 1000M;4、查询表空间大小select tablespace_name,file_id,bytes/1024/1024,file_namefrom dba_data_files order by file_id;编辑特别推荐:CACHE的统计信息与优化'模块描述:ACCESS / orACLE ADO 连接和记录集操作'**************************************'提示:要引用Microsoft ActiveX Data Object 2.X 对象库'**************************************'======================================'模块开始'======================================Option ExplicitPublic Enum RSMethodVIEW_RECORD = 0EDIT_RECORD = 1EXEC_SQL = 2NEW_RECORD = 3End Enum'dbConnection函数Function dbConnection(strDatabaseType As String, strDBService As String, Optional strUserID As String, Optional strPassword As String) As ADODB.ConnectionDim objDB As New ADODB.ConnectionDim strConnectionString As StringIf strDatabaseType = "ORACLE " Then'定义ORACLE数据库连接字符串strConnectionString = "Driver={Microsoft ODBC Driver for oracle};ConnectString= " & strDBService & ";UID= " & strUserID & ";PWD= " & strPassword & "; "ElseIf strDatabaseType = "MSACCESS " Then'定义Access数据库连接字符串strConnectionString = "DBQ= " & strDBServicestrConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)}; " & strConnectionStringEnd IfWith objDB.Mode = adModeReadWrite ' 连接模式.ConnectionTimeout = 10.CommandTimeout = 5.CursorLocation = adUseClient.Open strConnectionStringEnd WithSet dbConnection = objDBEnd Function'建立记录集Function CreateRecordSet(ByRef dbConn As ADODB.Connection, ByRef rs As ADODB.Recordset, ByV al method As RSMethod, Optional strSQL As String, Optional TableName As String) As ADODB.Recordsetif rs.State=1 thenrs.closeend ifSelect Case methodCase RSMethod.NEW_RECORDrs.ActiveConnection = dbConnrs.CursorType = adOpenKeysetrs.LockType = adLockOptimisticrs.CursorLocation = adUseServerrs.Open TableNameCase RSMethod.EDIT_RECORDrs.ActiveConnection = dbConnrs.Source = strSQLrs.CursorType = adOpenKeysetrs.LockType = adLockOptimisticrs.CursorLocation = adUseClientrs.Open' Debug.Print "SQL Statement in EDIT Mod' e (Createrecordset) : " & strSQL' Debug.Print "Found "& rs.RecordCount' & " records "Case RSMethod.VIEW_RECORDrs.ActiveConnection = dbConn 'dbConnection 'dbConnrs.Source = strSQLrs.CursorType = adOpenForwardOnlyrs.CursorLocation = adUseClientrs.Open' Debug.Print "Found "& rs.RecordCount' & " records "rs.ActiveConnection = NothingCase RSMethod.EXEC_SQLSet rs = dbConn.Execute(strSQL)End SelectSet CreateRecordSet = rsEnd Function'======================================'模块结束'======================================有用[0]板砖[0]#2楼级:ConnStr = "Provider=MSDAORA.1;User ID=用户名;password=密码;Data Source=数据库名(或你配置的数据库实例名);Persist Security Info=False "。
SQL ORACLE查询语句大全集锦
SQL查询语句大全集锦一、简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三'(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列例如,下面语句显示testtable表中所有列的数据:代码:SELECT * FROM testtable2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:代码:SELECT nickname,email FROM testtable3、更改列标题在选择列表中,可重新指定列标题。
定义格式为:列标题=列名列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:代码:SELECT 昵称=nickname,电子邮件=email FROM testtable4、删除重复行SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT 时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:代码:SELECT TOP 2 * FROM `testtable`代码:SELECT TOP 20 PERCENT * FROM `testtable`(二) FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。
Oracle查询语句
--如果值不为空 返回第二个表达式 如果值为空 返回第一个表达式
select ename,sal,comm,nvl2(comm,'sal+comm','sal')"佣金" from emp
rename employeee to emp
--表级
create table emp_01
( col number,
col1 varchar(20),
col2 varchar(20),
constraint PK_COL primary key(col)
--表级添加外键
select sysdate from dual
--返回工作的周数
select ename,hiredate,(sysdate-hiredate)/7 as "Weeks" from emp
--返回日期相差的月数
select ename,months_between(sysdate,hiredate)"months_between"from emp
WHEN 'CLERK' THEN 1.10*sal
WHEN 'MANAGER' THEN 1.15*sal
WHEN 'SQLESMAN' THEN 1.20*sal
ELSE sal END "工资"
from emp;
--组函数
oracle常用查询语句
oracle常⽤查询语句⼀、⼀般⽇常⽤的脚本1、检查源库每个节点⾄少3组redoselect group#,thread#,bytes/1024/1024,members,status from v$log;select group#,thread#,sequence#,BYTES/1024/1024,archived,used,status from v$standby_log;--查看回收站SELECT * FROM DBA_RECYCLEBIN;--停⽌系统调度的语句select * from dba_scheduler_running_jobs a ;BEGINDBMS_SCHEDULER.STOP_JOB(job_name => 'P_USR_BET_STAT_AG_REBA__DD',force => TRUE);END;/--查看表的信息select table_name,num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len,last_analyzed from user_tables; --普通表select * from user_tab_partitions;--分区表select table_name,partition_name,subpartition_name,num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len,last_analyzed from user_tab_subpartitions; --⼦分区select table_name,partitioning_type,subpartitioning_type,partition_countfrom user_part_tableswhere subpartitioning_type <> 'NONE'; --查看分区表中带⼦分区的个数--当前⽤户下,某个分区的记录数是平均记录数的2倍以上set linesize 266col table_name format a20select table_name,max(num_rows),trunc(avg(num_rows),0),sum(num_rows),trunc(max(num_rows) / sum(num_rows),2),count(*)from user_tab_partitionsgroup by table_namehaving max(num_rows) / sum(num_rows) > 2 / count(*);--查看有⼦分区的数据情况:select table_name,partition_name,subpartition_name,num_rows--索引列的统计信息BLEVEL, --索引的层数LEAF_BLOCKS, --叶⼦结点的个数DISTINCT_KEYS, --唯⼀值的个数AVG_LEAF_BLOCKS_PER_KEY, --每个KEY的平均叶块个数AVG_DATA_BLOCKS_PER_KEY, --每个KEY的平均数据块个数CLUSTERING_FACTOR --群集因⼦select index_name,table_name,blevel, leaf_blocks, distinct_keys, avg_leaf_blocks_per_key,avg_data_blocks_per_key, clustering_factor from user_indexes; --普通表select index_name,"COMPOSITE",SUBPARTITION_COUNT,PARTITION_NAME,blevel, leaf_blocks, distinct_keys,avg_leaf_blocks_per_key,avg_data_blocks_per_key, clustering_factor from user_ind_partitions --分区表--查看普通索引失效:select t.index_name,t.table_name,blevel,t.num_rows,t.leaf_blocks,t.distinct_keysfrom user_indexes twhere status = 'INVALID';--查看分区索引失效:select t.index_name,t.table_name,blevel,t.num_rows,t.leaf_blocks,t.distinct_keysfrom user_ind_subpartitions twhere index_name in (select index_name from user_indexes)and status = 'INVALID'--查看⼦分区索引select t.index_name,t.partition_name,blevel,t.num_rows,t.leaf_blocks,t.distinct_keysfrom user_ind_subpartitions twhere index_name in (select index_name from user_indexes)and status = 'INVALID'分区表和⼦分区表select index_name,PARTITION_NAME,SUBPARTITION_NAME,blevel,leaf_blocks,distinct_keys,avg_leaf_blocks_per_key,avg_data_blocks_per_key, clustering_factor from user_ind_subpartitions; --⼦分区表查看直⽅图:SELECT table_name,column_name, num_distinct,low_value, high_value, density, num_nulls, num_buckets, histogram fromuser_tab_columns;select * from user_tab_histograms;select * from user_part_histograms;select * from user_subpart_histograms;查看列的信息:NUM_DISTINCT, --唯⼀值的个数LOW_VALUE, --列上的最⼩值HIGH_VALUE, --列上的最⼤值DENSITY, --选择率因⼦(密度)NUM_NULLS, --空值的个数NUM_BUCKETS, --直⽅图的BUCKET个数HISTOGRAM --直⽅图的类型直⽅图是⼀种列的特殊的统计信息,主要⽤来描述列上的数据分布情况,SELECT table_name,column_name, num_distinct,low_value, high_value, density, num_nulls, num_buckets, histogram fromuser_tab_columns ;直⽅图:直⽅图意义:在oracle数据库中,CBO会默认认为⽬标列的数据量在其最⼩值和最⼤值之间是均匀分布的(最⼩值最⼤值不准确会导致谓词越界),并且会按照这个均匀分布原则来计算对⽬标列事假的where查询条件后的可选这率及结果集的cardinality,进⽽据此来计算成本值并选择执⾏计划。
oracle 查询语法
oracle 查询语法Oracle数据库是一个广泛使用的关系数据库管理系统。
为了在Oracle数据库中执行查询,您通常会使用SQL(结构化查询语言)。
以下是一些常见的Oracle SQL查询语法:1. 基本查询:```sqlSELECT column1, column2, ...FROM table_name;```2. 带条件的查询:使用`WHERE`子句来添加条件。
```sqlSELECT column1, column2, ...FROM table_nameWHERE condition;```3. 排序结果:使用`ORDER BY`子句来排序结果。
```sqlSELECT column1, column2, ...FROM table_nameORDER BY column1 [ASCDESC], column2 [ASCDESC], ...;```4. 分组和聚合函数:使用`GROUP BY`子句来对结果进行分组,并使用聚合函数如`COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()`等。
```sqlSELECT column1, COUNT(column2) as count_column2FROM table_nameGROUP BY column1;```5. 连接表:使用`JOIN`来连接两个或多个表。
常见的连接类型有`INNER JOIN`, `LEFT JOIN`, `RIGHT JOIN`, 和 `FULL JOIN`。
```sqlSELECT columnsFROM table1INNER JOIN table2 ON = ;```6. 插入数据:使用`INSERT INTO`语句。
```sqlINSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);```7. 更新数据:使用`UPDATE`语句。
oracle数据库查询语句 示例
oracle数据库查询语句示例当您提到“Oracle数据库查询语句示例”,您可能是指使用SQL语言查询Oracle数据库中的数据。
以下是一些常见的Oracle查询示例:1. 查询所有表名:```sqlSELECT table_name FROM user_tables;```2. 查询特定表中的所有数据:```sqlSELECT FROM table_name;```3. 查询满足特定条件的记录:```sqlSELECT FROM table_name WHERE condition;```4. 排序查询结果:```sqlSELECT FROM table_name ORDER BY column_name ASC/DESC; ```5. 分组查询结果:```sqlSELECT column1, COUNT() FROM table_name GROUP BY column1; ```6. 使用聚合函数计算总和、平均值等:```sqlSELECT SUM(column_name) FROM table_name WHERE condition; SELECT AVG(column_name) FROM table_name WHERE condition; ```7. 连接多个表:```sqlSELECT FROM table1 JOIN table2 ON _name = _name;```8. 使用子查询:```sqlSELECT column_name FROM table_name WHERE column_name IN (SELECT column_name FROM another_table);```这些示例只是Oracle查询语言SQL的一些基本用法。
根据您的具体需求,查询语句可以更复杂和具体。
请注意,上述示例中的"table_name"和"column_name"应替换为您实际的表名和列名。
oracle经典SQL查询语句
Oracle查询语句select*from scott.emp ;1.--dense_rank()分析函数(查找每个部门工资最高前三名员工信息)select*from(select deptno,ename,sal,dense_rank()over(partition by deptno order by sal desc)a from scott.emp) where a<=3order by deptno asc,sal desc;结果:--rank()分析函数(运行结果与上语句相同)select*from(select deptno,ename,sal,rank()over(partition by deptno order by sal desc) a from scott.emp )where a<=3order by deptno asc,sal desc;结果:--row_number()分析函数(运行结果与上相同)select*from(select deptno,ename,sal,row_number()over(partition by deptno order by sal desc)a from scott.emp) where a<=3order by deptno asc,sal desc;--rows unbounded preceding 分析函数(显示各部门的积累工资总和)select deptno,sal,sum(sal)over(order by deptno asc rows unbounded preceding)积累工资总和from scott.emp ;结果:--rows 整数值 preceding(显示每最后4条记录的汇总值)select deptno,sal,sum(sal)over(order by deptno rows3 preceding)每4汇总值from scott.emp ;结果:--rows between 1 preceding and 1 following(统计3条记录的汇总值【当前记录居中】)select deptno,ename,sal,sum(sal)over(order by deptno rows between1preceding and1following)汇总值from scott.emp ; 结果:--ratio_to_report(显示员工工资及占该部门总工资的比例) select deptno,sal,ratio_to_report(sal)over(partition by deptno)比例from scott.emp ;结果:--查看所有用户select*from dba_users ;select count(*)from dba_users ;select*from all_users ;select*from user_users ;select*from dba_roles ;--查看用户系统权限select*from dba_sys_privs ;select*from user_users ;--查看用户对象或角色权限select*from dba_tab_privs ;select*from all_tab_privs ;select*from user_tab_privs ;--查看用户或角色所拥有的角色select*from dba_role_privs ;select*from user_role_privs ;-- rownum:查询10至12信息select*from scott.emp a where rownum<=3and a.empno not in(select b.empno from scott.emp b where rownum<=9);结果:--not exists;查询emp表在dept表中没有的数据select*from scott.emp a where not exists(select*from scott.dept b where a.empno=b.deptno);结果:--rowid;查询重复数据信息select*from scott.emp a where a.rowid>(select min(x.rowid) from scott.emp x where x.empno=a.empno);--根据rowid来分页(一万条数据,查询10000至9980时间大概在0.03秒左右)select*from scott.emp where rowid in(select rid from(select rownum rn,rid from(select rowid rid,empno from scott.emp order by empno desc)where rownum<10)where rn>=1)order by empno desc;结果:--根据分析函数分页(一万条数据,查询10000至9980时间大概在1.01秒左右)select*from(select a.*,row_number()over(order by empno desc) rk from scott.emp a )where rk<10and rk>=1;结果:--rownum分页(一万条数据,查询10000至9980时间大概在0.01秒左右)select*from(select t.*,rownum rn from(select*from scott.emp order by empno desc)t where rownum<10)where rn>=1;select*from(select a.*,rownum rn from(select*from scott.emp) a where rownum<=10)where rn>=5;--left outer join:左连接select a.*,b.*from scott.emp a left outer join scott.dept b on a.deptno=b.deptno ;--right outer join:右连接select a.*,b.*from scott.emp a right outer join scott.dept b on a.deptno=b.deptno ;--inner joinselect a.*,b.*from scott.emp a inner join scott.dept b on a.deptno=b.deptno ;--full joinselect a.*,b.*from scott.emp a full join scott.dept b on a.deptno=b.deptno ;select a.*,b.*from scott.emp a,scott.dept b wherea.deptno(+)=b.deptno ;select distinct ename,sal from scott.emp a group by sal having;select*from scott.dept ;select*from scott.emp ;--case when then end (交叉报表)select ename,sal,case deptno when10then'会计部'when20 then'研究部'when30then'销售部'else'其他部门'end部门from scott.emp ;结果:select ename,sal,case when sal>0and sal<1500then'一级工资'when sal>=1500and sal<3000then'二级工资'whensal>=3000and sal<4500then'三级工资'else'四级工资'end 工资等级from scott.emp order by sal desc;结果:--交叉报表是使用分组函数与case结构一起实现select姓名,sum(case课程when'数学'then分数end)数学,sum(case课程when'历史'then分数end)历史from学生group by姓名;--decode 函数select姓名,sum(decode(课程,'数学',分数,null))数学,sum(decode(课程,'语文',分数,null))语文,sum(decode(课程,'历史','分数',null))历史from学生group by姓名;--level。
【最新资料】oracle数据库查询语句大全
oracle数据库查询语句大全1. select * from table_name where rownum>begin and rownum< end2.sql = "select * from table"con.prepareCall("SELECT * FROM(SELECT A.*, rownum r FROM("+sql+") A WHERE rownum <="+intPage*intPageSize+") B WHERE r > "+(intPage-1)*intPageSize);今天想查询一下Oracle数据库下所有的表名或某个用户下的所有表,半天没想起来.还是在网上找到了答案.select table_name from all_tables;//所有的表明select table_name from user_all_tables;//用户的所有的表一下是转贴的sql语句的帖子.select * from user_objects; //查询所有的表select * from dba_tables; //查询所有的表select * from all_tables; //查询所有的表select * from user_users //查出一个用户select * from all_users //查询所有用户select * from dba_users //查询所有用户select name,dbid from v$database; //查询数据库名和它的IDselect * from er_tab_columns; //查询表名,并显示列名describe 表名//查询表结构select * from er_tab_columns where table_name=表名 //查询指定表名的字段2: 查询数据库参数show parameter db;3:查询数据库的实例名select instance_name from v$instance;4: 数据库域名数据库安装结束后,如果要知道正在运行额数据库是否有域名以及数据库域名名称可以用select value from v$parameter where name='db_domain'show parameter domain5:数据库服务名如果数据库有域名,则数据库服务名就是全局数据库名,如果该数据库没有定义域名,则数据库服务名与数据库名相同show parameter service_name6:显示当前用户show user7:直接登陆sqlplus "/as sysdba"8:当前ORACLE系统时间select sysdate from dual;9:查询数据库字典v$nls_parameter产看字符集相关参数select * from v$nls_parameters;//*************oracle基本操作语句(适合初学者)oracle操作语句:1.创建表create table 表名(列名1 类型,列名2 类型);2.修改类属性alter table 表名 modify(列名类型);3.添加列alter table 表名 add(列名类型);4.添加主键约束和非空约束alter table 表名 add constraint pk_表名 primary key(列名); alter table 表名 modify(列名 not null);5.删除主键约束alter table 表名 drop primary key;alter table 表名 drop constraint pk_表名;6.失效约束alter table 表名 disable primary key;alter table 表名 disable constraint pk_表名;7.有效约束alter table 表名 enable primary key;alter table 表名 enable constraint pk_表名;8.删除列alter table 表名 drop column 列名;9.设置某列不可用,然后删除alter table 表名 set unused(列名);alter table 表名 drop unused columns;10.修改表名rename 表名1 to 表名2alter 表名1 rename to 表名2;11.截断表truncate table 表名;12.截断表保留行空间truncate table 表名 resue storage;13.查看表结构desc table 表名;14.删除表drop table 表名;15.插入记录例:insert into 表名 values(内容1,内容2,内容3,内容4);16.带参数对话方式插入行例:insert into 表名 values(&列名1,&列名2);insert into 表名 values(内容1,内容2);17.插入某几列记录insert into 表名(列名1,列名2) values(内容1,内容2);18.为列插入空值(其列不能为not null)insert into 表名 values(内容1,null,null);19.创建表(包括主键及外键设置)方法一create table 表名(列名1 类型constraint pk_表名 primary key,列名2 类型 not null,列名3 类型constraint fk_表名 reference 表名(列名),列名3 类型constraint ck_表名 check(列名3 in(''内容1'',''内容2'',''内容3'')));20.查询所有行select * from 表名;21.查询某几列select 列名1,列名2 from 表名;22.重复行消除select distict 列名 from 表名;23.where语句查询select * from 表名 where 条件 order by 列名;(注:如number类型查出自动按升序排列,如要按降序排列,则select * from 表名where 条件 order by 列名 desc;)24.创建表,方法二create table 表名(列名1 类型 primary key,列名2 类型 not null,列名3 类型 check(列名3 in('''','''','''')), 列名4 类型 refernce 表名(列名));25.修改列=‘?’的数据update 表名 set (列=?) where 列=‘?’; 26.删除行delete from 表名 where 条件;27.事务处理--事务处理update 表名set 列名(日期) = ''30-5月-98''where 条件;savepoint mark1;delete from 表名 where 条件;savepoint mark2;rollback to savepoint mark1;rollback;28.建立用户user1,密码为password授予用户connect,resource的权限connect角色用于登录resource角色用于建表等.connect system/managercreate user user1 identified by password;grant connect,resource to password;29.数据控制语言connect scott/tiger30.把对表1查询和修改的权限授予user1grant select,update on 表1 to user1;31.把对表表1中列1和列2修改的权限授予user1grant update(列1,列2) on 表1 to user1;32.把对表表1查询的权限授予用户user1并且user1用户还可以把这个权限授予别的用户(with grant option) grant select on 表1 to user1 with grant option;33.从用户user1撤销对表1查询和修改的权限revoke select,update on 表1 from user1;以下是附加文档,不需要的朋友下载后删除,谢谢班主任工作总结专题8篇第一篇:班主任工作总结小学班主任特别是一年级的班主任,是一个复合性角色。
oracle 查询语句总结
1、set timing on ;打开计时时间。
2、select count(*) from users;3、distinct 去重4、oracle 查询时‘’里面的值区分大小写。
5、select sal *13 as ‘工资’, ename from emp;6、使用nvl 来处理null值Select sal * 13+nvl(comm,0),as ‘年工资’,ename,comm. From empt;(如果不为空就是null,奖金为空就是0)7、select ename,hiredate from emp where hiredate>’1-1月-1982’查询1982年后的。
9 、like 操作符:%代表0到多个字符,_代表任意单个字符。
10、select * from emp where empno in(123、234、456);1、order by :select * from emp order by sal; 从低到高;(asc 默认)2、desc:select * from emp order by sal desc; 从高到低3、部门升序,工资降序:select * from emp order by deptno,sal desc;4、数据分组:max 、min、avg、sum、count5、最高、最低工资:select max(sal),min(sal)from emp;6、查询最高工资的员工:select ename,sal from emp where sal=(select max(sal) from emp);Select ename,max(sal) from emp 是错误的。
7、工资高于平均工资的员工的信息:Select * from emp where sal>(select avg(sal) from emp);8、如何显示部门的平均工资和最高工资:Select avg(sal),max(sal),depno from emp group by depno;9、显示每个部门的每种岗位的平均工资和最高工资:Select avg(sal),max(sal),depno,job from emp group by depno,job;10、显示平均工资低于2000的部门号和他的平均工资Select avg(sal),max(sal),depno from emp group by depno having avg(sal)<2000分组函数总结:分组函数只能出现在,选择列表、having、order by 子句中顺序是:group by 、having 、order by;Select avg(sal),max(sal),depno from emp group by depno having avg(sal)<2000 Order by avg(sal)在选择列、表达式、和分组函数,那么这些列和表达式必须有一个出现在group by 子句中,否则就会出错。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
日期/时间 相关查询1、获取当前月份的第一天运行这个命令能快速返回当前月份的第一天。
你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。
1 SELECT TRUNC (SYSDATE, 'MONTH') "First day of current month "2 FROM DUAL;2、获取当前月份的最后一天 这个查询语句类似于上面那个语句,而且充分照顾到了闰年,所以当二月份有 29 号,那么就会返回 29/2 。
你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。
view sourceprint?1 SELECT TRUNC (LAST_DAY (SYSDATE)) "Last day of current mont h"2 FROM DUAL;3、获取当前年份的第一天每年的第一天都是1 月1日,这个查询语句可以使用在存储过程中,需要对当前年份第一天做一些计算的时候。
你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。
1 SELECT TRUNC (SYSDATE, 'YEAR') "Year First Day" FROM DUAL;4、获取当前年份的最后一天类似于上面的查询语句。
你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。
view sourceprint?1 SELECT ADD_MONTHS (TRUNC (SYSDATE, 'YEAR'), 12) - 1 "Year Last Day" FROM DUAL5、 获取当前月份的天数这个语句非常有用,可以计算出当前月份的天数。
你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。
view sourceprint?1 SELECT CAST (TO_CHAR (LAST_DAY (SYSDATE), 'dd') AS INT) num ber_of_days2 FROM DUAL;6、获取当前月份剩下的天数下面的语句用来计算当前月份剩下的天数。
你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。
1 SELECT SYSDATE,2 LAST_DAY (SYSDATE) "Last",3 LAST_DAY (SYSDATE) - SYSDATE "Days left"4 FROM DUAL; 7、获取两个日期之间的天数使用这个语句来获取两个不同日期自检的天数。
view sourceprint?1 SELECT ROUND ( (MONTHS_BETWEEN ('01-Feb-2014', '01-Mar-2012') * 30), 0)2 num_of_days3 FROM DUAL;45 OR67 SELECT TRUNC(sysdate) - TRUNC(e.hire_date) FROM employees;如果你需要查询一些特定日期的天数,可以使用第二个查询语句。
这个例子是计算员工入职的天数。
8、显示当前年份截止到上个月每个月份开始和结束的日期这个是个很聪明的查询语句,用来显示当前年份每个月的开始和结束的日期,你可以使用这个进行一些类型的计算。
你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。
view sourceprint?01SELECT ADD_MONTHS (TRUNC (SYSDATE, 'MONTH'), i) start_date, 02 TRUNC (LAST_DAY (ADD_MONTHS (SYSDATE, i))) end_date03 FROM XMLTABLE (04 'for $i in 0 to xs:int(D) return $i' 05 PASSING XMLELEMENT (06 d ,07 FLOOR (08 MONTHS_BETWEEN ( 09 ADD_MONTHS (TRUNC (SYSDATE, 'YEAR') - 1, 12),10SYSDATE))) 11 COLUMNS i INTEGER PATH '.');9、获取直到目前为止今天过去的秒数(从 00:00 开始算)1 SELECT (SYSDATE - TRUNC (SYSDATE)) * 24 * 60 * 60 num_of _sec_since_morning2 FROM DUAL;10、获取今天剩下的秒数(直到 23:59:59 结束) view source print?1 SELECT (TRUNC (SYSDATE+1) - SYSDATE) * 24 * 60 * 60 num_of_sec_left2 FROM DUAL;数据字典查询 11、 检查在当前数据库模式下是否存在指定的表这是一个简单的查询语句,用来检查当前数据库是否有你想要创建的表,允许你重新运行创建表脚本,这个也可以检查当前用户是否已经创建了指定的表(根据这个查询语句在什么环境下运行来查询)。
12、 检查在当前表中是否存在指定的列这是个简单的查询语句来检查表里是否有指定的列,在你尝试使用 ALTER TABLE 来添加新的列新到表中的时候非常有用,它会提示你是否已经存在这个列。
13、 显示表结构这 个查询语句会显示任何表的 DDL 状态信息。
请注意我们已经将…TABLE‟作为第一个信息提交了。
这个查询语句也可以用来获取任何数据库对象的 DDL 状态信息。
举例说明,只需要把第一个参数替换成…VIEW‟,第二个修改成视图的名字,就可以查询视图的DDL 信息了。
14、获取当前模式这是另一个可以获得当前模式的名字的查询语句。
15、修改当前模式这是另一个可以修改当前模式的查询语句,当你希望你的脚本可以在指定的用户下运行的时候非常有用,而且这是非常安全的一个方式。
数据库管理查询16、数据库版本信息返回Oracle 数据库版本17、数据库默认信息返回一些系统默认的信息18、数据库字符设置信息显示数据库的字符设置信息19、获取Oracle 版本21、存储区分大小写的数据,但是索引不区分大小写某些时候你可能想在数据库中查询一些独立的数据,可能会用UPPER(..) = UPPER(..) 来进行不区分大小写的查询,所以就想让索引不区分大小写,不占用那么多的空间,这个语句恰好能解决你的需求。
22、调整没有添加数据文件的表空间另一个DDL 查询来调整表空间大小23、检查表空间的自动扩展开关在给定的表空间中查询是否打开了自动扩展开关24、在表空间添加数据文件在表空间中添加数据文件25、增加数据文件的大小给指定的表空间增加大小26、查询数据库的实际大小给出以GB 为单位的数据库的实际大小27、查询数据库中数据占用的大小或者是数据库使用细节给出在数据库中数据占据的空间大小28、查询模式或者用户的大小以MB 为单位给出用户的空间大小29、查询数据库中每个用户最后使用的SQL 查询此查询语句会显示当前数据库中每个用户最后使用的SQL 语句。
性能相关查询30、查询用户CPU 的使用率这个语句是用来显示每个用户的CPU 使用率,有助于用户理解数据库负载情况31、 查询数据库长查询进展情况显示运行中的长查询的进展情况32、获取当前会话ID,进程ID,客户端ID 等这个专门提供给想使用进程ID 和会话ID 做些voodoo magic 的用户。
a)V$SESSION.SID AND V$SESSION.SERIAL# 是数据库进程IDb)V$PROCESS.SPID 是数据库服务器后台进程IDc)V$SESSION.PROCESS 是客户端PROCESS ID, ON windows it IS :separated THE FIRST # IS THE PROCESS ID ON THE client AND 2nd one ISTHE THREAD id.33、查询特定的模式或者表中执行的最后一个SQL 语句36、查询每个执行读取的前十个SQL43、在视图中查询并显示实际的Oracle 连接46、查询并显示通过打开连接程序打开连接的组48、查询并显示连接Oracle 的用户和用户的会话数量50、获取拥有者的对象数量52、实用/数学相关的查询53、把数值转换成文字更多信息可以查看:Converting number into words in Oracle输出:54、在包的源代码中查询字符串这个查询语句会在所有包的源代码上搜索…FOO_SOMETHING‟ ,可以帮助用户在源代码中查找特定的存储过程或者是函数调用。
55、把用逗号分隔的数据插入的表中当你想把用逗号分隔开的字符串插入表中的时候,你可以使用其他的查询语句,比如IN 或者是NOT IN 。
这里我们把…AA,BB,CC,DD,EE,FF‟转换成包含AA,BB,CC 等作为一行的表,这样你就很容易把这些字符串插入到其他表中,并快速的做一些相关的操作。
56、查询表中的最后一个记录这个查询语句很直接,表中没有主键,或者是用户不确定记录最大主键是否是最新的那个记录时,就可以使用这个语句来查询表中最后一个记录。
58、在Oracle 生成随机数据每个开发者都想能轻松生成一堆随机数据来测试数据库多好,下面这条查询语句就可以满足你,它可以在Oracle 中生成随机的数据插入到表中。
详细信息可以查看RandomData in Oracle59、在Oracle 中生成随机数值这是Oracle 普通的旧的随机数值生成器。
这个可以生成0-100 之间的随机数值,如果你想自己设置数值范围,那么改变乘数就可以了。
60、检查表中是否含有任何的数据这个可以有很多中写法,你可以使用count(*) 来查看表里的行的数量,但是这个查询语句比较高效和快速,而且我们只是想知道表里是否有任何的数据。