4.資料表的相關操作
資料表
建立表
CREATE TABLE [IF NOT EXISTS] tbl_name(
字段名稱 字段類型 [完整性限制條件],
字段名稱 字段類型 [完整性限制條件],
...
)ENGINE=存儲引擎 CHARSET=編碼方式;
UNSIGNED
無符号,沒有負數,從0開始
ZEROFILL
零填充,當資料的顯示長度不夠的時候可以使用前補0的效果填充至指定長度,字段會自動添加UNSIGNED
NOT NULL
非空限制,也就是插入值的時候這個字段必須要給值,值不能為空
DEFAULT
預設值,如果插入記錄的時候沒有給字段指派,則使用預設值
PRIMARY KEY
主鍵,辨別記錄的唯一性,值不能重複,一個表隻能有一個主鍵,自動禁止為空
AUTO_INCREMENT
自動增長,隻能用于數值列,而且配合索引使用,預設起始值從1開始,每次增長1
UNIQUE KEY
唯一性,一個表中可以有多個字段是唯一索引,同樣的值不能重複,但是NULL值除外
FOREIGN KEY
外鍵限制
檢視目前資料庫下已有資料表
SHOW TABLES;
SHOW [FULL] TABLES [{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
檢視指定資料表的詳細資訊
SHOW CREATE TABLE tbl_name;
檢視表結構
DESC tbl_name;
DESCRIBE tbl_name;
SHOW COLUMNS FROM tbl_name;
删除指定的資料表
DROP TABLE [IF EXISTS] tbl_name;
表結構相關操作
添加字段
ALTER TABLE tbl_name
ADD 字段名稱 字段屬性 [完整性限制條件] [FIRST|AFTER 字段名稱]
删除字段
ALTER TABLE tbl_name
DROP 字段名稱
添加預設值
ALTER TABLE tbl_name
ALTER 字段名稱 SET DEFAULT 預設值;
删除預設值
ALTER TABLE tbl_name
ALTER 字段名稱 DROP DEFAULT
修改字段類型、字段屬性
ALTER TABLE tbl_name
MODIFY 字段名稱 字段類型 [字段屬性] [FIRST | AFTER 字段名稱]
修改字段名稱、字段類型、字段屬性
ALTER TABLE tbl_name
CHANGE 原字段名稱 新字段名稱 字段類型 字段屬性 [FIRST | AFTER 字段名稱]
添加主鍵
ALTER TABLE tbl_name
ADD PRIMARY KEY(字段名稱)
删除主鍵
ALTER TABLE tbl_name
DROP PRIMARY KEY;
添加唯一
ALTER TABLE tbl_name
ADD UNIQUE KEY|INDEX [index_name] (字段名稱)
删除唯一
ALTER TABLE tbl_name
DROP index_name;
修改資料表名稱
ALTER TABLE tbl_name
RENAME [TO|AS] new_tbl_name
RENAME TABLE tbl_name TO new_tbl_name;
修改AUTO_INCREMENT的值
ALTER TABLE tbl_name AUTO_INCREMENT=值
6.MySQL存儲引擎
MyISAM存儲引擎
預設MyISAM的表會在磁盤中産生3個檔案
- .frm
- 表結構檔案
- .MYD
- 資料檔案
- .MYI
- 索引檔案
可以在建立的時候指定資料檔案和索引檔案的存儲位置,隻有MyISAM表支援
DATA DIRECORY [=] 資料儲存的絕對路徑
INDEX DIRECTORY [=] 索引檔案儲存的絕對路徑
MyISAM單表最大支援的資料量2的64次方條記錄
每個表最多可以建立64個索引
如果是複合索引,每個複合索引最多包含16個列,索引值最大長度是1000B
MyISAM引擎的存儲格式
定長(FIXED 靜态)
是指字段中不包含VARCHAR/TEXT/BLOB
動态(DYNAMIC)
隻要字段中包含了VARCHAR/TEXT/BLOB
壓縮(COMPRESSED)
myisampack建立
InnoDB存儲引擎
設計遵循ACID模型,支援事務,具有從服務崩潰中恢複的能力,能夠最大限度保護使用者的資料
支援行級鎖,可以提升多使用者并發時的讀寫性能
支援外鍵,保證資料的一緻性和完整性
InnoDB擁有自己獨立的緩沖池,常用的資料和索引都在緩存中
對于INSERT、UPDATE、DELETE操作,InnoDB會使用一種change buffering的機制來自動優化,還可以提供一緻性的讀,并且還能夠緩存變更的資料,減少磁盤I/O,提高性能
建立InnoDB表之後會産生兩個檔案
.frm表結構檔案
.ibd,資料和索引存儲表空間中
所有的表都需要建立主鍵,最好是配合上AUTO_INCREMENT,也可以放到經常查詢的列作為主鍵
MySQL資料操作
添加記錄
INSERT [INTO] tbl_name[(col_name,...)] {VALUE|VALUES}(VALUES...);
不指定字段名稱
INSERT tbl_name VALUE(value...)
需要按照建表時的字段順序給每一個字段指派
列出指定字段
INSERT tbl_name(字段名稱,...) VALUES(值,...)
INSERT ... SET的形式
INSERT tbl_name SET 字段名稱=值,...;
INSERT ... SELECT
INSERT tbl_name[(字段名稱...)] SELECT 字段名稱,... FROM tbl_name [WHERE 條件]
一次添加多條記錄
INSERT tbl_name[(字段名稱,...)] VALUES(值,...),
(值,....),
(值,...)