日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle一般人能不能学,Oracle人门学习笔记

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle一般人能不能学,Oracle人门学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.如何顯示當前用戶是誰?

show user;

2.進入sql*plus管理工具,運行里面輸入

sqlplusw就可以了。

3.disc斷開當前數據庫的連接

4.passw修改密碼命令

示例:passw 回車

更改snapall的口令

舊口令:*******

新口令:******

重新鍵入新口令:******

口令已更改

5.如何在忘掉用戶密碼的情況下修改密碼。

alter user sys identified by snapall;

6.ping命令的其他技巧:在一般情況下還可以通過

ping對方讓對方返回給你的TTL值大小,粗略的判斷

目標主機的系統類型是Windows系列還是UNIX/Linux

系列,一般情況下Windows系列的系統返回的TTL值

在100-130之間,而UNIX/Linux系列的系統返回的

TTL值在240-255之間,當然TTL的值在對方的主機里

是可以修改的,Windows系列的系統可以通過修改注

冊表以下鍵值實現。

7.文件操作命令

a.start和@打開

sql>@ d:/1.sql

sql>start d:/1.sql

b.edit編輯

sql>edit d:/1.sql

c.spool將sql*plus上的內容輸出到指定文件中去

sql>spool d:/1.sql并輸入sql>spool off

8.linesize設置顯示行的寬度,默認是80

show linesize;

set linesize 90;

pagesize設置每頁顯示行的數目,默認是14

用法與linesize一樣

9.授權和收回權限(系統權限是不會級聯回收的,對

象權限會級聯回收的)

grant connect to user;

grant select on emp to xiaoming;給小明賦予

查詢當前用戶的下的emp表的權限。

revoke connect to user;

revoke select on emp from xiaoming

如果有其它權限,收回select不會對其它權限由

影響。

10.resource這個權限可以在任意表空間下面建表。

11.如果是對象權限:

如果想讓用戶有賦予權限的權限,可以在后面添加

with grant option;

例如:grant select on emp to xiaoming with

grant option;

如果是系統權限

添加with admin option;

12.用戶登陸次數太多會被限制。

創建profile文件

create profile lock_account limit

failed_login_attempts 3 password_lock_time 1;

alter user xiaoming lock_account;

13.要求用戶定期更改密碼

create profile myprofile limit

password_life_time 10 password_grace_time 2;

aler user xiaoming profile myprofile;

要求用戶每10天去修改密碼,寬限期為2天。

14.當不需要profile時,可以去刪除。

drop profile myprofile cascade;

15.如何查看一個表的結構

desc 表名;

改一個表的名字

rename 舊表名 to 新表名;

16.oracle默認的日期格式是'09-6月-99'

表示是1999年6月9號。

可以更改數據庫日期的默認格式。

alter session set nls_date_fromat='yyyy-

mm-dd';

17.delete 語句刪除后可以恢復;

先savepoint aa;

然后delete;

然后rollback to aa;

18.清頻命令

clear

19.使用列的別名排序

select ename,sal*12 "年薪" from emp order by

"年薪" asc;

列名需要使用雙引號圈中

20.如何取消重復行

select distinct deptno,job from demp;

21.打開顯示操作時間的開關

set timing on;

22.瘋狂復制法

insert into users (userid,username) select

* from users;

然后不斷執行;

23.oracle對字段里面的內容是區分的,對字段本身

不區分。

24.如何處理NULL值

使用nvl函數

select sal*13+nvl(comm,0)*13 from emp;

25.用查詢結果創建表

create tabel mytable1(id,name,sal) as select

empno,ename,sal form emp;

26.union命令

將兩個查詢出來的集合并,重復的只保留一條數據

union all 命令

將兩個查詢出來的集合并,重復的也都保留原有數

目。

intersect 命令

取交集

minus 命令

取差集,用前面那個查詢結果減去后面那個查詢合

集。

27.to_date函數

