MySQL核心技術(shù)與最佳實踐(第3章表結(jié)構(gòu)關(guān)聯(lián))

Mysql數(shù)據(jù)類型
數(shù)字類型
整數(shù)類型
tinyint 1字節(jié)
smallint 2字節(jié)
mediumint 3字節(jié)
int 4字節(jié)
bigint 5字節(jié)
小數(shù)類型
float 4字節(jié)
double 8字節(jié)
字符類型
char(n) 最多255
varchar(n) n取值與字符集有關(guān)
tinytext 與字符集有關(guān),下同
text
mediumtext
longtext
日期類型
date 類型 3字節(jié)
time 類型 3字節(jié)
year 類型 1字節(jié)
datetime 類型 8字節(jié)
timestamp類型 8字節(jié)
復(fù)合類型
enum 類型 最多65535
set 集合類型 最多64
二進(jìn)制類型
blob 類型
tinyblob
blob
mediumblob
longblob
binary 類型 n字節(jié)
varbinary 類型 實際占用
bit 類型 n個位


image.png

show index from 表名; 查看索引
constraint 約束名 foreign key 表A references 表B [on delete 級聯(lián)選項] [on update 級聯(lián)選項]
級聯(lián)選項取值: cascade , set null, no action, restrict
MyISAM 引擎不支持外鍵
engine=存儲引擎 , default charset=字符集類型, pack_keys = 壓縮類型,1壓縮索引中所有關(guān)鍵字,0取消索引中所有關(guān)鍵字壓縮,default 字壓縮索引中字符類型的關(guān)鍵字,如 char, varchar,text

單行注釋以#開頭,或--加空格,多行注釋以/* */
復(fù)制表結(jié)構(gòu) 1: create table 新表名 like 源表
復(fù)制表結(jié)構(gòu)及數(shù)據(jù) 2: create table 新表名 select * from 源表
alter table 表名 drop 字段名
alter table 表名 add 新字段名 數(shù)據(jù)類型 [約束條件] [first|after 舊字段名]
alter tabel 表名 change 舊字段名 新字段名 數(shù)據(jù)類型
如果僅修改數(shù)據(jù)類型 alter table 表名 modify 字段名 字段類型
alter table 表名 add constraint 約束名 約束類型(字段名)
alter table person add constraint name_unique unique(name);
alter table 表名 drop primary key;
alter table 表名 drop foreign key 約束名;
alter table 表名 drop index 唯一索引;
修改表選項
alter table 表名 engine=新存儲引擎類型;
alter table 表名 default charset=新的字符集;
alter table 表名 auto_increment=新的初始值;
alter table 表名 pake_keys=新的壓縮類型;

rename talbe 舊表名 to 新表名;
alter table 舊表名 rename 新表名;

drop talbeNmae;
truncate tableName;

對于MyISAM 索引數(shù)據(jù)存放在 MYI索引文件中
對于InnoDB 索引數(shù)據(jù)存放在表空間文件中,可以是共享表空間也可能是獨(dú)立表空間

索引關(guān)鍵字選取原則
1:表的某個字段值的離散度越高,越適合作為索引關(guān)鍵字。
如主鍵,唯一約束
2:占用存儲空間少的字段更適合作為索引關(guān)鍵字。
3:存儲空間固定的字段更適合作索引
4:where子句經(jīng)常使用的字段,分組或排序字段,兩個表連接字段更適合作索引
5:更新頻繁的字段不適合作索引,不出現(xiàn)在where子句中的字段不適合作索引
6:最左前綴原則
7:盡量使用前綴索引

主鍵約束,唯一約束,默認(rèn)值約束,檢查約束,非空約束,外鍵約束
索引分為:
聚簇索引,主索引,唯一性索引,普通索引,復(fù)合索引等,MYSQL還支持全文索引

create [unique | fulltext] index 索引名 on 表名(字段名[(長度)]) [asc | desc]
alter table add [unique | fulltext] index 索引名 on 表名(字段名[(長度)]) [asc | desc]

drop index 索引名 on 表名;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,983評論 0 9
  • 手動不易,轉(zhuǎn)發(fā)請注明出處 --Trance 數(shù)據(jù)庫系統(tǒng)命令: (1).查看存儲過程狀態(tài):show pro...
    Trance_b54c閱讀 1,830評論 0 8
  • MYSQL 基礎(chǔ)知識 1 MySQL數(shù)據(jù)庫概要 2 簡單MySQL環(huán)境 3 數(shù)據(jù)的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 8,066評論 5 115
  • 一、MySQL優(yōu)化 MySQL優(yōu)化從哪些方面入手: (1)存儲層(數(shù)據(jù)) 構(gòu)建良好的數(shù)據(jù)結(jié)構(gòu)??梢源蟠蟮奶嵘覀僑...
    寵辱不驚丶?xì)q月靜好閱讀 2,655評論 1 8
  • vector(向量) C++中的一種數(shù)據(jù)結(jié)構(gòu),確切的說是一個類。它相當(dāng)于一個動態(tài)的數(shù)組,當(dāng)程序員無法知道自己需要的...
    資深小夏閱讀 526評論 0 2

友情鏈接更多精彩內(nèi)容