欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

mysql引擎怎么用,mysql使用的引擎

mysql怎么啟用innodb數(shù)據(jù)庫引擎

臨時(shí)表的存儲(chǔ)引擎

創(chuàng)新互聯(lián)建站于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元鋼城做網(wǎng)站,已為上家服務(wù),為鋼城各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

在 MySQL 5.6 之前,所有磁盤上的臨時(shí)表都默認(rèn)創(chuàng)建為 MyISAM 類型。臨時(shí)表是在內(nèi)存中,還是在磁盤上創(chuàng)建,具體取決于配置,并在查詢結(jié)束時(shí)立即刪除。從 MySQL 5.7 開始,它們默認(rèn)創(chuàng)建為 InnoDB 類型。

新默認(rèn)值可提升整體性能,大多數(shù)情況下都是最佳選擇。

可以使用新的配置項(xiàng)來設(shè)置臨時(shí)表的存儲(chǔ)引擎:internal_tmp_disk_storage_engine ,可選值為 InnoDB(默認(rèn))或 MyISAM。

InnoDB 類型的臨時(shí)表存在的潛在問題

盡管使用 InnoDB 是性能最佳的,但可能會(huì)出現(xiàn)新的潛在問題。在某些特定情況下,您可能會(huì)出現(xiàn)磁盤耗盡和服務(wù)器中斷。

與數(shù)據(jù)庫中的任何其他 InnoDB 表一樣,臨時(shí)表具有自己的表空間文件。新文件與通用表空間一起位于數(shù)據(jù)目錄中,名稱為 ibtmp1。它存儲(chǔ)所有 tmp 表。不運(yùn)行手動(dòng)運(yùn)行 OPTIMIZE TABLE,表空間文件就會(huì)不斷增長。如果你不能使用 OPTIMIZE,那么唯一能將 ibtmp1 大小縮小為零的方法,就是重新啟動(dòng)服務(wù)器。幸運(yùn)的是,即使文件無法減小,在執(zhí)行查詢后,臨時(shí)表也會(huì)自動(dòng)刪除,表空間可回收使用?,F(xiàn)在,我們想一想以下情境:

存在未優(yōu)化的查詢,需要在磁盤上創(chuàng)建非常大的的臨時(shí)表

存在優(yōu)化的查詢,但他們正在磁盤上創(chuàng)建非常大的臨時(shí)表,因?yàn)槟阏趯?duì)此數(shù)據(jù)集進(jìn)行計(jì)算(統(tǒng)計(jì),分析)

高并發(fā)連接時(shí),運(yùn)行相同的查詢,伴隨臨時(shí)表的創(chuàng)建

沒有很多可用空間

在這些情況下,文件 ibtmp1 大大增加,很容易耗盡可用空間。這種情況每天發(fā)生幾次,并且必須重啟服務(wù)器才能完全縮小 ibtmp1 表空間。使用不可收縮的文件可以輕松耗盡磁盤空間!

MySQL存儲(chǔ)引擎

InnoDB的數(shù)據(jù)文件本身就是主索引文件。而MyISAM的主索引和數(shù)據(jù)是分開的。輔助索引data域存儲(chǔ)相應(yīng)記錄主鍵的值而不是地址。

innoDB是聚簇索引,數(shù)據(jù)掛在逐漸索引之下。

是 MySQL 默認(rèn)的事務(wù)型存儲(chǔ)引擎, 只有在需要它不支持的特性時(shí),才考慮使用其它存儲(chǔ)引擎 。

實(shí)現(xiàn)了四個(gè)標(biāo)準(zhǔn)的隔離級(jí)別,默認(rèn)級(jí)別是可重復(fù)讀(REPEATABLE READ)。在可重復(fù)讀隔離級(jí)別下,通過多版本并發(fā)控制(MVCC)+ 間隙鎖(Next-Key Locking)防止幻影讀。

主索引是聚簇索引,在索引中保存了數(shù)據(jù),從而避免直接讀取磁盤,因此對(duì)查詢性能有很大的提升。

