本文主要和大家分享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)建語法:
外鍵索引:
foreign??key?(字段名)?references??其他表(對應(yīng)其他表中的字段名);
外鍵:表中的一個字段不是本表的主鍵或候選鍵,而是另一個表的主鍵或候選鍵。
?候選鍵或候選鍵:如果一個表中具有能夠唯一標(biāo)識的一個行的屬性,則稱為候選鍵,候選鍵中任選一個為主鍵。
示例:
注意: 插入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>=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)衡”。
大體如下:
演示:
修改表
幾點(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)建語句
-
將tab_int復(fù)制給tab_int_bak,顯示tab_int_bak表創(chuàng)建語句,與tab_int一致
相關(guān)推薦: