mysql數(shù)據(jù)表操作實(shí)例詳解

本文主要和大家分享mysql數(shù)據(jù)表操作實(shí)例詳解,希望能幫助到大家,首先我們先來看一下如何創(chuàng)建數(shù)據(jù)表。

創(chuàng)建表

  • 基本語法形式:

create table 【if not exists】 表名 (字段列表 【,索引或約束列表】) 【表選項(xiàng)列表】;

  • 字段設(shè)定形式:

字段名 ? 類型 ? 【字段屬性1 ?字段屬性2 ?…..】

說明:
1. 字段名可以自己取;
2. 類型就是前面所學(xué)的數(shù)據(jù)類型:int, ?tinyint, ?float, ?double, ?char(6), ?varchar(25), ?text, ?datetime。
3. 字段屬性可以有多個(根據(jù)具體的需要),相互之間直接空格隔開;主要如下幾個:

屬性名稱 含義
auto_increment: 只用于整數(shù)類型,讓該字段的值自動獲得一個增長值。通常用于做一個表的第一個字段的設(shè)定,并且通常還當(dāng)做主鍵(primary key)
primary ?key: 用于設(shè)定該字段為主鍵,此時該字段的值就可以“唯一確定”一行數(shù)據(jù)
unique ?key: 設(shè)定該字段是“唯一的”,也就是不重復(fù)的。
not ?null: 用于設(shè)定該字段不能為空(null),如果沒有設(shè)定,則默認(rèn)是可為空的。
comment : 字段說明文字

索引

  • 索引是系統(tǒng)內(nèi)部自動維護(hù)的隱藏的“數(shù)據(jù)表”,它的作用是,可以極大地加快數(shù)據(jù)的查找速度!

  • 這個隱藏的數(shù)據(jù)表,其中的數(shù)據(jù)是自動排好序的,其查找速度就是建立在這個基礎(chǔ)上。

形式為:

索引類型(要建立索引的字段名)
索引類型 形式 含義
普通索引 key(字段名) 就是一個索引而已,沒有其他作用,只能加快查找速度
唯一索引 unique ?key(字段名) 是一個索引,而且還可以設(shè)定其字段的值不能重復(fù)(唯一性)
主鍵索引 primary ?key (字段名) 是一個索引,而且,還具有區(qū)分該表中的任何一行數(shù)據(jù)的作用(其實(shí)也是唯一性),它其實(shí)比唯一性索引多一點(diǎn)功能:唯一性可以為空null,而主鍵不能為空
全文索引 fulltext (字段名)
外鍵索引 foreign ?key (字段名) references ?其他表(對應(yīng)其他表中的字段名)

索引創(chuàng)建語法:

mysql數(shù)據(jù)表操作實(shí)例詳解

外鍵索引:

foreign??key?(字段名)?references??其他表(對應(yīng)其他表中的字段名);

外鍵:表中的一個字段不是本表的主鍵或候選鍵,而是另一個表的主鍵或候選鍵。
?候選鍵或候選鍵:如果一個表中具有能夠唯一標(biāo)識的一個行的屬性,則稱為候選鍵,候選鍵中任選一個為主鍵。

mysql數(shù)據(jù)表操作實(shí)例詳解

示例:
mysql數(shù)據(jù)表操作實(shí)例詳解

注意: 插入xuesheng表中的數(shù)據(jù)時,banji_id字段的值,就不可以隨便插入了,而是必須是banji表中的id字段所已經(jīng)有的數(shù)據(jù)值,才可以插入。

全文索引:僅做了解,因?yàn)閷χ形倪€不夠友好

一、概述
? ? ? ?mysql中的全文檢索是利用查詢關(guān)鍵字和查詢列內(nèi)容之間的相關(guān)度進(jìn)行檢索,可以利用全文索引來提高匹配的速度。
?二、語法
MATCH (col1,col2,…) AGAINST (expr [search_modifier])
search_modifier: { IN BOOLEAN MODE | WITH QUERY EXPANSION }
? ? ? ?例如:SELECT * FROM tab_name WHERE MATCH (col1,col2) AGAINST (search_word);
? ? ? ?這里的table需要是MyISAM類型的表,col1、col2需要是char、varchar或text類型,在查詢之前需要在col1和col2上建立一個全文索引。


約束

約束,就是要求數(shù)據(jù)需要滿足什么條件的一種“規(guī)定”。

約束類型 形式 含義
主鍵約束 primary key ( 字段名) 使該設(shè)定字段的值可以用于“唯一確定一行數(shù)據(jù)”,其實(shí)就是“主鍵”的意思。
唯一約束 unique ? key ( 字段名) 使該設(shè)定字段的值具有“唯一性”,自然也是可區(qū)分的。
外鍵約束 foreign key ( 字段名) references ?其他表名(對應(yīng)其他表中的字段名) 使該設(shè)定字段的值,必須在其誰定的對應(yīng)表中的對應(yīng)字段中已經(jīng)有該值了。
非空約束 not ?null 其實(shí)就是設(shè)定一個字段時寫的那個“not null”屬性。這個約束只能寫在字段屬性上
默認(rèn)約束 default ?XX值 其實(shí)就是設(shè)定一個字段時寫的那個“default ?默認(rèn)值”屬性,這個約束只能寫在字段屬性上。
檢查約束 check(某種判斷語句)