內(nèi)部做了很多優(yōu)化,包括從磁盤讀取數(shù)據(jù)時(shí)采用的可預(yù)測性讀、能夠加快讀操作并且自動(dòng)創(chuàng)建的自適應(yīng)哈希索引、能夠加速插入操作的插入緩沖區(qū)等。

支持真正的在線熱備份。其它存儲(chǔ)引擎不支持在線熱備份,要獲取一致性視圖需要停止對(duì)所有表的寫入,而在讀寫混合場景中,停止寫入可能也意味著停止讀取。

以B+樹作為索引結(jié)構(gòu),葉節(jié)點(diǎn)的數(shù)據(jù)域存放數(shù)據(jù)記錄的地址。主索引和輔助索引在結(jié)構(gòu)上沒有區(qū)別,只是主索引要求key唯一,而輔助索引的key可以重復(fù)。

MyISAM中索引檢索的算法為首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,則取出其data域的值,然后以data域的值為地址,讀取相應(yīng)數(shù)據(jù)記錄。

設(shè)計(jì)簡單,數(shù)據(jù)以緊密格式存儲(chǔ)。對(duì)于只讀數(shù)據(jù),或者表比較小、可以容忍修復(fù)的操作,則依然可以使用它。

提供了大量的特性,包括壓縮表、空間數(shù)據(jù)索引等。

不支持事務(wù) 。

不支持行級(jí)鎖,只能對(duì)整張表加鎖,讀取時(shí)會(huì)對(duì)需要讀到的所有表加共享鎖,寫入時(shí)則對(duì)表加排它鎖。但在表有讀取操作的同時(shí),也可以往表中插入新的記錄,這被稱為并發(fā)插入(CONCURRENT INSERT)。

可以手工或者自動(dòng)執(zhí)行檢查和修復(fù)操作,但是和事務(wù)恢復(fù)以及崩潰恢復(fù)不同,可能導(dǎo)致一些數(shù)據(jù)丟失,而且修復(fù)操作是非常慢的。

如果指定了 DELAY_KEY_WRITE 選項(xiàng),在每次修改執(zhí)行完成時(shí),不會(huì)立即將修改的索引數(shù)據(jù)寫入磁盤,而是會(huì)寫到內(nèi)存中的鍵緩沖區(qū),只有在清理鍵緩沖區(qū)或者關(guān)閉表的時(shí)候才會(huì)將對(duì)應(yīng)的索引塊寫入磁盤。這種方式可以極大地提升寫入性能,但是在數(shù)據(jù)庫或者主機(jī)崩潰時(shí)會(huì)造成索引損壞,需要執(zhí)行修復(fù)操作。

Mysql存儲(chǔ)引擎Myisam小結(jié)

myisam在mysql5.5之前是默認(rèn)存儲(chǔ)引擎,從5.5開始mysql的默認(rèn)存儲(chǔ)引擎為innodb.目前mysql版本myisam仍然有廣泛的應(yīng)用.mysql的一些系統(tǒng)表和臨時(shí)表存儲(chǔ)引擎仍然使用的myisam.這里的臨時(shí)表指的是在查詢過程中對(duì)查詢的數(shù)據(jù)進(jìn)行排序,分組等操作,數(shù)據(jù)量超過一定數(shù)量時(shí),由查詢優(yōu)化器建立的臨時(shí)表.

myisam每個(gè)表都有三個(gè)文件組成:

.frm 表結(jié)構(gòu)描述

.MYD 存儲(chǔ)數(shù)據(jù)

.MYI 存儲(chǔ)索引

myisam存儲(chǔ)引擎的鎖級(jí)別為表級(jí)鎖,myisam為表級(jí)讀共享寫?yīng)氄兼i.myisam讀并不會(huì)完全阻塞寫,myisam允許在讀的同時(shí)在表的后面追加對(duì)應(yīng)的數(shù)據(jù).concurrent_insert控制對(duì)應(yīng)的并發(fā)性.

concurrent_insert可以設(shè)置為以下3個(gè)值:

