mysql表操作_MySQL表操作语句用法百科
本文采用MySQL5.7.26版本
1 建表語句
建表語句create語法如下:
1.1 設(shè)置unsigned
unsigned設(shè)置數(shù)值類型是否為無符號數(shù),可以為空,如下舉例:
1.2 設(shè)置默認(rèn)值
default設(shè)置默認(rèn)值,如下:
1.3 設(shè)置非空
not null設(shè)置列值不可為空,注意一般設(shè)置為not null的時候需要設(shè)置一個默認(rèn)值(1.2那樣),這樣在插入時如果未指定非空字段就會用默認(rèn)值代替。如果不指定默認(rèn)值,那么插入時不指定值會報沒有默認(rèn)值的錯誤,如下:
1.4 設(shè)置備注
comment可以設(shè)置表的備注和字段的備注,如下所示:
1.5 設(shè)置鍵值
1.5.1 設(shè)置主鍵(聚簇索引)
1> 設(shè)置主鍵用primary key,當(dāng)唯一主鍵時可以在列聲明時指定,也可以在列聲明后指定如下:
2> 當(dāng)設(shè)置聯(lián)合主鍵時,只能在列聲明之后指定,如下:
1.5.2 設(shè)置唯一鍵(唯一索引)
設(shè)置唯一鍵規(guī)則與1.5.1中相同,要把其中關(guān)鍵字改為unique key。
1.5.3 普通鍵(普通索引)
在列聲明完后添加普通索引的列即可,如下:
1.6 設(shè)置默認(rèn)字符
設(shè)置表的默認(rèn)字符集,使用default character set 'codeset',如下設(shè)置utf8,如下:
1.7 設(shè)置引擎
建表是設(shè)置引擎使用engine='engine'即可,可選擇值有innodb,myisam,memory。如下:
1.8 auto_increment的用法
1.8.1 auto_increament知識
如果給某個數(shù)據(jù)表中的一個整數(shù)數(shù)據(jù)列定義可選的auto_increment屬性,那么當(dāng)用戶向這個數(shù)據(jù)表插入一條新記錄時,mysql 就會自動地把這個整數(shù)數(shù)據(jù)列的當(dāng)前最大取值加上1之后賦值給新紀(jì)錄中的這個整數(shù)字段。auto_increment屬性的常見用法是定義數(shù)據(jù)表的主鍵字段。
使用 auto_increment 屬性需要注意的問題:
1> 必須與 not null、primary key 或者 unique 屬性同時使用且表中最多只能有一個 auto_increment 數(shù)據(jù)列。
2> 值自動生成機制只在用戶使用insert命令插入新紀(jì)錄,并且沒有為ID字段明確地給出一個值或null時才起作用。如果用戶給出了一個具體的值并且這個值還沒有在ID列里出現(xiàn)過,MySQL就將使用這個ID值生成一條新數(shù)據(jù)記錄。
3> 如果想知道MySQL在剛插入數(shù)據(jù)記錄里生成的auto_increment值是多少,在執(zhí)行完insert命令后(但還是在本次連接或本個事務(wù)里),立刻執(zhí)行select last_insert_id() 命令。
4> 如果auto_increment計算器到達(dá)了它的最大值(不同的整數(shù)數(shù)據(jù)類型有不同的最大值),將不再繼續(xù)遞增,數(shù)據(jù)記錄的插入操作也將隨之無法繼續(xù)進(jìn)行。對 insert和delete 操作非常頻繁的數(shù)據(jù)表來說,哪怕數(shù)據(jù)記錄遠(yuǎn)少于20億條,也有可能出現(xiàn)32位整數(shù)類型的auto_increment計算器被耗盡的情況。在定義這種數(shù)據(jù)表的時候,最好使用bigint數(shù)據(jù)列。
1.8.2 應(yīng)用
1> 設(shè)置普通的自增,如下:
首次創(chuàng)建后使用show create table,不會出現(xiàn)AUTO_INCREAMENT=?,表中插入數(shù)據(jù)后會出現(xiàn)AUTO_INCREATE=?,?代表下一個自增的值。
2> 設(shè)置自增的步長
數(shù)據(jù)庫的默認(rèn)設(shè)置可以用如下命令查看:
如果要單獨設(shè)置表自增的起始值和步長,如下所示:
這種set的方式不是全局生效的,如果想要全局生效,需要對mysql進(jìn)行配置。
在創(chuàng)建表時可以通過auto_increment=?來設(shè)置其初始值,如下:
注意“?”必須是符合數(shù)據(jù)庫設(shè)置的auto_increment_increment和auto_increment_offset規(guī)則的,如果不合規(guī)則那么不生效,其生成的第一個數(shù)字是比設(shè)置值大的符合按偏移量和步長的第一個數(shù)字。如下舉例:
上例子中設(shè)置偏移量為4,步長為3.但是第一個插入的數(shù)據(jù)時8,打破了該規(guī)則,然后向表中插入默認(rèn)值,其生成的是10,并不是8+3,因為8打破了偏移量與步長的規(guī)則,下一個生成的數(shù)字是大于8并且符合改規(guī)則的第一個數(shù)字10,再向其中插入的話,生成的數(shù)字就是13。
2 修改表
2.1 修改表名
2.2 修改字符集
2.3 修改引擎
2.4 修改列
1> 修改列名列類型(可以附帶上其他信息):
2>修改列的位置到第一列:
3> 修改列的位置到某列的后面:
2.4.1 增加列
1> 將列增加到表的第一列,如下:
2> 在列id后增加age列,如下:
2.4.2 刪除列
3 刪除表
3.1 刪除1個表
使用drop table命令,如下
3.2 刪除多個表
使用drop tables命令,表名之間用","分割,如下:
該命令遇壞則壞,但是能清除所有已存在的表,如下創(chuàng)建test1,test2,test3,test5四個表:
使用命令drop tables test1, test2, test3, test4, test5進(jìn)行測試,如下:
4 查看所有表
查看當(dāng)前所在的數(shù)據(jù)庫中的所有表,如下:
總結(jié)
以上是生活随笔為你收集整理的mysql表操作_MySQL表操作语句用法百科的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4GB vs 8GB内存条:速度与性能决
- 下一篇: mysql内外链接图_图解MySQL 内