Oracle(一)常用命令,与用户管理

来源:互联网 发布:java编写超级玛丽 编辑:程序博客网 时间:2024/06/05 19:35

常用命令

进入登陆  sqlplus

(1)   给用户锁定 alter user scott account look;

给用户解锁 alter user scott account unlook;

(2)   show user 显示当前用户名是什么

(3)   切换用户 conn ,例:conn用户名/密码

conn[ect] 用户名/密码@网络[as sysdba /assysoper]

(4)   disc 用于断开和oracle的链接,但不退出sqlplus窗口

(5)   exit 用户断开和oracle链接,同时退出sqlplus窗口

(6)   passw[orcl] 用于修改用户密码

语法:password 用户名;

          给自己修改密码,则可以不带用户名,给别人修改(前提sys,system)。

(7)   set linesize 140; 设置行数为140。

(8)   & 交互命令

(9)   edit 命令  用于编辑脚本

(10)  spool  将屏幕上的内容输出到指定文件中

sql>spool d:\b.sql 并输入 sql>spool off

用法:1.spool 文件路径2.执行操作 3.spoll off

(11)  show parameter name查看当前登录数据库的配置参数。

(12)  select name from v$database;查看当前数据库实例名

(13)  exit后,sqlplus /@实例名 assysdba; 链接到此实例

Sqlplus 命令

linesize

用于控制每行显示多少个字符,默认80个

用法:set linesize 字符数

pagesize

        用于每页显示多少行

        用法:set pagesize 每页显示的行数

 

Oracle 用户管理

    需求:假设你是oracle管理员,需要给一人分配一个账号

1.  创建用户:基本语法(前提需要具备dba)

Create user 用户名 identified by 密码;

2.  给用户修改密码

给自己修改:password 用户名

给别人修改:alter user 用户名 identified by 新密码

 

表空间

       表存在的空间,一个表空间是指向具体的数据文件。

1.  create usershunping identified by m123   //shunping将用数据据方式验证

default tablespace users   //shunping的表会建在users表空间中

temporary tablespace temp   //shunping临时表建在temp中

quota 3m on users;   //定量数据最大为3m

刚创建的用户是没有权限的(需要dba给用户授权),连登陆都不行(要分配相应的权限)。

2.  如何给用户分配权限:

grant create session to xiaoming;

grant connect to 用户;

grant resource to 用户;           角色

          

           给一个用户赋权限命令为grant,回收权限命令revoke

           基本语法:

grant 权限/角色to 用户;

               revoke 权限/角色from 用户;

3.  删除用户

   当删除一个用户的时候,如果这个用户自己已经创建过数据对象,那么我们在删除用户的时候,需要加选项cascade,表示删除用户的同时,吧该用户创建的数据对象,一并删除。

    语法:drop user 用户cascade;

4.  方案(schema)

小技巧:如果希望看到某个用户的方案有什么数据对象,可以用ql/sql developed。理解:当一个用户创建好后,如果该用户创建了任意一个数据对象,这时,我们的dbms就会创建一个对应的方案与该用户对应,并且该方案的名字和用户名一致。

‘方案’运用:

    让xiaohong用户可以去查询scott的emp表。

1.  先用scott登陆,conn scott/tiger

2.  赋权限 grant select[delete|update|insert|all]on emp to 用户

注;如果有两张表同名,方案名.表名   scott.emp

Xiaohong 查询scott的emp表时,需要select * from scott.emp;

 

如何让得到权限的用户,把权限继续分配给其他用户?

系统权限:with admain option

对象权限:with grant option

           问题:想办法将tea自己拥有的对scott.emp的权限转给stu

               Scott—tea—stu[权限转移]

           grant all on scott.emp to tea withgrant option;

5.使用profile文件对口令进行管理

需求:允许某个用户,最多尝试登陆3次,如果3次没有成功,则锁定两天,两天后才能重新登陆。

语法:创建---create profile 文件名 limit failed_login_attempts 3 password_look_time2;

分配---alter user 用户名 profile 文件名;

解锁---alter user 用户名 account unlock;

 

终止口令:

需求:设定一个账号密码,生命期最多为10天,宽限期为2天,到时必须设置新密码。

语法:create profile 文件名 limit password_life_time 10 password_grace_time 2;

分配和解锁和上面相同。

    口令历史:

        用户修改密码时,不能使用以前使用过的密码。

Create profile 文件名 limit password_life_time 10 password_grace_time 2password_reuse_time 1;

 

    删除:profile

           Drop profile 文件名;

5.  oracle启动流程 windows

(1) lsnrctl start 启动监听

(2) oradim -startup -sid   数据库实例名

 

数据类型

(1)    Char(size):如果存放数据的长度是固定的,则用char,为定长,最大为2000,存取速度快。

(2)    Varchar2(size):数据不固定,则用varchar2  最大为4000

(3)    Nchar(size):编码方式为unicode,一个汉字,占用nchar的一个字符空间,注:一个汉子占用char的两个字符空间。

(4)    Nvarchar2(size):编码是unicode。

(5)    Clob:字符型大对象。1.变长。2.最大8tb

(6)    Blob:二进制数据。1.变长。2.最大8tb

(7)    Number(p,s):例number(5,2)表示一个数有5位有效数,2位小数。变长

(8)    Date:添加时候要使用默认格式:’dd-mm-yyyy’。

 

表的管理

(1)    添加一个新字段

alter table 表名 add(新的列名,数据类型);

(2)    修改字符类型

alter table 表名 modify(列名,数据类型);

(3)    删除一个字段

alter table 表名 drop column 列名; 

(4)    给表修改名字

Rename 旧表名 to 新表名

(5)    查看表的结构:desc表名

(6)    查看数据的内容:dump(列名)

例:select name,dump(name) from表名;

(7)    删除表:drop table 表名;

 

注意:1.字符和日期数据应包含在单引号中。

2.oracle中‘ ’ = null;

 3.如果给表的每列都添加值,则可以不带列名。

 

Crud

       Update

              把所有学生的奖金都提高10%

              写法:update students set fellowship = fellowship*1.1 where 1=1;

                       Update students set fellowship =fellowship*1.1;

              注意:不写where与where1=1,意义相同,都是改变所有。

              如果没有where子句,则更新所有行,(update和delete特别小心)

             

              给一个学生(字段),奖学金设为null.

              Updatestudents set fellowship = null wherer name = ‘ls’;

              给奖学金为null的学生,设为10元

              Updatestudents set fellowship = 10 where fellowship is null;

      

       Delete

              如果不使用where,将删除表中所有数据!!!

              Delete语句不能删除某一列的值,如果要删除,则使用update

      

       Selete

              如何取消重复行:distinct

              Selectdistinct 列1,列2 from emp;

              Selectsal,joB,deptno from emP where EName = ‘SMITH’;

              注:oracle的sql语句不分大小写,但是内容区分大小写。

 

原创粉丝点击