`
ganglong99
  • 浏览: 161374 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Oracle学习笔记

阅读更多

数据库操作

1、创建表空间:
create tablespace [spacename] datafile [filepathname] size [num];
如:create tablespace leo_tablespace datafile 'F:\oracle\product\10.1.0\oradata\leo_data.dbf' size 500M;

 

2、创建用户:
create user [username] identified by [password] default tablespace [spacename];

 

3、为用户授权:
grant connect, resource to [username];
grant dba to [username];

 

4、创建表:

如:
create table "scott"."director" (
  "director_id" number(6)       not null,
  "name"        varchar2(10)    not null,
  "code"        number(18)      not null
)

 

5、创建索引:
create unique index [index_name] on [table_name] ([column_name])
如:
create unique index "bgsuser"."mp_file_info_inx" on "bgsuser"."mp_file_info_tab" ("fileid")

 

6、查看数据文件路径:

SQL> select file_name from dba_data_files;

/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/example01.dbf

 

7、查看数据库字符集:

SQL> select userenv('language') from dual;

AMERICAN_AMERICA.ZHS16GBK

 

8、启动数据库

先启动监听程序:
lsnrctl start

启动oracle服务
sqlplus / as sysdba

SQL>startup

 

常用命令

1.查看当前用户:
SQL> show user;

 

2.使用用户登录数据库:
使用超级管理员账户时,必须使用as sysdba:
SQL> conn sys/oracle as sysdba;


使用其他账户,则:
SQL> conn scott/tigger;

 

3.设置环境变量:
SQL> set pagesize 30;
SQL> set linesize 150;

 

4.查看表结构:
SQL> desc table;

 

5.字符串连接操作,使用"||":
SQL> select '我的名字是:'||username from user;

 

6.模糊查询通配符:
"%":匹配零个或多个任意字符;
"_":匹配一个任意字符;

 

7.不等于"<>":
SQL> select * from emp where empno <> 7369;

 

8.order by 子句:
写在前面的字段先排序,写在后面的后排序。

 

单行函数

(一)、字符函数
1.小写转换为大写:upper(str)
SQL> select upper('smith') from dual;

SQL> select * from emp where ename = upper('smith');

 

2. 大写转换为小写:lower(str)

 

3.首字母大写:initcap(str)
SQL> select initcap('HELLO WORLD') from dual;

 

4.字符串连接:concat(str, str)
SQL> select concat('hello ', 'world') from dual;

 

5.截取字符串:
(1)substr(str, begin, sublen):从begin开始从str中截取长度为sublen的字符串
SQL> select substr('hello', 2, 1) sub from dual;
注意:从0和1开始截取的结果是相同的。


(2)substr(str, begin):从begin开始截取str后半部分字符串
SQL> select substr('hello', 3) sub from dual;

SQL> select substr(ename, -4, 2) sub from emp; 当begin为负数时,表示从倒数第几个开始截取

 

6.字符串长度:length(str)
SQL> select length('hello') len from dual;

 

7.字符串替换:replace(src, substr, replacestr)
将hello中的所有l替换成x:
SQL> select replace('hello', 'l', 'x') rep from dual;

 

(二)、数值函数
1.四舍五入:round()
SQL> select round(354.543) from dual; 结果为:355(默认为取整数部分进行四舍五入)
SQL> select round(354.543, 2) from dual; 结果为:354.54(保留两位小数位)
SQL> select round(354.543, -2) from dual; 结果为:400(如果为负数,表示在小数点前几位处进行四舍五入)
 
2.截断小数位:trunc() 不四舍五入
SQL> select trunc(252.532) from dual; 结果为:252(默认截取整数部分)
SQL> select trunc(252.532, 2) from dual; 结果为:252.53(截取两位小数位)
SQL> select trunc(252.532, -2) from dual; 结果为:200(如果为负数,表示在小数点前几位出开始截取)

3.取模:mod()
SQL> select mod(10, 3) from dual; 结果为:1 (表示10 % 3 = 1)

 

(三)、日期函数
日期函数规律:
 日期 - 数字 = 日期
 日期 + 数字 = 日期
 日期 - 日期 = 数字(天数)

 

SQL> select sysdate from dual; 获得当前日期

 

1.months_between():求出给定日期范围的月数
SQL> select ename, round(months_between(sysdate, hiredate)) months from emp;

 

2.add_months():在指定日期上加上指定月数
SQL> select add_months(sysdate, 4) from dual;

 

3.next_day():下一个的今天是哪一个日期
SQL> select next_day(sysdate, '星期一') from dual; 下一个星期一的日期

 

4.last_day():求出给定日期的那个月的最后一天日期
SQL> select last_day(sysdate) from dual;

 

(三)、转换函数
1.to_char:转换成字符串
(1)将日期转换成字符串
年:y,年是四位数字,所以使用yyyy表示
月:m,月是两位数字,所以使用mm表示
日:d,日是两位数字,所以使用dd表示
SQL> select to_char(sysdate, 'yyyy') year, to_char(sysdate, 'mm') month, to_char(sysdate, 'dd') day from dual;

 

日期显示格式转换:
SQL> select to_char(sysdate, 'yyyy-mm-dd') from dual;


去掉月、天前面的前导零:
SQL> select to_char(sysdate, 'fmyyyy-mm-dd') from dual; 在格式前面加上"fm"

 

(2)将数字转换成字符串
   9:表示一位数字
SQL> select to_char(34343, '99,999') from dual;
SQL> select to_char(34343, '$99,999') from dual;
SQL> select to_char(34343, 'L99,999') from dual; 根据本地语言环境进行显示,如果是中文,则显示¥

 

2.to_number:转换成数字
SQL> select to_number('123') + to_number('123') from dual; 将字符串变为数字再相加

 

3.to_date:转换成日期
SQL> select to_date('2010-09-10', 'yyyy-mm-dd') from dual;

 

(四)、通用函数
1.nvl():将空值转换为指定值
SQL> select nvl(comm,0) from emp;

 

2.decode():类似于条件判断语句if...else if...else
SQL> select decode(3,1,'内容是1',2,'内容是2',3,'内容是3','都不是') from dual;
SQL> select empno, ename, hiredate, sal, decode(job,'ANALYST','分析员','CLERK','业务员','MANAGER','经理','PRESIDENT','总裁','SALESMAN','销售员') job from emp;


多表查询例子:
查询所有员工的名称,所在部门名称,工资,工资等级,上级领导名称,上级领导工资等级。
SELECT E.ENAME, D.DNAME, E.SAL, EG.GRADE, M.ENAME, MG.GRADE FROM EMP E, DEPT D, SALGRADE EG, EMP M, SALGRADE MG WHERE E.DEPTNO = D.DEPTNO AND E.MGR = M.EMPNO AND E.SAL BETWEEN EG.LOSAL AND EG.HISAL AND M.SAL BETWEEN MG.LOSAL AND MG.HISAL;

 

oracle优化常识:
1.from子句有多个表时,oracle从右到左处理,因此将数据量最小的表名放在from的最末尾。

 

2.where子句中,将能过滤掉最多数据的条件放在where部分的最末尾,因为oracle是从下自上处理的。

 

3.select语句中避免使用*

 

4.设置arraysize环境变量为合适的值。

 

5.当连接多个表进行查询时,使用表的别名,并且在每个结果字段上加上表的别名

 

6.合理使用索引

 

7.SQL语句用大写,oracle总是会先将小写转换为大写,再执行

 

8.不要在索引字段上进行计算,这样oracle会停止使用索引,而采用全表扫描
如:select sal*12 > 2500;
可改为:select sal > 2500/12;

 

9.避免改变索引列的类型。避免比较两个不同类型的值,oracle会自动使用转换函数进行转换,只要在索引字段上
使用了函数,则会停止使用索引。

 

10.尽量使用where替代having,即在group by之前尽量使用where子句过滤掉不需要的记录。

分享到:
评论

相关推荐

    Oracle学习笔记精华版

    Oracle学习笔记精华版是针对数据库管理系统Oracle的一份重要学习资源,涵盖了从基础概念到高级特性的全面知识。Oracle,作为全球广泛使用的大型企业级数据库系统,对于IT专业人员尤其是数据库管理员(DBA)来说,是...

    Oracle学习笔记 PDF

    ### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...

    Oracle学习笔记.pdf

    在Oracle学习笔记中,对安装卸载和配置的详尽讲解,不仅为学习者提供了操作指导,而且还涉及到了数据库管理的一些基础知识点。这些内容对于数据库管理员和开发人员来说都是十分重要的,因为它们是操作Oracle数据库的...

    Oracle学习笔记.doc

    Oracle学习笔记 以下是我这一周学习oracle整理的笔记,包括课堂的内容和自己看额外看的视频补充的一些内容,基本上囊括了所有oracle的基本知识。主要的形式是例子代码加代码解释加运行结果,我个人认为对于没有学习...

    Oracle学习笔记-日常应用、深入管理、性能优化

    资源名称:Oracle学习笔记-日常应用、深入管理、性能优化内容简介:Oracle学习笔记-日常应用、深入管理、性能优化Oracle 11g是最具代表性的高端关系型数据库管理系统,它在世界各地的大型商务数据库应用系统中被广泛...

    oracle学习笔记整理

    以下是对Oracle学习笔记整理的主要知识点的详细说明: 1. **数据库选择**: 在决定使用哪种数据库时,通常需要考虑项目的规模、性能需求、安全性要求以及可用资源。Oracle数据库因其稳定性、可扩展性和高性能而被...

    oracle学习笔记下载

    ### Oracle 学习笔记知识点概览 #### 一、Oracle 数据库系统参数查询与管理 在 Oracle 数据库的学习过程中,了解如何查看和管理数据库的系统参数是非常重要的。这些参数直接影响着数据库的性能和稳定性。 ##### ...

    ORACLE学习笔记:日常应用、深入管理、性能优化.part1/2

    ORACLE学习笔记:日常应用、深入管理、性能优化.part1

    oracle学习笔记-入门基础

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的特性和功能来优化数据管理和查询性能。本文主要探讨Oracle数据库的入门基础知识,特别是与索引相关的概念。 首先,我们要理解ROWID的概念。ROWID是...

    全网最全的oracle学习笔记

    全网最全的oracle学习笔记,oracle学习笔记,oracle,### 4、oracle的七个服务 ```sql 1、Oracle ORCL VSS Writer Service Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如...

    Oracle学习笔记 Oracle学习笔记

    根据提供的信息,我们可以总结出以下Oracle数据库学习的关键知识点: ...以上是基于提供的内容整理出的Oracle学习笔记中的关键知识点。通过理解这些基础知识,可以更好地管理和操作Oracle数据库。

    Oracle 学习笔记

    ### Oracle 学习笔记知识点详解 #### 一、Oracle 数据库简介 Oracle 是一款由美国甲骨文公司开发的关系型数据库管理系统。它以其强大的数据处理能力、高度的安全性及稳定性而闻名于世,在金融、电信、政府等领域...

    Oracle学习笔记——日常应用、深入管理、性能优化 示例代码

    Oracle 11g是最具代表性的高端关系型数据库管理系统,它在世界各地的大型商务数据库应用系统中被广泛应用。本书设计了大量的应用情景,介绍了数据库管理员和开发人员常用的管理、维护和优化Oracle 11g数据库的技术和...

    MSDN oracle学习笔记

    在“MSDN Oracle学习笔记”中,我们可以期待找到关于Oracle数据库的详细讲解和实践指导。 首先,Oracle数据库的基础知识是必不可少的。这通常涵盖数据库系统的基本概念,如SQL(结构化查询语言)的使用,数据类型,...

Global site tag (gtag.js) - Google Analytics