【Oracle 基礎】數據庫表的操作

一、數據定義語句DDL

(一)、數據庫表的創建create table

1.語法結構

create table 表名
(
	列名1 數據類型1 [,列名2 數據類型2 ......]
);

2.oracle常用數據類型

  • 字符類型
    char :固定長度字符串,列長度可以使1~2000個字節
    varchar2 :可變長度字符串,最大長度是4000字節
  • 數值類型
    聲明語法:NUMBER[(P[,S]] P表示精度,S表示小數位數,最高精度是38位,可以存儲整數、浮點數等數值類型。
  • 日期時間類型
    主要類型:DATE
  • LOB類型
    CLOB:可以存儲大量字符數據
    BLOB:可以存儲較大的二進制對象,如圖像、視頻等

示例:

CREATE TABLE student(
	sid NUMBER(8,0),
	name VARCHAR2(20),
	sex char(2),
	birthday DATE,
	address VARCHAR2(50)
);
#用作外鍵的主表
create table department(
	depid VARCHAR2(20) primary key,
	depname varchar2(2));

(二)、數據庫表的修改

1.表列修改 alter table

1)增加列 add
alter table 表名 add 新增列名 數據類型;
2)刪除列 drop column
alter table 表名 drop  column 列名;
3)修改列數據類型 modify
alter table 表名 modify 列名 新數據類型;
4)修改列名 rename column…to…
alter table 表名 rename column 列名 to 新列名;

2.表名修改 rename

rename 表名 to 新表名;

(三)、數據庫表的刪除

1.刪除表數據保留表結構(截斷表)truncate

truncate table 表名;

2.刪除表數據和表結構

drop table 表名;

(四)、數據庫表的約束

1.約束的類型

  • 主鍵約束 primary key
    唯一確定表中每一條記錄的標識符,不能爲null,不能重複,只能有一個主鍵,但是可以由多個列構成
  • 唯一性約束 unique
    指定的一個或者多個列的組合值具有唯一性,防止重複的值。唯一性約束的列允許有空值,一個表中允許多個唯一性約束,可以把唯一性約束定義在多個列上。
  • 默認約束 default
    設置默認值
  • 非空約束 not null
    保證插入或更新數據時,該列不能爲null
  • 檢查約束 check
    設置檢查條件,設置輸入值
  • 外部鍵約束 foreign key
    用於建立和加強兩個表數據之間的連接的一列或多列,外鍵約束是唯一涉及兩個表關係的約束

2.添加約束

1)新建表時添加

A.列級約束
語法:

CREATE TABLE student2(
	列名1 數據類型1 約束類型1 
	[,列名2 數據類型2 約束類型2......] 
);

示例:

CREATE TABLE student2(
	sid NUMBER(8,0) primary key,
	name VARCHAR2(20) [constraint 約束名] not null,
	sex char(2) check(sex='男' or sex='女'),
	birthday DATE,
	address VARCHAR2(50) default '中國',
	cardid VARCHAR2(18) unique,
	depid VARCHAR2(20) references department(depid)
);

B.表級約束
語法:

CREATE TABLE student2(
	列名1 數據類型1 
	[,列名2 數據類型2 ......] 
	constraint 約束名1 約束類型1 (列名1)
	[,constraint 約束名2 約束類型2 (列名2)......]
);

示例:

CREATE TABLE student2(
	sid NUMBER(8,0),
	name VARCHAR2(20),
	sex char(2),
	birthday DATE,
	address VARCHAR2(50),
	cardid VARCHAR2(18),
	depid VARCHAR2(20),
	constraint pk primary key(sid),
	constraint uq primary key(cardid),
	constraint ch check(sex='男' or sex='女'),
	constraint fk foreign key(depid) references department(depid) on delete cascade
);
2)修改表時添加

語法:

alter table 表名 add constraint 約束名 約束類型(列名);
#針對非空約束:
alter table 表名 modify (列名 數據類型 not null);
#針對默認約束
alter table 表名 modify 列名  default 默認值;

示例:

alter table student add constraint pk primary key(sid);
alter table student modify (name VARCHAR2(20) not null);

3.刪除約束

1)禁用和啓用約束

語法:

alter table 表名 disable constraint 約束名;
alter table 表名 enable constraint 約束名;

示例:

alter table student disable constraint pk;
alter table student enable constraint pk;
2)徹底刪除約束

語法:

alter table 表名 drop 約束名;
#針對主鍵是唯一的,可以直接指明刪除主鍵
alter table 表名 drop primary key;
#針對非空約束
alter table 表名 modify 列名 數據類型  null;
#針對默認約束
alter table 表名 modify 列名  default null;

示例:

alter table student drop constraint pk;

二、數據操作語言DML

(一)、添加數據insert

語法結構:

insert into 表名 [(1,2,...列n)] values (1,2,...值n);
#示例
insert into student  values (12345678,張三,,1989-10-20,default,454268477895524458,2222);

(二)、查詢數據select

語法結構:

select *|column[,...] from 表名;

(三)、修改數據update

update table set 列名1=1 [列名2=2,...] [where 條件];

(四)、刪除數據delete

delete from table [where 條件];

三、事務控制語言TCL

(一)、提交事務

commit;

當執行了commit語句後,會確認事務的變化,結束事務、刪除保存點,釋放鎖。

(二)、回滾事務

rollback;#回滾全部事務
rollabck to 保存點名;

rollback只能對未提交的數據進行撤銷,已經commit的數據是無法撤銷的

(三)、保存點

savepoint 保存點名;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章