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,create table vincent_sms as select * from vincent_voice 創建一個表vincent_sms,其字段類型同vincent_voice完全一樣,并會把vincent_voice中的記錄也復制到vincent_sms表中去 注:select子句還可以加where限制條件 2, insert into vincent_sms select * from vincent_voice 將vincent_voice表中的記錄導入vincent_sms 表中 注:select子句還可以加where限制條件,如果vincent_sms 和vincent_voice表結構不一樣的話,當然可以指明字段的。
Oracle循環語句的寫法有哪些呢
如果您對Oracle循環語句方面感興趣的話,不妨一看。
loop循環: 1。 create or replace procedure pro_test_loop is 2。
i number; 3。 begin 4。
i:=0; 5。 loop 6。
ii:=i+1; 7。 dbms_output。
put_line(i); 8。 if i》5 then 9。
exit; 10。 end if; 11。
end loop; 12。 end pro_test_loop; while循環: 1。
create or replace procedure pro_test_while is 2。 i number; 3。
begin 4。 i:=0; 5。
while i《5 loop 6。 ii:=i+1; 7。
dbms_output。 put_line(i); 8。
end loop; 9。 end pro_test_while; for循環1: 1。
create or replace procedure pro_test_for is 2。 i number; 3。
begin 4。 i:=0; 5。
for i in 1。
5 loop 6。 dbms_output。
put_line(i); 7。 end loop; 8。
end pro_test_for; for循環2: 1。 create or replace procedure pro_test_cursor is 2。
userRow t_user%rowtype; 3。 cursor userRows is 4。
select * from t_user; 5。 begin 6。
for userRow in userRows loop 7。 dbms_output。
put_line(userRow。Id||','||userRow。
Name||','||userRows%rowcount); 8。 end loop; 9。
end pro_test_cursor;。
Oracle的Sql語句必做哪些事
使用scott/tiger用戶下的emp表和dept表完成下列練習,表的結構說明如下 emp員工表(empno員工號/ename員工姓名/job工作/mgr上級編號/hiredate受雇日期/sal薪金/comm傭金/deptno部門編號) dept部門表(deptno部門編號/dname部門名稱/loc地點) 工資 = 薪金 + 傭金 1.列出至少有一個員工的所有部門 2.列出薪金比“SMITH”多的所有員工。
3.列出所有員工的姓名及其直接上級的姓名。 4.列出受雇日期晚于其直接上級的所有員工。
5.列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門。 6.列出所有“CLERK”(辦事員)的姓名及其部門名稱。
7.列出最低薪金大于1500的各種工作。 8.列出在部門“SALES”(銷售部)工作的員工的姓名,假定不知道銷售部的部門編號。
9.列出薪金高于公司平均薪金的所有員工。 10.列出與“SCOTT”從事相同工作的所有員工。
11.列出薪金等于部門30中員工的薪金的所有員工的姓名和薪金。 12.列出薪金高于在部門30工作的所有員工的薪金的員工姓名和薪金。
13.列出在每個部門工作的員工數量、平均工資和平均服務期限。 14.列出所有員工的姓名、部門名稱和工資。
16.列出所有部門的詳細信息和部門人數。 17.列出各種工作的最低工資。
18.列出MANAGER(經理)的最低薪金。 19.列出所有員工的年工資,按年薪從低到高排序。
Oracle10G常用維護語句有哪些
1 創建表空間 CREATE TABLESPACE CPORTAL LOGGING DATAFILE '/dev/raw/raw1' SIZE 30000M REUSE EXTENT MANAGEMENT LOCAL 2 創建用戶 CREATE USER CPORTAL PROFILE DEFAULT IDENTIFIED BY CPORTAL DEFAULT TABLESPACE CPORTAL TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK; GRANT CONNECT TO CPORTAL; GRANT RESOURCE TO CPORTAL; 3 參數修改 ALTER SYSTEM SET sga_target 1000M SCOPESPFILE; ALTER SYSTEM SET pga_aggregate_target 200M SCOPESPFILE; ALTER SYSTEM SET OPEN_CURSORS500 SCOPESPFILE; ALTER SYSTEM SET processes200 SCOPESPFILE; ALTER SYSTEM SET remote_login_passwordfile NONE SCOPESPFILE; create pfile from spfile; -- -- Modify the other oracle parameter! -- ALTER DATABASE TEMPFILE '/opt/oracle/oradata/cportal/temp01。
dbf' RESIZE 1024M; ALTER DATABASE DATAFILE '/opt/oracle/oradata/cportal/undotbs01。dbf' RESIZE 1024M; ALTER DATABASE DATAFILE '/opt/oracle/oradata/cportal/undotbs01。
dbf' AUTOEXTEND ON MAXSIZE 10240M 4 查看表空間名稱和大小 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; 5 查看表空間的使用情況 select sum(bytes)/(1024*1024) as free_space,tablespace_name from dba_free_space group by tablespace_name; 6、查看表空間物理文件的名稱及大小 select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name; 7、查看數據庫庫對象 select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status; 8、查看控制文件 select name from v$controlfile; 9、查看日志文件 select member from v$logfile; 10 。 結束用戶會話 alter system kill session 'SID,SERIAL#'; select sid,serial#,username,program,machine,status from v$session;。
oracle維護常用語句有哪些
1、查看表空間的名稱及大小 select *pace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where *pace_name = *pace_name group by *pace_name; 2、查看表空間物理文件的名稱及大小 select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name; 3、查看回滾段名稱及大小 select segment_name, tablespace_name, *, (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, * CurExtent From dba_rollback_segs r, v$rollstat v Where *t_id = *(+) order by segment_name ; 4、查看控制文件 select name from v$controlfile; 5、查看日志文件 select member from v$logfile; 6、查看表空間的使用情況 select sum(bytes)/(1024*1024) as free_space,tablespace_name from dba_free_space group by tablespace_name; SELECT *PACE_NAME,* TOTAL,* USED, * FREE, (**100)/* "% USED",(**100)/* "% FREE" FROM *$TS_AVAIL A,*$TS_USED B,*$TS_FREE C WHERE *PACE_NAME=*PACE_NAME AND *PACE_NAME=*PACE_NAME; 7、查看數據庫庫對象 select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status; 8、查看數據庫的版本 Select version FROM Product_component_version Where SUBSTR(PRODUCT,1,6)='Oracle'; 9、查看數據庫的創建日期和歸檔方式 Select Created, Log_Mode, Log_Mode From V$Database; 10、查看當前所有對象 SQL> select * from tab; 1 1、建一個和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; 1 2、察看數據庫的大小,和空間使用情況 SQL> col tablespace format a20 SQL> select *_id 文件ID, *pace_name 表空間, *_name 物理文件名, * 總字節數, (*-sum(nvl(*,0))) 已使用, sum(nvl(*,0)) 剩余, sum(nvl(*,0))/(*)*100 剩余百分比 from dba_free_space a,dba_data_files b where *_id=*_id group by *pace_name,*_name,*_id,* order by *pace_name / dba_free_space --表空間剩余空間狀況 dba_data_files --數據文件空間占用情況 1 3、查看現有回滾段及其狀態 SQL> col segment format a30 SQL> SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS; 1 4、查看數據文件放置的路徑 SQL> col file_name format a50 SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id; 1 5、顯示當前連接用戶 SQL> show user 1 6、把SQL*Plus當計算器 SQL> select 100*20 from dual; 1 7、連接字符串 SQL> select 列1||列2 from 表1; SQL> select concat(列1,列2) from 表1; 1 8、查詢當前日期 SQL> select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual; 1 9、用戶間復制數據 SQL> copy from user1 to user2 create table2 using select * from table1; 20、視圖中不能使用order by,但可用group by代替來達到排序目的 SQL> create view a as select b1,b2 from b group by b1,b2; 2 1、通過授權的方式來創建用戶 SQL> grant connect,resource to test identified by test; SQL> conn test/test。
oracle里面如何寫case語句呢
SELECT LogID,UserID,LogTime,Url,Description,(case OperateType when OperateType = 0 then '新增' when OperateType=1 then '修改' else '刪除' end case) FROM LOG 1。
case SELECT LogID,UserID,LogTime,Url,Description,( case when OperateType = 0 then '新增' when OperateType=1 then '修改' else '刪除' end ) FROM LOG 2。 DECODE的寫法: SELECT LogID,UserID,LogTime,Url,Description, decode(OperateType,0,'新增',1,'修改','刪除') OperationName。