SQL plus 的登陆:
1,程序组: 用户名: scott 或者system
密码: tiger
主机字符串: 只是在远程登陆时需要;
2,运行:sqlplusw scott/tiger@Jade 或者sqlplusw system/jade@Jade
注意:如果是本地登陆,@Jade则可以不写,就是主机字符串嘛
3,命令行:c:>sqlplus
被默认为自动启动的服务:
OracleServiveJADE
OracleTNSListener
OracleOracleAgent
OracleOracleHttpServler
Oracle的历史:
Oracle公司就是甲骨文公司,源自老板对中国文化的喜爱;
IBM公司的研究员Edgar Frank Codd来开了关系数据库软件
革命的序幕;
1977年Oracle公司的前身出现,Larry Elllison创业于实验室;
Larry Ellison认为1.0的软件不被人们信任,所以Oracle2.0是
第一个发布版本;
Oracle8I开始程序得支持Internet,I代表Internet;
Oracle9I版本后完全支持Java;
Oracle支持的PL/SQL语言:
完全支持SQL92标准;
PL:personl language;
Oracle使用Net8协议在客户端和服务器端传输数据时
加密和解密;我在想,这个协议如果被破解了,那
网络上被人收取的加密数据岂不被理解了?
TNS连接是Oracle两个节点间的通讯路径;
数据字典其实也是表,用户数据字典是用来存储当前用户
有什么样的表,试图,约束等信息的表而已;
.DBF数据文件;.CTL控制文件;.LOG日志文件;
Oracle系统包括磁盘文件和内存区的东西;
问问SQLServer怎么查一个数据库里有哪些表;
DML语言
字符数据一定要用单引号定界;
Oracle中要插入日期型时要用函数to_date('feb 3,05','mon dd,yy')
to_date可以将一个特定的字符串转换为特定格式的日期;
to_date使得用户非常灵活,你可以用自己定义的时间格式插入日期,
但是Oracle默认都会以一种形式来显示,可以修改:
alter session set NLS_date_format='yyyy;mm;dd';
每个Oracle连接到数据库时都会和数据库保持一个会话;所以有
修改会话的命令:alter session....
Oracle的内部都使用大写表示;Oracle用的是UTF-8字符集;
SQLPLUS的命令一个:set linesize 400把每行设置为400宽;
set pagesize xxx每页显示xxx行;
执行以前执行过的语句,用run,简写为r,或者/;
Oracle不可以一次执行做个语句;
解决的办法是:临时变量;用临时变量的话系统会与你进行交互
操作,靠,太方便了;
例如:insert into emp(empno,ename)
values(&id,'&name');
这样就会交互输入了;
使用子查询插入数据:批量插入其他的一个表的数据;
所谓的DML语句操作的对象都是数据,不是表;这包括:insert,update,delete;
事务
多个DML语句可以构成事务;
一个DDL语句可以构成事务;
一个DCL语句可以构成事务;
当第一条SQL语句被执行时,事务就自动开始了
当出现下面的事件时,事务就结束:
commit or rollback被执行时;
DDL or DCL被执行时(自动提交);
用户退出;
系统中止;
一个有用的命令:clear screen;
事务处理到底有什么作用:
试验一下:
1,执行insert into dept value(....)成功插入一条纪录后,在本
SQLPLUS窗口select * from dept的时候刚才插入的纪录是可见的;
而重新打开另一个SQLPLUS窗口就看不见刚刚插入的纪录;
原因就是第一个窗口中没有以上所说的四种结束事务的语句或者
操作;
可见事务没结束的时候,后台数据库并没有真正被改变,
暂时性的改变临时存在数据缓冲区中;
只有事务结束后,才真正写如这些数据;
简单地关闭sqlplus窗口并不能真确提交事务;(我说呢,昨天插入的
数据今天都不见了)
commit成功提交;
rollback取消未提交的事务操作;
事务一般远远不是你所想像的那么小,一般都很大;
所以我们不会老是回滚整个事务,所以我们用保存点来分割事务;
可以只回滚出错误的操作,不至于因为一部分的错误而连同
真确的操作一起撤消;
savepoint 的范围只是commit之前,如果提交了事务,那就无法回滚了,
当然无法回滚到一个保存点了,因为保存点已经失效了;