用SQL建立資料庫

來源:互聯網
上載者:User

用SQL建立資料庫

首先說說怎麼用SQL語句建立資料庫,建立資料庫的語句有如下幾種:
   1. CREATE TABLE(建立新表)
   2. CREATE INDEX(增加索引)
   3. DROP INDEX(刪除索引)
   4. CONSTRAINT(約束語句)
   5. ALTER TABLE(修改表)
   6. DROP TABLE(刪除表)

CREATE TABLE語句:

在資料庫中產生新表,表中欄位的類型可以為:INTEGER(整型)、LONG(長整型)、 SINGLE(單精確度浮點數)、DOUBLE(雙精確度浮點數)、DATETIME(日期型,也可以寫成DATE)、BIT(布爾型)、 TEXT(字串型,最大255個位元組)、MEMO(字串型,最大可達1.2G位元組)、 COUNTER(自動遞增長整型,可確定記錄的唯一性)、CURRENCY(貨幣型,精確到小數點左邊15位,右邊4位)、 BINARY(位元組型,最大255個)、LONGBINARY(用於OLE對象)、GUID(通用唯一識別碼)。

產生表NewTable,該表有文字欄位Field1和整型欄位Field2,表名和欄位名可以隨便你取,不區分大小寫,但是,有些保留字不能用作表名欄位名,比如Number

CREATE TABLE NewTable(Field1 TEXT(30), Field2 INTEGER);

CREATE INDEX語句:

INDEX是為了加快尋找記錄的速度,或者是為了增加欄位約束關係而設定的。

建立索引語句執行前表中可以有記錄,但存在的記錄必須滿足該索引語句的約束關係,否則語句不能執行,另外要注意的是在同一個資料庫中(而不僅僅是在同一個表中),索引名不能相同,否則語句也會失敗。

產生欄位Field1的索引欄位NewIndex,兩條語句作用相同
產生後Field1欄位可以有相同的值,可以有空值(NULL)

CREATE INDEX NewIndex ON NewTable (Field1);
CREATE INDEX NewIndex ON NewTable (Field1) WITH IGNORE NULL;

產生欄位Field1的索引欄位NewIndex,注意,每個表裡只能有一個主索引(PRIMARY)。產生後Field1欄位不能有相同的值,不能有空值(當然,如果是TEXT類型,可以有一個空串,但是空串不是空值)

CREATE INDEX NewIndex ON NewTable(Field1) WITH PRIMARY;

欄位Field1不能有相同的值,但可以有空值(兩個空值不算相同的值)

CREATE UNIQUE INDEX NewIndex ON NewTable(Field1);

欄位Field1可以有相同的值,但不能有空值

CREATE INDEX NewIndex ON NewTable(Field2) WITH DISALLOW NULL

可以在索引語句中加入ASC(升序)或DESC(降序)來控制記錄排列順序如果不使用順序字,SQL則預設使用ASC順序

CREATE INDEX NewIndex ON NewTable(Field1 ASC, Field2 DESC);

DROP INDEX語句:刪除表NewTable中的索引NewIndex,語句執行前索引NewIndex必須存在

DROP INDEX NewIndex ON NewTable;

CONSTRAINT語句:

CONSTRAINT子句用於建立資料庫完整性的索引,它和INDEX語句作用一樣,有些地方可以互相替代,它可以使用PRIMARY KEY(主關鍵字),UNIQUE(唯一)和FOREIGN KEY(外部關鍵字),和INDEX相比不能使用IGNOR NULL和DISALLOW NULL,但多了FOREIGN KEY(這也是它最強大的地方)。另外, CONSTRAINT語句必須和CREATE TABLE或ALTER TABLE語句一起使用。

產生表NewTable,主關鍵字段是Field1,主索引是NewPK

CREATE TABLE NewTable(Field1 LONG CONSTRAINT NewPK PRIMARY KEY, Field2 MEMO, Field3 DATETIME);

產生索引為NewUK的表NewTable,Field1不能有相同值,可以有空值

CREATE TABLE NewTable(Field1 INTEGER CONSTRAINT NewUK UNIQUE);

產生多列的主索引,兩條記錄的Field1和Field2不能全部相同,也不可為空值

CREATE TABLE NewTable(Field1 INTEGER, Field2 CURRENCY, CONSTRAINT NewPK PRIMARY KEY(Field1, Field2));

產生多列的UNIQUE索引,兩條記錄的Field1和Field2不能全部相同注意,如果兩條記錄其中一個欄位相同而另一個欄位都是空值,那也算兩個欄位不同

CREATE TABLE NewTable(Field1 INTEGER, Field2 CURRENCY, CONSTRAINT NewUK UNIQUE(Field1, Field2));

要在幾個不同的表之間建立聯絡,就要使用FOREIGN KEY REFERENCES子句,它可以限定某個表的欄位內容必須存在於另外一個表中。

第一個例子:
首先,產生主關鍵字段為Field1的表NewTable1

CREATE TABLE NewTable1(Field1 INTEGER CONSTRAINT NewPK PRIMARY KEY);

然後,再產生外部索引,兩個表的Field1必須類型相同,並且第一個表的Field1是主關鍵字段或UNIQUE欄位。產生外部索引後,表NewTable2要增加記錄,它的Field1欄位值必須已經存在於表NewTable1的Field1欄位中。
下面兩條語句作用相同,因為Field1是NewTable1的主關鍵字段,可以省略不寫

CREATE TABLE NewTable2(Field1 INTEGER CONSTRAINT NewFK REFERENCES NewTable1);
CREATE TABLE NewTable2(Field1 INTEGER CONSTRAINT NewFK REFERENCES NewTable1(Field1));

第二個例子:
首先,產生主關鍵字段為Field1和Field2的表NewTable1

CREATE TABLE NewTable1(Field1 INTEGER, Field2 TEXT(20), CONSTRAINT NewPK PRIMARY KEY(Field1, Field2));

然後,產生多列外部索引

CREATE TABLE NewTable2(Field1 INTEGER, Field2 TEXT(20), CONSTRAINT NewFK FOREIGN KEY(Field1, Field2) REFERENCES NewTable1(Field1, Field2));

ALTER TABLE語句:

在表產生之後,如果想修改表的結構,就使用這條語句,它能增加或刪除欄位以及約束關係。

給表NewTable增加日期型欄位Field3,語句執行前表NewTalbe必須沒有欄位Field3

ALTER TABLE NewTable ADD COLUMN Field3 DATE;

刪除表NewTable中的欄位Field3,語句執行前欄位Field3必須存在表NewTable中

ALTER TABLE NewTable DROP COLUMN Field3;

給表NewTable增加NewUK約束關係

ALTER TABLE NewTable ADD CONSTRAINT NewUK UNIQUE(Field1,Field2);

刪除表NewTable的NewUK約束關係

ALTER TABLE NewTable DROP CONSTRAINT NewUK;

DROP TABLE語句:刪除表NewTable,語句執行前表NewTable必須存在

DROP TABLE NewTable;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.