Oracle-資料庫增刪改查基本操作
阿新 • • 發佈:2018-11-13
一、建立資料表
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);
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');
增: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);