Oracle數據庫經常使用sql語句html
ORACLE 經常使用的SQL語法和數據對象
一.數據控制語句 (DML) 部分java
1.INSERT (往數據表裏插入記錄的語句)linux
INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);
INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;web
字符串類型的字段值必須用單引號括起來, 例如: ’GOOD DAY’
若是字段值裏包含單引號’ 須要進行字符串轉換, 咱們把它替換成兩個單引號''.
字符串類型的字段值超過定義的長度會出錯, 最好在插入前進行長度校驗.sql
日期字段的字段值能夠用當前數據庫的系統時間SYSDATE, 精確到秒
或者用字符串轉換成日期型函數TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)
TO_DATE()還有不少種日期格式, 能夠參看ORACLE DOC.
年-月-日 小時:分鐘:秒 的格式YYYY-MM-DD HH24:MI:SS數據庫
INSERT時最大可操做的字符串長度小於等於4000個單字節, 若是要插入更長的字符串, 請考慮字段用CLOB類型,
方法借用ORACLE裏自帶的DBMS_LOB程序包.windows
INSERT時若是要用到從1開始自動增加的序列號, 應該先創建一個序列號
CREATE SEQUENCE 序列號的名稱 (最好是表名+序列號標記) INCREMENT BY 1 START WITH 1
MAXVALUE 99999 CYCLE NOCACHE;
其中最大的值按字段的長度來定, 若是定義的自動增加的序列號 NUMBER(6) , 最大值爲999999
INSERT 語句插入這個字段值爲: 序列號的名稱.NEXTVAL服務器
2.DELETE (刪除數據表裏記錄的語句)session
DELETE FROM表名 WHERE 條件;併發
注意:刪除記錄並不能釋放ORACLE裏被佔用的數據塊表空間. 它只把那些被刪除的數據塊標成unused.
若是確實要刪除一個大表裏的所有記錄, 能夠用 TRUNCATE 命令, 它能夠釋放佔用的數據塊表空間
TRUNCATE TABLE 表名;
此操做不可回退.
3.UPDATE (修改數據表裏記錄的語句)
UPDATE表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 條件;
若是修改的值N沒有賦值或定義時, 將把原來的記錄內容清爲NULL, 最好在修改前進行非空校驗;
值N超過定義的長度會出錯, 最好在插入前進行長度校驗..
注意事項:
A. 以上SQL語句對錶都加上了行級鎖,
確認完成後, 必須加上事物處理結束的命令 COMMIT 才能正式生效,
不然改變不必定寫入數據庫裏.
若是想撤回這些操做, 能夠用命令 ROLLBACK 復原.
B. 在運行INSERT, DELETE 和 UPDATE 語句前最好估算一下可能操做的記錄範圍,
應該把它限定在較小 (一萬條記錄) 範圍內,. 不然ORACLE處理這個事物用到很大的回退段.
程序響應慢甚至失去響應. 若是記錄數上十萬以上這些操做, 能夠把這些SQL語句分段分次完成,
其間加上COMMIT 確認事物處理.
二.數據定義 (DDL) 部分
1.CREATE (建立表, 索引, 視圖, 同義詞, 過程, 函數, 數據庫連接等)
ORACLE經常使用的字段類型有
CHAR 固定長度的字符串
VARCHAR2 可變長度的字符串
NUMBER(M,N) 數字型M是位數總長度, N是小數的長度
DATE 日期類型
建立表時要把較小的不爲空的字段放在前面, 可能爲空的字段放在後面
建立表時能夠用中文的字段名, 但最好仍是用英文的字段名
建立表時能夠給字段加上默認值, 例如 DEFAULT SYSDATE
這樣每次插入和修改時, 不用程序操做這個字段都能獲得動做的時間
建立表時能夠給字段加上約束條件
例如 不容許重複 UNIQUE, 關鍵字 PRIMARY KEY
2.ALTER (改變表, 索引, 視圖等)
改變表的名稱
ALTER TABLE 表名1 TO 表名2;
在表的後面增長一個字段
ALTER TABLE表名 ADD 字段名 字段名描述;
修改表裏字段的定義描述
ALTER TABLE表名 MODIFY字段名 字段名描述;
給表裏的字段加上約束條件
ALTER TABLE 表名 ADD CONSTRAINT 約束名 PRIMARY KEY (字段名);
ALTER TABLE 表名 ADD CONSTRAINT 約束名 UNIQUE (字段名);
把表放在或取出數據庫的內存區
ALTER TABLE 表名 CACHE;
ALTER TABLE 表名 NOCACHE;
3.DROP (刪除表, 索引, 視圖, 同義詞, 過程, 函數, 數據庫連接等)
刪除表和它全部的約束條件
DROP TABLE 表名 CASCADE CONSTRAINTS;
4.TRUNCATE (清空表裏的全部記錄, 保留表的結構)
TRUNCATE 表名;
三.查詢語句 (SELECT) 部分
SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 條件;
字段名能夠帶入函數
例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名),
TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')
NVL(EXPR1, EXPR2)函數
解釋:
IF EXPR1=NULL
RETURN EXPR2
ELSE
RETURN EXPR1
DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函數
解釋:
IF AA=V1 THEN RETURN R1
IF AA=V2 THEN RETURN R2
..…
ELSE
RETURN NULL
LPAD(char1,n,char2)函數
解釋:
字符char1按制定的位數n顯示,不足的位數用char2字符串替換左邊的空位
字段名之間能夠進行算術運算
例如: (字段名1*字段名1)/3
查詢語句能夠嵌套
例如: SELECT …… FROM
(SELECT …… FROM表名1, [表名2, ……] WHERE 條件) WHERE 條件2;
兩個查詢語句的結果能夠作集合操做
例如: 並集UNION(去掉重複記錄), 並集UNION ALL(不去掉重複記錄), 差集MINUS, 交集INTERSECT
分組查詢
SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1
[HAVING 條件] ;
兩個以上表之間的鏈接查詢
SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE
表名1.字段名 = 表名2. 字段名 [ AND ……] ;
SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE
表名1.字段名 = 表名2. 字段名(+) [ AND ……] ;
有(+)號的字段位置自動補空值
查詢結果集的排序操做, 默認的排序是升序ASC, 降序是DESC
SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]
ORDER BY字段名1, 字段名2 DESC;
字符串模糊比較的方法
INSTR(字段名, ‘字符串’)>0
字段名 LIKE ‘字符串%’ [‘%字符串%’]
每一個表都有一個隱含的字段ROWID, 它標記着記錄的惟一性.
四.ORACLE裏經常使用的數據對象 (SCHEMA)
1.索引 (INDEX)
CREATE INDEX 索引名ON 表名 ( 字段1, [字段2, ……] );
ALTER INDEX 索引名 REBUILD;
一個表的索引最好不要超過三個 (特殊的大表除外), 最好用單字段索引, 結合SQL語句的分析執行狀況,
也能夠創建多字段的組合索引和基於函數的索引
ORACLE8.1.7字符串能夠索引的最大長度爲1578 單字節
ORACLE8.0.6字符串能夠索引的最大長度爲758 單字節
2.視圖 (VIEW)
CREATE VIEW 視圖名AS SELECT …. FROM …..;
ALTER VIEW視圖名 COMPILE;
視圖僅是一個SQL查詢語句, 它能夠把表之間複雜的關係簡潔化.
3.同義詞 (SYNONMY)
CREATE SYNONYM同義詞名FOR 表名;
CREATE SYNONYM同義詞名FOR 表名@數據庫連接名;
4.數據庫連接 (DATABASE LINK)
CREATE DATABASE LINK數據庫連接名CONNECT TO 用戶名 IDENTIFIED BY 密碼 USING ‘數據庫鏈接字符串’;
數據庫鏈接字符串能夠用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA裏定義.
數據庫參數global_name=true時要求數據庫連接名稱跟遠端數據庫名稱同樣
數據庫全局名稱能夠用如下命令查出
SELECT * FROM GLOBAL_NAME;
查詢遠端數據庫裏的表
SELECT …… FROM 表名@數據庫連接名;
五.權限管理 (DCL) 語句
1.GRANT 賦於權限
經常使用的系統權限集合有如下三個:
CONNECT(基本的鏈接), RESOURCE(程序開發), DBA(數據庫管理)
經常使用的數據對象權限有如下五個:
ALL ON 數據對象名, SELECT ON 數據對象名, UPDATE ON 數據對象名,
DELETE ON 數據對象名, INSERT ON 數據對象名, ALTER ON 數據對象名
GRANT CONNECT, RESOURCE TO 用戶名;
GRANT SELECT ON 表名 TO 用戶名;
GRANT SELECT, INSERT, DELETE ON表名 TO 用戶名1, 用戶名2;
2.REVOKE 回收權限
REVOKE CONNECT, RESOURCE FROM 用戶名;
REVOKE SELECT ON 表名 FROM 用戶名;
REVOKE SELECT, INSERT, DELETE ON表名 FROM 用戶名1, 用戶名2;
查詢數據庫中第63號錯誤:
select orgaddr,destaddr from sm_histable0116 where error_code='63';
查詢數據庫中開戶用戶最大提交和最大下發數: select MSISDN,TCOS,OCOS from ms_usertable;
查詢數據庫中各類錯誤代碼的總和:
select error_code,count(*) from sm_histable0513 group by error_code order
by error_code;
查詢報表數據庫中話單統計種類查詢。
select sum(Successcount) from tbl_MiddleMt0411 where ServiceType2=111
select sum(successcount),servicetype from tbl_middlemt0411 group by servicetype
oracle經常使用SQL語句
一、鏈接SQL*Plus system/manager
二、顯示當前鏈接用戶SQL> show user
三、查看系統擁有哪些用戶SQL> select * from all_users;
四、新建用戶並受權SQL> create user a identified by a;(默認建在SYSTEM表空間下)SQL> grant connect,resource to a;
五、鏈接到新用戶SQL> conn a/a
六、查詢當前用戶下全部對象SQL> select * from tab;
七、創建第一個表SQL> create table a(a number);
八、查詢表結構SQL> desc a
九、插入新記錄SQL> insert into a values(1);
十、查詢記錄SQL> select * from a;
十一、更改記錄SQL> update a set a=2;
十二、刪除記錄SQL> delete from a;
1三、回滾SQL> roll;SQL> rollback;
1四、提交SQL> commit;
---------------------------------------------------------------
----------------------------------------------------------------
用戶受權:GRANT ALTER ANY INDEX TO "user_id "GRANT "dba " TO "user_id ";ALTER USER "user_id " DEFAULT ROLE ALL建立用戶:CREATE USER "user_id " PROFILE "DEFAULT " IDENTIFIED BY " DEFAULT TABLESPACE "USERS " TEMPORARY TABLESPACE "TEMP " ACCOUNT UNLOCK;GRANT "CONNECT " TO "user_id ";用戶密碼設定:ALTER USER "CMSDB " IDENTIFIED BY "pass_word "表空間建立:CREATE TABLESPACE "table_space " LOGGING DATAFILE 'C:\ORACLE\ORADATA\dbs\table_space.ora' SIZE 5M
------------------------------------------------------------------------
一、查看當前全部對象
SQL > select * from tab;
二、建一個和a表結構同樣的空表
SQL > create table b as select * from a where 1=2;
SQL > create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;
三、察看數據庫的大小,和空間使用狀況
SQL > col tablespace format a20SQL > select b.file_id 文件ID, b.tablespace_name 表空間, b.file_name 物理文件名, b.bytes 總字節數, (b.bytes-sum(nvl(a.bytes,0))) 已使用, sum(nvl(a.bytes,0)) 剩餘, sum(nvl(a.bytes,0))/(b.bytes)*100 剩餘百分比 from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_name,b.file_id,b.bytes order by b.tablespace_name / dba_free_space --表空間剩餘空間情況 dba_data_files --數據文件空間佔用狀況 四、查看現有回滾段及其狀態
SQL > col segment format a30SQL > SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;
五、查看數據文件放置的路徑
SQL > col file_name format a50SQL > select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;
六、顯示當前鏈接用戶
SQL > show user
七、把SQL*Plus當計算器
SQL > select 100*20 from dual;
八、鏈接字符串
SQL > select 列1 | |列2 from 表1;SQL > select concat(列1,列2) from 表1;
九、查詢當前日期
SQL > select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual;
十、用戶間複製數據
SQL > copy from user1 to user2 create table2 using select * from table1;
十一、視圖中不能使用order by,但可用group by代替來達到排序目的
SQL > create view a as select b1,b2 from b group by b1,b2;
十二、經過受權的方式來建立用戶
SQL > grant connect,resource to test identified by test;
SQL > conn test/test
1三、查出當前用戶全部表名。
select unique tname from col;
-----------------------------------------------------------------------
/* 向一個表格添加字段 */alter table alist_table add address varchar2(100);
/* 修改字段 屬性 字段爲空 */alter table alist_table modify address varchar2(80);
/* 修改字段名字 */create table alist_table_copy as select ID,NAME,PHONE,EMAIL,QQ as QQ2, /*qq 改成qq2*/ADDRESS from alist_table;
drop table alist_table;rename alist_table_copy to alist_table/* 修改表名 */
空值處理有時要求列值不能爲空create table dept (deptno number(2) not null, dname char(14), loc char(13));
在基表中增長一列alter table deptadd (headcnt number(3));
修改已有列屬性alter table deptmodify dname char(20);注:只有當某列全部值都爲空時,才能減少其列值寬度。只有當某列全部值都爲空時,才能改變其列值類型。只有當某列全部值都爲不空時,才能定義該列爲not null。例:alter table dept modify (loc char(12));alter table dept modify loc char(12);alter table dept modify (dname char(13),loc char(12));
查找未斷鏈接select process,osuser,username,machine,logon_time ,sql_textfrom v$session a,v$sqltext b where a.sql_address=b.address;
-----------------------------------------------------------------1.以USER_開始的數據字典視圖包含當前用戶所擁有的信息, 查詢當前用戶所擁有的表信息:select * from user_tables;2.以ALL_開始的數據字典視圖包含ORACLE用戶所擁有的信息,查詢用戶擁有或有權訪問的全部表信息:select * from all_tables;
3.以DBA_開始的視圖通常只有ORACLE數據庫管理員能夠訪問:select * from dba_tables;
4.查詢ORACLE用戶:conn sys/change_on_installselect * from dba_users;conn system/manager;select * from all_users;
5.建立數據庫用戶:CREATE USER user_name IDENTIFIED BY password;GRANT CONNECT TO user_name;GRANT RESOURCE TO user_name;受權的格式: grant (權限) on tablename to username;刪除用戶(或表):drop user(table) username(tablename) (cascade);6.向建好的用戶導入數據表IMP SYSTEM/MANAGER FROMUSER = FUSER_NAME TOUSER = USER_NAME FILE = C:\EXPDAT.DMP COMMIT = Y7.索引create index [index_name] on [table_name]( "column_name ")intersect運算
返回查詢結果中相同的部分
exp:各個部門中有哪些相同的工種
selectjob
fromaccount
intersect
selectjob
fromresearch
intersect
selectjob
fromsales;
minus運算
返回在第一個查詢結果中與第二個查詢結果不相同的那部分行記錄。
有哪些工種在財會部中有,而在銷售部中沒有?
exp:selectjobfromaccount
minus
selectjobfromsales;
1. oracle安裝完成後的初始口令?
internal/oracle
sys/change_on_install
system/manager
scott/tiger
sysman/oem_temp
2. oracle9ias web cache的初始默認用戶和密碼?
administrator/administrator
3. oracle 8.0.5怎麼建立數據庫?
用orainst。假若有motif界面,能夠用orainst /m
4. oracle 8.1.7怎麼建立數據庫?
dbassist
5. oracle 9i 怎麼建立數據庫?
dbca
6. oracle中的裸設備指的是什麼?
裸設備就是繞過文件系統直接訪問的儲存空間
7. oracle如何區分 64-bit/32bit 版本???
$ sqlplus '/ as sysdba'
sql*plus: release 9.0.1.0.0 - production on mon jul 14 17:01:09 2003
(c) copyright 2001 oracle corporation. all rights reserved.
connected to:
oracle9i enterprise edition release 9.0.1.0.0 - production
with the partitioning option
jserver release 9.0.1.0.0 - production
sql> select * from v$version;
banner
----------------------------------------------------------------
oracle9i enterprise edition release 9.0.1.0.0 - production
pl/sql release 9.0.1.0.0 - production
core 9.0.1.0.0 production
tns for solaris: version 9.0.1.0.0 - production
nlsrtl version 9.0.1.0.0 - production
sql>
8. svrmgr什麼意思?
svrmgrl,server manager.
9i下沒有,已經改成用sqlplus了
sqlplus /nolog
變爲歸檔日誌型的
9. 請問如何分辨某個用戶是從哪臺機器登錄oracle的?
select machine , terminal from v$session;
10. 用什麼語句查詢字段呢?
desc table_name 能夠查詢表的結構
select field_name,... from ... 能夠查詢字段的值
select * from all_tables where table_name like '%'
select * from all_tab_columns where table_name='??'
11. 怎樣獲得觸發器、過程、函數的建立腳本?
desc user_source
user_triggers
12. 怎樣計算一個表佔用的空間的大小?
select owner,table_name,
num_rows,
blocks*aaa/1024/1024 "size m",
empty_blocks,
last_analyzed
from dba_tables
where table_name='xxx';
here: aaa is the value of db_block_size ;
xxx is the table name you want to check
13. 如何查看最大會話數?
select * from v$parameter where name like 'proc%';
sql>
sql> show parameter processes
name type value
------------------------------------ ------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 4
log_archive_max_processes integer 1
processes integer 200
這裏爲200個用戶。
select * from v$license;
其中sessions_highwater紀錄曾經到達的最大會話數
14. 如何查看系統被鎖的事務時間?
select * from v$locked_object ;
15. 如何以archivelog的方式運行oracle。
init.ora
log_archive_start = true
restart database
16. 怎麼獲取有哪些用戶在使用數據庫
select username from v$session;
17. 數據表中的字段最大數是多少?
表或視圖中的最大列數爲 1000
18. 怎樣查得數據庫的sid ?
select name from v$database;
也能夠直接查看 init.ora文件
19. 如何在oracle服務器上經過sqlplus查看本機ip地址 ?
select sys_context('userenv','ip_address') from dual;
假如是登錄本機數據庫,只能返回127.0.0.1,呵呵
20. unix 下怎麼調整數據庫的時間?
su -root
date -u 08010000
21. 在oracle table中如何抓取memo類型字段爲空的數據記錄?
select remark from oms_flowrec where trim(' ' from remark) is not null ;
22. 如何用bbb表的數據去更新aaa表的數據(有關聯的字段)
up2003-10-17 aaa set bns_snm=(select bns_snm from bbb where aaa.dpt_no=bbb.dpt_no) where bbb.dpt_no is not null;
23. p4計算機安裝方法
將symcjit.dll改成sysmcjit.old
24. 何查詢server是否是ops?
select * from v$option;
假如parallel server=true則有ops能
25. 何查詢每一個用戶的權限?
select * from dba_sys_privs;
26. 如何將表移動表空間?
alter table table_name move tablespace_name;
27. 如何將索引移動表空間?
alter index index_name rebuild tablespace tablespace_name;
28. 在linux,unix下如何啓動dba studio?
oemapp dbastudio
29. 查詢鎖的情況的對象有?
v$lock, v$locked_object, v$session, v$sqlarea, v$process ;
查詢鎖的表的方法:
select s.sid session_id, s.username, decode(lmode, 0, 'none', 1, 'null', 2, 'row-s (ss)', 3, 'row-x (sx)', 4, 'share', 5, 's/row-x (ssx)', 6, 'exclusive', to_char(lmode)) mode_held, decode(request, 0, 'none', 1, 'null', 2, 'row-s (ss)', 3, 'row-x (sx)', 4, 'share', 5, 's/row-x (ssx)', 6, 'exclusive', to_char(request)) mode_requested, o.ccbzzp||'.'||o.object_name||' ('||o.object_type||')', s.type lock_type, l.id1 lock_id1, l.id2 lock_id2 from v$lock l, sys.dba_objects o, v$session s where l.sid = s.sid and l.id1 = o.object_id ;
30. 如何解鎖?
alter system kill session ‘sid,serir#’;
31. sqlplus下如何修改編輯器?
define _editor="" -- 必須加上雙引號
來定義新的編輯器,也能夠把這個寫在$oracle_home/sqlplus/admin/glogin.sql裏面使它永久有效。
32. oracle產生隨機函數是?
dbms_random.random
33. linux下查詢磁盤競爭情況命令?
sar -d
33. linux下查詢cpu競爭情況命令?
sar -r
34. 查詢當前用戶對象?
select * from user_objects;
select * from dba_segments;
35. 如何獲取錯誤信息?
select * from user_errors;
36. 如何獲取連接情況?
select * from dba_db_links;
37. 查看數據庫字符情況?
select * from nls_database_parameters;
select * from v$nls_parameters;
38. 查詢表空間信息?
select * from dba_data_files;
39. oracle的interal用戶要口令?
修改 sqlnet.ora
sqlnet.authentication_services=(nts)
40. 出現java.exe的解決辦法?
通常是將oracleorahomexihttpserver改爲手工啓動能夠的
x是8或9
41. 如何給表、列加註釋?
sql>comment on table 表 is '表註釋';
註釋已建立。
sql>comment on column 表.列 is '列註釋';
註釋已建立。
sql> select * from user_tab_comments where comments is not null;
42. 如何查看各個表空間佔用磁盤狀況?
sql> col tablespace format a20
sql> select
b.file_id 文件id號,
b.tablespace_name 表空間名,
b.bytes 字節數,
(b.bytes-sum(nvl(a.bytes,0))) 已使用,
sum(nvl(a.bytes,0)) 剩餘空間,
sum(nvl(a.bytes,0))/(b.bytes)*100 剩餘百分比
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_id,b.bytes
order by b.file_id
43. 如把oracle設置爲mts或專用模式?
#dispatchers="(protocol=tcp) (service=sidxdb)"
加上就是mts,註釋就是專用模式,sid是指你的實例名。
44. 如何才能得知系統當前的scn號 ?
select max(ktuxescnw * power(2, 32) + ktuxescnb) from x$ktuxe;
45. 請問如何在oracle中取毫秒?
9i以前不支持,9i開始有timestamp.
9i能夠用select systimestamp from dual;
__________________
風起雲涌,一鍋稀飯。
人生苦悶,開心就行。
向版主反映這個帖子 | ip: 已記錄
10-13-03 01:20
開心果
資深會員
註冊日期: aug 2003
來自: 福建
發帖數: 525
你們在應用oracle的時候可能會碰到不少看起來不難的問題, 非凡對新手來講, 今天我簡單把它總結一下, 發佈給你們, 但願對你們有幫助! 和你們一塊兒探討, 共同進步!
對oracle高手來講是不用看的.
46. 如何在字符串里加回車?
select 'welcome to visit'||chr(10)||'www.csdn.net' from dual ;
47. 中文是如何排序的?
oracle9i以前,中文是按照二進制編碼進行排序的。
在oracle9i中新增了按照拼音、部首、筆畫排序功能。設置nls_sort值
schinese_radical_m 按照部首(第一順序)、筆劃(第二順序)排序
schinese_stroke_m 按照筆劃(第一順序)、部首(第二順序)排序
schinese_pinyin_m 按照拼音排序
48. oracle8i中對象名能夠用中文嗎?
能夠
49. 如何改變win中sql*plus啓動選項?
sql*plus自身的選項設置咱們能夠在$oracle_home/sqlplus/admin/glogin.sql中設置。
50. 怎樣修改oracel數據庫的默認日期?
alter session set nls_date_format='yyyymmddhh24miss';
or
能夠在init.ora中加上一行
nls_date_format='yyyymmddhh24miss'
51. 如何將小表放入keep池中?
alter table xxx storage(buffer_pool keep);
52. 如何檢查是否安裝了某個patch?
check that orainventory
53. 如何使select語句使查詢結果自動生成序號?
select rownum,col from table;
54. 如何知道數據褲中某個表所在的tablespace?
select tablespace_name from user_tables where table_name='test';
select * from user_tables中有個字段tablespace_name,(oracle);
select * from dba_segments where …;
55. 怎麼能夠快速作一個和原表同樣的備份表?
create table new_table as (select * from old_table);
55. 怎麼在sqlplus下修改procedure?
select line,trim(text) t from user_source where name =’a’ order by line;
56. 怎樣解除procedure被意外鎖定?
alter system kill session ,把那個session給殺掉,不過你要先查出她的session id
or
把該過程從新改個名字就能夠了。
57. sql reference是個什麼東西?
是一本sql的使用手冊,包括語法、函數等等,oracle官方網站的文檔中心有下載.
58. 如何查看數據庫的狀態?
unix下
ps -ef | grep ora
windows下
看服務是否起來
是否能夠連上數據庫
59. 請問如何修改一張表的主鍵?
alter table aaa
drop constraint aaa_key ;
alter table aaa
add constraint aaa_key primary key(a1,b1) ;
60. 改變數據文件的大小?
用 alter database .... datafile .... ;
手工改變數據文件的大小,對於原來的 數據文件有沒有損害。
61. 怎樣查看oracle中有哪些程序在運行之中?
查看v$sessions表
62. 怎麼能夠看到數據庫有多少個tablespace?
select * from dba_tablespaces;
63. 如何修改oracle數據庫的用戶鏈接數?
修改initsid.ora,將process加大,重啓數據庫.
64. 如何查出一條記錄的最後更新時間?
能夠用logminer 察看
65. 如何在pl/sql中讀寫文件?
utl_file包答應用戶經過pl/sql讀寫操做系統文件。
66. 怎樣把「&」放入一條記錄中?
insert into a values (translate ('at{&}t','at{}','at'));
67. exp 如何加query參數?
exp user/pass file=a.dmp tables(bsempms)
query='"where emp_no="'s09394"'"" ﹔
68. 關於oracle8i支持簡體和繁體的字符集問題?
zhs16gbk能夠支
69. data guard是什麼軟件?
就是standby的換代產品
70. 如何建立spfile?
sql> connect / as sysdba
sql> select * from v$version;
sql> create pfile from spfile;
sql> create spfile from pfile='e:"ora9i"admin"eygle"pfile"init.ora';
文件已建立。
sql> create spfile='e:"ora9i"database"spfileeygle.ora' from pfile='e:"ora9i"admin"eygle"pfile"init.ora';
文件已建立。
71. 內核參數的應用?
shmmax
含義:這個設置並不決定究竟oracle數據庫或者操做系統使用多少物理內存,只決定了最多可使用的內存數目。這個設置也不影響操做系統的內核資源。
設置方法:0.5*物理內存
例子:set shmsys:shminfo_shmmax=10485760
shmmin
含義:共享內存的最小大小。
設置方法:通常都設置成爲1。
例子:set shmsys:shminfo_shmmin=1:
shmmni
含義:系統中共享內存段的最大個數。
例子:set shmsys:shminfo_shmmni=100
shmseg
含義:每一個用戶進程可使用的最多的共享內存段的數目。
例子:set shmsys:shminfo_shmseg=20:
semmni
含義:系統中semaphore identifierer的最大個數。
設置方法:把這個變量的值設置爲這個系統上的全部oracle的實例的init.ora中的最大的那個processes的那個值加10。
例子:set semsys:seminfo_semmni=100
semmns
含義:系統中emaphores的最大個數。
設置方法:這個值能夠經過如下方式計算獲得:各個oracle實例的initsid.ora裏邊的processes的值的總和(除去最大的processes參數)+最大的那個processes×2+10×oracle實例的個數。
例子:set semsys:seminfo_semmns=200
semmsl:
含義:一個set中semaphore的最大個數。
設置方法:設置成爲10+全部oracle實例的initsid.ora中最大的processes的值。
例子:set semsys:seminfo_semmsl=-200
72. 怎樣查看哪些用戶擁有sysdba、sysoper權限?
sql>conn sys/change_on_install
sql>select * from v_$pwfile_users;
73. 如何單獨備份一個或多個表?
exp 用戶/密碼 tables=(表1,…,表2)
74. 如何單獨備份一個或多個用戶?
exp system/manager owner=(用戶1,用戶2,…,用戶n) file=導出文件
75. 如何對clob字段進行全文檢索?
select * from a where dbms_lob.instr(a.a,'k',1,1)>0;
76. 如何顯示當前鏈接用戶?
show user
77. 如何查看數據文件放置的路徑 ?
col file_name format a50
sql> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;
78. 如何查看現有回滾段及其狀態 ?
sql> col segment format a30
sql> select segment_name,ccbzzp,tablespace_name,segment_id,file_id,status from dba_rollback_segs
79. 如何改變一個字段初始定義的check範圍?
sql> alter table xxx drop constraint constraint_name;
以後再建立新約束:
sql> alter table xxx add constraint constraint_name check();
80. oracle經常使用系統文件有哪些?
經過如下視圖顯示這些文件信息:v$database,v$datafile,v$logfile v$controlfile v$parameter;
81. 內鏈接inner join?
select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no;
82. 如何外鏈接?
select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+);
select a.* from bsempms a,bsdptms b wherea.dpt_no(+)=b.dpt_no;
83. 如何執行腳本sql文件?
sql>@$path/filename.sql;
84. 如何快速清空一個大表?
sql>truncate table table_name;
85. 如何查有多少個數據庫實例?
sql>select * from v$instance;
86. 如何查詢數據庫有多少表?
sql>select * from all_tables;
87. 如何測試sql語句執行所用的時間?
sql>set timing on ;
sql>select * from tablename;
88. chr()的反函數是?
ascii()
select char(65) from dual;
select ascii('a') from dual;
89. 字符串的鏈接
select concat(col1,col2) from table ;
select col1||col2 from table ;
90. 怎麼把select出來的結果導到一個文本文件中?
sql>spool c:"abcd.txt;
sql>select * from table;
sql >spool off;
91. 怎樣估算sql執行的i/o數 ?
sql>set autotrace on ;
sql>select * from table;
or
sql>select * from v$filestat ;
能夠查看io數
92. 如何在sqlplus下改變字段大小?
alter table table_name modify (field_name varchar2(100));
改大行,改小不行(除非都是空的)
93. 如何查詢某天的數據?
select * from table_name where trunc(日期字段)=to_date('2003-05-02','yyyy-mm-dd');
94. sql 語句如何插入整年日期?
create table bsyear (d date);
insert into bsyear
select to_date('20030101','yyyymmdd')+rownum-1
from all_objects
where rownum
95. 假如修改表名?
alter table old_table_name rename to new_table_name;
96. 如何取得命令的返回狀態值?
sqlcode=0
97. 如何知道用戶擁有的權限?
select * from dba_sys_privs ;
98. 從網上下載的oracle9i與市場上賣的標準版有什麼區別?
從功能上說沒有區別,只不過oracle公司有明文規定;從網站上下載的oracle產品不得用於 商業用途,不然侵權。
99. 怎樣斷定數據庫是運行在歸檔模式下仍是運行在非歸檔模式下?
進入dbastudio,歷程--〉數據庫---〉歸檔查看。
100. sql>startup pfile和ifile,spfiled有什麼區別?
pfile就是oracle傳統的初始化參數文件,文本格式的。
ifile相似於c語言裏的include,用於把另外一個文件引入
spfile是9i裏新增的而且是默認的參數文件,二進制格式
startup後應該只可接pfile
101. 如何搜索出前n條記錄?
select * from employee where rownum
102. 如何知道機器上的oracle支持多少併發用戶數?
sql>conn internal ;
sql>show parameter processes ;
103. db_block_size能夠修改嗎?
通常不能夠﹐不建議這樣作的。
104. 如何統計兩個表的記錄總數?
select (select count(id) from aa)+(select count(id) from bb) 總數 from dual;
105. 怎樣用sql語句實現查找一列中第n大值?
select * from
(select t.*,dense_rank() over (order by sal) rank from employee)
where rank = n;
106. 如何在給現有的日期加上2年?(
select add_months(sysdate,24) from dual;
107. used_ublk爲負值表示什麼意思?
it is "harmless".
108. connect string是指什麼?
應該是tnsnames.ora中的服務名後面的內容
109. 怎樣擴大redo log的大小?
創建一個臨時的redolog組,而後切換日誌,刪除之前的日誌,創建新的日誌。
110. tablespace 是否不能大於4g?
沒有限制.
111. 返回大於等於n的最小整數值?
select ceil(n) from dual;
112. 返回小於等於n的最小整數值?
select floor(n) from dual;
113. 返回當前月的最後一天?
select last_day(sys2003-10-17) from dual;
114. 如何不一樣用戶間數據導入?
imp system/manager file=aa.dmp fromuser=user_old touser=user_new rows=y indexes=y ;
115. 如何找數據庫表的主鍵字段的名稱?
sql>select * from user_constraints where constraint_type='p' and table_name='table_name';
116. 兩個結果集互加的函數?
sql>select * from bsempms_old intersect select * from bsempms_new;
sql>select * from bsempms_old union select * from bsempms_new;
sql>select * from bsempms_old union all select * from bsempms_new;
117. 兩個結果集互減的函數?
sql>select * from bsempms_old minus select * from bsempms_new;
118. 如何配置sequence?
建sequence seq_custid
create sequence seq_custid start 1 incrememt by 1;
建表時:
create table cust
{ cust_id smallint not null,
...}
insert 時:
insert into table cust
values( seq_cust.nextval, ...)
日期的各部分的經常使用的的寫法
119>.取時間點的年份的寫法:
select to_char(sys2003-10-17,'yyyy') from dual;
120>.取時間點的月份的寫法:
select to_char(sys2003-10-17,'mm') from dual;
121>.取時間點的日的寫法:
select to_char(sys2003-10-17,'dd') from dual;
122>.取時間點的時的寫法:
select to_char(sys2003-10-17,'hh24') from dual;
123>.取時間點的分的寫法:
select to_char(sys2003-10-17,'mi') from dual;
124>.取時間點的秒的寫法:
select to_char(sys2003-10-17,'ss') from dual;
125>.取時間點的日期的寫法:
select trunc(sys2003-10-17) from dual;
126>.取時間點的時間的寫法:
select to_char(sys2003-10-17,'hh24:mi:ss') from dual;
127>.日期,時間形態變爲字符形態
select to_char(sys2003-10-17) from dual;
128>.將字符串轉換成日期或時間形態:
select to_2003-10-17('2003/08/01') from dual;
129>.返回參數的星期幾的寫法:
select to_char(sys2003-10-17,'d') from dual;
130>.返回參數一年中的第幾天的寫法:
select to_char(sys2003-10-17,'ddd') from dual;
http://www.cnblogs.com/mvcboy/p/4077699.html