比如:

create??table??tab1?(  age??tinyint,check??(age&gt;=0?and?age?<blockquote><p>其實(shí),主鍵約束,唯一約束,外鍵約束,只是“同一件事情的2個不同角度的說法”,他們同時也稱為“主鍵索引”,“唯一索引”,“外鍵索引”。</p></blockquote><hr><h3>表選項(xiàng)列表</h3><blockquote><p>表選項(xiàng)就是,創(chuàng)建一個表的時候,對該表的整體設(shè)定,主要有如下幾個: <br>   ?1、 charset = 要使用的字符編碼, <br>   ?2、 engine = 要使用的存儲引擎(也叫表類型), <br>   ?3、auto_increment = 設(shè)定當(dāng)前表的自增長字段的初始值,默認(rèn)是1 <br>   ? 4、comment =‘該表的一些說明文字’</p></blockquote><hr><blockquote><p>說明: <br>   ? 1,設(shè)定的字符編碼是為了跟數(shù)據(jù)庫設(shè)定的不一樣。如果一樣,就不需要設(shè)定了:因?yàn)槠鋾詣邮褂脭?shù)據(jù)庫級別的設(shè)定; <br>   ?2,engine(存儲引擎)在代碼層面,就是一個名詞:InnoDB, MyIsam, BDB, archive, Memory。默認(rèn)是InnoDB。</p></blockquote><hr><h3>存儲引擎</h3><blockquote><p>存儲引擎是將數(shù)據(jù)存儲到硬盤的“機(jī)制”。</p></blockquote><p>不同的存儲引擎,其實(shí)主要是從2個大的層面來設(shè)計存儲機(jī)制:</p>
  • 盡可能快的速度;

  • 盡可能多的功能;

選擇不同的存儲引擎,就是上述性能和功能的“權(quán)衡”。

大體如下:
mysql數(shù)據(jù)表操作實(shí)例詳解

演示:
mysql數(shù)據(jù)表操作實(shí)例詳解


修改表

幾點(diǎn)說明:

  • 修改表,是指修改表的結(jié)構(gòu)——正如創(chuàng)建表也是設(shè)定表的結(jié)構(gòu)。

  • 創(chuàng)建表能做的事,修改表幾乎都能做——但很不推薦去修改表,而是應(yīng)該在創(chuàng)建表的時候就基本確定表的結(jié)構(gòu)。

  • 大體來說:
    1:可以對字段進(jìn)行:添加,刪除,修改;
    2:可以對索引進(jìn)行:添加,刪除

  • 表的選項(xiàng),通常“都是修改”,即使不寫任何表選項(xiàng),他們都有其默認(rèn)值。

常見幾個:

操作類型 表達(dá)式
添加字段 alter ?table 表名 add ?[column] 新字段名 字段類型 ?[字段屬性列表]
修改字段(并可改名) alter ?table 表名 change [column] 舊字段名 新字段名 新字段類型 [新字段屬性列表]
刪除字段 alter ?table ?表名 drop ?[column] 字段名
添加普通索引 alter ?table 表名 add ?key ?[索引名] ?(字段名1[,字段名2,…])
添加唯一索引(約束) alter table 表名 add unique key (字段名1[,字段名2,…])
添加主鍵索引(約束) alter table 表名 add primary key (字段名1[,字段名2,…])
修改表名 alter ?table ?舊表名 ? rename ?[to] 新表名
刪除表 drop ?table ?【if ?exists】 表名

其他表的相關(guān)語句:

操作類型 表達(dá)式
顯示當(dāng)前數(shù)據(jù)庫中的所有表 show tables
顯示某表的結(jié)構(gòu) desc 表名; 或:describe 表名
顯示某表的創(chuàng)建語句 show create table 表名
重命名表 rename table 舊表名 to 新表名
從已有表復(fù)制表結(jié)構(gòu) create table [if not exists] 新表名 like 原表名

演示復(fù)制表結(jié)構(gòu):

  • 創(chuàng)建表tab_int,顯示表創(chuàng)建語句

mysql數(shù)據(jù)表操作實(shí)例詳解

  • 將tab_int復(fù)制給tab_int_bak,顯示tab_int_bak表創(chuàng)建語句,與tab_int一致
    mysql數(shù)據(jù)表操作實(shí)例詳解

相關(guān)推薦:

查看MySQL數(shù)據(jù)表的索引方法

查看MySQL數(shù)據(jù)表的索引方法

查看MySQL數(shù)據(jù)表的索引方法

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊13 分享