1. 程式人生 > >Oracle-資料庫增刪改查基本操作

Oracle-資料庫增刪改查基本操作

一、建立資料表 1).建立不存在的新表:
 create table tname(
  Data_Name Date_Type [default][預設值]
 );
2).建立已存在表的副本
 create table emp1 as select * from emp;
二、插入資料
1).為部分欄位批量插入資料
    insert into emp1(empno,ename,job) select empno,ename,job from emp;
2).為部分欄位插入單行資料
    insert into emp1(ename,empno) values('QY','1610676710');
3.資料操作
增:insert into table_name(屬性名) values(對應的值);
       insert into table_name as select * from emp;
刪:drop--->針對表級,表框架結構的刪除        drop table table_name;
       delete--->刪除資料        delete table_name where condition;
改:alter   ---->更改表框架結構
       alter table table_name rename column sal to person_sal;
       alter table table_name rename new_table_name;
       alter table table_name modify sal varchar(10);----修改屬性的資料型別(注意更改該屬性時)
       alter table
       update  --->更新表中資料        update table_name set ename='yuyu' where empno=7900;
查:select        select * from emp;
三、約束

約束:primary key,foreign key,not null,unique,check;
1).主鍵Primary key和Unique區別:
  主鍵(在表中只有一個)和唯一性約束(表中允許存在多個)
  主鍵(不允許有空值)和唯一性約束(表中允許存在多個空值)
2).帶有約束名的約束條件
  A.建立主鍵約束(四種方式)
     ---1----
    create table table_name(
      ename varchar2(20) primary key
    );
     ---2----
    create table table_name(
      ename varchar2(20),
      primary key(ename)
    );
     ---3----
    create table table_name(
      ename varchar2(20) constraint ename_cons primary key
    );
    ---4----
    create table table_name(
      ename varchar2(20) ,
      constraint ename_cons primary key(ename)
    );
  B.新增約束名
   alter table emp add constraint  ename_cons primary key(ename);
  C.刪除約束名
   alter table emp drop constraint  ename_cons;
  D.檢視約束名(根據user_constraints這個表)、
    select constraint_name,table_name,constraint_type|column_name|column_type from user_constraints where table_name=一定要大寫;

四、遊標補充
1).ref cursor
當需要將遊標與不同的查詢語句建立關聯時,類似於指標,輸入動態遊標,即只有執行時才知道這條查詢;
--格式:
type cursor_name is ref cursor [return return_type];--建立遊標
cursor_variable cursor_name;--宣告遊標
open cursor_variable for select_statement;--開啟遊標
close cursor_variable;--關閉遊標
注:1).遊標型別本身可以在包中定義,但是遊標變數不能在包中定義
    2).遊標變數可以在客戶端與伺服器之間傳遞,但不能在兩個伺服器之間傳遞
    3).不能通過動態sql使用遊標變數
    4).PL/SQL的index-by表,巢狀表和可變陣列不能儲存遊標變數,表和檢視不能儲存ref cursor引用型別的列
    5).能用靜態遊標,不用動態
2).sys_refcursor
主要用於在過程中返回結果集
舉例、
create ir replace procedure mypro(cur out sys_refcursor) as
begin
open cur for select * from emp;
end mypro;
/
客戶端:
var cur refcursor;
exec mypro(:cur);