- 浏览: 1471837 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 1584select的解析执行顺序1. from语句 2. where ... -
概念模型、逻辑模型、物理模型区别
2011-09-08 10:48 1189http://wenku.baidu.com/view/9a6 ... -
规范化-数据库设计原则
2011-09-07 10:41 1405简介: 关系数据库设计的核心问题是关系模型的设计。本文将结合具 ... -
数据库设计准则(第一、第二、第三范式说明)
2011-09-07 10:17 1244I、关系数据库设计范式 ... -
oracle日志文件及归档日志模式
2011-09-01 10:18 1723oracle数据库中分为联机日志文件和归档日志文件两种日志文件 ... -
Oracle重做日志管理
2011-09-01 09:50 1394Oracle重做日志操作是为了记录数据的改变,提供数据库 ... -
Oracle复制技术的分布式系统同步应用
2011-08-28 17:41 1255本文将结合一个实际案例,讲解Oracle复制技术在分布 ... -
oracle数据同步
2011-08-28 14:34 953首先创建一个 dblink(dat ... -
Oracle 流复制(Stream Replication)
2011-07-20 10:37 5575Stream 是Oracle 的消息队列( ... -
表分区
2011-06-30 09:21 1644分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应用 ... -
数据库大型应用解决方案总结(1)
2011-06-22 18:01 1362随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设 ... -
oracle_SQL中ROWID与ROWNUM的使用
2011-06-16 10:51 1384对于 Oracle 的 rownum 问题,很多资料都说不支持 ... -
oracle函数手册
2011-06-08 09:22 1149SQL中的单记录函数1.ASCII ... -
oracle基础文档
2011-06-03 09:10 1206oracle基础文档 -
ORACLE 找回误删的数据库
2011-06-02 14:14 1335同事找回时操作的数据库为oracle 10g , 之前删除方式 ... -
为什么Oracle有时会用索引来查找数据?--强制Oracle使用最优的“执行计划”
2011-06-01 09:04 1706[摘要] 在你运用SQL语言,向数据库发布一条查询语句时,O ... -
sql编程规范与性能
2011-05-31 08:40 1242sql编程规范与性能 -
Nested Loops Join(嵌套连接)
2011-04-13 16:21 11489说明:最近找到了一个 ... -
如何看Oracle执行计划
2011-01-14 15:43 2151oracle执行计划解释 ... -
oracle中分析sql语句执行计划的方法
2011-01-14 15:36 2179如何生成explain plan? 解答:运行utl ...
相关推荐
oracle Sql语句二 oracle Sql语句二
Oracle Sql语句转换成Mysql Sql语句java 源码,非常简单,只要给定源oracle sql语句地址,和生成目标文件地址运行即可。
Oracle sql语句大全. sql语句的优化资料
Oracle 常用 sql 语句 实用性
Oracle SQL语句性能优化
ORACLE SQL 语句(典型应用总结).pdf
Oracle SQL 语句优化53个规则详解
oracle常用SQL语句下载 oracle常用SQL语句下载 oracle常用SQL语句下载
Oracle学习,常用sql语句汇总,适合新手使用。
Oracle中SQL语句执行效率的查找与解决..
Oracle数据库Sql语句详解大全,详细介绍oracle数据库的sql各种写法,非常适合初学者快速入门使用。
对ORACLE-SQL进行一些布局优化,更新它的格式
一些常见的Oracle数据库的sql语句的总结,便于快速的复习Oracle语句。
oracle、sql语句基础
Oracle——sql语句优化
Oracle SQL语句跟踪
oracle sql语句oracle sql语句oracle sql语句oracle sql语句oracle sql语句oracle sql语句oracle sql语句oracle sql语句oracle sql语句oracle sql语句
很全的oracle sql语句学习资料,从基础开始,逐层深入,让你成为sql高手