当前位置:数据库 > Oracle >>

oracle心得1--oracle简介@基本sql语句@条件查询@排序数据理论与案例

oracle心得1--oracle简介@基本sql语句@条件查询@排序数据理论与案例

1. Oracle 简介
Oracle是殷墟出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词。Oracle公司是全球最大的信息管理软件及服务供应商,成立于1977年,总部位于美国加州 Redwood shore;Oracle公司因其复杂的关系数据库产品而闻名。Oracle的关系数据库是世界第一个支持SQL语言的数据库
2. Oracle 数据库和 Oracle 实例
Oracle 服务器由两大部分组成, Oracle 数据库和 Oracle 实例。
Oracle 数据库: 位于硬盘上实际存放数据的文件, 这些文件组织在一起, 成为一个逻辑整体, 即为 Oracle 数据库. 因此在 Oracle 看来, “数据库” 是指硬盘上文件的逻辑集合, 必须要与内存里实例合作, 才能对外提供数据管理服务.
Oracle 实例: 位于物理内存里的数据结构. 它由一个共享的内存池和多个后台进程所组成, 共享的内存池可以被所有进程访问. 用户如果要存取数据库(也就是硬盘上的文件) 里的数据, 必须通过实例才能实现, 不能直接读取硬盘上的文件.
区别: 实例可以操作数据库; 在任何时刻一个实例只能与一个数据库关联; 大多数情况下, 一个数据库上只有一个实例对其进行操作.
3. 注意
SQL 语言大小写不敏感;但where或having条件引号中的单词大小写敏感;SQL 可以写在一行或者多行;关键字不能被缩写也不能分行;各子句一般要分行写。;使用缩进提高语句的可读性。
乘除的优先级高于加减;同一优先级运算符从左向右执行。括号内的运算先执行; 括号决定一切!
空值是无效的,未指定的,未知的或不可预知的值;空值不是空格或者0
4. 案例知识点分析
列的别名:
重命名一个列,便于计算。紧跟列名,也可以在列名和别名之间加入关键字‘AS’,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
连接符:
把列与列,列与字符连接在一起。用 ‘||’表示。可以用来‘合成’列。
 例子:
select deptno||dname from dept;
 
DEPTNO||DNAME 
------------------------------------------------------ 
10ACCOUNTING 
20RESEARCH 
30SALES 
40OPERATIONS
 
字符串和日期:
字符串可以是 SELECT 列表中的一个字符,数字,日期。日期和字符只能在单引号中出现。每当返回一行时,字符串被输出一次。字符和日期要包含在单引号中。
字符大小写敏感,日期格式敏感。默认的日期格式是 DD-MON-RR。
行的去重复:
 默认情况下,查询会返回全部行,包括重复行。在 SELECT 子句中使用关键字 ‘DISTINCT’ 删除重复行。
例子:select distinct(job) from emp;
5. SQL 和 SQL*Plus



使用SQL*Plus可以:
描述表结构;编辑 SQL 语句;执行 SQL语句。 将 SQL 保存在文件中并将SQL语句执行结果保存在文件中。在保存的文件中执行语句。将文本文件装入 SQL*Plus编辑窗口。
6其它比较运算


使用 LIKE 运算选择类似的值;
选择条件可以包含字符或数字:% 代表零个或多个字符(任意个字符);_ 代表一个字符;‘%’和‘-’可以同时使用;可以使用 ESCAPE 标识符 选择‘%’和 ‘_’ 符号;回避特殊符号的:使用转义符。例如:将[%]转为[\%]、[_]转为[\_],然后再加上[ESCAPE ‘\’] 即可;使用 IS (NOT) NULL 判断空值。
例子:
[sql] 
select * from emp where sal between 1000 and 2000; 

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 
 
---------- ---------- --------- ----- -------------- ----- ------ ------ 
 
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 
 
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 
 
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 
 
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 
 
7876 ADAMS CLERK 7788 23-5月 -87 1100 20 
 
7934 MILLER CLERK 7782 23-1月 -82 1300 10 
 
select * from emp where sal in(1250,1600); 
 
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 
 
---------- ---------- --------- ----- -------------- ----- ------ ------ 
 
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 
 
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 
 
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 

select * from emp where comm is null;  
 
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 
 
---------- ---------- --------- ----- -------------- ----- ------ ------ 
 
7369 SMITH CLERK 7902 17-12月-80 800 20 
 
7566 JONES MANAGER 7839 02-4月 -81 2975 20 
 
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 

select * from emp where comm is not null; 

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 
 
---------- ---------- --------- ----- -------------- ----- ------ ------ 
 
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 
 
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 
 
select * from emp where ename like 'A%'; 
 
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 
 
---------- ---------- --------- ----- -------------- ----- ------ ------ 
 
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 
 
7876 ADAMS CLERK 7788 23-5月 -87 1100 20 
 
 
select * from emp where ename like '_L%'; 
 
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 
 
---------- ---------- --------- ----- -------------- ----- ------ ------ 
 
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 
 
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 
 
7782 CLARK MANAGER 7839 09-6月 -81 2450 10 
 

select job_id from jobs where job_id like 'ST\_%' escape '\'; 
 
JOB_ID 
 
---------- 
 
ST_CLERK 
 
ST_MAN  
7. 优先级


可以使用括号改变优先级顺序
8. ORDER BY子句
使用 ORDER BY 子句排序
ASC(ascend): 升序
DESC(descend): 降序
ORDER BY 子句在SELECT语句的结尾。
可以使用不在SELECT 列表中的列排序
例子:
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,