oracle 都有哪些基本語句
Oracle主要包括sql 和pl/sql兩類語言,當然,以后java在Oracle數據庫中一定會越來越重要。
sql主要包括以下部分:ddl(數據定義語言,如create),dml(數據操作語言,如insert),dql(數據查詢語言,如select),dcl(數據控制語言,如grant)。pl/sql主要包括:數據類型,運算符,判斷語句,循環語句,異常等,其中cursor是精華,要好好學學。
pl/sql跟vb很相似,能學懂vb學pl/sql就沒問題。把心態放平,你會覺得Oracle不過如此,很容易上手,當有一天你重新覺得Oracle真的很難,那你就學成了。
oracle中常用的一些語句有哪些
1、Oracle中,每一條記錄都有一個rowid,rowid在整個數據庫中是唯一的, rowid確定了每條記錄是在ORACLE中的哪一個數據文件、塊、行上。
2、在重復的記錄中,可能所有列的內容都相同,但rowid不會相同,所以只要確定出重復記錄中 那些具有最大rowid的就可以了,其余全部刪除。 實現方法: SQL> create table a ( 2 bm char (4), --編碼 3 mc varchar2(20) --名稱 4 ) 5 / 表已建立。
SQL> insert into a values('1111','1111'); SQL> insert into a values('1112','1111'); SQL> insert into a values('1113','1111'); SQL> insert into a values('1114','1111'); SQL> insert into a select * from a; 插入4個記錄。 SQL> commit; 完全提交。
SQL> select rowid,bm,mc from a; ROWID BM MC ------------------ ---- ------- 000000D5。0000。
0002 1111 1111 000000D5。 0001。
0002 1112 1111 000000D5。0002。
0002 1113 1111 000000D5。0003。
0002 1114 1111 000000D5。0004。
0002 1111 1111 000000D5。0005。
0002 1112 1111 000000D5。0006。
0002 1113 1111 000000D5。0007。
0002 1114 1111 查詢到8記錄。 查出重復記錄 SQL> select rowid,bm,mc from a where a。
rowid!=(select max(rowid) from a b where a。bm=b。
bm and a。mc=b。
mc); ROWID BM MC ------------------ ---- -------------------- 000000D5。 0000。
0002 1111 1111 000000D5。0001。
0002 1112 1111 000000D5。0002。
0002 1113 1111 000000D5。0003。
0002 1114 1111 刪除重復記錄 SQL> delete from a a where a。 rowid!=(select max(rowid) from a b where a。
bm=b。bm and a。
mc=b。mc); 刪除4個記錄。
SQL> select rowid,bm,mc from a; ROWID BM MC ------------------ ---- -------------------- 000000D5。 0004。
0002 1111 1111 000000D5。0005。
0002 1112 1111 000000D5。0006。
0002 1113 1111 000000D5。0007。
0002 1114 1111。
常用的oracle數據庫查詢語句是什
1、-查看ORACLE表空間的使用情況直接使用情況: SELECT D。
TABLESPACE_NAME "表空間名字", D。STATUS "狀態", (A。
BYTES / 1024 / 1024) as "總共多少M", ((A。 BYTES - DECODE(F。
BYTES, NULL, 0, F。BYTES)) / 1024 / 1024) as "已經用了多少M", (DECODE(F。
BYTES, NULL, 0, F。BYTES) / 1024 / 1024) as "剩余多少M", ((A。
BYTES - DECODE(F。BYTES, NULL, 0, F。
BYTES)) / 1024 / 1024)/(A。BYTES / 1024 / 1024) as "利用率", DECODE(sign(((A。
BYTES - DECODE(F。 BYTES, NULL, 0, F。
BYTES)) / 1024 / 1024)/(A。BYTES / 1024 / 1024)-0。
9),1,'剩余不到10%,請考慮擴表空間','正常') as "溫馨提示" FROM SYS。DBA_TABLESPACES D, SYS。
SM$TS_AVAIL A, SYS。SM$TS_FREE F WHERE D。
TABLESPACE_NAME = A。TABLESPACE_NAME AND F。
TABLESPACE_NAME (+) = D。TABLESPACE_NAME; 2、查看oracle連接數 select count(*) from v$session --連接數 Select count(*) from v$session where status='ACTIVE' --并發連接數 alter system set processes = value scope = spfile;--重啟數據庫 修改連接 3、為表空間擴容 --為表空間增加數據文件 alter tablespace users add datafile 'c:\oracle\ora81\oradata\sid\user002。
dbf' size 100M; --增加表空間原有數據文件尺寸 alter database datafile 'c:\oracle\ora81\oradata\\sid\users。 dbf' resize 1000M; 4、查詢表空間大小 select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;。
Oracle數據庫SQL語句性能調整的基本原則是什么
一、問題的提出 在應用系統開發初期,由于開發數據庫數據比較少,對于查詢SQL語句,復雜視圖的的編寫等體會不出SQL語句各種寫法的性能優劣,但是如果將應用系統提交實際應用后,隨著數據庫中數據的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。
系統優化中一個很重要的方面就是SQL語句的優化。對于海量數據,劣質SQL語句和優質SQL語句之間的速度差別可以達到上百倍,可見對于一個系統不是簡單地能實現其功能就可,而是要寫出高質量的SQL語句,提高系統的可用性。
在多數情況下,Oracle使用索引來更快地遍歷表,優化器主要根據定義的索引來提高性能。 但是,如果在SQL語句的where子句中寫的SQL代碼不合理,就會造成優化器刪去索引而使用全表掃描,一般就這種SQL語句就是所謂的劣質SQL語句。
在編寫SQL語句時我們應清楚優化器根據何種原則來刪除索引,這有助于寫出高性能的SQL語句。 二、SQL語句編寫注意問題 下面就某些SQL語句的where子句編寫中需要注意的問題作詳細介紹。
在這些where子句中,即使某些列存在索引,但是由于編寫了劣質的SQL,系統在運行該SQL語句時也不能使用該索引,而同樣使用全表掃描,這就造成了響應速度的極大降低。 1。
IS NULL 與 IS NOT NULL 不能用null作索引,任何包含null值的列都將不會被包含在索引中。 即使索引有多列這樣的情況下,只要這些列中有一列含有null,該列就會從索引中排除。
也就是說如果某列存在空值,即使對該列建索引也不會提高性能。任何在where子句中使用is null或is not null的語句優化器是不允許使用索引的。
2。 聯接列 對于有聯接的列,即使最后的聯接值為一個靜態值,優化器是不會使用索引的。
我們一起來看一個例子,假定有一個職工表(employee),對于一個職工的姓和名分成兩列存放(FIRST_NAME和LAST_NAME),現在要查詢一個叫比爾。 克林頓(Bill Cliton)的職工。
下面是一個采用聯接查詢的SQL語句: select * from employss where first_name||''||last_name ='Beill Cliton'; 上面這條語句完全可以查詢出是否有Bill Cliton這個員工,但是這里需要注意,系統優化器對基于last_name創建的索引沒有使用。 當采用下面這種SQL語句的編寫,Oracle系統就可以采用基于last_name創建的索引。
Select * from employee where first_name ='Beill' and last_name ='Cliton'; 遇到下面這種情況又如何處理呢?如果一個變量(name)中存放著Bill Cliton這個員工的姓名,對于這種情況我們又如何避免全程遍歷,使用索引呢?可以使用一個函數,將變量name中的姓和名分開就可以了,但是有一點需要注意,這個函數是不能作用在索引列上。 下面是SQL查詢腳本: select * from employee where first_name = SUBSTR('&&name',1,INSTR('&&name',' ')-1) and last_name = SUBSTR('&&name',INSTR('&&name',' ')+1) 3。
帶通配符(%)的like語句 同樣以上面的例子來看這種情況。目前的需求是這樣的,要求在職工表中查詢名字中包含cliton的人。
可以采用如下的查詢SQL語句: select * from employee where last_name like '%cliton%'; 這里由于通配符(%)在搜尋詞首出現,所以Oracle系統不使用last_name的索引。 在很多情況下可能無法避免這種情況,但是一定要心中有底,通配符如此使用會降低查詢速度。
然而當通配符出現在字符串其他位置時,優化器就能利用索引。在下面的查詢中索引得到了使用: select * from employee where last_name like 'c%'; 4。
Order by語句 ORDER BY語句決定了Oracle如何將返回的查詢結果排序。Order by語句對要排序的列沒有什么特別的限制,也可以將函數加入列中(象聯接或者附加等)。
任何在Order by語句的非索引項或者有計算表達式都將降低查詢速度。 仔細檢查order by語句以找出非索引項或者表達式,它們會降低性能。
解決這個問題的辦法就是重寫order by語句以使用索引,也可以為所使用的列建立另外一個索引,同時應絕對避免在order by子句中使用表達式。 5。
NOT 我們在查詢時經常在where子句使用一些邏輯表達式,如大于、小于、等于以及不等于等等,也可以使用and(與)、or(或)以及not(非)。 NOT可用來對任何邏輯運算符號取反。
下面是一個NOT子句的例子: 。
。 where not (status ='VALID')。
ORACLE數據庫的基本語法是什么
表create table test (names varchar2(12),dates date,num int,dou double);-- 視圖create or replace view vi_test asselect * from test;-- 同義詞create or replace synonym aafor dbusrcard001。
aa;-- 存儲過程create or replace produce dd(v_id in employee。empoy_id%type)asbeginenddd;-- 函數create or replace function ee(v_id in employee%rowtype) return varchar(15)isvar_test varchar2(15);beginreturn var_test;exception when others thenend-- 三種觸發器的定義create or replace trigger ffalter deleteon testfor each rowdeclarebegindelete from test;if sql%rowcount :new。
names thenreaise_replaction_err(-2002,"關鍵字不能修改")end ifend ifend -- 定義游標declarecursor aa isselect names,num from test;beginfor bb in aaloopif bb。 names = "ORACLE" thenend ifend loop;end-- 速度優化,前一語句不后一語句的速度快幾十倍select names,dates from test,bwhere test。
names = b。names(+) andb。
names is null andb。dates > date('2003-01-01','yyyy-mm-dd')select names,datesfrom test where names not in ( select names from bwhere dates > to_date('2003-01-01','yyyy-mm-dd'))-- 查找重復記錄select names,num from test where rowid != (select max(rowid) from test b where b。
names = test。names andb。
num = test。num)-- 查找表TEST中時間最新的前10條記錄select * from (select * from test order by dates desc) where rownum nextval,。
。) 。
Oracle數據庫SQLPLUS中幾個常用set語句是什么
SQL> set echo on—————————————————設置運行命令是是否顯示語句 SQL> set feedback on———————————————-設置顯示“已選擇XX行” SQL> set colsep | —————————————————設置列與列之間的分割符號 SQL> set pagesize 10———————————————–設置每一頁的行數 SQL> SET SERVEROUTPUT ON——————————-設置允許顯示輸出類似dbms_output。
putline SQL> set heading on————————————————設置顯示列名 SQL> set timing on————————————————–設置顯示“已用時間:XXXX” SQL> set time on—————————————————–設置顯示當前時間 SQL> set autotrace on———————————————–設置允許對執行的sql進行分析 00:38:28 SQL> set echo on 00:38:37 SQL> @E:echo。 sql 00:38:41 SQL> select status from v$datafile where rownum set echo off 00:38:58 SQL> @E:echo。
sql。
求oracle,基本語句
1、Oracle與SQL Server、mysql不同,一個服務器上裝好幾個數據庫。Oracle一個數據庫就可以支持很大的應用,而且每個數據庫都有自己獨立的內存結構和一組服務進程。你登錄Oracle的話其實就是連接到了某個數據庫對應的實例上,所以沒有你想要的語句來查有幾個數據庫。不過你可以這樣,運行dbca命令,然后選擇刪除數據庫,你就可以看到系統當前安裝了哪幾個數據庫。
2、查看當前用戶的方案(schema)中有哪些表:
select table_name from user_tables;
查看當前數據庫中有哪些表(需要dba權限,而且表的數量非常龐大):
select table_name from user_tables;
3、desc tablename;
什么是sql腳本-Oracle基礎,oracle的SQL語句中的(+)是干什么用的
oracle特有的左外聯書寫方式,當然你也可以用傳統的通用的左外聯,比如給你舉個例子 SELECT AS 姓名, ade AS 分數, d AS 課程名 FROM tbl_student s LEFT OUTER JOIN tbl_grade g ON *tId= d LEFT OUTER JOIN tbl_class c ON d=*d 它跟下面等價 SELECT AS 姓名, ade AS 分數, assname AS 課程名 FROM tbl_student s,tbl_grade g,tbl_class c WHERE (*tId= d(+)) AND ( d=*d(+))。
Orcl數據庫sql語句
Oracle數據庫常用的Sql語句
今天想查詢一下Oracle數據庫下所有的表名或某個用戶下的所有表,半天沒想起來.還是在網上找到了答案.
select table_name from all_tables;//所有的表明
select table_name from user_all_tables;//用戶的所有的表 一下是轉貼的sql語句的帖子.
select * from user_objects; //查詢所有的表 select * from dba_tables; //查詢所有的表 select * from all_tables; //查詢所有的表 select * from user_users //查出一個用戶
select * from all_users //查詢所有用戶 select * from dba_users //查詢所有用戶
select name,dbid from v$database; //查詢數據庫名和它的ID select * from *_tab_columns; //查詢表名 ,并顯示列名 describe 表名 //查詢表結構 2: 查詢數據庫參數 show parameter db; 3:查詢數據庫的實例名
select instance_name from v$instance; 4: 數據庫域名
數據庫安裝結束后,如果要知道正在運行額數據庫是否有域名以及數據庫域名名稱可以用 select value from v$parameter where name='db_domain' show parameter domain 5:數據庫服務名
如果數據庫有域名,則數據庫服務名就是全局數據庫名,如果該數據庫沒有定義域名,則數據庫服務名與數據庫名相同 show parameter service_name
6:顯示當前用戶
show user 7:直接登陸
sqlplus "/as sysdba" 8:當前ORACLE系統時間
select sysdate from dual;
9:查詢數據庫字典v$nls_parameter產看字符集相關參數 select * from v$nls_parameters;
//*************
oracle基本操作語句(適合初學者)
Oracle數據庫sql語句
DML操作(insert , delete , update)之后,一定要使用commit或rollback命令來結束該事務,否則直接關閉SQL Plus,數據庫默認rollback之前未提交的事務,所以今天你在select的時候 會顯示未選定行。
而手動輸入commit,rollback 這類的命令,是顯示的提交事務(完成事務)。
如果在DML操作之后未及時顯示的提交,而是又進行了DDL操作(create alter。),則數據庫會隱式的提交之前未完成的事務。
所以 下次一定要注意哦~~
轉載請注明出處華閱文章網 » oracle數據庫基本語句