在5.0之前,myisam只支持文件大小為4G的文件,再次之后支持256TB大小的文件.如果表要大于4G,需要設(shè)置MAX_ROWS和AVG_ROW_LENGTH的值.

相對(duì)于innodb存儲(chǔ)引擎來說myisam占用的表空間更加少。myisam支持通過myisampack對(duì)單個(gè)表做進(jìn)一步壓縮。通過myisampack進(jìn)行壓縮,myisampack能過將數(shù)據(jù)壓縮40%~70%。但是通過myisampack壓縮后的數(shù)據(jù)該表將變成只讀。壓縮后需要對(duì)該表進(jìn)行檢查,使用工具myisamchk。

myisam存儲(chǔ)引擎不支持事務(wù)。update后無需commit將會(huì)自動(dòng)提交,也無法回滾。正是如此,myisam沒有redo log以及undo log文件。在遷移數(shù)據(jù)對(duì)應(yīng)的表的時(shí)候,只需要將對(duì)應(yīng)的表拷貝到目標(biāo)機(jī)器上就可以使用了。但是由于沒有redo log和undo log,這樣容易造成表損壞。

通過check table tablename和repair table tablename兩條命令表進(jìn)行修護(hù)。

myisam含有一些空間函數(shù)。一些地理信息系統(tǒng)的空間應(yīng)用需要使用這種類型的存儲(chǔ)引擎。

MySQL innodb引擎深入講解

表空間(ibd文件),一個(gè)MySQL實(shí)例可以對(duì)應(yīng)多個(gè)表空間,用于存儲(chǔ)記錄,索引等數(shù)據(jù)。

段,分為數(shù)據(jù)段、索引段、回滾段,innodb是索引組織表,數(shù)據(jù)段就是B+Tree的葉子節(jié)點(diǎn),索引段為非葉子節(jié)點(diǎn),段用來管理多個(gè)區(qū)。

區(qū),表空間的單元結(jié)構(gòu),每個(gè)區(qū)的大小為1M,默認(rèn)情況下,innodb存儲(chǔ)引擎頁大小為16K,即一個(gè)區(qū)中一共有64個(gè)連續(xù)的頁。

頁,是innodb存儲(chǔ)引擎磁盤管理的最小單元,每個(gè)頁的大小為16K,為了保證頁的連續(xù)性,innodb存儲(chǔ)引擎每次從磁盤申請(qǐng)4~5個(gè)區(qū)。

行,innodb存儲(chǔ)引擎數(shù)據(jù)是按行進(jìn)行存儲(chǔ)的。Trx_id 最后一次事務(wù)操作的id、roll_pointer滾動(dòng)指針。

i nnodb的內(nèi)存結(jié)構(gòu) ,由Buffer Pool、Change Buffer和Log Buffer組成。

Buffer Pool : 緩沖池是主內(nèi)存中的一個(gè)區(qū)域,里面可以緩存磁盤上經(jīng)常操作的真實(shí)數(shù)據(jù),在執(zhí)行增刪改查操作時(shí),先操作緩沖池中的數(shù)據(jù)(若緩沖池么有數(shù)據(jù),則從磁盤加載并緩存),然后再以一定頻率刷新磁盤,從而減少磁盤IO,加快處理速度。

緩沖池以page頁為單位,底層采用鏈表數(shù)據(jù)結(jié)構(gòu)管理page,根據(jù)狀態(tài),將page分為三種類型:

1、free page 即空閑page,未被使用。

2、clean page 被使用page,數(shù)據(jù)沒有被修改過。

3、dirty page 臟頁,被使用page,數(shù)據(jù)被修改過,這個(gè)page當(dāng)中的數(shù)據(jù)和磁盤當(dāng)中的數(shù)據(jù) 不一致。說得簡單點(diǎn)就是緩沖池中的數(shù)據(jù)改了,磁盤中的沒改,因?yàn)檫€沒刷寫到磁盤。

