正文之前
想到自己每天中午還要玩一小時(shí)手機(jī),就自責(zé)不已吕朵,今天看成甲的好好學(xué)習(xí)一書猎醇,頗有收獲,晚上寫給大伙看努溃,現(xiàn)在還是謝謝 Mysql硫嘶,到了后面感覺(jué)越來(lái)越難了呢!梧税!
正文
Mysql 事務(wù)
Mysql 事務(wù)主要用于處理操作量大沦疾,復(fù)雜度高的數(shù)據(jù)称近。比如說(shuō),在人員管理系統(tǒng)中哮塞,你刪除一個(gè)人員刨秆,你即需要?jiǎng)h除人員的基本資料,也要?jiǎng)h除和該人員相關(guān)的信息彻桃,如信箱坛善,文章等等晾蜘,這樣邻眷,這些數(shù)據(jù)庫(kù)操作語(yǔ)句就構(gòu)成一個(gè)事務(wù)!簡(jiǎn)單點(diǎn)說(shuō)剔交,事務(wù)就是你要進(jìn)行的一系列操作肆饶。你每輸入一條指令岖常,就類似于是進(jìn)行了一個(gè)事務(wù)驯镊。在 ### Mysql 命令行的默認(rèn)設(shè)置下,事務(wù)都是自動(dòng)提交的竭鞍,即執(zhí)行 SQL 語(yǔ)句后就會(huì)馬上執(zhí)行 COMMIT 操作板惑。因此要顯式地開(kāi)啟一個(gè)事務(wù)務(wù)須使用命令 begin 或 START TRANSACTION,或者執(zhí)行命令 set AUTOCOMMIT=0偎快,用來(lái)禁止使用當(dāng)前會(huì)話的自動(dòng)提交冯乘。
太過(guò)具體的內(nèi)容暫時(shí)不說(shuō),說(shuō)點(diǎn)平時(shí)用的上的晒夹。
Mysql 事務(wù)處理主要有兩種方法:
1裆馒、用 begin, rollback, COMMIT來(lái)實(shí)現(xiàn)
- begin 開(kāi)始一個(gè)事務(wù)
- rollback 事務(wù)回滾
- COMMIT 事務(wù)確認(rèn)
2、直接用 set 來(lái)改變 Mysql 的自動(dòng)提交模式:
- set AUTOCOMMIT=0 禁止自動(dòng)提交,也就是說(shuō)你的操作會(huì)被默認(rèn)備份存儲(chǔ)丐怯,然后如果你需要后退直接后退即可
- set AUTOCOMMIT=1 開(kāi)啟自動(dòng)提交
綜上來(lái)看喷好,我們開(kāi)啟自動(dòng)提交會(huì)比較好,除非你能極強(qiáng)的把控自己記得提交读跷,或者有別的需求梗搅,否則一般的學(xué)習(xí)與練習(xí)的話,回滾操作其實(shí)并非那么渴求的效览。不過(guò)這個(gè)東西无切,就好比是每一次操作都進(jìn)行備份了,如果能實(shí)時(shí)回滾钦铺,確實(shí)很不錯(cuò)的订雾。所以關(guān)閉自動(dòng)提交貌似也是很好的工作習(xí)慣啊C础洼哎!而且還支持打標(biāo)記點(diǎn)烫映,也就是說(shuō)每一次回滾都只是回到打標(biāo)記點(diǎn)的位置,而不會(huì)把之前做的所有工作一并付之東流~ 美滋滋
Mysql alter命令
當(dāng)我們需要修改數(shù)據(jù)表名或者修改數(shù)據(jù)表字段時(shí)噩峦,就需要使用到 Mysql alter命令锭沟。綜合以前的知識(shí),大概建立一個(gè)架構(gòu):
從上面看得出來(lái)识补,數(shù)據(jù)庫(kù)是由表以及表的關(guān)系構(gòu)成的族淮,在每個(gè)表內(nèi),都有行列之分凭涂,列是屬性:姓名祝辣,編號(hào)這些,行就具體到每個(gè)人切油,對(duì)應(yīng)什么學(xué)號(hào)蝙斜,什么姓名,我們用delete配合where刪除人澎胡,用alter修改列孕荠,通俗點(diǎn)說(shuō),如果表是一個(gè)學(xué)生管理系統(tǒng)攻谁,那么alter就是新開(kāi)一門課稚伍,所有的同學(xué)都多了一門課,成績(jī)暫時(shí)為NULL戚宦,如果是delete那就是開(kāi)出一個(gè)同學(xué)个曙,對(duì)別的同學(xué)沒(méi)啥影響,就是少了一行而已阁苞。詳情見(jiàn)下圖:
如果你需要指定新增字段的位置困檩,可以使用Mysql提供的關(guān)鍵字 first (設(shè)定位第一列), after 字段名(設(shè)定位于某個(gè)字段之后)那槽。first 和 after 關(guān)鍵字只占用于 add 子句悼沿,所以如果你想重置數(shù)據(jù)表字段的位置就需要先使用 drop 刪除字段然后使用 add 來(lái)添加字段并設(shè)置位置。
如果需要修改字段類型及名稱, 你可以在alter命令中使用 modify 或 change 子句 骚灸。
其實(shí)change就可以直接不改名字只改類型達(dá)到modify的效果吧糟趾??
alter table 對(duì) Null 值和默認(rèn)值的影響
修改表名
WTF???為毛不能改甚牲?不管了义郑。到時(shí)候直接復(fù)制一列,然后刪除原來(lái)那一列好了丈钙。
Mysql 索引
1.可以通過(guò)建立唯一索引或者主鍵索引,保證數(shù)據(jù)庫(kù)表中每一行數(shù)據(jù)的唯一性.
2.建立索引可以大大提高檢索的數(shù)據(jù),以及減少表的檢索行數(shù)
3.在表連接的連接條件 可以加速表與表直接的相連
4.在分組和排序字句進(jìn)行數(shù)據(jù)檢索,可以減少查詢時(shí)間中 分組 和 排序時(shí)所消耗的時(shí)間(數(shù)據(jù)庫(kù)的記錄會(huì)重新排序)
5.建立索引,在查詢中使用索引 可以提高性能
或者也可以用alter來(lái)創(chuàng)建索引
alter table table_name add index index_name ON (column(length))
刪除表中索引:
drop index [indexName] ON mytable;
我一開(kāi)始把索引視為指針非驮,結(jié)果后來(lái)查了下發(fā)現(xiàn)我想錯(cuò)了。索引不存在別的實(shí)際的引用雏赦,只是我們建立索引的時(shí)候劫笙,單獨(dú)的把一列或者多列組合起來(lái)芙扎,形成一個(gè)有序的排布,當(dāng)我們需要檢索我們建立了索引的列的時(shí)候填大,比如說(shuō)我們?cè)趖ableid上建立了索引戒洼,那么當(dāng)我們需要用where來(lái)對(duì)tableid進(jìn)行檢索的時(shí)候,會(huì)首先檢索索引允华,然后可以迅速的找到滿足我們條件的行的地址圈浇,然后直接查詢信息即可。這個(gè)過(guò)程對(duì)我們來(lái)說(shuō)是不可見(jiàn)靴寂,或許當(dāng)你的表格達(dá)到一定程序的時(shí)候磷蜀,會(huì)在檢索時(shí)間上顯示出來(lái)。但是這個(gè)加速的過(guò)程確實(shí)是恐怖的榨汤,100倍的提升不是玩笑蠕搜。
具體更多的索引的內(nèi)容詳見(jiàn):Mysql - index 詳解
Mysql 復(fù)制表
如果我們需要完全的復(fù)制Mysql的數(shù)據(jù)表怎茫,包括表的結(jié)構(gòu)收壕,索引,默認(rèn)值等轨蛤。 如果僅僅使用create table ... select 命令蜜宪,是無(wú)法實(shí)現(xiàn)的。
- 使用 SHOW create table 命令獲取創(chuàng)建數(shù)據(jù)表(create table) 語(yǔ)句祥山,該語(yǔ)句包含了原數(shù)據(jù)表的結(jié)構(gòu)圃验,索引等。
- 復(fù)制以下命令顯示的SQL語(yǔ)句缝呕,修改數(shù)據(jù)表名澳窑,并執(zhí)行SQL語(yǔ)句,通過(guò)以上命令 將完全的復(fù)制數(shù)據(jù)表結(jié)構(gòu)供常。
- 如果你想復(fù)制表的內(nèi)容摊聋,你就可以使用 insert into ... select 語(yǔ)句來(lái)實(shí)現(xiàn)。
第一步:
show create table tableuse;
第二步:完全復(fù)制上面的輸出栈暇。然后直接修改表名就好了麻裁。
第三步:復(fù)制數(shù)據(jù)
insert into tableclone (tableid,createtime,Tableuse) select tableid,createtime,Tableuse from tableuse;
在教程下面看到的,哭死:??
create table targetTable LIKE sourceTable;
insert into targetTable select * FROM sourceTable;
Mysql 元數(shù)據(jù)
正文之后
班上的黨支部書記考研源祈,然后班上黨員投骰子決定誰(shuí)來(lái)繼任煎源,最后他么居然我上,心痛香缺。
我這個(gè)保研到外院去的人啊手销,又是班長(zhǎng),又是畢設(shè)負(fù)責(zé)人图张,又是年級(jí)的畢設(shè)負(fù)責(zé)人锋拖,又是年級(jí)學(xué)生會(huì)的小佬馏慨,各種忙活,上課組隊(duì)還帶了個(gè)考研隊(duì)姑隅,計(jì)算機(jī)的BOSS又不找我分配任務(wù)写隶,哎,全身心奉獻(xiàn)給我偉大的學(xué)生工作了么讲仰?放屁慕趴,不存在的,等我畢設(shè)開(kāi)始了誰(shuí)愛(ài)干誰(shuí)干鄙陡,反正明年我跑了冕房。本來(lái)也是對(duì)學(xué)院有點(diǎn)愧疚,拿了名額跑到別的學(xué)院去了趁矾。多干點(diǎn)活還了耙册。自己心情舒暢就好了!