Oracle之基本操作(二)

文章目錄

(一)創建表空間、用戶以及用戶授權
(二)數據類型介紹和表的創建
(三)修改表結構
(四)數據的增刪改
(五)序列的使用

(一)創建表空間、用戶以及用戶授權

我們只能使用超級管理員用戶來創建表空間,如下:

	--創建表空間
	create tablespace zzq
	datafile 'c:\zzq.dbf' --該路徑爲虛擬機的路徑
	size 100m --指定初始容量
	autoextend on --允許自動擴容
	next 10m; --每次擴大10m

注意:要在最末尾加上分號
在這裏插入圖片描述
如果直接在虛擬機磁盤上刪除表空間(.DBF)是不行的,如下:
在這裏插入圖片描述
我們接下來演示刪除表空間,如下:

	--刪除表空間
	drop tablespace zzq;

運行了上述語句後,就可以再次回到虛擬機磁盤中刪除了,如下:
在這裏插入圖片描述
接下來創建用戶,如下:

	--創建用戶
	create user zzq
	identified by password --密碼
	default tablespace zzq; --指定表空間

在這裏插入圖片描述
最後給用戶授權,否則用戶無法訪問太多的表空間,如下:

--oracle數據庫中常用角色
connect --連接角色,基本角色
resource --開發者模式
dba --超級管理員模式

公司一般會授權給程序員resource權限,也就是開發者模式,但是我們爲了學習,直接授權dba權限

	--給用戶授權
	grant dba to zzq;

最後切換到zzq用戶,如下:
在這裏插入圖片描述

(二)數據類型介紹和表的創建

在這裏插入圖片描述
注意

  1. 我們比較常用的是varchar2,因爲它可以存放可變長度的字符串
  2. oracle本身不支持存放小數,但是可以使用NUMBER實現存放小數

接下來創建一個表,如下:

	--創建一個person表
	create table person(
		pid number(20),
		pname varchar2(10)
	);

在這裏插入圖片描述
在這裏插入圖片描述

(三)修改表結構

我們演示一下添加一列,如下:

	--添加一列
	alter table person add (gender number(1));

注意

  1. 只對一列做修改,add後面的括號可以省略
  2. 如果想添加多列,可以在括號裏面用逗號做分隔

在這裏插入圖片描述
下面演示修改列類型,如下:

	--修改列類型
	alter table person modify (gender char(1));

注意:如果想修改多列,同樣可以用逗號做分隔
在這裏插入圖片描述
下面演示修改列名,如下:

	--修改列名稱
	alter table person rename column gender to sex;

在這裏插入圖片描述
最後演示刪除一列,如下:

	--刪除一列
	alter table person drop column sex;

在這裏插入圖片描述

(四)數據的增刪改

首先演示添加數據,如下:

	--添加一條記錄
	insert into person (pid,pname) values (1,'小明');
	commit;

在這裏插入圖片描述
然後演示修改數據,如下:

--修改一條記錄
	update person set pname = '小紅' where pid = 1;
	commit;

在這裏插入圖片描述
最後演示刪除數據,一共有三種刪除方法,如下:

	delete from person; --刪除表中全部記錄
	drop table person; --刪除表結構
	truncate table person; --先刪除表,再次創建表,效果等同於刪除表中全部記錄

注意

  1. 在數據量大的情況下,尤其在表中帶有索引的情況下,truncate操作的效率高
  2. 索引是後面會學的,索引可以提高查詢效率,但是會影響增刪改效率

我們直接使用第三種,如下:

	truncate table person;

在這裏插入圖片描述

(五)序列的使用

我們先看看這個問題,如下:
在這裏插入圖片描述
我們發現增加記錄的時候我們是自己手動輸入主鍵的,這樣明顯是不合理的,我們可以用序列去改進

序列

  1. 默認從1開始,依次遞增,主要用來給主鍵賦值使用
  2. 序列不屬於任何一張表,但是可以在邏輯上跟表做綁定

我們接下來創建一個序列,如下:

	create sequence s_person;

我們查看剛纔創建的序列,如下:

	select s_person.nextval from dual;

注意

  1. 雖然序列不屬於任何表,但是oracle查詢必須要帶上from關鍵字,而from關鍵字後面不能爲空,所以要按規則去寫上dual
  2. dual是虛表,只是爲了補全語法,沒有任何意義
  3. s_person.nextval是下一個主鍵應該取的值意思,首次運行就是1,之後每次運行就遞增
  4. 執行了第一次之後,可以使用s_person.currtval查看當前值

效果如下:
在這裏插入圖片描述
在這裏插入圖片描述
我們使用序列主鍵賦值,如下:

	--添加一條記錄,使用序列給主鍵賦值
	insert into person (pid,pname) values (s_person.nextval,'小明');

效果如下:
在這裏插入圖片描述
最後瞭解一下語法:

	CREATE SEQUENCE 序列名
	[INCREMENT BY n] --每次增長多少
	[START WITH n] --從第幾開始
	[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --最大值/最小值,用不上這個
	[{CYCLE|NOCYCLE}] --循環,不要用循環,不如會重複
	[{CACHE n|NOCACHE}]; --提前緩存好,可以提高插入的效率
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章