SQL 進階(5)

來源:互聯網
上載者:User

標籤:sql

SQL 進階(5)SQL CREATE INDEX 語句        CREATE INDEX 語句用於在表中建立索引。
        在不讀取整個表的情況下,索引使資料庫應用程式可以更快地尋找資料。
索引        您可以在表中建立索引,以便更加快速高效地查詢資料。
        使用者無法看到索引,它們只能被用來加速搜尋/查詢。
        注釋:更新一個包含索引的表需要比更新一個沒有索引的表更多的時間,這是由於索引本身也需要更新。因此,理想的做法是僅僅在常常被搜尋的列(以及表)上面建立索引。
SQL CREATE INDEX 文法        在表上建立一個簡單的索引。允許使用重複的值:
CREATE INDEX index_nameON table_name (column_name)
        注釋:"column_name" 規定需要索引的列。
SQL CREATE UNIQUE INDEX 文法        在表上建立一個唯一的索引。唯一的索引意味著兩個行不能擁有相同的索引值。
CREATE UNIQUE INDEX index_nameON table_name (column_name)
CREATE INDEX 執行個體        本例會建立一個簡單的索引,名為 "PersonIndex",在 Person 表的 LastName 列:
CREATE INDEX PersonIndexON Person (LastName) 
        如果您希望以降序索引某個列中的值,您可以在列名稱之後添加保留字 DESC:
CREATE INDEX PersonIndexON Person (LastName DESC) 
        假如您希望索引不止一個列,您可以在括弧中列出這些列的名稱,用逗號隔開:
CREATE INDEX PersonIndexON 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 的文法:
ALTER TABLE table_name DROP INDEX index_name
SQL DROP TABLE 語句        DROP TABLE 語句用於刪除表(表的結構、屬性以及索引也會被刪除):
DROP TABLE 表名稱
SQL DROP DATABASE 語句        DROP DATABASE 語句用於刪除資料庫:
DROP DATABASE 資料庫名稱
SQL TRUNCATE TABLE 語句        如果我們僅僅需要除去表內的資料,但並不刪除表本身,那麼我們該如何做呢?
        請使用 TRUNCATE TABLE 命令(僅僅刪除表格中的資料):
TRUNCATE TABLE 表名稱
SQL ALTER TABLE 語句ALTER TABLE 語句        ALTER TABLE 語句用於在已有的表中添加、修改或刪除列。
SQL ALTER TABLE 文法        如需在表中添加列,請使用下列文法:
ALTER TABLE table_nameADD column_name datatype
        要刪除表中的列,請使用下列文法:
ALTER TABLE table_name DROP COLUMN column_name
        注釋:某些資料庫系統不允許這種在資料庫表中刪除列的方式 (DROP COLUMN column_name)。
        要改變表中列的資料類型,請使用下列文法:
ALTER TABLE table_nameALTER COLUMN column_name datatype
        原始的表 (用在例子中的):
        Persons 表:
Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
SQL ALTER TABLE 執行個體        現在,我們希望在表 "Persons" 中添加一個名為 "Birthday" 的新列。
        我們使用下列 SQL 陳述式:
ALTER TABLE PersonsADD Birthday date
        請注意,新列 "Birthday" 的類型是 date,可以存放日期。資料類型規定列中可以存放的資料的類型。
        新的 "Persons" 表類似這樣:
Id LastName FirstName Address City Birthday
1 Adams John Oxford Street London  
2 Bush George Fifth Avenue New York  
3 Carter Thomas Changan Street Beijing  
改變資料類型執行個體        現在我們希望改變 "Persons" 表中 "Birthday" 列的資料類型。
        我們使用下列 SQL 陳述式:
ALTER TABLE PersonsALTER COLUMN Birthday year
        請注意,"Birthday" 列的資料類型是 year,可以存放 2 位或 4 位格式的年份。
DROP COLUMN 執行個體        接下來,我們刪除 "Person" 表中的 "Birthday" 列:
ALTER TABLE PersonDROP COLUMN Birthday
        Persons 表會成為這樣:
Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
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_personMINVALUE 1START WITH 1INCREMENT BY 1CACHE 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"。

SQL 進階(5)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.