mysql常見問題集合:
1.mysql中文排序:
字段編碼為utf8時熄云,mysql并不會按中文拼音排序膨更。
需要設置字段編碼為gbk妙真,或對字段進行類型轉換CONVERT([字段] using gbk)
比如: select * from table order by CONVERT(nameUSING gbk)
2.在mysql中的group_concat函數(shù)限制:
在mysql中的group_concat函數(shù)默認支持的最大字符數(shù)為1024。
當你使用group_concat函數(shù)時荚守,超出第1024字符的字符會全部丟失珍德。
解決方法:
(1).使用sql設置group_concat的最大長度
SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len=102400;
但是這種方式在重啟mysql后就無效练般。
(2).在MySQL配置文件中my.conf或my.ini中添加:
#[mysqld]
group_concat_max_len=102400
然后重啟mysql服務
3.ONLY_FULL_GROUP_BY校驗規(guī)則導致group by 報語法錯誤
--關閉only_full_group_by的規(guī)則校驗
set @@GLOBAL.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
set @@SESSION.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
在 [mysqld] 下面添加代碼:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
4.數(shù)據(jù)庫表名的大小寫配置
show global variables like '%lower_case_table_names%';
lower_case_table_names = 0時,mysql會根據(jù)表名直接操作锈候,大小寫敏感薄料。
lower_case_table_names = 1時,mysql會先把表名轉為小寫泵琳,再執(zhí)行操作摄职。
找出mysql的配置文件,在 [mysqld] 下面添加/修改代碼,
修改 lower_case_table_names = 1
即可以不區(qū)分大小寫了
其他
事務的四大特性(ACID): 原子性获列,一致性谷市,隔離性,持久性
隔離級別 | 臟讀 | 不可重復讀 | 幻讀 |
---|---|---|---|
READ-UNCOMMITTED | √ | √ | √ |
READ-COMMITTED | × | √ | √ |
REPEATABLE-READ | × | × | √ |
SERIALIZABLE | × | × | × |
mysql為第3種 REPEATABLE-READ
mysql外鍵優(yōu)缺點:
優(yōu)點:便于查看各個表的關系击孩,增強數(shù)據(jù)可靠性迫悠。
缺點:在進行insert, update, delete等操作時,會校驗數(shù)據(jù)是否符合巩梢,導致耗時過大创泄。
索引方法(結構): B樹/ B+樹 (BTree)(常用) hash
一級索引(聚集索引):
主鍵索引:在 MySQL 的 InnoDB 的表中,當沒有顯示的指定表的主鍵時括蝠,InnoDB 會自動先檢查表中是否
有唯一索引的字段鞠抑,如果有,則選擇該字段為默認的主鍵忌警,否則 InnoDB 將會自動創(chuàng)建一個 6Byte 的自增主鍵碍拆。主鍵索引只能有一個。添加多個主鍵會變成復合索引慨蓝。
二級索引(非聚集索引)
普通索引(index)
唯一索引(Unique Key)
全文索引(Full Text)
單一索引:針對單列的索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
復合(聯(lián)合)索引:針對多列的索引,有優(yōu)先級感混,篩選力度最高的放最前面
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )