设为首页 收藏本站
查看: 735|回复: 0

[经验分享] oracle实用的查询语句

[复制链接]

尚未签到

发表于 2018-9-14 09:24:50 | 显示全部楼层 |阅读模式
1.在数据字典查询约束的相关信息:  
SELECT constraint_name, constraint_type,search_condition
  
FROM        user_constraints WHERE        table_name = 'EMPLOYEES';
  
//这里的表名都是大写!
  
2对表结构进行说明:
  
desc Tablename
  
3查看用户下面有哪些表
  
select table_name from user_tables;
  
4查看约束在那个列上建立:
  
SELECT constraint_name, column_name
  
FROM        user_cons_columns
  
WHERE          table_name = 'EMPLOYEES';
  
10结合变量查找相关某个表中约束的相关列名:
  
select constraint_name,column_name from user_cons_columns where table_name = '&tablename'
  
12查询数据字典看中间的元素:
  
SELECT   object_name, object_type
  
FROM     user_objects
  
WHERE    object_name LIKE 'EMP%'
  
OR       object_name LIKE 'DEPT%'
  
14查询对象类型:
  
SELECT DISTINCT object_type FROM           user_objects ;
  
17改变对象名:(表名,视图,序列)
  
rename  emp to emp_newTable
  
18添加表的注释:
  
COMMENT ON TABLE employees IS 'Employee Information';
  
20查看视图结构:
  
describe view_name
  
23在数据字典中查看视图信息:
  
select viewe_name,text from user_views
  
25查看数据字典中的序列:
  
select * from user_sequences
  
33得到所有的时区名字信息:
  
select  * from v$timezone_names
  
34显示对时区‘US/Eastern’的时区偏移量
  
select TZ_OFFSET('US/Eastern') from DUAL--dual英文意思是‘双重的’
  
显示当前会话时区中的当前日期和时间:
  
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';--修改显示时间的方式的设置
  
ALTER SESSION SET TIME_ZONE = '-5:0';--修改时区
  
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;--真正有用的语句!
  
SELECT CURRENT_TIMESTAMP FROM DUAL;--返回的时间是当前日期和时间,含有时区
  
SELECT CURRENT_TIMESTAMP FROM DUAL;--返回的时间是当前日期和时间,不含有时区!!!
  
35显示数据库时区和会话时区的值:
  
select datimezone,sessiontimezone from dual;
  

  
13普通的建表语句:
  
CREATE TABLE dept
  
(deptno         NUMBER(2),
  
dname         VARCHAR2(14),
  
loc         VARCHAR2(13));
  
15使用子查询建立表:
  
CREATE TABLE         dept80
  
AS  SELECT  employee_id, last_name,
  
salary*12 ANNSAL,
  
hire_date   FROM    employees   WHERE   department_id = 80;

  
6添加列://>  
alter table EMP add (dept_id number(7));
  
7删除一列:
  
alter table emp drop column dept_id;
  
8添加列名同时和约束:
  
alter table EMP add (dept_id number(7)
  
constraint my_emp_dept_id_fk  references dept(ID));
  
9改变列://注意约束不能够修改 的!!
  
alter table dept80 modify(last_name varchar2(30));//这里使用的是modify而不是alter!
  
24增加一行:
  
insert into table_name values();
  

  
5添加主键:
  
alter Table EMP  add constraint my_emp_id_pk primary key (ID);
  
11添加一个有check约束的新列:
  
alter table EMP
  
add (COMMISSION number(2) constraint emp_commission_ck check(commission>0))
  
16删除表:
  
drop table emp;
  
19创建视图:
  
CREATE VIEW         empvu80
  
AS SELECT  employee_id, last_name, salary
  
FROM    employees     WHERE   department_id = 80;
  
21删除视图:
  
drop view view_name
  
22找到工资最高的5个人。(top-n分析)(行内视图)
  
select rownum,employee_id from (select employee_id,salary from
  
employees order by salary desc)
  
where rownum b.salavg;
  
41exists语句的使用:
  
SELECT employee_id, last_name, job_id, department_id
  
FROM   employees outer--下面的 exists里面的select选择出来的是随便的一个字符或者数字都可以
  
WHERE  EXISTS ( SELECT 'X'   FROM   employees WHERE  manager_id =  outer.employee_id);
  
42厉害的with语句:
  
WITH
  
dept_costs  AS (--定义了一个临时的表
  
SELECT  d.department_name, SUM(e.salary) AS dept_total--其间定义了一个临时的列dept_total
  
FROM    employees e, departments d
  
WHERE   e.department_id = d.department_id
  
GROUP BY d.department_name),/*注意这里有逗号*/
  
avg_cost    AS (
  
SELECT SUM(dept_total)/COUNT(*) AS dept_avg
  
FROM   dept_costs)--这里的第二张临时表里面就引用了前面定义的临时表和之间的列!
  
SELECT *  FROM   dept_costs  WHERE  dept_total >  (SELECT dept_avg   FROM avg_cost) ORDER BY department_name;---最后的查询语句中使用了前面的临时表
  
43遍历树:
  
SELECT employee_id, last_name, job_id, manager_id
  
FROM   employees
  
START  WITH  employee_id = 101
  
CONNECT BY PRIOR manager_id = employee_id ;--自底向上的遍历树。
  

  
44.更新语句
  
UPDATE employees SET
  
job_id = 'SA_MAN', salary = salary + 1000, department_id = 120
  
WHERE first_name||' '||last_name = 'Douglas Grant';
  

  
UPDATE TABLE (SELECT projs
  
FROM dept d WHERE d.dno = 123)  p
  
SET p.budgets = p.budgets + 1
  
WHERE p.pno IN (123, 456);



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-581944-1-1.html 上篇帖子: oracle 基本数据类型 下篇帖子: oracle错误代码及解决办法整合
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表