第二十一章 建立和操縱表

2021-10-02 15:19:33 字數 3530 閱讀 8569

表的建立、更改和刪除的基本知識。

mysql不僅用於表資料操作,而且還可以用來執行資料庫和表的所有操作,包錶本身的建立和處理。

一般有兩種建立表的方法:

使用具有互動式建立和管理表的工具;

表也可以直接使用mysql語句操縱。

為了用程式建立表,可使用sql的create table語句。值得注意的是,在使用互動式工具時,實際上使用的是mysql語句。但是,這些語句不是使用者編寫的,介面工具會自動生成並執行相應的mysql語句(更改現有表時也是這樣)。

為利用create table建立表,必須給出下列資訊:

新錶的名字,在關鍵字create table之後給出;

表列的名字和定義,用逗號分隔。

create table語句也可能會包含其他關鍵字或選項,但至少要包括表的名字和列的細節。如下建立customers表:

create table customers   

( cust_id int not null auto_increment,

cust_name char(50) not null,

cust_address char(50) null,

cust_city char(50) null,

cust_state char(5) null,

cust_email char(255) null,

primary key (cust_id)

)engine=innodb;

從上例可以看出,表名緊跟在create table關鍵字後面。實際的表定義(所有列)括在圓括號之中。各列之間用逗號分隔。每列的定義以列名(它在表中必須是唯一的)開始,後跟列的資料型別(插入鏈結)。表的主鍵可以在建立表時用primary key關鍵字指定。

null值就是沒有值或缺值。

允許null值的列也允許在插入行時不給出該列的值。

不允許null值的列不接受該列沒有值的行,換句話說,在插入或更新行時,該列必須有值。

每個表列或者是null列,或者是not null列,這種狀態在建立時由標的定義規定。如下例:

create table orders

( order_num int not null auto_increment,

order_date datetime null, //允許null

cust_id int not null, //不允許null

primary key (order_num)

)engine=innodb;

**主鍵值必須唯一。**即,表中的每個行必須具有唯一的主鍵值。如果主鍵使用單個列,則它的值必須唯一。如果使用多個列,則這些列的組合值必須唯一。

單個主鍵用以下的類似的語句定義:

primary key (vend_id)

為建立由多個列組成的主鍵,應該以逗號分隔的列表給出各列名,其定義如下:

primary key (order_num,order_item)

**auto_increment告訴mysql,本列每當增加一行時自動增量。**每次執行乙個insert操作時,mysql自動對該列增量(從而才有這個關鍵字auto_increment),給該列賦予下乙個可用的值。這樣給每一行分配乙個唯一的id,從而可以用作主鍵值。

如果在插入行時沒有給出值,mysql允許指定此時使用的預設值。預設值用create table語句的列定義中的default(default)關鍵字指定。如下:

create table customers   

( cust_id int not null auto_increment,

cust_name char(50) not null default tom, //名字使用預設值tom

cust_address char(50) null,

cust_city char(50) null,

cust_state char(5) null,

cust_email char(255) null,

primary key (cust_id)

)engine=innodb;

以下是幾個需要知道的引擎:

inoodb是乙個可靠的事務處理引擎,它不支援全文本搜尋;

memory在功能等同於myisam,但由於資料儲存在記憶體(不是磁碟)中,速度很快(特別適合於臨時表);

myisam是乙個效能極高的引擎,它支援全文本搜尋,但不支援事務處理。

為更新表定義,可使用alter table語句。但是,理想狀態下,當表中儲存資料以後,該錶就不應該再被更新。在表的設計過程中需要花費大量時間來考慮,以便後期不對該錶進行大的改動。

為了使用alter table更改表結構,必須給出下面的資訊:

在alter table之後給出要更改的表名(該錶必須存在,否則將出錯);

所做更改的列表。

例子如下:

alter table vendors

add vend_phone char(20);

該語句給vendors表增加乙個名為vend_phone的列,必須明確其資料型別。

刪除剛剛增加的列,可以如下:

alter table vendors

drop column vend_phone;

alter table的一種常見用途是定義外來鍵。如下圖:

alter table orderitems

add constraint fk_orderitems_orders

foreign key (order_num) references orders (order_num);

複雜的表結構更改一般需要手動刪除過程,它涉及以下步驟:

使用新的列布局建立乙個新錶;

使用insert select語句從舊表複製資料到新錶。如果有必要,可使用轉換函式和計算字段;

檢驗包含所需資料的新錶;

重新命名舊表(如果確定,可以刪除它);

用舊表原來的名字重新命名新錶;

根據需要,重新建立觸發器、儲存過程、索引和外來鍵。

刪除表(刪除整個表而不是其內容)非常簡單,使用drop table語句即可:

drop table customers;

使用rename table語句可以重新命名乙個表:

rename table customers to customers1;

介紹了幾條新sql語句:

create table:用來建立新錶;

alter table:用來更改表列(或其他諸如約束或索引等物件);

drop table:用來完整地刪除乙個表。

JAVA第二十一章(小結)

1 遞迴 理解 1 方法定義中呼叫方法本身的現象 舉例 老和尚給小和尚講故事,我們學程式設計 2 遞迴的注意事項 a 要有出口,否則就是死遞迴 b 次數不能過多,否則記憶體溢位 c 構造方法不能遞迴使用 3 遞迴的案例 a 遞迴求階乘 b 兔子問題 c 遞迴輸出指定目錄下所有指定字尾名的檔案絕對路徑...

第二十一章 變換(七)

錨定規模 以下是一些螢幕截圖,顯示 從左到右 相對於左下角相對於右下角和相對於中心底部的縮放 如果您熟悉ios程式設計,則可以了解類似的anchorpoint屬性。在ios中,此屬性會影響定位和轉換中心。在xamarin.forms中,anchorx和anchory屬性僅指定轉換中心。這意味著xam...

第二十一章 變換(八)

旋轉 屬性旋轉螢幕表面上的可視元素。將 旋轉 屬性設定為以度為單位的角度 不是弧度 正角度順時針旋轉元素。您可以將 旋轉 設定為小於0或大於360的角度。實際旋轉角度是旋轉屬性模數360的值。元素圍繞相對於使用anchorx和anchory屬性指定的自身的點旋轉。planerotationdemo程...