標籤:
1、怎樣登陸mysql資料庫
mysql -u username -p
2、怎樣開啟/關閉mysql服務
service mysql start/stop
3、查看mysql的狀態
service mysql status
4、怎樣顯示數全部資料庫
show databases
5、怎樣擷取表內全部欄位對象的名稱和類型
describe table_name;
6、MYSQL支援事務嗎?
在預設模式下,MYSQL是autocommit模式的。全部的資料庫更新操作都會即時提交。所以在預設情況下,mysql是不支援事務的。
可是假設你的MYSQL表類型是使用InnoDB Tables 或 BDB tables的話,你的MYSQL就能夠使用交易處理,使用SET AUTOCOMMIT=0就能夠使MYSQL同意在非autocommit模式,在非autocommit模式下,你必須使用COMMIT來提交你的更改。或者用ROLLBACK來復原你的更改。
示比例如以下:
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET [email protected] WHERE type=1;
COMMIT;
7、MYSQL相比於其它資料庫有哪些特點?
MySQL是一個小型關係型資料庫管理系統,開發人員為瑞典MySQL AB公司。如今已經被Sun公司收購,支援FreeBSD、Linux、MAC、Windows等多種作業系統與其它的大型資料庫比如Oracle、DB2、SQL Server等相比功能稍弱一些
1、能夠處理擁有上千萬條記錄的大型資料
2、支援常見的SQL語句規範
3、可移植行高,安裝簡單小巧
4、良好的運行效率,有豐富資訊的網路支援
5、調試、管理,最佳化簡單(相對其它大型資料庫)
8、varchar和char的差別
Char是一種固定長度的類型,varchar是一種可變長度的類型
9、資料庫事物有哪幾種?
隔離性、持久性、一致性、原子性
10、請簡潔地描寫敘述下MySQL中InnoDB支援的四種交易隔離等級名稱。以及逐級之間的差別?
SQL標準定義的四個隔離等級為:
read uncommited:讀取未提交內容
read committed:讀取提交內容
repeatable read:可重讀
serializable:可序列化
詳解例如以下:
Read Uncommitted(讀取未提交內容)
在該隔離等級,全部事務都能夠看到其它未提交事務的運行結果。本隔離等級非常少用於實際應用,由於它的效能也不比其它層級好多少。讀取未提交的資料,也被稱之為髒讀(Dirty Read)。
Read Committed(讀取提交內容)
這是大多數資料庫系統的預設隔離等級(但不是MySQL預設的)。它滿足了隔離的簡單定義:一個事務僅僅能看見已經提交事務所做的改變。這樣的隔離等級也支援所謂的不可反覆讀(Nonrepeatable Read),由於同一事務的其它執行個體在該執行個體處理其間可能會有新的commit,所以同一select可能返回不同結果。
Repeatable Read(可重讀)
這是MySQL的預設交易隔離等級,它確保同一事務的多個執行個體在並發讀取資料時,會看到相同的資料行。只是理論上,這會導致還有一個棘手的問題:幻讀(Phantom Read)。簡單的說,幻讀指當使用者讀取某一範圍的資料行時,還有一個事務又在該範圍插入入了新行,當使用者再讀取該範圍的資料行時。會發現有新的“幻影” 行。InnoDB和Falcon儲存引擎通過多版本號碼並發控制(MVCC。Multiversion Concurrency Control 間隙鎖)機制攻克了該問題。
註:事實上多版本號碼僅僅是解決不可反覆讀問題。而加上間隙鎖(也就是它這裡所謂的並發控制)才攻克了幻讀問題。
Serializable(可序列化)
這是最高的隔離等級,它通過強制事務排序,使之不可能相互衝突。從而解決幻讀問題。簡言之。它是在每一個讀的資料行上加上共用鎖定。在這個層級。可能導致大量的逾時現象和鎖競爭。
對於不同的事務,採用不同的隔離等級分別有不同的結果。不同的隔離等級有不同的現象。主要有以下3種如今:
1、髒讀(dirty read):一個事務能夠讀取還有一個尚未提交事務的改動資料。
2、非反覆讀(nonrepeatable read):在同一個事務中,同一個查詢在T1時間讀取某一行。在T2時間又一次讀取這一行時候,這一行的資料已經發生改動,可能被更新了(update)。也可能被刪除了(delete)。
3、幻像讀(phantom read):在同一事務中,同一查詢多次進行時候,由於其它插入操作(insert)的事務提交,導致每次返回不同的結果集。
不同的隔離等級有不同的現象,並有不同的鎖定/並發機制,隔離等級越高,資料庫的並發性就越差,4種交易隔離等級分別表現的現象例如以下表:
11、mysql資料庫引擎MyISAM和InnoDB的差別
12、mysql有關許可權的表都有哪幾個
MySQLserver通過許可權表來控制使用者對資料庫的訪問,許可權表存放在mysql資料庫裡,由mysql_install_db指令碼初始化。這些許可權表分別user。db,table_priv,columns_priv和host。
以下分別介紹一下這些表的結構和內容:
user許可權表:記錄同意串連到server的使用者帳號資訊。裡面的許可權是全域級的。
db許可權表:記錄各個帳號在各個資料庫上的操作許可權。
table_priv許可權表:記錄資料表級的操作許可權。
columns_priv許可權表:記錄資料列級的操作許可權。
host許可權表:配合db許可權表對給定主機上資料庫級操作許可權作更仔細的控制。這個許可權表不受GRANT和REVOKE語句的影響。
13、mysql儲存引擎有哪些?怎樣改動mysql儲存引擎?
MyISAM indexed sequential access method (有索引的順序訪問方法)
MyISAM 具有檢查和修複表格的大多數工具。表格能夠被壓縮。並且支援全文收索
不是事務安全的,並且不支援外鍵。
MEMORY 也是曾經的(HEAP) 該類型表格儲存體在記憶體中。表的索引是雜湊分布的。
merge 這些表為了查詢目的,把myisam 表集合作為單個表,因此你能夠在某些作業系統中避開最大檔案大小的限制。
archive 這樣的類型的表僅僅支援,insert ,select 不支援delete,update,replace ,不使用索引。
csv 這些表儲存在server的單個檔案裡。它包括了用逗號間隔的資料。
innodb 這樣的表是事務安全的。提供了commit(提交) rollback(實務復原)支援外鍵。比myisam慢。
改動mysql儲存引擎alter table tablename type = innodb;
14、MYSQL 資料表修複及資料恢複面試題
- MYSQL資料表在什麼情況下easy損壞?
server突然斷電導致資料檔案損壞。
強制關機。沒有先關閉mysql 服務等。
- 資料表損壞後的主要現象是什嗎?
從表中選擇資料之時。得到例如以下錯誤:Incorrect key file for table: ‘…’. Try to repair it
查詢不能在表中找到行或返回不全然的資料。
Error: Table ‘p’ is marked as crashed and should be repaired 。
開啟表失敗: Can’t open file: ‘×××.MYI’ (errno: 145) 。
- 資料表損壞的修複方式有哪些?
使用 myisamchk 來修複,詳細步驟:
1)修複前將mysql服務停止。
2)開啟命令列方式,然後進入到mysql的/bin檔案夾。
3)運行myisamchk –recover 資料庫所在路徑/*.MYI
使用repair table 或者 OPTIMIZE table命令來修複,REPAIR TABLE table_name 修複表 OPTIMIZE TABLE table_name 最佳化表 REPAIR TABLE 用於修複被破壞的表。
OPTIMIZE TABLE 用於回收閑置的資料庫空間,當表上的資料行被刪除時,所佔領的磁碟空間並沒有馬上被回收,使用了OPTIMIZE TABLE命令後這些空間將被回收,並且對磁碟上的資料行進行重排(注意:是磁碟上,而非資料庫)
15、MYSQL資料庫server效能分析的方法命令有哪些?
Show status
一些值得監控的變數值:
Bytes_received和Bytes_sent
和server之間來往的流量。
Com_*server正在啟動並執行命令。
Created_*在查詢運行期限間建立的暫時表和檔案。
Handler_*儲存引擎操作。
Select_*不同類型的聯結運行計劃。
Sort_*幾種排序資訊。
Show session status like ‘Select’;
Show profiles
SET profiling=1;
Show profiles\G
Show profile;
16、 mysql裡記錄貨幣用什麼欄位類型好
NUMERIC和DECIMAL類型被MySQL實現為相同的類型,這在SQL92標準同意。他們被用於儲存值,該值的準確精度是極其重要的值,比如與金錢有關的資料。
當聲明一個類是這些類型之中的一個時,精度和規模的能被(並且一般是)指定;比如:
salary DECIMAL(9,2)
在這個範例中,9(precision)代表將被用於儲存值的總的小數位元,而2(scale)代表將被用於儲存小數點後的位元。因此。在這樣的情況下。能被儲存在salary列中的值的範圍是從-9999999.99到9999999.99。在ANSI/ISO SQL92中,句法DECIMAL(p)等價於DECIMAL(p,0)。相同,句法DECIMAL等價於DECIMAL(p,0)。這裡實現被同意決定值p。MySQL當前不支援DECIMAL/NUMERIC資料類型的這些變種形式的任一種。這一般說來不是一個嚴重的問題,由於這些類型的主要益處得自於明顯地控制精度和規模的能力。
DECIMAL和NUMERIC值作為字串儲存。而不是作為二進位浮點數,以便儲存那些值的小數精度。
一個字元用於值的每一位、小數點(假設scale>0)和“-”符號(對於負值)。假設scale是0。DECIMAL和NUMERIC值不包括小數點或小數部分。
DECIMAL和NUMERIC值得最大的範圍與DOUBLE一樣,可是對於一個給定的DECIMAL或NUMERIC列,實際的範圍可由制由給定列的precision或scale限制。
當這樣的列賦給了小數點後面的位超過指定scale所同意的位的值,該值依據scale四捨五入。當一個DECIMAL或NUMERIC列被賦給了其大小超過指定(或預設的)precision和scale隱含的範圍的值,MySQL儲存表示那個範圍的對應的端點值。
收集的MySQL的面試題分享給大家