01SQL
分類
-
DML
(Data Manipulation Language) 數(shù)據(jù)操縱語言遮斥,select,update,insert,delete. -
DDL
(Data Definition Language) 數(shù)據(jù)庫定義語言,create,drop,alter. -
DCL
(Data Control Language) 數(shù)據(jù)庫控制語言坏逢,用來設(shè)置或更改用戶或角色權(quán)限的語句亚斋。
02數(shù)據(jù)表中的文件介紹
- 一個(gè)數(shù)據(jù)庫對應(yīng)一個(gè)文件夾。
- 一個(gè)表對應(yīng)一個(gè)或多個(gè)文件差购。
- 當(dāng)引擎是innodb時(shí)异逐,每創(chuàng)建一個(gè)數(shù)據(jù)表忍抽,數(shù)據(jù)庫文件夾下會(huì)自動(dòng)生成一個(gè)“表名.frm”.文件,此文件儲(chǔ)存著表的結(jié)構(gòu)董朝。而表的數(shù)據(jù)存儲(chǔ)在與數(shù)據(jù)庫同級的文件夾(Data目錄下)的一個(gè)名為“idbata1”的文件中鸠项。無論是哪個(gè)數(shù)據(jù)表都將數(shù)據(jù)存放在此文件中,直至文件非常大快滿時(shí)子姜,會(huì)自動(dòng)新建“idbata2”文件存放數(shù)據(jù)祟绊。
- 當(dāng)引擎是myisam時(shí),每創(chuàng)建一個(gè)表闲询,數(shù)據(jù)庫文件夾下會(huì)多處三個(gè)文件久免,分別是“表名.frm”、“表名.MYD”扭弧、“表名.MYI”阎姥。后綴是frm的文件存放的是表的框架;后綴是MYD意思是MYData鸽捻,存放的是數(shù)據(jù)呼巴;后綴是MYI意思是MYIndex,存放的是索引御蒲。
- 當(dāng)引擎是memory時(shí)衣赶,每新建一個(gè)表,數(shù)據(jù)庫就會(huì)多一個(gè)“表名.frm”文件厚满,數(shù)據(jù)存放在內(nèi)存中府瞄,如果重啟Mysql則數(shù)據(jù)會(huì)全部消失,這個(gè)引擎的優(yōu)點(diǎn)是速度快碘箍。
03字符集
表中的值插入中文會(huì)報(bào)錯(cuò)遵馆?因?yàn)槿绻蛻舳擞玫氖莋bk編碼,服務(wù)器用編譯utf8的方式接收丰榴,并用編譯utf8的方式發(fā)送货邓,肯定會(huì)報(bào)錯(cuò)。
怎樣查看服務(wù)器是按什么字符集編譯的四濒?答:進(jìn)入MySQL使用show variables like 'character_set_%';
命令即可查看换况。默認(rèn)情況下,會(huì)出現(xiàn)下面一大坨盗蟆。
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.02 sec)
其中戈二,第4行character_set_client
(即服務(wù)器接收方式)是 utf8
,第8行 character_set_results
(即服務(wù)器發(fā)送方式)是 utf8
喳资,如果你的客戶端是gbk編碼挽拂,客戶端是不能改的,只能改服務(wù)器骨饿。就需要兩條命令 set character_set_client =gbk
和set character_set_results =gbk
改這兩處即可亏栈,其他不用管台腥。
總結(jié):客戶端編碼、character_set_client
绒北、 character_set_results
三者的值相同即可插入中文不報(bào)錯(cuò)不亂碼黎侈。僅需一句 set names 字符編碼
就可以輕松設(shè)定character_set_client
、 character_set_results
的值闷游,取代上述繁瑣的兩條命令峻汉。