Oracle百问百答(二)

来源:互联网 发布:nat网络 编辑:程序博客网 时间:2024/06/16 06:21

Oracle百问百答之基础部分(二)

11 nvl函数有什么用?

NVL( string1, replace_with)

功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值。

注意事项:string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数。

例:NVL(TO_CHAR(numeric_column), 'some string') 其中numeric_column代指某个数字类型的值。

12. 数据库名和数据库实例名有什么区别?

 数据库名是用于区分数据库的一个内部标识,是以二进制方式存储在数据库控制文件中的参数。数据库创建之后不能再修改这个参数。数据库创建后,它被写入数据库参数文件pfileSpfile中。格式如下:

db_name="orcl"

db_domain=dbcenter.toys.com

instance_name=orcl

service_names=orcl.dbcenter.toys.com

 数据库实例是操作数据库的实体,用户通过实例与数据库交互。实例名用来标识这个数据库实例。数据库创建后,实例名可以被修改。也在数据库参数文件pfileSpfile中。格式如下:

instance_name=orcl

service_names=orcl.dbcenter.toys.com

 数据库名与实例名可以相同。一个数据库对应一个实例的情况下设置成相同的便于标识数据库。

13.简述profile的作用?

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

账户锁定:
概述:指定该账户(用户)登陆时最多可以输入密码的次数,也可以指定用户锁定的时间()一般用dba的身份去执行该命令。
例子:指定scott这个用户最多只能尝试3次登陆,锁定时间为2天,让我们看看怎么实现。
创建profile文件
SQL> create profile lock_account limit failed_login_attempts 3 password_lock_time 2;

SQL> alter user scott profile lock_account;

给账户解锁:
SQL> alter user tea lock_account unlock;

14.简述存储过程的用法?

创建:

create or replace procedure a_proc(a_name IN varchar2,a_num OUT number)

is

num_1 number;

num_2 number;

begin

select stu_id,age into num_1,num_2 from stuinfo 

where stu_name=a_name;

a_num:=num_1*num_2;

end;

调用:

SQL> set serveroutput on

SQL> declare tname varchar(20);

 2  tnum number;

 3  begin

 4  tname:='gggzz';

 5  a_proc(tname,tnum);

 6  dbms_output.put_line(tnum);

 7  end;

 8  /

15.怎样以大写方式显示所有员工姓名的前3位字符?

 

16.怎样以首字母大写后面小写的方式显示员工姓名?

17.怎样显示满10年服务年限的员工的姓名和工号?

18.怎样显示入职日期在当月最后十天入职的员工姓名和工号?

19.cmd命令窗口有哪些常用快捷键?

返回上一个命令,返回下一个命令,逐个字符返回上个命令
F8 逐个返回上一个命令,但光标处于第一个字符
F3 仅能返回上一个命令
F7 弹出命令历史记录窗口,结合↑↓按键选择命令,回车执行选中的命令。太长的命令可以使用键在cmd窗口查看。home切换到第一个命令,end最后一个,PageDownPageUp翻页查看。
F9 输入命令号码,该号码由F7中命令记录来定义。如果要多次执行某个命令,而且是长命令,可以使用该技巧。或许更有效率。
Alt+PrintScreen cmd窗口进行截图。
insert 使光标转换为插入状态,键入字符时可以替换光标当前字符。

20.表中重复的记录是怎样查询的?

a、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people where peopleId in (select  peopleId  from people  group by  peopleId  having count(peopleId) > 1)

b、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people where peopleId  in (select  peopleId  from people  group  by  peopleId   having  count(peopleId) > 1)
and rowid not in (select min(rowid) from  people  group by peopleId  having count(peopleId )>1)
c
、查找表中多余的重复记录(多个字段) 

select * from vitae awhere (a.peopleId,a.seq) in  (select peopleId,seq from vitae 

group by  peopleId,seq  having count(*) > 1)
d
、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

delete from vitae awhere (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
e
、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae awhere (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

 

 

原创粉丝点击