天易07----韩顺平oracle讲解部分总结(02)(前奏补充)

来源:互联网 发布:java中合法的标识符 编辑:程序博客网 时间:2024/05/15 23:52

1)启动oracle自带的SQL PLUS命令:sqlplusw(在运行命令里输入此语句后会出现sql plus界面)  doc命令实现:sqlplus

2)启动SQL PLUS之后连接数据库命令:conn 用户名/密码@数据库名 ;

3)修改用户名密码命令:passw 回车后根据提示填写

4)将查询的内容结果全部放到一个 .sql文件中的命令:spool

a)spool f:\wzh.sql ; 在f盘建立一个wzh的sql文件

b)查询数据:select * from users;

c)spool off ; (此时已将users表中查询的数据全部保存到了wzh.sql文件中了)

5)

a)创建新用户命令:create user wangzihu(新用户) identified by 1234(密码);

b)想用新建的用户进行登录则必须为新用户赋予权限,命令为:

grant connect to wangzihu;

c)想在新建的用户wangzihu中具有创建表的权限,则需执行以下指令:

 1.重新连接到dba权限的用户,例如system用户

 2.进行授权(resource)

Grant resource to wangzihu;

6)访问不同用户中的表

例如:wangzihu用户想访问system用户中的users表,命令如下:

 grant select on users to wangzihu;(这是在用户为system下所执行的命令,此时如果在

wangzihu用户下只能查询system用户中users表的数据)如果想对system表中的数据进

行增删改查则可以执行如下命令:

grant all on users to wangzihu;

注意:在wangzihu用户中进行查询system用户中的表时,必须要加上system,例如:

Select * from system.users;

7)回收权限(revoke)命令如下:

Revoke select on users from wangzihu;(这条指令也是在system用户下执行的)

8)账户锁定(profile)

概述:指定该账户登陆时最多可以输入密码的次数和天数

例如:指定wangzihu用户最多尝试3次登陆,锁定的天数为2天

a)创建sql命令:

create profile wangzihu_lock limit failed_login_attempts 3 password_lock_time 2;

b)执行sql命令:

alter user wangzihu profile wangzihu_lock;

9)账户解锁

Sql命令:alter user wangzihu account unlock;

(2012-5-29)

//oracle函数与存储过程

1.函数

1)创建函数

create or replace function get_tax(x number)

return number as

begin

 declare y number;

 begin

   y:=x-2000;

   if x <= 0 then

     return 0;

     end if;

     return y*5/100;

     end;

     end get_tax;

2)执行函数

SQL> select get_tax(1000) from dual;

结果显示:

GET_TAX(1000)

-------------

         -50

2.存储过程

1)存储过程(in)

创建:

create or replace procedure update_test(uid in varchar2,uname in varchar2)

as

begin

 update test set username=uname where userid=uid;

 commit;

 end update_test;

执行:

SQL> execute update_test('06','王子虎');

2)存储过程(out)

创建:

create or replace procedure test_up(uid out varchar2,uname out varchar2)

as

begin

select * into uid,uname from test where userid='04';//不能缺少into

end test_up;

执行:

SQL> var id varchar2(10);

SQL> var name varchar2(30);

SQL> exec test_up(:id,:name);//括号里必须加上冒号,这和in的不同

结果显示:

PL/SQL procedure successfully completed

id

---------

04

name

---------

天易

(2012-6-5)

1)对数据分组的总结(group by)

a).分组函数只能出现在选择列表、having、order by子句中

b).如果在select语句中同时包含有group by,having,order by那么它们的顺序是group by,having,ordre by

c).在选择列中如果有列、表达式、和分组函数,那么这些列和表达式必须有一个出现在group by子句中,否则会出错。例如:

select  deptno,avg(sal),max(sal) from emp group by deptno having  avg(sal)<2000;

这里deptno就一定要出现在group by中