資料庫 - 索引、基本表建立與刪除
修改基本表
ALTER TABLE <表名>
[ ADD <新列名> <資料型別> [ 完整性約束 ] ]
[ DROP <完整性約束名> ]
[ ALTER COLUMN<列名> <資料型別> ];
[例8]向Student表增加“入學時間”列,其資料型別為日期型。
ALTER TABLE Student ADD S_entrance DATE;
不論基本表中原來是否已有資料,新增加的列一律為空值。
[例9]將年齡的資料型別由字元型(假設原來的資料型別是字元型)改為整數。
ALTER TABLE Student ALTER COLUMN Sage INT;
[例10]增加課程名稱必須取唯一值的約束條件。
ALTER TABLE Course ADD UNIQUE(Cname);
刪除基本表
DROP TABLE <表名>[RESTRICT| CASCADE];
RESTRICT:刪除表是有限制的。
欲刪除的基本表不能被其他表的約束所引用
如果存在依賴該表的物件,則此表不能被刪除
CASCADE:刪除該表沒有限制。
在刪除基本表的同時,相關的依賴物件一起刪除
[例11] 刪除Student表
DROP TABLE Student CASCADE ;
基本表定義被刪除,資料被刪除
表上建立的索引、檢視、觸發器等一般也將被刪除
[例12]若表上建有檢視,選擇RESTRICT時表不能刪除
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS';
DROP TABLE Student RESTRICT;
--ERROR: cannot drop table Student because other
objects depend on it
[例12]如果選擇CASCADE時可以刪除表,檢視也自動被刪除
DROP TABLE Student CASCADE;
--NOTICE: drop cascades to view IS_Student
SELECT * FROM IS_Student;
--ERROR: relation " IS_Student " does not exist
索引的建立與刪除
建立索引的目的:加快查詢速度
誰可以建立索引
DBA 或 表的屬主(即建立表的人)
DBMS一般會自動建立以下列上的索引
PRIMARY KEY
UNIQUE
誰 維護索引
DBMS自動完成
使用索引
DBMS自動選擇是否使用索引以及使用哪些索引
RDBMS中索引一般採用B+樹、HASH索引來實現
B+樹索引具有動態平衡的優點
HASH索引具有查詢速度快的特點
採用B+樹,還是HASH索引 則由具體的RDBMS來決定
索引是關聯式資料庫的內部實現技術,屬於內模式的範疇
CREATE INDEX語句定義索引時,可以定義索引是唯一索引、非唯一索引或聚簇索引
語句格式
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
[例13] CREATE CLUSTER INDEX Stusname
ON Student(Sname);
在Student表的Sname(姓名)列上建立一個聚簇索引
在最經常查詢的列上建立聚簇索引以提高查詢效率
一個基本表上最多隻能建立一個聚簇索引
經常更新的列不宜建立聚簇索引
[例14]為學生-課程資料庫中的Student,Course,SC三個表建 立索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
Student表按學號升序建唯一索引
Course表按課程號升序建唯一索引
SC表按學號升序和課程號降序建唯一索引
DROP INDEX <索引名>;
刪除索引時,系統會從資料字典中刪去有關該索引的
描述。
[例15] 刪除Student表的Stusname索引
DROP INDEX Stusname;
相關文章
- MongoDB 資料庫建立刪除、表(集合)建立刪除、資料增刪改查MongoDB資料庫
- oracle資料庫建立、刪除索引等操作Oracle資料庫索引
- [MYSQL] 資料庫建立與刪除MySql資料庫
- Oracle批量建立、刪除資料庫表Oracle資料庫
- PostgreSQL:資料庫的建立與刪除SQL資料庫
- MySQL之資料庫和表的基本操作(建立表、刪除表、向表中新增欄位)MySql資料庫
- Mysql索引的建立與刪除MySql索引
- elasticsearch(三)----索引建立與刪除Elasticsearch索引
- mysql/mariadb學習記錄——建立刪除資料庫、表的基本命令MySql資料庫
- 刪除資料庫表空間資料庫
- SQL Server實戰三:資料庫表完整性約束及索引、檢視的建立、編輯與刪除SQLServer資料庫索引
- 手工建立/刪除資料庫的步驟資料庫
- MongoDB資料庫中更新與刪除資料MongoDB資料庫
- mongodb建立索引和刪除索引和背景索引backgroundMongoDB索引
- 手工建立、刪除11gR2資料庫資料庫
- 【C/C++】資料庫刪除大表C++資料庫
- 資料庫之建立索引資料庫索引
- MySQL刪除資料表MySql
- 刪除大表資料
- MySQL建立索引、修改索引、刪除索引的命令語句MySql索引
- mysql 建立和刪除聯合索引MySql索引
- 資料表分割槽分割與刪除歷史資料
- 資料庫的選定、建立、刪除和變更資料庫
- MySQL資料庫表誤刪除恢復(一)MySql資料庫
- 如何刪除資料庫下的所有表(mysql)資料庫MySql
- 【Mongo】MongoDB索引管理-索引的建立、檢視、刪除MongoDB索引
- SQL Server實戰二:建立、修改、複製、刪除資料庫表並加以資料處理SQLServer資料庫
- indexedDB 刪除資料庫Index資料庫
- hadoop 資料夾檔案的建立與刪除Hadoop
- 表管理之二:表資料的插入修改與刪除
- 手工建立資料庫及刪除資料庫示例--附建庫時alert日誌資料庫
- 【RAC】刪除RAC資料庫節點(一)——刪除資料庫例項資料庫
- mongodb資料庫如何建立索引?MongoDB資料庫索引
- 為資料庫建立索引(轉)資料庫索引
- 海量資料表刪除方案
- 11gr2 RAC靜默刪除、建立資料庫資料庫
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- MYSQL資料庫表記錄刪除解決方案MySql資料庫