- 浏览: 547378 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (478)
- lucene (45)
- oracle (19)
- nutch (2)
- blog (2)
- 垂直搜索 (19)
- java综合 (89)
- spring (15)
- Hibernate (9)
- Struts (9)
- Hadoop (16)
- Mysql (12)
- nosql (10)
- Linux (3)
- MyEclipse (4)
- Ant (1)
- 设计模式 (19)
- JBPM (1)
- JSP (1)
- HtmlParser (5)
- SVN (2)
- 插件 (2)
- 收藏 (7)
- Others (1)
- Heritrix (18)
- Solr (4)
- 主题爬虫 (31)
- 内存数据库 (24)
- 分布式与海量数据 (32)
- httpclient (14)
- Tomcat (1)
- 面试宝典 (6)
- Python (14)
- 数据挖掘 (1)
- 算法 (6)
- 其他 (4)
- JVM (12)
- Redis (18)
最新评论
-
hanjiyun:
本人水平还有待提高,进步空间很大,看这些文章给我有很大的指导作 ...
JVM的内存管理 Ⅲ -
liuxinglanyue:
四年后的自己:这种方法 不靠谱。 使用javaagent的方式 ...
计算Java对象占用内存空间的大小(对于32位虚拟机而言) -
jaysoncn:
附件在哪里啊test.NoCertificationHttps ...
使用HttpClient过程中常见的一些问题 -
231fuchenxi:
你好,有redis,memlink,mysql的测试代码吗?可 ...
MemLink 性能测试 -
guyue1015:
[color=orange][/color][size=lar ...
JAVA同步机制
基本的查询操作语句
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';
5结合变量查找相关某个表中约束的相关列名:
select constraint_name,column_name from user_cons_columns where table_name = '&tablename'
6查询数据字典看中间的元素:
SELECT object_name, object_type
FROM user_objects
WHERE object_name LIKE 'EMP%'
OR object_name LIKE 'DEPT%'
7查询对象类型:
SELECT DISTINCT object_type FROM user_objects ;
8改变对象名:(表名,视图,序列)
rename emp to emp_newTable
9查看视图结构:
describe view_name
10在数据字典中查看视图信息:
select viewe_name,text from user_views
11查看数据字典中的序列:
select * from user_sequences
12得到所有的时区名字信息:
select * from v$timezone_names
13显示对时区‘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;--返回的时间是当前日期和时间,不含有时区!!!
14显示数据库时区和会话时区的值:
select datimezone,sessiontimezone from dual;
基本的数据操作语句
1普通的建表语句:
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13));
2使用子查询建立表:
CREATE TABLE dept80
AS SELECT employee_id, last_name,
salary*12 ANNSAL,
hire_date FROM employees WHERE department_id = 80;
3添加列:// alter table EMP add column (dept_id number(7));错误!!
alter table EMP add (dept_id number(7));
4删除一列:
alter table emp drop column dept_id;
5添加列名同时和约束:
alter table EMP add (dept_id number(7)
constraint my_emp_dept_id_fk references dept(ID));
6添加一个有check约束的新列:
alter table EMP
add (COMMISSION number(2) constraint emp_commission_ck check(commission>0))
7改变列://注意约束不能够修改 的!!
alter table dept80 modify(last_name varchar2(30));//这里使用的是modify而不是alter!
8增加一行:
insert into table_name values(.。。。。。。。);
9添加主键:
alter Table EMP add constraint my_emp_id_pk primary key (ID);
10删除表:
drop table emp;
11创建视图:
CREATE VIEW empvu80
AS SELECT employee_id, last_name, salary
FROM employees WHERE department_id = 80;
12删除视图:
drop view view_name
高级的数据对象:序列,同义词,索引等等
1建立同义词:
create synonym 同义词名 for 原来的名字
或者 create public synonym 同义词名 for 原来的名字
3
oracle基本操作语句
时间的函数,包括高级的时间类型
1一般的时间函数:
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') --截断年
2从时间中提取年,月,日:使用函数extract
select extract(year from sysdate) year,extract(month from sysdate),
extract(day from sysdate) from dual;
3使用函数得到数月之后的日期: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
关于子查询和其他的编程思路
1group语句:和高级的应用语句:
SELECT department_id, job_id, SUM(salary), COUNT(employee_id) FROM employees
GROUP BY department_id, job_id ;
可以使用having进行约束:
I.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);
II.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) ;
III.使用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);
IV.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));
2from中使用子查询:返回每个部门中大于改部门平均工资的与员工信息
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;
3exists语句的使用:
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);
4厉害的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;---最后的查询语句中使用了前面的临时表
5遍历树:
SELECT employee_id, last_name, job_id, manager_id
FROM employees
START WITH employee_id = 101
CONNECT BY PRIOR manager_id = employee_id ;--自底向上的遍历树。
6top-n分析:找到工资最高的5个人。(行内视图)
select rownum,employee_id from (select employee_id,salary from
employees order by salary desc)
where rownum<5;
发表评论
-
(强烈推荐)Oracle Concepts 中文版 (10g R2 中英文对照版)
2010-12-07 12:45 2022Part I What Is Oracle? ... -
分析各种Oracle JDBC驱动程序的细节
2010-11-30 22:10 1318连接Oracle数据库的各种oracle JDBC驱动程序的细 ... -
Oracle中PL/SQL的异常处理
2010-11-19 22:05 8321.PL/SQL异常处理包括预定义异常和自定义异常; 使用r ... -
Oracle中使用触发器插入自增字段
2010-11-19 22:02 1033创建触发器格式如下:create [or replace] t ... -
Oracle中存储过程的创建和调用
2010-11-19 22:01 12071.Oracle中创建存储过程的格式如下:create [or ... -
oracle 存储过程的基本语法
2010-11-14 20:40 8311.基本结构 CREATE OR REPLACE PROCED ... -
oracle经典题目
2010-11-14 20:39 1367--01 按以下格式显示 ... -
oracle中执行sql文件
2010-11-14 16:42 959oracle中执行sql文件关键字: 数据库操作 在or ... -
Oracle数据库视频教程 28讲高清视频
2010-11-13 09:20 1747[下载][推荐]Oracle数据库视频教程 28讲 ... -
Oracle 10g数据类型大全
2010-11-13 09:19 971oracle数据类型全攻略: 数据类型 ... -
Oracle 常用SQL技巧收藏(转)
2010-11-12 13:24 8001. SELECT子句中避免使用 “*” 当你想在SE ... -
oracle函数大全
2010-11-09 22:16 769Sql代码 SQL中的单记录函数 ... -
oracle函数详解
2010-11-09 22:15 10171、SQL 语句基础下面给出SQL语句的基本介绍。1.1、 ... -
SQL和ORACLE函数比较
2010-11-09 22:14 708SQLServer和Oracle是大家经常用到的数据库,在 ... -
数据库id自增长
2010-11-02 22:11 11931.创建序列 -- Create seque ... -
ORACLE SEQUENCE的简单介绍(自增长字段)
2010-11-02 21:45 846在oracle中sequence就是所谓的序列号,每次取的 ... -
Oracle数据类型
2010-11-02 21:38 565在ORACLE8中定义了:标量(Scalar)、复合(CO ... -
ORACLE常用命令
2010-10-31 15:52 990ORACLE常用命令 一、ORACLE的启动和关闭 ...
相关推荐
Oracle_基本建表语句-操作语句
oracle数据库详细的语句操作大全,对不同的操作语句都有详细的解释和举例说明。
oracle数据库sql语句操作,基本oracle数据库sql语句集合
Oracle数据库 中的sql语句基本操作详细解释 有助初学者 学习
Oracle,查询语句,sql,oracle基本操作语句示例,简单好用
创建表空间,创建表结构,对于表的增删改查等基本操作,只有基础部分,没有进阶,表结构与MySQL基本一致,只有表空间有所不同
oracle常用的sql语句。 SQL PLUS下对数据库的常用操作语句, 比如显示当前连接用户、新建用户并授权、查询表结构、插入新记录、导入数据表等。一共34条,可能不是太多,但基本覆盖日常操作。
这是我整理的Oracle操作语句集锦,包含基本的Oracle命令行的语法,以及SQL语句(表的创建操作等),包括基本语句和PL/SQL,触发器等~~
选定某一主题,运用oracle数据库,以及相关技术方法设计和开发一个信息管理的数据库系统,实现数据库的开发应用以及日常管理维护等基本功能。 具体要求如下: (1)选定某一主题,创建一个oracle数据库,对其进行...
基本涵盖了所有oracle操作语法, 工作学习当中都能用的上 我现在还在用, 已经有快10年了, 欢迎下载, 希望可以帮到你
oracle的基本语法等
内涵日常开发中常用的Oracle操作语句。
非常好的基础操作文档,简单易学,内容精简,而且有重点突出,适合初学者,本人也是,很不容易找的,与大家共享!
此软件自己编写,是一个基于MFC框架的操作oracle数据库的客户端,功能简单,能够打开、关闭基本两项服务,输入基本语句,如增删查改,可以创建触发器和过程,可以查看缓存区代码,下载后只需找到setup.exe执行便可...
oracle命令大全 内容包括三大项: 1.oracle基本操作语句 2.SQLServer基本操作语句 3.各种数据库连接方法
C#版Oracle数据库通用操作类,包含了基础连接、执行基础语句、返回参数执行、dataset分页执行等简单oracle命令执行及哈稀表自动插入数据库等高级任务执行等。
最最基本的PLSQL操作,如查询语句,游标,函数,过程,动态SQL等等
完整性展示:DEMO提供了从基础建表到复杂约束(如外键、自增主键)等实际生产场景所需的完整SQL语句。 学习价值:对于初学者或者对Oracle数据库不熟悉的开发者来说,这是一个很好的实践教程,可以直接参照执行并...
oracle的笔记 就是Oracle的基础语句之类
一些基本的SQL语句,包括游标,存储过程等,PLSQL的基本操作手册