SQL語句中的表操作

來源:互聯網
上載者:User

標籤:

  資料庫中主要的部分是不同的表,在SQL語句中提供了一些對於表的操作。我們討論的操作都是在SQL SERVICE中的

 一、建立表:

  建立表的文法格式為:CREATE TABLE 表名(列名 資料類型[完整性條件約束條件], 列名 資料類型 [完整性條件約束條件],...);其中完整性條件約束條件可以添加也可以不加,如果不加也可以在表定義完成後另外在添加,比如我們現在需要建立一個學生表,可以使用這樣的代碼來建立:

create table student(Sno char(10) PRIMARY KEY,     Sname char(20),    SSex char(2) UNIQUE,    Sage int,    Sdept char(20)    );

 PRIMARY KEY表示將Sno做為這個表的主碼;

另外除了這種形式的約束條件,還有一種表級約束條件,表級約束條件一般都放在表的所有屬性之後定義,當某個屬性是外碼或者某個主屬性由多個屬性群組成時,外碼定義的格式一般為:FOREIGN KEY (作為外碼的屬性) 所引用的表 (被引用的屬性名稱);外碼的例子如下:

REATE TABLE Course(Cno char(4) PRIMARY KEY,    Cname CHAR(20),    Cpno char(4),--注意做外碼時資料類型要與被引用的資料類型相同    Ccredit smallint,    FOREIGN KEY (Cpno) REFERENCES Course(Cno)--Cpno引用本表中的Cno
);

當有主碼中包含多個屬性時,主碼的定義格式為:PRIMARY KEY (屬性列,屬性列,...)

比如現在我們有一個成績表,表中課程號和學號為主碼,並且學號引用學生表中的學號,課程號引用的是課程表中的課程號:

CREATE TABLE SC(    Sno char(10),    Cno char(4),    Grade smallint,    PRIMARY KEY(Sno, Cno),--表中有多個主碼時必須使用表級約束條件    FOREIGN KEY (Sno) REFERENCES student(Sno),    FOREIGN KEY (Cno) REFERENCES Course(Cno) );

其中每個屬性的取值範圍稱作域,我們可以根據實際情況定義出屬性的域,根據域選擇合適的資料類型,下面的表展示了主要的幾種資料類型:

資料類型 含義
CHAR(n) 長度為n的字串,所佔記憶體固定,但是只顯示使用者儲存的字元個數
VARCHAR(n) 最大長度為n的字串,記憶體根據使用者定義的字串的長度來確定
INT 整型
SMALLINT 短整型
NUMBER(p, d) 小數,總位元為p(包括小數部分但是不包括小數點),小數位元為d
REAL   浮點數,取決於機器的浮點數精度
Double Precision 雙進度浮點數,位元也取決於機器位元
FLOAT(n) 浮點數進度至少為n
DATA 日期,包含年、月、日。格式為YYYY-MM-DD
TIME 時間,包含時、分、秒。格式為HH:MM:SS

二、表定義的修改:

當我們定義好了一個表後,可能根據具體的需求變化需要更改表的定義,SQL同樣提供了相關的操作,SQL一般用ALTER TABLE 語句修改,其格式如下:

ALTER TABLE 表名

[ADD 新列名 資料類型 [完整性條件約束條件]] //新增列

[DROP <完整性條件約束條件>]//刪除某個完整性條件約束條件

[ALTER COLUMN <新列名><資料類型>]修改列

[DROP COLUMN <列名>]//刪除某一屬性

這些語句只能修改表結構,不能修改表中的資料,比如學號為00001,當我們將學號的一列的列名改為學生證號,這個00001不會改變。

下面是幾個小例子:

ALTER TABLE student add Sentrance DATE;--向學生表中添加一個入學時間的選項ALTER TABLE Course ADD UNIQUE(Cname);--向課程表中添加一個完整性條件約束條件ALTER TABLE student DROP COLUMN Sentrance;--刪除學生表中的入學時間選項

三、刪除表:

刪除表用到的語句為DROP TABLE 表名[RESTRICT | CASCADE]

其中選用RESTRICT選項時,刪除表是有條件的,被刪除的表不能被其他表的約束引用(CHECK FOREIGN KEY等約束),不能有視圖、索引、觸發器、預存程序

選用CASCADE時不關心這些限制條件,會將這些一併刪除。

SQL語句中的表操作

聯繫我們

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