目录
1.2 Oracle与其他数据库(SQL Service、MySQL)的区别
1.Oracle的基础介绍
1.1 Oracle版本发展史
Oracle版本:
Oracle8i
Oracle 9i --网络版
8i/9i不可能再用了,就相当于win2000,我们现在用10g/11i比较多。
Oracle 10g --企业版、标准版、标准版1、精简版
Oracle 11g -- 本人使用的是Oracle 11g
1.2 Oracle与其他数据库(SQL Service、MySQL)的区别
Sql中可以随时随意的创建数据库;
但Oracle只有一个数据库,一台电脑只会安装一个数据库。
Oracle只有创建账户,一个账号一个数据库。
1.3 账户、表空间、数据库
案例:两个用户创建2个不同的数据库
这两个同学都要在Oracle中找自己的数据库,刚说了一个Oracle只有一个数据库,
怎么办?为两个同学各创建一个账户,给账户开辟数据库空间----表空间(TableSpace)。
表空间代替了数据库,创建数据库就是开辟账户空间。
注意:Oracle为A账户开辟个空间,为B账户开辟个空间,请问A和B是不是在用同一个数据库?不同账号之间能不能互访?
答:是,不能(如果B要访问A的表空间需要管理员授权或者A表空间把自身的表公开)
1.2 启动服务,进入Oracle,PL/SQL
1.2.1 创建数据库和账户
数据库
物理的:数据文件.dbf;日志文件.log;控制文件.ctl;
虚拟的:表空间(可以用户开辟)
数据库实例
启动的数据库对应一个数据库实例,由实例来访问和控制数据库。
注意:
问:先创建表空间还是账户?
先创建表空间,再给账号,比如告诉你这块地是你的,然后给你片钥匙。
关于账户:
----sys和system管理员账号,在装软件时就已分配好的,因此可以用这账号开辟空间。
----scott(释放账号:给我们用和看的),密码是tiger。
注意:千万不要去改这账号和密码,全球都是一样的。(改是可以改,但别去改)
关于账户登录:
可以用sys或system管理员账号登录,也可以用scott账户登录。
怎么登?
1.在开始菜单中选择oracle目录--应用程序开发--sql plus
2.在cmd状态下,直接通过命令sqlplus来登录。
当然cmd下的用户界面差,我们用PL-SQL第三方来操作oracle,但是不能说sqlplus就不用了,以后在unix下面就只能用sqlplus写代码,比较悲催
在oracle下输入命令:
sys/sys as sysdba --sysdba是数据库系统管理员
解释:第一个sys是账户,第二个sys是密码,该账号做为管理员登录。
思考:
管理员账户可以调用一般账户的表吗?
select * from scott.emp;
一般账户可以调一般账户的表吗?
答:不能,需要授权
1.2.2 创建表空间
基于应用性能和管理方面的考虑,最好为不同的用户创建独立的表空间。
创建表空间的语法:
create tablespace 表空间名
例:
create tablespace t_table
datafile 'e:\111.dbf' --数据文件存方地址
size 100M;
--只要上面三行就OK了
autoextend on next 32 maxsize unlimited
logging
extent management local
segment space management auto;
My Objects
Functions 函数-
Procedures 存储过程-
Packages 包-
Package bodies 包体-
Types 类型-
Type bodies 类型体-
Triggers 触发器-
Java sources
Jobs 工作
Queues 队列
Queue table 队列表格
Libraries
Directories
Tables 表格-
Views 视图-
Materialized views
Sequences 序列-
Users 用户-
Profiles 控制文件-
Reles 角色-
Synonyms 同义词-
Database links
Tablespaces 表空间-
Clusters
用;号隔开,代表代码写完了,可以执行了
如果你是管理员账号,调别的用户的账号可以吗?可以
账户.表;
select * from scott.emp;
如果你是一般用户的账号可以调别人的吗?正常情况下不行,除非授权给别人访问自己的。
关于账户在Oracle有另一个名词叫:模式
select * from 模式.表;
比如scott就是个模式
比如其它的对象就是个模式
每个对象都是个模式
1.2.3 给表空间分配账户
1.创建账户,指定访问表空间,但未给它赋任何权限,登录时是登不了的!
create user 用户名
identified by 密码
[default tablespace 表空间]
[temporary tablespace 临时的表空间] --该行一般不用
案例:
create user u_dml
identified by 123
default tablespace t_table
1.2.4 要给角色授权
(把用户与角色区分搞清楚)
角色:唐俪是个学生,是指角色
用户:唐俪 ,是一个用户
给角色授予权限:
找到users-用户名-编辑-角色权限
connect:临时用户的权限
resource:正式用户的权限
DBA:管理员(一般不用)
分配权限或角色:
Grant privileges or role To user;
例:Grant connect,resource to u_dml;
--给dml角色分配权限
1.2.5 撤销权限或角色
Revoke privileges or role FROM user;
例:revoke connect,resource from u_dml; --撤销dml角色的connect,resource权限
1.2.6 删除(注销)用户
DROP USER test
DROP USER test CASCADE
--cascade表示删除用户的同时删除其建立的实体
另一种授权:将某个表空间和表空间的操作权授给某用户
//将查询scott用户的stu表的权限授给test用户
GRANT SELECT ON scott.stu TO test;
1.3 建表
建的表都在Tables里面。
两种建表方式:
1.视图
2.代码
create table tb_88
(
sid number, --int类型用number
sname varchar2(55), --没有varchar
sex varchar2(10)
)
--查看表里的数据:
select * from tb_88;
问:Oracle中有标识列吗?
oracle没有标识列,不过有个替代品(触发器+序列)
1.3.1 插入数据
1.3.1.1 插入单条数据
insert into tb_88(sid,sname,sex)
values(10,'张天','男');
1.3.1.2 同时插入多条数据
Insert into tb_88
Select 10,’张天’,’男’ from dual union
Select 20,’张三’,’女’ from dual
1.3.2 指定表和字段的注释
COMMENT ON TABLE pet IS '宠物';
COMMENT ON COLUMN pet.name IS '宠物昵称';
格式:
Create table tb_emp(
Sid number,
Sname varchar2(20) nut null,
Sex varchar2(4),
Constraint pk_sid primary key(sid),
Connstraint ch_sex char(sex)
)
注意:
不要物理删除硬盘上的dbf文件,oracle启动时到时找不到文件,oracle也启动不了,需要重装oracle。
删除:删除一个数据库,是先删表空间,还是先删用户?
答:先删用户在删表空间
drop user 用户名;
drop tablespace 表空间;
1.3.3 联合主键的使用
建的主键表:
外键表:
重点在主表的联合主键,然后子表在使用联合主键的时候就要有两个参才可以使用主键的联合主键