Oracle之 用户管理,表管理


内容结构:

                 基础部分:  用户管理,表管理

                 高级部分:表查询,权限,角色,函数 数据库管理,约束,索引,事务,PL/sql编程

Oracle的基本使用

1.   show user;  显示当前用户

2.   exit(;) 断开数据连接且退出sqlplus

3.   连接命令: conn (connect)  system/密码;

Disc[onnect]   断开连接;

Passw[ord]  修改用户的密码,若要修改其他用户的的密码,需要用sys/system登录

文件操作命令

1.   start 和@

说明:运行sql脚本 sql>@ d:a.sql 或者sql>start d:a.sql

2.   edit

编辑指定的sql脚本 sql>edit d:\a.sql

3.   spool(将第一个spool以下和第二个spool以上的所有内容输出到指定内容中去)

将sql*plus屏幕上的内容输出到指定文件中去;sql>spoold:\b.sql 并输入到sql>spool off

 

显示和设置环境变量

控制输出的格式:

Linesize:设置显示行的宽度,默认是80个字符

Show linesize  ; set linesize 90;

Pagesize  设置每页显示的行数目,默认是14。

 

 

 

 

Oracle用户管理

1.     创建用户create user 【用户名】xiaoming  identified  by【密码】m123

注意:创建用户的权限需要系统管理员权限!!!

2.     删除用户

一般以DBA的身份去删除某个用户,如果用其他用户去删除用户则需要有drop user 的权限,当该用户已经新建了表,则需要级联删除!!!

Drop user 用户名 [cascade]

3.     创建的新用户没有任何权限,甚至登录数据库的权限都没有,需要为其制定相应的权限。给一个用户赋予权限是grant ,回收权限是revoke。

注意:权限,角色的分类

没有Create session 权限则无法连接数据库,

具有Resource权限的用户可以建表

对象权限:用户对其他用户的数据对象操作的权限,比如我新建的hfut用户对scott用户的emp表进行访问。包括:select、insert、update、delete、all(即前四种)、createindex等等。

让用户hfut拥有对用户scott的emp表的所有权限

【SQL> conn scott/tiger

已连接。

SQL>grant all on emp to hfut;

 

授权成功。】

 权限回收:revoke注意谁赋予的权限,就要谁来回收权限!【revoke update on emp from hfut;】先回收hfut的update权限

 

 

希望用户hfut可以去查询scott用户的emp表,并且还希望把这个权限继续给别人(nus):

————如果是对象权限,就加入with grant option;

grant all on emp to hfut with grantoption ;

————如果是系统权限,就加入 with admin option

                            Grant connect  on emp to hfut with admin option;

问题:当scott把hfut对于emp表的权限收回时,nus对emp表还有操作的权利的么?

 答案是:nus失去了对emp表的权限,【用户管理实验笔记】

使用profile管理用户口令:

     Profile是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default的profile。当用户没有指定profile选项,那oracle会将default分配给用户。

(1)   账户锁定

指定该账户登录时最多输入密码的次数,也可以指定用户锁定的时间(天),一般用dba的身份去执行该命令。

例子:指定用户tea最多只能尝试登录三次,锁定时间为2天;

         Create  profile  lock_account[文件名称] limit failed_login_attempts  3password_lock_time  2;

       Alter user tea profile lock_acount;    

              账户解锁

              Alter  user  tea  account  unlock

(2)   终止口令

为了让用户定期修改密码可以使用中指口令来完成,同样这个命令也需要dba身份来完成。

例子:给前面创建的用户tea创建一个profile文件,要求用户每隔10天要修改自己的登录密码,宽限期限为2天。

Create  profile   myprofile[文件名]  limit      password_life_time   10   password_grace_time     2;

Alter  user  tea[用户名]   profile   myprofile ;

 

口令历史:

       若希望用户在修改密码时,不能使用以前用过的密码,可以使用口令历史,这样oracle就会将口令修改的信息存放在数据字典中,这样当用户修改密码时,oracle机会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。

例子:

1.    建立profile

Createprofile password_  history limit       password_life_time   10 password_reuse_time10

password_reuse_time 10        //    制定口令可重用时间为10天,即十天后可以重用。

 

2.    分配给某一用户

Alter  user【用户名】

删除profile :

              当不需要某个profile文件时,可以删除文件

             Drop  profile password_history  [cascade]

 

 

 

Oracle表的数据类型:

              字符型:

                    Char  定长 最长2000字符  {查询效率高}

                                   Char(10) “枫杨” 前四个字符放“枫杨”,后添6个空格补全

                     Varchar2(20)  变长最长4000字符

                                   Varchar2(20) “春节” oracle 分配四个字符。这样可以节省空间

                 Clod   字符型大对象 最大4G

              数字型:

                           Number范围±10的38次方。

                            Number(5,2)  表示5位有效数字,2位小数,—999.99到999.99

                            Number(5) 表示5位整数  范围 ±99999

 

 

建立表:

学生表

       Create   table      student(

       xh number(4),

       sex char(2),

       birthday       date,

sal  number(7,2)

);

班级表:

       Create table classes (

calssId   number(2),

cname varchar2(40),

);

 

修改表(Alter  table  *** )

添加字段:

Alter table student add(classid  number(2),字段2   类型,……,字段n  类型);

 

修改字段长度:

Alter  table   student modify (xm varchar2(30));

 

修改字段的类型/或者名字(不能有数据):

Alter     table  student modify (xm  char(30));

 

删除一字段:

Alter table   student      drop      column   sal ;

 

修改表的名称:

Rename student to  stu ;

删除表

 Drop  table student ;

 

添加数据

 Insert into       student    values(1,’xiaoming’,’男’,’11-12月-1997’,2.355);

 

如何插入带有日期的表,并按照年月日的格式插入?

to_date函数:

insert  into emp values (999,'小红',to_date('1988-12-12','yyy-mm-dd'));


 

 

 

 

插入部分字段:

 Insert         into              student  values (‘A003’,‘jhon’,‘女’);

 

插入空值

 Insert  into student (xh,xm,sex,birthday,)

 Values(‘A004’,’martin’,’男’,null);

[查询时,只能使用  is null  或者is  not null]

 

修改一个字段的内容:

Update student        set         sex=‘女’,birthday = 10-9月-1996  where xh =’1001’;

修改含有null的数据

Is null

 

删除字段:

Delete from student;

删除记录,表结构还在,写日志,可以恢复,rollback,速度慢;

 

Drop table student;删除表结构和数据

 

Delete from student where xh=’001’;删除一条记录

 

Truncate table  student ;

删除表中所有的记录,表结构还在,不写日志,无法找回删除记录,速度快。

 


上一篇:Oracle复杂查询(三)


下一篇:oracle复杂查询(二)