Change Buffer :更改緩沖區(qū)(針對(duì)于非唯一二級(jí)索引頁),在執(zhí)行DML語句時(shí),如果這些數(shù)據(jù)page沒有在Buffer Pool中,不會(huì)直接操作磁盤,而會(huì)將數(shù)據(jù)變更存在更改緩沖區(qū)Change Buffer中,在未來數(shù)據(jù)被讀取時(shí)。再將數(shù)據(jù)合并恢復(fù)到Buffer Pool中,再將合并后的數(shù)據(jù)刷新到磁盤中。

二級(jí)索引通常是非唯一的,并且以相對(duì)隨機(jī)的順序插入二級(jí)索引頁,同樣,刪除和更新可能會(huì)影響索引樹中不相鄰的二級(jí)索引頁。如果每一次都操作磁盤,會(huì)造成大量磁盤IO,有了Change Buffer之后,我們可以在緩沖池中進(jìn)行合并處理,減少磁盤IO。

Adaptive Hash Index: 自適應(yīng)hash索引,用于優(yōu)化對(duì)Buffer Pool數(shù)據(jù)的查詢,InnoDB存儲(chǔ)引擎會(huì)監(jiān)控對(duì)表上各索引頁的查詢,如果觀察到hash索引可以提升速度,則建立hash索引,稱之為自適應(yīng)hash索引。無需人工干預(yù),系統(tǒng)根據(jù)情況自動(dòng)完成。

參數(shù):innodb_adaptive_hash_index

Log Buffer: 日志緩沖區(qū),用來保存要寫入到磁盤中的log日志數(shù)據(jù)(redo log、undo log),默認(rèn)大小為16M,日志緩沖區(qū)的日志會(huì)定期刷新到磁盤中,如果需要更新,插入或刪除許多行的事務(wù),增加日志緩沖區(qū)的大小可以節(jié)省磁盤IO。

參數(shù): innodb_log_buffer_size 緩沖區(qū)大小

innodb_flush_log_at_trx_commit 日志刷新到磁盤時(shí)機(jī)

innodb_flush_log_at_trx_commit=1 表示日志在每次事務(wù)提交時(shí)寫入并刷新到磁盤

2 表示日志在每次事務(wù)提交后寫入,并每秒刷新到磁盤一次

0 表示每秒將日志寫入并刷新到磁盤一次。

InnoDB 的磁盤結(jié)構(gòu),由系統(tǒng)表空間(ibdata1),獨(dú)立表空間(*.ibd),通用表空間,撤銷表空間(undo tablespaces), 臨時(shí)表空間(Temporary Tablespaces), 雙寫緩沖區(qū)(Doublewrite Buffer files), 重做日志(Redo Log).

系統(tǒng)表空間(ibdata1): 系統(tǒng)表空間是更改緩沖區(qū)的存儲(chǔ)區(qū)域,如果表是在系統(tǒng)表空間而不是每個(gè)表文件或者通用表空間中創(chuàng)建的,它也可能包含表和索引數(shù)據(jù)。

參數(shù)為: innodb_data_file_path

獨(dú)立表空間(*.ibd): 每個(gè)表的文件表空間包含單個(gè)innodb表的數(shù)據(jù)和索引,并存儲(chǔ)在文件系 統(tǒng)上的單個(gè)數(shù)據(jù)文件中。 參數(shù): innodb_file_per_table

通用表空間: 需要通過create tablespace 語法創(chuàng)建,創(chuàng)建表時(shí) 可以指定該表空間。

create tablespace xxx add datafile 'file_name' engine=engine_name

create table table_name .... tablespace xxx

撤銷表空間(undo tablespaces): MySQL實(shí)例在初始化時(shí)會(huì)自動(dòng)創(chuàng)建兩個(gè)默認(rèn)的undo表空間(初始大小16K,undo_001,undo_002),用于存儲(chǔ)undo log 日志

臨時(shí)表空間(Temporary Tablespaces): innodb使用會(huì)話臨時(shí)表空和全局表空間,存儲(chǔ)用 戶創(chuàng)建的臨時(shí)表等數(shù)據(jù)。

