SQL高級教程之CREATE INDEX創建索引/DROP刪除/ALTER更新/INCREMENT插入

SQL CREATE INDEX 語句

CREATE INDEX 語句用於在表中創建索引。
在不讀取整個表的情況下,索引使數據庫應用程序可以更快地查找數據。

索引
您可以在表中創建索引,以便更加快速高效地查詢數據。
用戶無法看到索引,它們只能被用來加速搜索/查詢。
註釋:更新一個包含索引的表需要比更新一個沒有索引的表更多的時間,這是由於索引本身也需要更新。因此,理想的做法是僅僅在常常被搜索的列(以及表)上面創建索引。

SQL CREATE INDEX 語法
在表上創建一個簡單的索引。允許使用重複的值:
CREATE INDEX index_name
ON table_name (column_name)
註釋:"column_name" 規定需要索引的列。
SQL CREATE UNIQUE INDEX 語法
在表上創建一個唯一的索引。唯一的索引意味着兩個行不能擁有相同的索引值。

CREATE UNIQUE INDEX index_name
on table_name (column_name)
CREATE INDEX 實例
本例會創建一個簡單的索引,名爲 "PersonIndex",在 Person 表的 LastName 列:

CREATE PersonIndex
ON person (LastName)
如果您希望以降序索引某個列中的值,您可以在列名稱之後添加保留字 DESC:

CREATE INDEX PersonIndex
ON Person (LastName DESC)
假如您希望索引不止一個列,您可以在括號中列出這些列的名稱,用逗號隔開:

CREATE INDEX PersonIndex
ON Person (LastName, FirstName)


SQL 撤銷索引、表以及數據庫

通過使用 DROP 語句,可以輕鬆地刪除索引、表和數據庫。

SQL DROP INDEX 語句
我們可以使用 DROP INDEX 命令刪除表格中的索引。
用於 Microsoft SQLJet (以及 Microsoft Access) 的語法:
DROP INDEX index_name
ON table_name
用於 MS SQL Server 的語法:
DROP INDEX table_name.index_name
用於 IBM DB2 和 Oracle 語法:
DROP INDEX index_name
用於 MySQL 的語法:
ALERT TABLE table_name DROP INDEX index_name
SQL DROP TABLE 語句
DROP TABLE 語句用於刪除表(表的結構、屬性以及索引也會被刪除):
DROP TABLE table_name
SQL DROP DATABASE 語句
DROP DATABASE 語句用於刪除數據庫:
DROP DATABASE db_name(數據庫名稱)
SQL TRUNCATE TABLE 語句
如果我們僅僅需要除去表內的數據,但並不刪除表本身,那麼我們該如何做呢?
請使用 TRUNCATE TABLE 命令(僅僅刪除表格中的數據):
TRUNCATE TABLE table_name(表名稱)

ALTER TABLE 語句
ALTER TABLE 語句用於在已有的表中添加、修改或刪除列。

SQL ALTER TABLE 語法
如需在表中添加列,請使用下列語法:
ALTER TABLE table_name(先聲明哪張表)
ADD column_name datatype(然後做出具體的操作)
要刪除表中的列,請使用下列語法:
ALTER TABLE table_name 
DROP COLUMN column_name
註釋:某些數據庫系統不允許這種在數據庫表中刪除列的方式 (DROP COLUMN column_name)。

要改變表中列的數據類型,請使用下列語法:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
原始的表 (用在例子中的):
Persons 表:

SQL ALTER TABLE 實例
現在,我們希望在表 "Persons" 中添加一個名爲 "Birthday" 的新列。
我們使用下列 SQL 語句:
ALTER TABLE Persons
ADD Birthday date
請注意,新列 "Birthday" 的類型是 date,可以存放日期。數據類型規定列中可以存放的數據的類型。
新的 "Persons" 表類似這樣:

改變數據類型實例
現在我們希望改變 "Persons" 表中 "Birthday" 列的數據類型。
我們使用下列 SQL 語句:
ALTER TABLE Persons
ALTER COLUMN Birthday year
請注意,"Birthday" 列的數據類型是 year,可以存放 2 位或 4 位格式的年份。
DROP COLUMN 實例
接下來,我們刪除 "Person" 表中的 "Birthday" 列:
ALTER TABLE Person
DROP COLUMN Birthday
Persons 表會成爲這樣:


