1. 用户
1.1 常用用户
用户 | 描述 | 默认密码 |
---|---|---|
sys | 系统管理员,拥有最高权限 | change_on_install |
system | 本地管理员,次高权限 | manager |
scott | 普通用户,默认未解锁 | tiger |
解锁scott账户
命令:
alter user scott account unlock;
1.2 显示当前登录的用户
Show user
1.3 创建用户
create user 用户名 identifiled by 密码;
1.4 删除用户
drop user 用户名
1.5 查看所有用户
select * from dba_users/all_users;
或者
select * from all_users;
1.6 查看用户角色
(1)当前用户被激活的角色:
select * from session_roles;
(2)当前用户被授予的角色:
select * from user_role_privs;
(3)全部用户被授予的角色:
select * from dba_role_privs;
(4)查看某个用户拥有的角色:
select * from dba_role_privs where grantee='用户名'
2. 登录
管理员身份登录:sqlplus/nolog--->conn/as sysdba
普通用户登录:sqlplus/nolog---->conn 用户名/密码
管理员切换到普通用户:conn 用户名/密码
普通用户切换到管理人员:conn sys as sysdba,然后输入密码回车
3. 权限
Oracle11g具有二百多种权限,可以通过下面语句查看:
SELECT * FROM SYSTEM_PRIVILEGE_MAP;
3.1 系统权限分类
- DBA:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
- RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
- CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource,dba权限。
3.2 常用权限
CREATE SESSION 创建会话
CREATE SEQUENCE 创建序列
CREATE SYNONYM 创建同名对象
CREATE TABLE 在用户模式中创建表
CREATE ANY TABLE 在任何模式中创建表
DROP TABLE 在用户模式中删除表
DROP ANY TABLE 在任何模式中删除表
CREATE PROCEDURE 创建存储过程
EXECUTE ANY PROCEDURE 执行任何模式的存储过程
CREATE USER 创建用户
DROP USER 删除用户
CREATE VIEW 创建视图
3.3 分配权限
grant 权限名称1,权限名称2 to 用户名 with admin option
3.4 回收系统权限
revoke create session from 用户名
4. 角色
4.1 显示角色信息
查询所有的角色:
select * from dba_roles;
查询用户的角色:
select GRANTED_ROLE from dba_role_privs where grantee = '用户名';
查询角色具有的权限:
select privilege from role_sys_privs where role='角色名';
查询用户具有的权限:
select * from session_privs;
4.2 创建角色
创建公用角色:
create role 角色名 not identified
创建公用角色:
create role 角色名 identified by 密码
4.3 为角色授权
创建用户没有分配任何权限的时候,sqlplus上登录该用户会报错
角色授予命令:
grant 权限名称 to 角色名
4.4 为用户分配角色
grant 角色名 to 用户名 with admin option;
加上with admin option是为了用户可以将system分配给它的角色分配给别的其他用户
4.5 删除角色
drop role 角色名称;
5. oracle基本操作
建表空间:
create tablespace 表间名 datafile '数据文件名' size 表空间大小;
【路径可以沿用系统自带数据文件,但是记得修改文件名】
知识点普及:
Oracle数据库的物理结构是由数据库的操作系统文件所决定,每一个Oracle数据库是由三种类型的文件组成:
-
数据文件
select name from v$datafile;
-
日志文件
select * from v$logfile;
-
控制文件
select name from v$controlfile;
数据库的文件为数据库信息提供真正的物理存储(就是数据文件)
一个oracle数据库有一个或多个数据文件
一个数据文件只与一个数据库连接
一旦建立,数据文件只增不减
一个表空间由一个或多个数据文件组成
:
创建表空间:
create tablespace data_test datafile 'D:\APP\YITOP\ORADATA\ORCL\TEST.DBF' size 2000M;
创建用户:
create user lee identified by 123456 default tablespace data_test;
授权:
grant connect,resource to lee;
从管理员切换到普通用户:
conn lee/123456
建表:
create table t_user(
id varchar2(10),
name varchar2(30),
age number(3)
);
为表添加约束:
alter table t_user add constraint ck_info_age check(age >=0 and age<=100);
6. 增删改查
6.1 增
insert into 表名(列1,列2...) values('数据1','数据2'...);
6.2 删
① 删除表字段
alter table 表名 drop column 字段名;
② 删除表数据
删除某条数据:
delete from 表名 where 条件;
删除整张表的数据:
truncate table 表名;
或者
drop table 表名;
删除有外键约束的表:
drop table student cascade constraints;
6.3 改
重命名表:
rename 表名 to 新表名;
向表中添加注释:
comment on table 表名 is '注释文字';
向列中添加注释:
comment on column 表名.列名 is '注释文字';
更新表数据:
update 表名 set 列名='新值' where 条件;
修改列名:
alter table 表名 rename column 列名 to 新列名;
修改列的属性:
alter table 表名
modify 列名 varchar2(字符长度)/number(精度)/char(数据类型/default '默认值');
6.4 查
语法:
SELECT
[DISTINCT|ALL]
select_list
FROM table_list
[WHERE condition]
[group_by_clause]
[HAVING condition]
[order_by_clause]
7. 约束
语法:
alter table 表名 add constraint 约束名 约束(字段名);
:
添加检查约束:
alter table t_user add constraint ck_user_check check(age>=0 and age<=100)
添加外键:
alter table scores
add constraint fk_scores_infos_stuid foreign key(stuid)
references infos(stuid) on delete cascade;
主键约束:
alter table 表名 add constraint 约束名称 primary key(列名);
不为空:
alter table 表名 add constraint 约束名称 not null(列名)
唯一约束:
alter table 表名 add constraint 约束名称 unique(列名);
默认值约束:
alter table 表名 add constraint 约束名称 default '默认值';
8. 分页
查询第一条记录:
select *
from (select * from emp order by sal desc)
where rownum = 1;
查询前3条:类似Sqlserver中的TOP 3
select *
from (select * from emp order by sal desc)
where rownum <= 3;
查询第2至第3条记录:
select *
from (select t.*, rownum as no
from (select * from emp order by sal desc) t)
where no between 2 and 3;