oracle常用sql語句

2021-06-21 13:25:19 字數 2415 閱讀 6542

1. 解鎖oracle使用者下某個使用者(以內建的scott使用者為例):

sql> conn   /as   sysdba

sql> alter user scott account unlock identified by tiger;

解釋:首先要切換到sysdba使用者下,否則會提示(許可權不足):

error at line 1:ora-01031: insufficientprivileges  

第二句中的scott為oracle資料庫中的使用者名稱,tiger為scott使用者的密碼。

2.連同表結構複製乙個表:

sql> create table test as select * from emp;
解釋:上面這個操作是建立乙個表名為test的表。test表中欄位名稱,字段型別和emp表一樣,但emp表中某些欄位中主鍵,外來鍵,unique等屬性不會複製到test表中。如emp表中empno欄位為主鍵,那麼test表中empno欄位不會是主鍵。所以上面這條語句複製時,只是複製了表中的欄位名和字段型別,以及表中的資料。

sql> select table_name ,constraint_name from user_constraints;
3.兩個表結構一樣的表,進行資料拷貝,如將emp表中資料複製到test中(emp和test表結構一樣):

sql> insert into test select * from emp;
上面語句就是將emp表中的資料複製到test表中。其中test表一定要存在。如果test表中有約束,可能會導致插入失敗。

4.給表新增主鍵,外來鍵,unique等等:

sql> alter table test add constraint pk_emp primary key(empno);
上面命令式為test表新增主鍵,主鍵名稱為pk_emp,這個名稱名字按照開發規範統一維護,empno為test表中的某個字段,再新增主鍵時,一定要確保被設為主鍵的這個字段值沒有重複。否則會導致新增主鍵失敗。

sql> alter table test add constraint u_ename unique (ename);
上面這條命令新增了unique約束,約束欄位為ename。在oracle資料庫中unique欄位內容可以為null,在db2資料庫中unique欄位不能為null。

sql> alter table my add constraint r_em foreign key(empno) references test(empno);
上面這條語句是為表my新增外來鍵引用,被引用的那個表中的字段(如上面的empno欄位)必須是主鍵或者unique。

5. 失能,失能,刪除主鍵,外來鍵,unique。

sql> select table_name ,constraint_name from user_constraints;
首先通過上面這條語句查詢當前使用者下某些表擁有的約束名稱。

上圖中constraint_name中很長的字串組成的名字是系統預設情況下定義的約束名稱,而在程式猿自己定義的約束中,一般會按照某種規範取名,如主鍵一般以pk開頭。下面要失能test表中的主鍵約束,命令:

sql> alter table test disable constraint pk_emp;
同理,失能外來鍵,unique等等也是一樣的語句,只是後面的約束名稱不同而已,但如果要刪除的約束(主鍵或unique)被子表當外來鍵引用了(假如有外來鍵的表稱為子表,被引用的表稱為主表)。此時不能通過上面的語句失能主鍵。可以通過刪除或失能子表中的外來鍵引用,然後才能失能主表中的約束。

將上面的disable換成enable,則是使能約束,將disable換成drop則是刪除約束。

6. oracle分析查詢語句是否使用索引。

首先開啟追蹤功能:

如上圖所示,由於test表中的empno為主鍵,所以在使用查詢時,使用了索引,若紅色框框所示。通過這個方法可以在優化sql時,如果拿不住sql語句是否用到了你建立的索引,執行時間,cpu佔用率,方便進行sql調優。

oracle常用SQL語句

最近專案中用到,現記錄一下 新增主鍵 alter table shop spec detail add constraint spec detail id primary key id 新增索引 create index spec detail id on shop spec detail id 給...

Oracle常用SQL語句

今天接到乙個新任務 任務的主要內容簡單點說就是乙個下拉框,乙個查詢條件,乙個 table 顯示。當聽完的時候感覺真的是很簡單,這樣的事情也並非沒有做過。但是當靜下心來仔細分析需求,則會發現其與眾不同之處。1 下拉框中顯示的是我們整個模組的表名稱 2 查詢條件初步設想是根據時間查詢 3 table 第...

oracle常用sql語句

1.查詢xinxi 1 select from aa where zt 0 2 分頁查詢 按照在表中行數查詢 rowed 但是效率不高,個人感覺原理應該是從表頭開始搜尋前去前面的就是需要查詢的中間段 select from select a.rownum m from select from czr...