【SQL】16 SQL CREATE INDEX 語句、 撤銷索引、撤銷表以及撤銷資料庫、ALTER TABLE 語句、AUTO INCREMENT 欄位
SQL CREATE INDEX 語句
CREATE INDEX 語句用於在表中建立索引。
在不讀取整個表的情況下,索引使資料庫應用程式可以更快地查詢資料。
索引
您可以在表中建立索引,以便更加快速高效地查詢資料。
使用者無法看到索引,它們只能被用來加速搜尋/查詢。
註釋:更新一個包含索引的表需要比更新一個沒有索引的表花費更多的時間,這是由於索引本身也需要更新。因此,理想的做法是僅僅在常常被搜尋的列(以及表)上面建立索引。
SQL CREATE INDEX 語法
在表上建立一個簡單的索引。允許使用重複的值:
CREATE INDEX index_name
ON table_name (column_name)
SQL CREATE UNIQUE INDEX 語法
在表上建立一個唯一的索引。不允許使用重複的值:唯一的索引意味著兩個行不能擁有相同的索引值。Creates a unique index on a table. Duplicate values are not allowed:
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
註釋:用於建立索引的語法在不同的資料庫中不一樣。因此,檢查您的資料庫中建立索引的語法。
CREATE INDEX 例項
下面的 SQL 語句在 "Persons" 表的 "LastName" 列上建立一個名為 "PIndex" 的索引:
CREATE INDEX PIndex
ON Persons (LastName)
如果您希望索引不止一個列,您可以在括號中列出這些列的名稱,用逗號隔開:
CREATE INDEX PIndex
ON Persons (LastName, FirstName)
SQL 撤銷索引、撤銷表以及撤銷資料庫
通過使用 DROP 語句,可以輕鬆地刪除索引、表和資料庫。
DROP INDEX 語句
DROP INDEX 語句用於刪除表中的索引。
用於 MS Access 的 DROP INDEX 語法:
DROP INDEX index_name ON table_name
用於 MS SQL Server 的 DROP INDEX 語法:
DROP INDEX table_name.index_name
用於 DB2/Oracle 的 DROP INDEX 語法:
DROP INDEX index_name
用於 MySQL 的 DROP INDEX 語法:
ALTER TABLE table_name DROP INDEX index_name
DROP TABLE 語句
DROP TABLE 語句用於刪除表。
DROP TABLE table_name
DROP DATABASE 語句
DROP DATABASE 語句用於刪除資料庫。
DROP DATABASE database_name
TRUNCATE TABLE 語句
如果我們僅僅需要刪除表內的資料,但並不刪除表本身,那麼我們該如何做呢?
請使用 TRUNCATE TABLE 語句:
TRUNCATE TABLE table_name
SQL ALTER TABLE 語句
ALTER TABLE 語句
ALTER TABLE 語句用於在已有的表中新增、刪除或修改列。
SQL ALTER TABLE 語法
如需在表中新增列,請使用下面的語法:
ALTER TABLE table_name
ADD column_name datatype
如需刪除表中的列,請使用下面的語法(請注意,某些資料庫系統不允許這種在資料庫表中刪除列的方式):
ALTER TABLE table_name
DROP COLUMN column_name
要改變表中列的資料型別,請使用下面的語法:
SQL Server / MS Access:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
My SQL / Oracle:
ALTER TABLE table_name
MODIFY COLUMN column_name datatype
Oracle 10G 之後版本:
ALTER TABLE table_name
MODIFY column_name datatype;
SQL ALTER TABLE 例項
請看 "Persons" 表:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
現在,我們想在 "Persons" 表中新增一個名為 "DateOfBirth" 的列。
我們使用下面的 SQL 語句:
ALTER TABLE Persons
ADD DateOfBirth date
請注意,新列 "DateOfBirth" 的型別是 date,可以存放日期。資料型別規定列中可以存放的資料的型別。如需瞭解 MS Access、MySQL 和 SQL Server 中可用的資料型別,請訪問我們完整的 資料型別參考手冊。
現在,"Persons" 表將如下所示:
P_Id | LastName | FirstName | Address | City | DateOfBirth |
---|---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes | |
2 | Svendson | Tove | Borgvn 23 | Sandnes | |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
改變資料型別例項
現在,我們想要改變 "Persons" 表中 "DateOfBirth" 列的資料型別。
我們使用下面的 SQL 語句:
ALTER TABLE Persons
ALTER COLUMN DateOfBirth year
請注意,現在 "DateOfBirth" 列的型別是 year,可以存放 2 位或 4 位格式的年份。
DROP COLUMN 例項
接下來,我們想要刪除 "Person" 表中的 "DateOfBirth" 列。
我們使用下面的 SQL 語句:
ALTER TABLE Persons
DROP COLUMN DateOfBirth
現在,"Persons" 表將如下所示:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 |
Stavanger |
SQL AUTO INCREMENT 欄位
Auto-increment 會在新記錄插入表中時生成一個唯一的數字。
AUTO INCREMENT 欄位
我們通常希望在每次插入新記錄時,自動地建立主鍵欄位的值。
我們可以在表中建立一個 auto-increment 欄位。
用於 MySQL 的語法
下面的 SQL 語句把 "Persons" 表中的 "ID" 列定義為 auto-increment 主鍵欄位:
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)
MySQL 使用 AUTO_INCREMENT 關鍵字來執行 auto-increment 任務。
預設地,AUTO_INCREMENT 的開始值是 1,每條新記錄遞增 1。
要讓 AUTO_INCREMENT 序列以其他的值起始,請使用下面的 SQL 語法:
ALTER TABLE Persons AUTO_INCREMENT=100
要在 "Persons" 表中插入新記錄,我們不必為 "ID" 列規定值(會自動新增一個唯一的值):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')
上面的 SQL 語句會在 "Persons" 表中插入一條新記錄。"ID" 列會被賦予一個唯一的值。"FirstName" 列會被設定為 "Lars","LastName" 列會被設定為 "Monsen"。
用於 SQL Server 的語法
下面的 SQL 語句把 "Persons" 表中的 "ID" 列定義為 auto-increment 主鍵欄位:
CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
MS SQL Server 使用 IDENTITY 關鍵字來執行 auto-increment 任務。
在上面的例項中,IDENTITY 的開始值是 1,每條新記錄遞增 1。
提示:要規定 "ID" 列以 10 起始且遞增 5,請把 identity 改為 IDENTITY(10,5)。
要在 "Persons" 表中插入新記錄,我們不必為 "ID" 列規定值(會自動新增一個唯一的值):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')
上面的 SQL 語句會在 "Persons" 表中插入一條新記錄。"ID" 列會被賦予一個唯一的值。"FirstName" 列會被設定為 "Lars","LastName" 列會被設定為 "Monsen"。
用於 Access 的語法
下面的 SQL 語句把 "Persons" 表中的 "ID" 列定義為 auto-increment 主鍵欄位:
CREATE TABLE Persons
(
ID Integer 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。
提示:要規定 "ID" 列以 10 起始且遞增 5,請把 autoincrement 改為 AUTOINCREMENT(10,5)。
要在 "Persons" 表中插入新記錄,我們不必為 "ID" 列規定值(會自動新增一個唯一的值):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')
上面的 SQL 語句會在 "Persons" 表中插入一條新記錄。"ID" 列會被賦予一個唯一的值。"FirstName" 列會被設定為 "Lars","LastName" 列會被設定為 "Monsen"。
語法 for Oracle
在 Oracle 中,程式碼稍微複雜一點。
您必須通過 sequence 物件(該物件生成數字序列)建立 auto-increment 欄位。
請使用下面的 CREATE SEQUENCE 語法:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
上面的程式碼建立一個名為 seq_person 的 sequence 物件,它以 1 起始且以 1 遞增。該物件快取 10 個值以提高效能。cache 選項規定了為了提高訪問速度要儲存多少個序列值。
要在 "Persons" 表中插入新記錄,我們必須使用 nextval 函式(該函式從 seq_person 序列中取回下一個值):
INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')
上面的 SQL 語句會在 "Persons" 表中插入一條新記錄。"ID" 列會被賦值為來自 seq_person 序列的下一個數字。"FirstName"列 會被設定為 "Lars","LastName" 列會被設定為 "Monsen"。
相關文章
- git進階(撤銷pull、撤銷merge、撤銷add)Git
- 撤銷git addGit
- 【SQL】14 UNION 操作符、SELECT INTO 語句、INSERT INTO SELECT 語句、CREATE DATABASE 語句、CREATE TABLE 語句SQLDatabase
- 撤銷 git commit --amendGitMIT
- Git命令(撤銷更改)Git
- 如何撤銷 Git 操作?Git
- Git中撤銷提交Git
- 撤銷 git commit –amendGitMIT
- git各種撤銷提交Git
- 回滾與撤銷(一)
- git 撤銷相關操作Git
- 撤銷rebase與git原理Git
- 【資料庫】SQL語句資料庫SQL
- SQL Server中獲取資料庫名、表名、欄位名和欄位註釋的SQL語句SQLServer資料庫
- 撤銷和回退的實現
- 釋出/撤銷NPM私有包NPM
- git 中撤銷已commit 的GitMIT
- Git 系列教程(7)- 撤銷操作Git
- 1.4 資料庫和常用SQL語句(正文)——MySQL資料庫命令和SQL語句資料庫MySql
- SQL基礎 AUTO_INCREMENT 欄位SQLREM
- 資料庫常用的sql語句大全--sql資料庫SQL
- sqlserver採集欄位的sql語句SQLServer
- git 入門教程之撤銷更改Git
- 在Swift中實現撤銷功能Swift
- git add 新增錯檔案 撤銷Git
- Qt中的撤銷/重做功能QT
- Git 實用操作:撤銷 Commit 提交GitMIT
- Git 撤銷修改和版本回退Git
- Git commit 之後,想撤銷 commitGitMIT
- Word2016不能撤銷的bug
- AUTOCAD——命令重複、撤銷與重做
- 資料庫常用操作SQL語句資料庫SQL
- sql語句修改欄位型別和增加欄位SQL型別
- idea內建資料庫 + sql語句庫表操作Idea資料庫SQL
- 撤銷操作 —— Git 學習筆記 12Git筆記
- 安川機器人撤銷編輯機器人
- git撤銷某一次commit提交GitMIT
- 設計模式——命令模式實現撤銷設計模式