插入時間格式,to_date('1988-12-2','yyyy-mm-

dd');

默認格式為2-12月-1988,不要用函數來表示。

28.update 語句跟新數據技巧

update emp set (job,sal,comm)=(select

job,sal,comm from emp where ename='SMITH')

where ename='SCOTT';

29.創建保存點命令

savepoint a1;

回退命令;

rollback to a1;

回退全部事務

rollback

注意:一旦提交commit;原來的保存點就沒有了

,也就無法回退。

30.只讀事務:只是允許執行查詢,不能執行其他

dml操作。設置了只讀事務后,其它會話更改信息,

也不會對當前的只讀事務由影響。

命令如下:set transaction read only;

31.字符函數

lower(char):將字符串轉化為小寫的格式。

upper(char):將字符串轉化為大寫的格式。

length(char):返回字符串的長度。

substr(char,m,n):取字符串的字串。m代表從第幾

個開始取,n代表取的字符個數。

select upper(substr(ename,1,1))||lower

(substr(ename,2,length(ename)-1)) from emp;

replace(char1,search_string,replace_string)

替換函數

32.數字函數

round(n,[m])該函數用于執行四舍五入,如果省掉

mround(n),則四舍五入到整數;如果m是正數,則

四舍五入到小數點的m位后,如果m是負數,則四舍

五入到小數點的m位前。

trunc(n,[m])該函數用于截取數字,如果省掉m,就

截取小數部分,如果m是正數就截取到小數點的m位

后,如果m是負數,則截取到小數點的前m位。

mod(m,n)

floor(n)返回小于或是等于n的最大整數。

ceil(n)返回大于或是等于n的最小整數。

dual表是一個測試表,用了做測試的。

33. 日期函數

sysdate()------返回系統時間

add_months(d,n)

last_day(d): 返回d日期的月的最后一天

34.轉換函數

to_char()

to_char(sal,'L99999.99');

to_char(hiredate,'yyyy-mm-dd hh24:mi:ss')

35.系統函數

sys_context

teminal:當前會話客戶所對應的終端的標示符

lanuage:語言

db_name:當前數據庫的名稱

nls_date_format:當前會話客戶所對應的日期格式

session_user:當前會話客戶所對應的數據庫用戶名

current_schema:當前會話客戶所對應的默認的方案

例如:想查詢當前用的是哪個數據庫

select sys_context('USERENV','db_name') from

dual;

host:返回數據庫所在主機的名稱

36.普通dba沒有startup 和shutdown權限。

37.用戶名,權限,角色

查詢dba_user可以顯示所有數據庫用戶的詳細信息

查詢數據字典視圖dba_sys_privs,可以顯示用戶所

具有的系統權限;

查詢數據字典視圖dba_tab_privs可以顯示用戶具有

的對象權限;

查詢數據字典視圖dba_col_privs可以顯示用戶具有

的列權限;

查詢數據字典視圖dba_role_privs可以顯示用戶具

有的角色;

38.

查詢數據庫有多少種角色?

select * from dba_roles;

一般預先定義為25個

查詢數據庫中所有的系統權限,一般是dba

select * from system_privilege_map order by

name;

查詢數據庫中所有的對象權限,一般是dba

select distinct privilege from dba_tab_privs;

查詢數據庫的表空間

select tablespace_name form dba_tablespace;

如何查詢一個角色包括的權限?

a.一個角色包含的系統權限

select * from dba_sys_privs where

grantee='CONNECT';

或者

select * from role_sys_privs where role='';

b.一個角色包含的對象權限

select * from dba_tab_privs where

grantee='CONNECT';

如何查看某個用戶具有什么用的角色?

select * from dba_role_privs where

grantee='';

顯示當前用戶可以訪問的所有數據字典視圖

select * from dict where comments like '%

grant%';

顯示當前數據庫的全稱

select * from global_name;

39.改變表空間的狀態

1.使表空間脫機

alter tablespace 表空間名字|offline;

2.使表空間聯機

alter tablespace 表空間名字 online;

3.只讀表空間

當設置為只讀是,就不能進行修改操作(但是系統

表空間無法改為只讀狀態)

alter tablespace 表空間名字 read only;

4.設置表空間為可讀可寫

alter tablespace 表空間名字 read write;

40.

1.如果知道表空間名字,想顯示該表空間的的所有

select * from all_tables where

tablespace_name='表空間名字';

2.如果知道表名,想查看該表屬于哪個表空間

select tablespace_name,table_name from

user_tables where table_naem='表名';

3.刪除表空間

drop tablespace '表空間' including contents

and datafiles;

41.移動數據文件

假如說一塊磁盤的一部分磁道被損壞了,改數據文

件不能使用了,為了能夠重新使用,需要將這些文

件的副本移動到其他磁盤,然后恢復。

1.確定數據文件所在的表空間

select tablespace_name from dba_data_files

where file_name='數據文件的路徑';

2.使表空間脫機

確保數據文件的一致性,將表空間轉變為offline的

狀態。

alter tabespace 表空間名字 offline;

3.使用命令移動數據文件到指定的目標位置

host move 損壞數據文件的路徑 新的數據文件的路

徑;

4.執行alter tablespace命令

在物理上移動了數據文件后,還必須一致性命令對

數據文件作邏輯的修改;

alter tablespace 表空間名 rename datafile

'原來的數據文件路徑' to '新的數據文件路徑';

5.是表空間聯機

alter tablespace 表空間名 online;

42.

1.顯示表空間的信息

select tablespace_name from dba_tablespaces;

2.顯示表空間所包含的數據文件

select file_name,bytes form dba_date_files

where tablespace_name=='表空間名';

43.約束:約束用于確保數據庫數據滿足特定的商業

規則。在oracle中,約束包括:not null(非

空),unique(唯一,該列不能重復,但是可以為空

),primary key(主鍵,該列不能重復,而且不能

為null),foreign key(外鍵)和check(限制條件

)五種。

如果在建表時忘記建立必要的約束,可以在建表后

用alter table命令來為表增加約束,但是要注意,

增加not null約束時,需要 使用modify選項,而增

加其他四種約束使用add選項。

例如:alter table jacky modify 字段名 not

null;

alter table jacky add constraint 約束名

unique(字段名);

alter table jacky add constraint 約束名

check(字段名 in ('zon','df','dfs'));

如何刪除約束?

alter table 表名 drop constraint 約束名;

有些主鍵要刪除,可能有外鍵的關系,無法刪除,

要用如下命令:

alter table 表名 drop primary key cascade;

如何顯示約束信息

1.顯示約束信息

select

constraint_name,constraint_type,status,valida

ted from user_constraints where table_name='

表名';

2.顯示約束列

select column_name,position form

user_cons_columns where constraint_name='約束

名';

44.索引

create index emp_index on emp(ename,job);

create index emp_index on emp(job,ename);

這兩個索引時不同的。

45.權限

系統權限不是級聯回收的。

對象權限是級聯回收的。

46.角色

創建角色。

create role myrole1 not identified;

給空的角色賦予權限

grant create session to 角色名 with admin

option;

分配角色給用戶

grant 角色名 to 用戶名 with admin option;

刪除角色

drop role 角色名;

問:如果一個角色被刪除,那被分配這個角色的用

戶還有權限嗎?

答:用戶權限沒有了。

精細訪問控制

47.PLSQL編程

PLSQL是oralce在標準的sql語言上的額擴展。

1.創建一個存儲過程

create table mytest(name varchar2(30),passwd

varchar2(30));

create or replace procedure jacky219 is

begin

--執行部分

insert into mytest values('殷志剛','123');

commit;

end;

/

如何查看錯誤信息

show error;

如何調用過程

1.exec 過程名(參數1,參數2...)

2.call 過程名(參數1,參數2...)

編寫規范

1.注釋

單行注釋 --

select * from emp;--取得員工信息

多行注釋

/*...*/來劃分

2.標示符號的命名規范

1)當定義變量時,建議用v_作為前綴,例如v_sal