雙寫緩沖區(qū)(Doublewrite Buffer files): innodb引擎將數(shù)據(jù)頁從Buffer Pool刷新到磁盤前,先將數(shù)據(jù)頁寫入緩沖區(qū)文件中,便于系統(tǒng)異常時(shí)恢復(fù)數(shù)據(jù)。

重做日志(Redo Log): 是用來實(shí)現(xiàn)事務(wù)的持久性,該日志文件由兩部分組成,重做日志緩沖區(qū)(redo log buffer)以及重做日志文件(redo log),前者是在內(nèi)存中,后者在磁盤中,當(dāng)事務(wù)提交之后會(huì)把修改信息都會(huì)存儲(chǔ)到該日志中,用于在刷新臟頁到磁盤時(shí),發(fā)送錯(cuò)誤時(shí),進(jìn)行數(shù)據(jù)恢復(fù)使用。以循環(huán)方式寫入重做日志文件,涉及兩個(gè)文件ib_logfile0,ib_logfile1。

那內(nèi)存結(jié)構(gòu)中的數(shù)據(jù)是如何刷新到磁盤中的? 在MySQL中有4個(gè)線程負(fù)責(zé)刷新日志到磁盤。

1、Master Thread, mysql核心后臺(tái)線程,負(fù)責(zé)調(diào)度其它線程,還負(fù)責(zé)將緩沖池中的數(shù)據(jù)異 步刷新到磁盤中,保持?jǐn)?shù)據(jù)的一致性,還包括臟頁的刷新,合并插入緩沖、undo頁的回 收。

2、IO Thread,在innodb存儲(chǔ)引擎中大量使用了AIO來處理IO請(qǐng)求,這樣可以極大地提高數(shù) 據(jù)庫的性能,而IO Thead主要負(fù)責(zé)這些IO請(qǐng)求的回調(diào)。

4個(gè)讀線程 Read thread負(fù)責(zé)讀操作

4個(gè)寫線程write thread負(fù)責(zé)寫操作

1個(gè)Log thread線程 負(fù)責(zé)將日志緩沖區(qū)刷新到磁盤

1個(gè)insert buffer線程 負(fù)責(zé)將寫入緩沖區(qū)內(nèi)容刷新到磁盤

3、Purge Thread,主要用于回收事務(wù)已經(jīng)提交了的undo log,在事務(wù)提交之后,undo log 可能不用了,就用它來回收。

4、Page Cleaner Thread, 協(xié)助Master Thread 刷新臟頁到磁盤的線程,它可以減輕主線程 的壓力,減少阻塞。

事務(wù)就是一組操作的集合,它是一個(gè)不可分割的工作單位,事務(wù)會(huì)把所有的操作作為一個(gè)整體一起向系統(tǒng)提交或撤銷操作請(qǐng)求,即這些操作要么同時(shí)成功,要么同時(shí)失效。

事務(wù)的4大特性分為:

如何保證事務(wù)的4大特性,原子性,一致性和持久性是由innodb存儲(chǔ)引擎底層的兩份日志來保證的,分別是redo log和undo log。對(duì)于隔離性是由鎖機(jī)制和MVCC(多版本并發(fā)控制)來實(shí)現(xiàn)的。

redo log,稱為重做日志,記錄的是事務(wù)提交時(shí)數(shù)據(jù)頁的物理修改,是用來實(shí)現(xiàn)事務(wù)的持久性。該日志文件由兩部分組成: 重做日志緩沖redo log buffer及重做日志文件redo log file,前者是在內(nèi)存中,后者是在磁盤中,當(dāng)事務(wù)提交之后會(huì)把所有修改信息都存到該日志文件中,用于在刷新臟頁到磁盤,發(fā)送錯(cuò)誤時(shí),進(jìn)行數(shù)據(jù)的恢復(fù)使用,從而保證事務(wù)的持久性。

具體的操作流程是:

1、客戶端發(fā)起事務(wù)操作,包含多條DML語句。首先去innodb中的buffer pool中的數(shù)據(jù)頁去查找有沒有我們要更新的這些數(shù)據(jù),如果沒有則通過后臺(tái)線程從磁盤中加載到buffer pool對(duì)應(yīng)的數(shù)據(jù)頁中,然后就可以在緩沖池中進(jìn)行數(shù)據(jù)操作了。