SQL AUTO INCREMENT 字段
Auto-increment 會在新記錄插入表中時生成一個唯一的數字。
AUTO INCREMENT 字段
我們通常希望在每次插入新記錄時,自動地創建主鍵字段的值。

我們可以在表中創建一個 auto-increment 字段。

用於 MySQL 的語法
下列 SQL 語句把 "Persons" 表中的 "P_Id" 列定義爲 auto-increment 主鍵:
CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
MySQL 使用 AUTO_INCREMENT 關鍵字來執行 auto-increment 任務。
默認地,AUTO_INCREMENT 的開始值是 1,每條新記錄遞增 1。
要讓 AUTO_INCREMENT 序列以其他的值起始,請使用下列 SQL 語法:
ALTER TABLE Persons AUTO_INCREMENT=100
要在 "Persons" 表中插入新記錄,我們不必爲 "P_Id" 列規定值(會自動添加一個唯一的值):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')
上面的 SQL 語句會在 "Persons" 表中插入一條新記錄。"P_Id" 會被賦予一個唯一的值。"FirstName" 會被設置爲 "Bill","LastName" 列會被設置爲 "Gates"。

用於 SQL Server 的語法
下列 SQL 語句把 "Persons" 表中的 "P_Id" 列定義爲 auto-increment 主鍵:

CREATE TABLE Persons
(
P_Id int PRIMARY KEY IDENTITY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
MS SQL 使用 IDENTITY 關鍵字來執行 auto-increment 任務。

默認地,IDENTITY 的開始值是 1,每條新記錄遞增 1。

要規定 "P_Id" 列以 20 起始且遞增 10,請把 identity 改爲 IDENTITY(20,10)

要在 "Persons" 表中插入新記錄,我們不必爲 "P_Id" 列規定值(會自動添加一個唯一的值):


INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')
上面的 SQL 語句會在 "Persons" 表中插入一條新記錄。"P_Id" 會被賦予一個唯一的值。"FirstName" 會被設置爲 "Bill","LastName" 列會被設置爲 "Gates"。


用於 Access 的語法
下列 SQL 語句把 "Persons" 表中的 "P_Id" 列定義爲 auto-increment 主鍵:
CREATE TABLE Persons
(
P_Id int PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
MS Access 使用 AUTOINCREMENT 關鍵字來執行 auto-increment 任務。
默認地,AUTOINCREMENT 的開始值是 1,每條新記錄遞增 1。
要規定 "P_Id" 列以 20 起始且遞增 10,請把 autoincrement 改爲 AUTOINCREMENT(20,10)
要在 "Persons" 表中插入新記錄,我們不必爲 "P_Id" 列規定值(會自動添加一個唯一的值):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')
上面的 SQL 語句會在 "Persons" 表中插入一條新記錄。"P_Id" 會被賦予一個唯一的值。"FirstName" 會被設置爲 "Bill","LastName" 列會被設置爲 "Gates"。

用於 Oracle 的語法
在 Oracle 中,代碼稍微複雜一點。

您必須通過 sequence 對創建 auto-increment 字段(該對象生成數字序列)。

請使用下面的 CREATE SEQUENCE 語法:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
上面的代碼創建名爲 seq_person 的序列對象,它以 1 起始且以 1 遞增。該對象緩存 10 個值以提高性能。CACHE 選項規定了爲了提高訪問速度要存儲多少個序列值。

要在 "Persons" 表中插入新記錄,我們必須使用 nextval 函數(該函數從 seq_person 序列中取回下一個值):

INSERT INTO Persons (P_Id,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')
上面的 SQL 語句會在 "Persons" 表中插入一條新記錄。"P_Id" 的賦值是來自 seq_person 序列的下一個數字。"FirstName" 會被設置爲 "Bill","LastName" 列會被設置爲 "Gates"。
--------------------- 
作者:小漢丶 
來源:CSDN 
原文:https://blog.csdn.net/zbj18314469395/article/details/79835486 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

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