2)當定義常量時,建議用c_作為前綴

3)當定義游標時,建議用_cursor作為后綴;

4)當定義例外時,建議用e_作為前綴;

包含定義部分和執行部分的pl/sql快

declare

v_ename varchar2(5);--定義字符串變量

begin

select ename into v_ename from emp where

empno=&no;

dbms_output.put_line('雇員

名:'||v_ename);

end;

/

重要:其中into代表將查詢出來的值插入到v_ename

中去,&代表是要我們要從控制臺輸入值進去。

||代表是連接符。no只是隨便是個變量名,可以用

aaa,bbb都可以。

48.函數

函數用于返回特定的數據,一般返回一個值。

例:

輸入雇員的姓名,返回該雇員的年薪

create function sp_fun2(spName varchar2)

return number is yearSal number(7,2);

begin

select sal*12+nvl(comm,0)*12 into yearSal

from emp where ename=spName;

return yearSal;

end;

在sqlplus中調用函數的方法

var income number

call sp_fun2('殷志剛') into:income;

print income

1.包

包用于邏輯上組合過程和函數。

創建一個包,聲明了該包有一個過程和一個函數

create package sp_package is

procedure update_sal(name

varchar2,newsal number);

function annual_income(name varchar2)

returen number;

end;

2.給包 sp_package實現包體

create package body sp_package is

procedure update_sal(name varchar2,newsal

number)

is

begin

update emp set sal=newsal where ename=name;

end;

function annual_income(name varchar2)

return number is

annual_salary number;

begin

select sal*12+nvl(comm,0) into annual_salary

from emp

where ename=name;

return annual_salary;

end;

end;

3.如何調用包的過程或是函數

exec sp_package.update_sal('SCOTT','120');

49.觸發器

觸發器是指隱含的執行的存儲過程。當定義觸發器

時,必須要指定觸發的事件和觸發的操作,常用的

觸發事件包括insert,update,delete語句,而觸發

操作實際就是一個pl/sql快。可以用create

trigger來建立觸發器。

50.變量

1.定義標量

1.1定義一個變長的字符串

v_ename varchar2(10);

1.2定義一個小數 范圍-9999.99-9999.99

v_sal number(6,2);

1.3定義一個小數并給一個初始值為5.4:=是pl/sql

的賦值號

v_sal2 number(6,2):=5.4

1.4定義一個日期類型的數據

v_hiredate date;

1.5定義一個布爾變量,不能為空,初始值為false

v_valid boolean not null default false;

%type類型

val_jacky emp.ename%type;表示變量val_jacky和

表emp中的字段ename,的長度為標準,這樣就不會出

現長度不夠的情況。

2.符合變量

用于存放多個值的變量,主要包括

pl/sl記錄,pl/sql表,嵌套表和varray(動態表)

3.復合類型的pl/sql表

相當于高級語言的數組。

4.參照變量-ref cursor游標變量

例如:使用pl/sql編寫一個快,可以輸入部門號,

并顯示該部門所有員工的姓名和他的工資。

declare

type sp_emp_cursor is ref cursor;

test_cursor sp_emp_cursor;

v_ename emp.ename%type;

v_sal emp.sal%type;

begin

open test_cursor for select ename,sal from

emp where deptno=&no;

loop

fetch test_cursor into v_ename,v_sal;

//update emp set sal:=sal+100 where

sal<200 and ename=v_ename;

exit when test——cursor%notfound;

dbms_output.put_line('名字:'||v_ename||'

工資:'||v_sa;);

end loop;

end;

51.控制結構

1.if then endif;

2.if then else endif;

3.if then elsif then else endif;

4.循環語句

4.1 loop end loop;

4.2 while..loop end loop;

4.3基本for循環

4.4goto語句,跳轉;跳轉的語句必須加《》

4.5輸出語句開關:set serveroutput on;打開

set serveroutput off;關閉

52.編寫分頁過程

1.將一個表中的記錄編號,

select t1.*,rownum rn from (select * fromo

emp) t1;

2.可以按照每10條來取。

select t1.*,rownum rn from (select * fromo

emp) t1 where rownum<1=0;

3.取第6條到第10條的語法

select * from

(select t1.*,rownum rn from (select * fromo

emp) t1 where rownum<10;)

where rn>=6;

4.分頁的過程代碼

create or replace procedure fenye

(tableName in varchar2,

Pagesize in number,

pageNow in number,

myrows out number,

mypageCount out number,

p_cursor out tespackage.test_cursor

) is

v_sql varchar2(1000);

v_begin number:=(pageNow-1)*Pagesize+1;

v_end number:=pageNow*Pagesize;

begin

v_sql:='select * from (select t1.*,rownum rn

from(select * from '|| tableName||') t1 where

rownum<='||v_end||' ) where rn>='||v_begin;

open p_cursor for v_sql;

v_sql:='select count(*) from '||tableName;

execute immediate v_sql into myrows;

if mod(myrows,Pagesize)=0 then

myPageCount:=myrows/Pagesize;

else

myPageCount=myrows/Pagesize+1;

end if;

end;

53.視圖

視圖是一個虛擬表,其內容友查詢定義。

1.視圖不占用磁盤空間

2.視圖不能建索引

3.視圖可以簡化 復雜查詢

4.視圖可以提高安全性

創建視圖

create view 視圖名 as select語句 [with read

only(假如添加了這個,那這個視圖就不能被修改)]

創建或者修改視圖

create or replace 視圖名 as select語句[with

read only];

刪除視圖

drop view 視圖名;

總結

以上是生活随笔為你收集整理的oracle一般人能不能学,Oracle人门学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。