2、此時(shí)緩沖池中的數(shù)據(jù)頁發(fā)生了變更,還沒刷寫到磁盤,這個(gè)數(shù)據(jù)頁稱為臟頁。臟頁不是實(shí)時(shí)刷新到磁盤的,而是根據(jù)你配置的刷寫策略進(jìn)行刷寫到磁盤的(innodb_flush_log_at_trx_commit,0,1,2三個(gè)值)。如果臟頁在往磁盤刷新的時(shí)候出現(xiàn)了故障,會(huì)丟失數(shù)據(jù),導(dǎo)致事務(wù)的持久性得不到保證。為了避免這種現(xiàn)象,當(dāng)對(duì)緩沖池中的數(shù)據(jù)進(jìn)行增刪改操作時(shí),會(huì)把增刪改記錄到redo log buffer當(dāng)中,redo log buffer會(huì)把數(shù)據(jù)頁的物理變更持久化到磁盤文件中(ib_logfile0/ib_logfile1)。如果臟頁刷新失敗,就可以通過這兩個(gè)日志文件進(jìn)行恢復(fù)。

undo log,它是用來解決事務(wù)的原子性的,也稱為回滾日志。用于記錄數(shù)據(jù)被修改前的信息,作用包括:提供回滾和MVCC多版本并發(fā)控制。

undo log和redo log的記錄物理日志不一樣,它是邏輯日志??梢哉J(rèn)為當(dāng)delete一條記錄時(shí),undo log中會(huì)記錄一條對(duì)應(yīng)的insert記錄,當(dāng)update一條記錄時(shí),它記錄一條對(duì)應(yīng)相反的update記錄,當(dāng)執(zhí)行rollback時(shí),就可以從undo log中的邏輯記錄讀取到相應(yīng)的內(nèi)容并進(jìn)行回滾。

undo log銷毀: undo log 在事務(wù)執(zhí)行時(shí)產(chǎn)生,事務(wù)提交時(shí),并不會(huì)立即刪除undo log,因?yàn)檫@些日子可能用于MVCC。

undo log存儲(chǔ): undo log 采用段的方式進(jìn)行管理和記錄,存放在前面介紹的rollback segment回滾段中,內(nèi)部包含1024個(gè)undo log segment。

mvcc(multi-Version Concurrency Control),多版本并發(fā)控制,指維護(hù)一個(gè)數(shù)據(jù)的多個(gè)版本,使得讀寫操作沒有沖突,快照讀為MySQL實(shí)現(xiàn)MVCC提供了一個(gè)非阻塞讀功能,MVCC的具體實(shí)現(xiàn),還需要依賴于數(shù)據(jù)庫記錄中的三個(gè)隱式字段,undo log日志、readView。

read committed 每次select 都生成一個(gè)快照讀

repeatable read 開啟事務(wù)后第一個(gè)select語句才是快照讀的地方

serializable 快照讀會(huì)退化為當(dāng)前讀。

mvcc的實(shí)現(xiàn)原理

DB_TRX_ID: 最近修改事務(wù)ID,記錄插入這條記錄或最后一次修改該記錄的事務(wù)ID

DB_ROLL_PTR: 回滾指針,指向這條記錄的上一個(gè)版本,用于配合undo log,指向上一個(gè) 版本

DB_ROW_ID: 隱藏主鍵,如果表結(jié)構(gòu)沒有指定主鍵,將會(huì)生成該隱藏字段。

m_ids當(dāng)前活躍的事務(wù)ID集合

min_trx_id: 最小活躍事務(wù)id

max_trx_id: 預(yù)分配事務(wù)ID,當(dāng)前最大事務(wù)id+1,因?yàn)槭聞?wù)id是自增的

creator_trx_id: ReadView創(chuàng)建者的事務(wù)ID

版本鏈數(shù)據(jù)訪問規(guī)則:

trx_id: 表示當(dāng)前的事務(wù)ID

1、trx_id == creator_trx_id? 可以訪問讀版本--成立的話,說明數(shù)據(jù)是當(dāng)前這個(gè)事務(wù)更改的

2、trx_id 成立,說明數(shù)據(jù)已經(jīng)提交了。

3、trx_idmax_trx_id?不可用訪問讀版本- 成立的話,說明該事務(wù)是在ReadView生成后才開啟的。

4、min_trx_id

用mysql數(shù)據(jù)庫,怎么選擇引擎?

1、使用show語句找出在服務(wù)器上當(dāng)前存在什么數(shù)據(jù)庫:

mysql

show

databases;

+----------+

|

database

|

+----------+

|

mysql

|

|

test

|

+----------+

3

rows

in

set

(0.00

sec)

2、創(chuàng)建一個(gè)數(shù)據(jù)庫abccs

mysql

create

database

abccs;

注意不同操作系統(tǒng)對(duì)大小寫的敏感。

3、選擇你所創(chuàng)建的數(shù)據(jù)庫

mysql

use

abccs

database

changed

此時(shí)你已經(jīng)進(jìn)入你剛才所建立的數(shù)據(jù)庫abccs.

4、

創(chuàng)建一個(gè)數(shù)據(jù)庫表

首先看現(xiàn)在你的數(shù)據(jù)庫中存在什么表:

mysql

show

tables;

empty

set

(0.00

sec)

說明剛才建立的數(shù)據(jù)庫中還沒有數(shù)據(jù)庫表。下面來創(chuàng)建一個(gè)數(shù)據(jù)庫表mytable:

我們要建立一個(gè)你公司員工的生日表,表的內(nèi)容包含員工姓名、性別、出生日期、出生城市。

mysql

create

table

mytable

(name

varchar(20),

sex

char(1),

-

birth

date,

birthaddr

varchar(20));

query

ok,

rows

affected

(0.00

sec)

由于name、birthadd的列值是變化的,因此選擇varchar,其長度不一定是20??梢赃x擇從1到255的任何長度,如果以后需要改變它的字長,可以使用alter

table語句。);性別只需一個(gè)字符就可以表示:"m"或"f",因此選用char(1);birth列則使用date數(shù)據(jù)類型。

創(chuàng)建了一個(gè)表后,我們可以看看剛才做的結(jié)果,用show

tables顯示數(shù)據(jù)庫中有哪些表:

mysql

show

tables;

+---------------------+

|

tables

in

menagerie

|

+---------------------+

|

mytables

|

+---------------------+

5、顯示表的結(jié)構(gòu):

mysql

describe

mytable;

+-------------+-------------+------+-----+---------+-------+

|

field

|

type

|

null

|

key

|

default

|

extra

|

+-------------+-------------+------+-----+---------+-------+

|

name

|

varchar(20)

|

yes

|

|

null

|

|

|

sex

|

char(1)

|

yes

|

|

null

|

|

|

birth

|

date

|

yes

|

|

null

|

|

|

deathaddr

|

varchar(20)

|

yes

|

|

null

|

|

+-------------+-------------+------+-----+---------+-------+

4

rows

in

set

(0.00

sec)

6、

往表中加入記錄

我們先用select命令來查看表中的數(shù)據(jù):

mysql

select

*

from

mytable;

empty

set

(0.00

sec)

這說明剛才創(chuàng)建的表還沒有記錄。

加入一條新記錄:

mysql

insert

into

mytable

-

values

(′abccs′,′f′,′1977-07-07′,′china′);

query

ok,

1

row

affected

(0.05

sec)

再用上面的select命令看看發(fā)生了什么變化。我們可以按此方法一條一條地將所有員工的記錄加入到表中。

當(dāng)前文章:mysql引擎怎么用,mysql使用的引擎
標(biāo)題鏈接:http://chinadenli.net/article40/heeieo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站維護(hù)服務(wù)器托管、網(wǎng)站收錄、靜態(tài)網(wǎng)站、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司