- 浏览: 561980 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 2057Part I What Is Oracle? ... -
分析各种Oracle JDBC驱动程序的细节
2010-11-30 22:10 1351连接Oracle数据库的各种oracle JDBC驱动程序的细 ... -
Oracle中PL/SQL的异常处理
2010-11-19 22:05 8691.PL/SQL异常处理包括预定义异常和自定义异常; 使用r ... -
Oracle中使用触发器插入自增字段
2010-11-19 22:02 1060创建触发器格式如下:create [or replace] t ... -
Oracle中存储过程的创建和调用
2010-11-19 22:01 12401.Oracle中创建存储过程的格式如下:create [or ... -
oracle 存储过程的基本语法
2010-11-14 20:40 8501.基本结构 CREATE OR REPLACE PROCED ... -
oracle经典题目
2010-11-14 20:39 1402--01 按以下格式显示 ... -
oracle中执行sql文件
2010-11-14 16:42 989oracle中执行sql文件关键字: 数据库操作 在or ... -
Oracle数据库视频教程 28讲高清视频
2010-11-13 09:20 1772[下载][推荐]Oracle数据库视频教程 28讲 ... -
Oracle 10g数据类型大全
2010-11-13 09:19 1005oracle数据类型全攻略: 数据类型 ... -
Oracle 常用SQL技巧收藏(转)
2010-11-12 13:24 8271. SELECT子句中避免使用 “*” 当你想在SE ... -
oracle函数大全
2010-11-09 22:16 794Sql代码 SQL中的单记录函数 ... -
oracle函数详解
2010-11-09 22:15 10461、SQL 语句基础下面给出SQL语句的基本介绍。1.1、 ... -
SQL和ORACLE函数比较
2010-11-09 22:14 739SQLServer和Oracle是大家经常用到的数据库,在 ... -
数据库id自增长
2010-11-02 22:11 12241.创建序列 -- Create seque ... -
ORACLE SEQUENCE的简单介绍(自增长字段)
2010-11-02 21:45 880在oracle中sequence就是所谓的序列号,每次取的 ... -
Oracle数据类型
2010-11-02 21:38 589在ORACLE8中定义了:标量(Scalar)、复合(CO ... -
ORACLE常用命令
2010-10-31 15:52 1021ORACLE常用命令 一、ORACLE的启动和关闭 ...
相关推荐
INSERT语句是SQL语言的基本组成部分,用于向数据库表中插入新的数据记录。通过生成这些语句,我们可以方便地在目标环境中重新创建源数据库中的数据状态,而无需进行完整数据库的导入导出操作,这对于测试环境或数据...
oracle数据库详细的语句操作大全,对不同的操作语句都有详细的解释和举例说明。
在Oracle数据库管理系统中,建表语句是进行数据存储和管理的基础操作。Oracle支持SQL标准的CREATE TABLE语句,用于创建新的数据库表。本篇将深入探讨Oracle中的基本建表语句及其相关操作。 首先,建表语句的基本...
本文将总结一些Oracle基本SQL语句,帮助用户快速复习并掌握其用法。 首先,了解SQL(结构化查询语言)的基础功能是十分必要的。SQL由一系列命令组成,这些命令允许用户与数据库进行交流。其中,SELECT语句是SQL中最...
Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义语句(DDL)和其他相关知识...
在日常数据库管理和开发过程中,有时我们需要将Oracle数据库中的数据导出为INSERT语句,以便在其他环境或者备份恢复时使用。"Oracle导出INSERT语句V1.1"是一个专门为此目的设计的实用工具。 这个工具的主要功能是...
本文将深入解析Oracle SQL语句的基本操作,帮助初学者更好地理解和应用这些技巧,从而提高数据库查询效率。 首先,理解选择最有效率的表名顺序至关重要。在FROM子句中,Oracle会按照从右到左的顺序处理表,这意味着...
本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 * 创建数据库:CREATE ...
以下是一些Oracle数据库的常用操作语句及其详细解释: 1. **查看帮助信息**: - `help show`:显示特定命令的帮助信息。 - `show all`:列出所有系统变量的当前值。 2. **查看系统状态**: - `show user`:显示...
本教程将带你深入了解Oracle的基础知识,包括基本SQL语句、内连接、外连接以及多表查询,还有如何创建数据库表。 一、Oracle基础SQL语句 SQL(Structured Query Language)是用于管理和操作数据库的语言。在Oracle...
查询当前用户下的所有表是使用 Oracle 的一个基本操作,使用以下语句可以查询当前用户下的所有表: select * from tab; 其中,tab 是 Oracle 中的一个系统视图,用于显示当前用户下的所有表和视图。 七、显示当前...
1. **基本查询**:SQL的基础是SELECT语句,用于从表中提取数据。例如,`SELECT column1, column2 FROM table_name;`用于获取指定列的数据。理解如何使用WHERE子句进行条件过滤,如`WHERE column = value`,以及如何...
#### 二、监听执行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....
标签"excel2003"表明了工具的基础平台,"oracle"表示目标数据库系统,"sql"则强调了涉及的数据库操作语言。文件"ORACLE生成sql工具.xls"很可能就是包含宏的Excel工作簿,用户需要打开并按照指示操作。 这样的工具...
例如,MySQL的DML(Data Manipulation Language)语句,如`INSERT`、`UPDATE`和`DELETE`,与标准SQL基本一致,但其DDL(Data Definition Language)如`CREATE TABLE`在某些特性上可能与Oracle或SQL Server有所不同。...
此外,文章还介绍了基本的Oracle操作语句,包括创建表、修改列属性、添加列、添加主键约束和非空约束、删除主键约束、失效约束、有效约束等。这些语句对于初学者非常重要,因为它们可以帮助初学者快速地掌握Oracle...
本文将详细介绍Oracle的基本建表语句及相关操作。 首先,创建用户是数据库管理的基础。Oracle中创建用户的基本语法如下: ```sql CREATE USER 用户名 IDENTIFIED BY 密码 DEFAULT TABLESPACE 表空间名 TEMPORARY ...
以上内容覆盖了Oracle PL/SQL的基本语法、SQL*PLUS命令、SQL查询、条件表达式、算术运算、日期和时间处理以及DML语句等方面。对于想要深入了解Oracle PL/SQL的开发者来说,这些知识点是非常宝贵的资源。