- 浏览: 1505196 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
- 27建立序列:(注意,这里并没有出现说是哪个表里面的序列!!)
- CREATE SEQUENCE dept_deptid_seq
- INCREMENT BY 10
- START WITH 120
- MAXVALUE 9999
- NOCACHE
- NOCYCLE
- 28使用序列:
- insert into dept(ID,NAME) values(DEPT_ID_SEQ.nextval,'Administration');
- 29建立索引://默认就是nonunique索引,除非使用了关键字:unique
- CREATE INDEX emp_last_name_idx ON employees(last_name);
- 30建立用户:(可能有错,详细查看帮助)
- create user username(用户名)
- identified by oracle(密码)
- default tablespace data01(表空间名//默认存在system表空间里面)
- quota 10M(设置大小,最大为unlimited) on 表空间名//必须分配配额!
- 31创建角色:create ROLE manager
- 赋予角色权限:grant create table,create view to manage
- 赋予用户角色:grant manager to DENHAAN,KOCHHAR( 两个用户)
- 32分配权限:
- GRANT update (department_name, location_id)
- ON departments
- TO scott, manager;
- 回收权限
- REVOKE select, insert
- ON departments
- 36从时间中提取年,月,日:使用函数extract
- select extract(year from sysdate) year,extract(month from sysdate),
- extract(day from sysdate) from dual;
- 37使用函数得到数月之后的日期:to_yminterval(‘01-02’)表示加上1年2月,不能够到天!!
- select hire_date,hire_date +to_yminterval('01-02') as hire_date_new from employees where department_id=20
- 得到多少天之后的日期:直接日期加数字!
- select hire_date +3 from employees where department_id=20
- 38一般的时间函数:
- MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')--两个日期之间的月数,返回一个浮点数
- ADD_MONTHS ('11-JAN-94',6)--添加月数
- NEXT_DAY ('01-SEP-95','FRIDAY') --下一个星期五的日期
- LAST_DAY('01-FEB-95')--当月的最后一天!
- ROUND(SYSDATE,'MONTH') --四舍五入月
- ROUND(SYSDATE ,'YEAR') --四舍五入年
- TRUNC(SYSDATE ,'MONTH') --阶段月
- TRUNC(SYSDATE ,'YEAR') --截断年
- 39 group语句:和高级的应用语句:
- SELECT department_id, job_id, SUM(salary), COUNT(employee_id) FROM employees
- GROUP BY department_id, job_id ;
- 使用having进行约束:
- 1.group by rollup:对n列组合得到n+1种情况
- SELECT department_id, job_id, SUM(salary) FROM employees WHERE department_id < 60 GROUP BY ROLLUP(department_id, job_id);
- 2.group by cube:得到2的n次方种情况
- SELECT department_id, job_id, SUM(salary) FROM employees WHERE department_id < 60 GROUP BY CUBE (department_id, job_id) ;
- 3.使用grouping得到一行中构成列的情况,只是返回1和0:是空的话就返回1,否则返回0(注意不要弄反了!)
- SELECT department_id DEPTID, job_id JOB, SUM(salary), GROUPING(department_id) GRP_DEPT, GROUPING(job_id) GRP_JOB
- FROM employees WHERE department_id < 50 GROUP BY ROLLUP(department_id, job_id);
- 4.grouping sets:根据需要得到制定的组合情况
- SELECT department_id, job_id, manager_id,avg(salary) FROM employees GROUP BY GROUPING SETS ((department_id,job_id), (job_id,manager_id));
- 40from中使用子查询:返回每个部门中大于改部门平均工资的与员工信息
- SELECT a.last_name, a.salary, a.department_id, b.salavg FROM employees a,--下面的地方就是子查询了,主要返回的是一组数据!
- (SELECT department_id, AVG(salary) salavg FROM employees GROUP BY department_id) b
- WHERE a.department_id = b.department_id
- AND a.salary > 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); FROM scott;
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 column (dept_id number(7));错误!! 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<5; 26建立同义词: create synonym 同义词名 for 原来的名字 或者 create public synonym 同义词名 for 原来的名字 27建立序列:(注意,这里并没有出现说是哪个表里面的序列!!) CREATE SEQUENCE dept_deptid_seq INCREMENT BY 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE 28使用序列: insert into dept(ID,NAME) values(DEPT_ID_SEQ.nextval,'Administration'); 29建立索引://默认就是nonunique索引,除非使用了关键字:unique CREATE INDEX emp_last_name_idx ON employees(last_name); 30建立用户:(可能有错,详细查看帮助) create user username(用户名) identified by oracle(密码) default tablespace data01(表空间名//默认存在system表空间里面) quota 10M(设置大小,最大为unlimited) on 表空间名//必须分配配额! 31创建角色:create ROLE manager 赋予角色权限:grant create table,create view to manage 赋予用户角色:grant manager to DENHAAN,KOCHHAR( 两个用户) 32分配权限: GRANT update (department_name, location_id) ON departments TO scott, manager; 回收权限 REVOKE select, insert ON departments FROM scott; 36从时间中提取年,月,日:使用函数extract select extract(year from sysdate) year,extract(month from sysdate), extract(day from sysdate) from dual; 37使用函数得到数月之后的日期:to_yminterval(‘01-02’)表示加上1年2月,不能够到天!! select hire_date,hire_date +to_yminterval('01-02') as hire_date_new from employees where department_id=20 得到多少天之后的日期:直接日期加数字! select hire_date +3 from employees where department_id=20 38一般的时间函数: MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')--两个日期之间的月数,返回一个浮点数 ADD_MONTHS ('11-JAN-94',6)--添加月数 NEXT_DAY ('01-SEP-95','FRIDAY') --下一个星期五的日期 LAST_DAY('01-FEB-95')--当月的最后一天! ROUND(SYSDATE,'MONTH') --四舍五入月 ROUND(SYSDATE ,'YEAR') --四舍五入年 TRUNC(SYSDATE ,'MONTH') --阶段月 TRUNC(SYSDATE ,'YEAR') --截断年 39 group语句:和高级的应用语句: SELECT department_id, job_id, SUM(salary), COUNT(employee_id) FROM employees GROUP BY department_id, job_id ; 使用having进行约束: 1.group by rollup:对n列组合得到n+1种情况 SELECT department_id, job_id, SUM(salary) FROM employees WHERE department_id < 60 GROUP BY ROLLUP(department_id, job_id); 2.group by cube:得到2的n次方种情况 SELECT department_id, job_id, SUM(salary) FROM employees WHERE department_id < 60 GROUP BY CUBE (department_id, job_id) ; 3.使用grouping得到一行中构成列的情况,只是返回1和0:是空的话就返回1,否则返回0(注意不要弄反了!) SELECT department_id DEPTID, job_id JOB, SUM(salary), GROUPING(department_id) GRP_DEPT, GROUPING(job_id) GRP_JOB FROM employees WHERE department_id < 50 GROUP BY ROLLUP(department_id, job_id); 4.grouping sets:根据需要得到制定的组合情况 SELECT department_id, job_id, manager_id,avg(salary) FROM employees GROUP BY GROUPING SETS ((department_id,job_id), (job_id,manager_id)); 40from中使用子查询:返回每个部门中大于改部门平均工资的与员工信息 SELECT a.last_name, a.salary, a.department_id, b.salavg FROM employees a,--下面的地方就是子查询了,主要返回的是一组数据! (SELECT department_id, AVG(salary) salavg FROM employees GROUP BY department_id) b WHERE a.department_id = b.department_id AND a.salary > 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);
11.导入导出dmp文件:
imp 用户名/密码@数据库 ignore=y file=备份文件 log=D:\DBtest\db_bak\imp.log
exp system/manager@TEST file=d:\daochu.dmp full=y
12.大对象字段blob:查看blob字段的大小:
select dbms_lob.getLength (字段名) from 表名 ;
13.下面收集的是有意思的sql语句,说不定正是你需要的:
- --创建一个只允许在工作时间访问的视图
- create or replace view newviewemp
- as
- select * from 表名
- where exists(select 1 from dual where sysdate >=
- to_date(to_char(sysdate, 'yyyy-mm-dd ') || '08:00:00', 'yyyy-mm-dd hh24:mi:ss')
- and sysdate <
- to_date(to_char(sysdate, 'yyyy-mm-dd ') || '18:00:00', 'yyyy-mm-dd hh24:mi:ss'))
发表评论
-
SQL查询顺序处理
2011-09-15 11:29 1637select的解析执行顺序1. from语句 2. where ... -
概念模型、逻辑模型、物理模型区别
2011-09-08 10:48 1244http://wenku.baidu.com/view/9a6 ... -
规范化-数据库设计原则
2011-09-07 10:41 1460简介: 关系数据库设计的核心问题是关系模型的设计。本文将结合具 ... -
数据库设计准则(第一、第二、第三范式说明)
2011-09-07 10:17 1286I、关系数据库设计范式 ... -
oracle日志文件及归档日志模式
2011-09-01 10:18 1764oracle数据库中分为联机日志文件和归档日志文件两种日志文件 ... -
Oracle重做日志管理
2011-09-01 09:50 1441Oracle重做日志操作是为了记录数据的改变,提供数据库 ... -
Oracle复制技术的分布式系统同步应用
2011-08-28 17:41 1296本文将结合一个实际案例,讲解Oracle复制技术在分布 ... -
oracle数据同步
2011-08-28 14:34 1001首先创建一个 dblink(dat ... -
Oracle 流复制(Stream Replication)
2011-07-20 10:37 5632Stream 是Oracle 的消息队列( ... -
表分区
2011-06-30 09:21 1682分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应用 ... -
数据库大型应用解决方案总结(1)
2011-06-22 18:01 1397随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设 ... -
oracle_SQL中ROWID与ROWNUM的使用
2011-06-16 10:51 1430对于 Oracle 的 rownum 问题,很多资料都说不支持 ... -
oracle函数手册
2011-06-08 09:22 1191SQL中的单记录函数1.ASCII ... -
oracle基础文档
2011-06-03 09:10 1246oracle基础文档 -
ORACLE 找回误删的数据库
2011-06-02 14:14 1376同事找回时操作的数据库为oracle 10g , 之前删除方式 ... -
为什么Oracle有时会用索引来查找数据?--强制Oracle使用最优的“执行计划”
2011-06-01 09:04 1746[摘要] 在你运用SQL语言,向数据库发布一条查询语句时,O ... -
sql编程规范与性能
2011-05-31 08:40 1282sql编程规范与性能 -
Nested Loops Join(嵌套连接)
2011-04-13 16:21 11590说明:最近找到了一个 ... -
如何看Oracle执行计划
2011-01-14 15:43 2189oracle执行计划解释 ... -
oracle中分析sql语句执行计划的方法
2011-01-14 15:36 2233如何生成explain plan? 解答:运行utl ...
相关推荐
oracle Sql语句二 oracle Sql语句二
本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...
Oracle sql语句大全. sql语句的优化资料
Oracle 常用 SQL 语句大全 本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 ...
本文将深入探讨如何利用压力测试工具来评估和优化Oracle数据库中的SQL语句性能。 标题"压测Oracle的SQL语句的性能情况"暗示了我们关注的是在高负载情况下,Oracle数据库处理SQL查询的能力。压力测试(Pressure ...
Oracle SQL语句性能优化是数据库管理中的关键环节,直接影响到系统的响应速度和资源利用效率。本文将详细探讨优化Oracle SQL语句的几个核心策略。 1. 选择合适的优化器 Oracle 提供了三种优化器:RULE(基于规则)...
Oracle数据库SQL语句跟踪器,通常被称为SQL Monitor,是一种强大的工具,用于监控和分析数据库中的SQL语句执行情况。在Oracle环境中,理解SQL语句的行为是优化数据库性能的关键。SQL Monitor提供实时视图,帮助DBA...
Oracle 常用 SQL 语句汇总 Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义...
Oracle SQL Profiler,自己设计算法写的一款非常好用的抓取Oracle数据库SQL语句的工具,可以再没有源码的情况下监控ORACLE数据库服务器的v$sqlarea视图抓取出从点击开始按钮到点击结束按钮期间执行过的SQL语句。...
根据给定的文件信息,以下是对Oracle SQL语句的关键知识点的详细解读: ### Oracle SQL语句概述 Oracle SQL是Oracle数据库系统中用于管理和查询数据的标准语言。它提供了强大的功能来处理复杂的数据库操作,包括...
Oracle数据库是全球最广泛使用的数据库管理系统之一,它遵循SQL标准,提供了一套强大的SQL语句,使得数据库操作变得高效和灵活。在Oracle数据库中,SQL语句是与数据库进行交互的主要方式。本文将总结一些Oracle基本...
对ORACLE-SQL进行一些布局优化,更新它的格式
本文将深入探讨Oracle中SQL语句执行效率的查找与解决方法,特别关注于如何识别和优化那些导致性能瓶颈的查询。 ### Oracle SQL执行效率:查找与解决 #### 一、资源消耗分析 在Oracle中,SQL语句执行效率低下通常...
在这个场景中,我们可以利用批处理文件来简化Oracle数据库的操作,如删除用户、创建用户、创建表和触发器,以及执行其他SQL语句。 首先,我们需要了解如何在批处理文件中连接Oracle数据库。这通常通过Oracle的...
本篇文章将详细探讨如何利用工具实现SQL Server自动生成SQL语句并转换到Oracle。 首先,标题中的"sqlserver自动生成sql语句工具"指的是可以分析SQL Server数据库结构和数据,自动生成对应的SQL创建语句的软件。这种...
Oracle SQL语句是数据库管理与数据查询的重要工具,尤其在Oracle数据库系统中,掌握SQL的高效使用至关重要。这个"oracle sql语句学习"资源包显然旨在帮助初学者逐步提升到高级水平,通过全面的笔记资料,使用户能够...
#### 二、监听执行SQL语句的基本方法 1. **使用`v$session`和`v$sqlarea`视图** ```sql SELECT a.username, a.sid, b.SQL_TEXT, b.SQL_FULLTEXT FROM v$session a, v$sqlarea b WHERE a.sql_address = b....
Oracle SQL语句跟踪是数据库管理员和开发人员在优化SQL性能、定位问题或调试查询时常用的一种技术。在Oracle数据库系统中,SQL语句跟踪能够帮助我们收集关于SQL执行的详细信息,包括执行计划、资源消耗、等待事件等...
"Oracle数据库sql转换mysql数据库工具" 提供了解决这一问题的解决方案,允许用户将Oracle数据库中的SQL语句或数据结构转换为MySQL兼容的格式。 在数据库迁移过程中,这样的工具至关重要,因为它可以简化工作流程,...