?? orcale技術筆記.txt
字號:
Oracle的SGA調(diào)整經(jīng)歷
select * from t_user u,t_accounts a where u.userid (+) = a.id; --右連接,包含所有右表t_accounts的記錄,即使左表t_user中沒有相對應的記錄。
select * from t_user u right outer join t_accounts a on u.userid = a.id; --右外連接,與右連接一樣
select * from t_user u,t_accounts a where u.userid = a.id (+); --左連接,包含所有左表t_user的記錄,即使右表t_accounts中沒有相對應的記錄。
select * from t_user u left outer join t_accounts a on u.userid = a.id; --左外連接,與左連接一樣
select * from t_user u full outer join t_accounts a on u.userid = a.id; --全外連接,查詢記錄最多
select * from t_user u join t_accounts a on u.userid=a.id; --內(nèi)連接,查詢記錄最少
select userid from t_user u where rownum <=3;--取前3條記錄
select userid from (select u.userid from t_user u order by u.userid) where rownum <=3;--取排序后的前3條記錄
select userid from (select userid,rownum r from t_user u where rownum <=4) where r >=2;--取從開始2至4結(jié)束的記錄
--取排序后從開始2至4結(jié)束的記錄
select userid from (select userid ,rownum r from (select userid from t_user u order by u.userid) where rownum <=4) where r >=2;
oracle 的名詞:
聯(lián)機事務處理: OLTP
決策支持系統(tǒng): DSS
區(qū)間: EXTENT
系統(tǒng)全局區(qū):(共享全局區(qū)) SGA
進程全局區(qū): PGA
用戶全局區(qū): UGA
多線程服務器:MTS
系統(tǒng)監(jiān)控和進程監(jiān)控:SMON \PMON
數(shù)據(jù)庫寫進程: DBWR
日志寫進程: LGWR
調(diào)度進程: Dnnn
歸檔進程: ARCH
檢查點: CKPT
恢復進程: RECO
快照進程: SNPn
鎖進程: LCKn
并行查詢進程: Pnnn
用戶和服務器進程:Snnn
各種數(shù)據(jù)庫使用JDBC連接的方式
1、Oracle8/8i/9i數(shù)據(jù)庫(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbcracle:thinlocalhost:1521rcl"; //orcl為數(shù)據(jù)庫的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);
2、DB2數(shù)據(jù)庫
Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample"; //sample為你的數(shù)據(jù)庫名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
3、Sql Server7.0/2000數(shù)據(jù)庫
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoftqlserver://localhost:1433;DatabaseName=mydb";
//mydb為數(shù)據(jù)庫
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
4、Sybase數(shù)據(jù)庫
Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbcybase:Tds:localhost:5007/myDB";//myDB為你的數(shù)據(jù)庫名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);
5、Informix數(shù)據(jù)庫
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword"; //myDB為數(shù)據(jù)庫名
Connection conn= DriverManager.getConnection(url);
6、MySQL數(shù)據(jù)庫
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB為數(shù)據(jù)庫名
Connection conn= DriverManager.getConnection(url);
7、PostgreSQL數(shù)據(jù)庫
Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbcostgresql://localhost/myDB" //myDB為數(shù)據(jù)庫名
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);
8、access數(shù)據(jù)庫直連用ODBC的
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
String url="jdbcdbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
Connection conn = DriverManager.getConnection(url,"","");
Statement stmtNew=conn.createStatement() ;
--查詢跟索引有關的數(shù)據(jù)字典
select * from dictionary where instr(comments,'index')>0;
--查詢user_indexes表各字段名稱的詳細含義
select column_name,comments from dict_columns where table_name='user_indexes';
--Orcale常用數(shù)據(jù)字典的查詢
--1、用戶
--1)、查看當前用戶的缺省表空間
select username,default_tablespace from user_users;
--2)、查看當前用戶的角色
select * from user_role_privs;
--3)、查看當前用戶的系統(tǒng)權限和表級權限
select * from user_sys_privs;
select * from user_tab_privs;
--2、表
--1)、查看當前用戶下的所有表
select * from user_tables;
--2)、查看名稱包含log字符的表
select object_name,object_id from user_objects;
--3)、查看表的創(chuàng)建時間
select object_name,created from user_objects where object_name=upper('&table_name');
--4)、查看表的大小
select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&table_name');
--3、索引
--1)、查看索引個數(shù)和類別
select index_name,index_type,table_name from user_indexes order by table_name;
--2)、查看索引被害索引的字段
select * from user_ind_columns where index_name=upper('&index_name');
--3)、查看索引的大小
select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name');
--4、序列號
--1)、查看序列號,last_number是當前值
select * from user_sequences;
--5、視圖
--1)、查看視圖的名稱
select view_name from user_views;
--2)、查看創(chuàng)建視圖的select 語句
select view_name,text_length from user_views;
set long 200;--說明:可以根據(jù)視圖的text_length值設定set long的大小
select text from user_views where view_name=upper('&view_name');
--6、同義詞
--1)、查看同義詞的名稱
select * from user_synonyms;
--7、約束條件
--1)、查看某表的約束條件
select constraint_name,constraint_type,search_condition,r_constraint_name from user_constraints
where table_name=upper('&table_name');
select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc
where c.owner=upper('&table_owner') and c.table_name = upper('&table_name') and c.owner=cc.owner
and c.constraint_name = cc.constraint_name order by cc.position;
--8、存儲函數(shù)和過程
--1)、查看函數(shù)和過程的狀態(tài)
select object_name,status from user_objects where object_type='function';
select object_name,status from user_objects where object_type='procedure';
--2)、查看函數(shù)和過程的源代碼
select text from all_source where owner=user and name=upper('plsql_name');
--其它。查看表空間的名稱及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name group by t.tablespace_name;
--查看表空間物理文件的名稱及大小
select tablespace_name,file_id,file_name,round(bytes/(1024*1024),0) total_space from dba_data_files
order by tablespace_name;
--查看回滾段名稱及大小
select segment_name, tablespace_name, r.status,(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
max_extents, v.curext CurExtent from dba_rollback_segs r, v$ro;
一、基礎
1、說明:創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE database-name
2、說明:刪除數(shù)據(jù)庫
drop database dbname
3、說明:備份sql server
--- 創(chuàng)建 備份數(shù)據(jù)的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始 備份
BACKUP DATABASE pubs TO testBack
4、說明:創(chuàng)建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根據(jù)已有的表創(chuàng)建新表:
A:create table tab_new like tab_old (使用舊表創(chuàng)建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、說明:刪除新表
drop table tabname
6、說明:增加一個列
Alter table tabname add column col type
注:列增加后將不能刪除。DB2中列加上后數(shù)據(jù)類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:添加主鍵: Alter table tabname add primary key(col)
說明:刪除主鍵: Alter table tabname drop primary key(col)
8、說明:創(chuàng)建索引:create [unique] index idxname on tabname(col….)
刪除索引:drop index idxname
注:索引是不可更改的,想更改必須刪除重新建。
9、說明:創(chuàng)建視圖:create view viewname as select statement
刪除視圖:drop view viewname
10、說明:幾個簡單的基本的sql語句
選擇:select * from table1 where 范圍
插入:insert into table1(field1,field2) values(value1,value2)
刪除:delete from table1 where 范圍
更新:update table1 set field1=value1 where 范圍
查找:select * from table1 where field1 like ’%value1%’ ---like的語法很精妙,查資料!
排序:select * from table1 order by field1,field2 [desc]
總數(shù):select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、說明:幾個高級查詢運算詞
A: UNION 運算符
UNION 運算符通過組合其他兩個結(jié)果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結(jié)果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結(jié)果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。
C: INTERSECT 運算符
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結(jié)果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。
注:使用運算詞的幾個查詢結(jié)果行必須是一致的。
12、說明:使用外連接
A、left outer join:
左外連接(左連接):結(jié)果集幾包括連接表的匹配行,也包括左連接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外連接(右連接):結(jié)果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full outer join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
二、提升
1、說明:復制表(只復制結(jié)構,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、說明:拷貝表(拷貝數(shù)據(jù),源表名:a 目標表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、說明:跨數(shù)據(jù)庫之間表的拷貝(具體數(shù)據(jù)使用絕對路徑) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具體數(shù)據(jù)庫’ where 條件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4、說明:子查詢(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
5、說明:顯示文章、提交人和最后回復時間
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、說明:外連接查詢(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、說明:在線視圖查詢(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
8、說明:between的用法,between限制查詢數(shù)據(jù)范圍時包括了邊界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 數(shù)值1 and 數(shù)值2
9、說明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、說明:兩張關聯(lián)表,刪除主表中已經(jīng)在副表中沒有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、說明:四表聯(lián)查問題:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、說明:日程安排提前五分鐘提醒
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5
13、說明:一條sql 語句搞定數(shù)據(jù)庫分頁
select top 10 b.* from (select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主鍵字段 = a.主鍵字段 order by a.排序字段
14、說明:前10條記錄
select top 10 * form table1 where 范圍
15、說明:選擇在每一組b值相同的數(shù)據(jù)中對應的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產(chǎn)品分析,按科目成績排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重復行而派生出一個結(jié)果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、說明:隨機取出10條數(shù)據(jù)
select top 10 * from tablename order by newid()
18、說明:隨機選擇記錄
select newid()
19、說明:刪除重復記錄
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、說明:列出數(shù)據(jù)庫里所有的表名
select name from sysobjects where type='U'
21、說明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -