oracle 10G安装:
数据库口令 不可以全部都是数字 ,否则无法顺利开启Enterprise Manager 管理工具
管理工具 :
SQL plus
isql plus http:;//localhost:5560/isqlplus
Enterprise Manager http:;//localhost:5500/em
启动数据库 :
startup opem misbb
若权限不是 conn sys as sysdba 再 startup opem misbb
关闭 :
shutdown
登录数据库 :
conn system@misdb
conn system@testdb
表空间操作 :
create tablespace ...
create tablespace ...
注意:mysql 不支持分布式应用,但 Oracle 支持
安装 后 全部服务最好 设为 手动,加快开机速度
OracleService---- 此服务必须启动
Oracle10G----Listener 此服务必须启动
安装过程
勾选 创建事样本方案的数据库
所有帐户都使用同一口令 123
sqlplus中有两种命令:
以命令行的方式进入数据库连接 sqlplus
以窗口方式启动命令行工具 sqlplusw (如果有多个数据库,要指定,否则 默认)
set linesize 40
set pagesize 30
sqlplus /nolog
connn / as sysdba --用SYS用户登陆 //兼容老版本的用法,新版本:sqlplus sys/oracle as sysdba
alter user scott identified by tiger;
alter user scott account unlock;对SCOTT解锁
让test用户的密码失效
alter user test password expire (此用户以后会被要求输入旧的口令及新的口令)
锁住test用户
alter user test account lock
将创建session的权限 给 test 用户
grant create session to test
把多个权限一次性 给 一个用户
oracle提供了两个主要角色,connect , resource
grane connect,resource to test
sqlplusw中
ed 文件
@文件路径
若是.sql,后缀可以省略
conn sys/123 as sysdba
exit
show user
select * from tab
desc 表
/ 表示继续上一次命令
事务 处理: 保证数据操作的完整性
在oracle中对于每一个连接到数据库的窗口(sqlplus等)连接后,实际上都以和数据库的连接建立一个session
即每一个连接到数据库的用户都建立一个session
提交事务 commit
回滚事务 rollback
drop table .. 用rollback不能回复
delete from .. 可以用rollback来回复的
在oracle中关于事务的处理上也会存在一个“死锁”的概念
一个session如果更新了一条记录,其他session无法立刻更新此条记录,
如果事务被提交了,则肯定无法回滚
ROWNUM 伪列
数据库备份
exp
数据库还原
imp
这一类的表是是10g 的新特性。
Drop Table 后,没有真正的删除表,而是在“垃圾站”中了。可以通过下面看到。
SQL> SHOW RECYCLEBIN
如果要彻底删除,可以使用:
SQL> PURGE TABLE "BINjR8PK5HhrrgMK8KmgQ9nw==";
删除这一个或删除全部。
SQL> PURGE RECYCLEBIN;
三种登陆验证机制:
操作系统验证
密码文件验证
数据库验证
linux下oracle启动过程: 监听服务(lsnrctl start 通过命令,不用用户密码),实例实例(sqlplus sys/oracle as sysdba,再startup实例 )
windows下oracle启动过程: lsnrctl start oradim -startup -sid orcl(把好几步骤封装了,傻瓜化了)
conn / as sysdba 默认首先采用的认证方式是操作系统认证
desc 兼容性好, 显示其数据表的结构,,
myslq oracles都 行
oracle 没有 as
select * from dual
oracle中以字符串表示的数据是不能自动转换成日期时间整理的,必须使用TO_DATE()函数
如:TO_DATE('2002-08-02 YYYY-MM-DD HH 24:MI:SS')
mysql里使用DATE_ADD()函数
直接使用加号+ 进行日期的加法运算
date+3 表示 日期的基础 上加3天
ADD_MONTH(date,number)
计算日期差额:
mysql: DATEDIFF(date1, date2)
oracle: 直接用-号
计算一个日期是星期几:
mysql: DATENAME(ff)
oracle: TO_CHAR函数 用于将数据 转换为 字符串 类型, TO_CHAR(date, format)
取出日期的指定部分:
DATE_FORMAT(date, format)
尽量使用显式转换,避免使用隐式转换,提高效率
mysql: cast() convert()
oracle:针对性更强 TO_CHAR TO_DATE TO_NUMBER
DB2: INT() DOUBLE() CHAR()
空值处理:
COALESCE()函数的简化版
mysql:IFNULL( , )
oracle:NVL( , )
填充函数
表连接 :
数据库系统会对 表连接 进行 查询优化。 使用表连接 会使检索更快速
在SQL中使用JOIN关键字 来实现 表连接。表连接有多种类型, 被主流数据库系统支持的有交叉连接 (CROSS JOIN)、内连接 (INNER JOIN)、外连接 (OUTTER JOIN),另外还有的数据库 支持 联合 连接 (UNION JOIN)
INNER JOIN是默认的 连接方式,一般可以省略 ...ON
不等值连接
交叉连接(没有ON), 普普通的方式 就是from 后 连接两个表名,显示定义是 使用CROSS JOIN,与INNER JOIN一样
CROSS JOIN的声明的交叉连接方式只能 被mysql sql server oracle所支持,在DB2中不被支持的,所以最好用隐式的,from 后 连接两个表名
自连接
from aa a1
inner join aa a2
where a1.name = a2.name and a1.id <> a2.id
左外连接 (还返回左表不符合条件的数据)
右外连接
全外连接
子查询
单值子查询:select a1,a2,(select f from ..) from
列值子查询:select a1,a2 from t1 ,(select .. from ..) t2
>any()
=some()
<all()
where exists
与上面的any等运算符不同,是单目运算符,它不与列匹配,用来检查第一行是否 匹配 子查询,可以认为exists就是用来测试 子查询 的结果是否为空的。
子查询在
insert语句中的应用
update语句中的应用(mysql不支持)
delete语句中的应用
标签:JOIN,数据库,10G,test,mysql,oracle,连接 From: https://blog.51cto.com/u_15012132/6291132