Oracle学习笔记一

Oracle数据库全局数据库名
Oracle中数据库的概念并不是很强烈,仅仅是一个标识。不是以数据库为管理依据,而是以表空间为管理依据。

服务
OracleServieORACLE9I如果不起动则无法连接数据库
OracleOracle9iTNSListener监听程序

命令行启动SQL*Plus
sqlplusw username/password 本地启动
sqlplusw username/password@connect_string 连接远程主机

用户会话
Oracle会为每一个数据库连接在服务器端保存一个内存区,称为用户会话区。

数据字典
Oracle数据字典中的对象名称以三种前缀开头:"USER","ALL","DBA"。只在个别情况下例外。
USER表示当前用户或相关用户的数据字典
ALL表示所有用户的数据字典
DBA表示数据库管理员的数据字典

Oracle体系结构(组成)(对应操作系统的物理结构)
内存区域,文件区域,内存的数据来自于文件
Oracle服务器:提供了主要的数据库管理服务;它包括数据库实例(Oracle数据库服务器内存区域以及后台进程)和数据库文件。
实例:是连接数据库的入口;仅打开并连接至一个数据库(一般而言);它包括内存和后台进程。全部数据放入SGA(System Global Area)。包括共享池(库高速缓存,数据字典缓存),数据高速缓存,重做日志缓存,Java池,大型对象池。还有一些后台进程,构成Oracle数据库的一个实例。
Oracle文件类型:数据文件(存储系统数据,用户数据,文件相互连接文件),控制文件(数据库启动,事务处理),日志文件(记录用户操作)。

数据库逻辑结构
包括表空间,段,区间和数据块;从逻辑上讲,一个数据库由若干个表空间(TableSpace)组成,每个表空间中有若干个表,每个表又可以分为数据库段(DataSegment)和索引段,每个段中又可以分为若干个数据库区间(Extent),每个数据区间由若干个数据块组成。由此可见,数据块是最基本的存储单位,而表空间,表,段,区间以及模式对象则是逻辑组织的构成成员。


主要的系统表空间:System,Users,Temp,tools

 


DDL语言,DML语言,DCL语言
DML语言:向表中增加新的行;修改表中已经存在的数据行;从表中删除已经存在的数据行。
事务是一组DML语句的逻辑集合。

alter session set NLS_date_format='YYYY-MM-DD'(更改日期显示格式)

使用绑定变量
insert into dept(deptno,dname,loc) values(&dept_id,'&dept_name','&location');
Enter value for dept_id:80
Enter value for dept_name:EDUCATION
Enter value for location:ATLANTA

从其他表中复制数据
insert语句中使用子查询:
insert into managers(id,name,salary,hiredate) select empno,ename,sal,hiredate from emp where job='MANAGER';

数据库事务:
事务是数据库一组逻辑操作的集合:多个DML语句可以构成事务;单个DDL语句构成事务;单个DCL语句构成事务。
Oracle中只要进行插入,删除,修改操作的时候会自动开启事务。所有的事务在执行SQL语句的时候会自动开启。在遇到提交或是回滚语句的时候事务结束。

事务控制:
当第一条SQL语句被执行的时候,事务便开始了;当出现下面的事件的时候,事务便结束:commit or rollback被执行的时候;DDL or DCL被执行时(自动提交);用户退出(大部分时候是rollback);系统中止;

commit和rollback语句
commit成功提交
rollback回退到未开启事务前的状态

事务保存点
savepoint point_name;
rollback to point_name;

 

SQL操纵
三种方式:Selection(选择行),Projection(选择列,投影操作),Join(表和表间关联运算);

算术表达式:
Number and Date:可用算术表达式;Operator(+,-,*,/),Description(Add,Subtract,Multiply,Divide);

查询使用连接操作符
select ename||job as "Employees" from emp;
select ename ||' 'is a' || ' ' ||job as "Employee Details" from emp;

比较运算符:Operator(=,>,>=,<,<=,<>),Description(Equal to,Greater than,Greater than or equal to,Less than,Less than or equal to,Not equal to);

复杂的比较运算符:Operator(BETWEEN...AND...,IN(list),LIKE,IS Null),Description(介于两个值之间,可以匹配的任何值列表,匹配的字符串模式,判断是否为空值);
Like运算符:%代表至多个任意字符;_代表一个任意字符;

逻辑操作符:Operator(AND,OR,NOT);Description(如果条件两侧均为true则返回true,如果条件两侧一方为true则返回true,如果后面的条件为false则返回true);

优先级:算术运算符优先级最高,NOT次之,AND次之,OR最低。可以使用小括号改变运算符的优先级。

 

SQL函数
两种类型的函数:单值函数和多行函数

字符函数:
转换函数:LOWER,UPPER,INITCAP
字符操纵函数:CONCAT,SUBSTR,LENGTH,INSTR,LPAD

Number函数
ROUND:返回四舍五入值;ROUND(45.926,2)=45.93
TRUNC:截取小数;TRUNC(45.926,2)=45.92
MOD:求余运算;MOD(1600,300)=100

Date函数
Oracle内部存储的格式是:Century,year,month,day,hours,minutes,seconds;
默认的日期格式:DD-MON-YY;
SYSDATE函数能够返回日期和时间;
DUAL是用来显示日期的名义表;
MONTHS_BETWEEN:返回两个日期之间月份的差值;返回月份差值;
ADD_MONTHS:在日期上加上月份数;
NEXT_DAY:指定日期的后一天;
LAST_DAY:指定月份的最后一天;
ROUND:四舍五入日期(分上下半年,上下半月);统计中使用比较多;
TRUNC:截断日期;

使用日期函数
上半月:ROUND('2006-02-12','MONTH')='2006-02-01'
下半月:ROUND('2006-02-25','MONTH')='2006-03-01'(16号为界)
上半年:ROUND('2006-02-25','YEAR')='2006-01-01'
下半年:ROUND('2006-07-25','YEAR')='2007-01-01'(7月份为界)
截取月:TRUNC('2006-02-25','MONTH')='2006-02-01'
截取年(上半年)TRUNC('2006-02-25','YEAR')='2006-01-01'
截取年(下半年)TRUNC('2006-07-25','YEAR')='2006-01-01'

转换函数
数据类型转换:隐式数据类型转换,显示数据类型转换

隐式类型转换
Oracle可以自动转换
(VARCHAR2 or CHAR) TO (NUMBER)
(VARCHAR2 or CHAR) TO (DATE)(当前会话中日期格式和要插入的行匹配的时候,可以自动转换,否则需要显示转换)
(NUMBER) TO (VARCHAR2)
(DATE) TO (VARCHAR2)


显示数据类型转换
TO_CHAR
TO_NUMBER
TO_DATE

NVL函数
将NULL值转换成一个实际的值;Date,Character和Number类型可以使用;
NVL(comm,0)
NVL(hiredate,'01-JAN-96')
NVL(job,'No Job Yet')

Decode函数
Decode功能类似CASE和IF-THEN-ELSE语句,但更容易使用
DECODE(col/expression,search1,result1[,search2,result2,...,][,default]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值