MySQL學習筆記_4_MySQL建立資料表(下),學習筆記_4_mysql
MySQL建立資料表(下)
五、資料表類型及儲存位置
1、MySQL與大多數資料庫不同,MySQL有一個儲存引擎概念。MySQL可以針對不同的儲存需求選擇不同的儲存引擎。
2、 showengines; #查看MySQL所支援的儲存引擎storageengine
3、 showvariables like 'table_type'; #查看預設資料表類型
MyISAM和InnoDB最常用的儲存引擎【表類型】
4、指定表類型【使用哪一個儲存引擎】:
createtable ...() engine = InnoDB;
注意:在一個資料庫中可以在建立資料表時指定不同的表類型,即同一個庫中可以有多個不同表類型的資料表存在
5、不同引擎的特點:
1)MyISAM表類型:
成熟穩定,易於管理,使用一種表格鎖定的機制,需要經常使用“optimizetable表名”來恢複機制所浪費的空間。
強調可以快速讀取操作。但是也有一些功能不支援。
2)InnoDB表類型:
支援一些MyISAM所不支援的功能
缺點:佔用空間大,不支援全文索引
對比:
功能 |
MyISAM |
InnoDB |
交易處理功能 |
No |
Yes |
資料行鎖定 |
No |
Yes |
外鍵約束 |
No |
Yes |
資料表空間佔用 |
0 |
相對大(最大2倍) |
全文索引 |
0 |
0 |
儲存(/var/lib/mysql/) |
3個檔案(.frm儲存表結構 |
1個檔案(.frm) |
|
.MYD儲存資料 |
|
|
.MYI儲存索引) |
|
六、MySQL預設字元集
1、MySQL支援的資料編碼
ASCII碼 #7個字元儲存
ISO-8859-1/latin1字元集 #西歐字元集,經常被程式員轉碼用,8位編碼
gb2312-80 #不推薦
...
GBK【95年】 #2位元組,可以用,但是不推薦,雙位元組編碼
GB18030【2000年發布】#資料庫支援比較少見
UTF-32 #4位元組,不常用
USC-2 #2位元組,Windows2000內部使用
UTF-16 #2/4位元組編碼,JAVA,WindowsXP,WindowsNT內部使用
UTF-8 #1~4位元組編碼,Unicode是互連網與UNIX/Linux與MySQL伺服器廣泛支援的字元集,強烈推薦
e.g. GBK2位元組:namevarchar(12) 6個漢字
UTF-83位元組:namevarchar(12) 4個漢字
2、MySQL伺服器,資料庫,資料表,欄位都可以指定不同的字元集,用“showcharacter set;”可用於查看MySQL支援的所有字元集
注意:資料庫中UTF-8在使用時為utf8
3、MySQL的字元集包括 #character字元
字元集【charset】:用來定義MySQL字串的儲存方式
校對規則【collation】:用來定義MySQL字串的比較方式
是一對多的關係:1個字元集可以對應多個校對規則
showcollation like 'gbk%'; #可用來查看gbk所對應的校對規則
showcollation; #可用來查看所有的校對規則,以ci結尾,表示大小寫不敏感,以cs結尾,大小寫敏感,以bin結尾表示以二進位比較
showvariables like 'character_set_server'; #查看伺服器端字元集
showvariables like 'collation_server'; #查看伺服器段校對規則
4、指定預設字元集與校對規則
createdatabase xsdemo default character gbk collategbk_chinese_ci; #指定資料庫預設字元集
create table t1(id int not null auto_increment primary key)engine=myisam default character set gbk collategbk_chinese_ci; #制定資料表的字元集
5、用戶端與伺服器互動時
character_set_client #用戶端字元集
character_set_connection #串連字元集
character_set_result #返回結果字元集
通常情況下這三個字元集應該是相同的,才能使得資料轉送是相同的,使用“setnames字元集”可以同時修改這三個的值。
alterdatabase character set utf8; #修改資料庫的字元集,alter修改,更改
altertable t1 character set utf8; #修改資料表的字元集
伺服器的字元集就只能改設定檔了
6、備份資料庫
mysqldump-u root -p --default-character-set=gbk -d xsdemo >/home/xiaofang/backup.sql #dump傾倒;傾卸
7、還原資料庫
mysql-u root -p xsdemo < /home/xiaofang/backup.sql
七、修改表
altertable... #更多內容參見?Alter table;
e.g. altertable t1 add price double not null default 0.00;
altertable t1 add sex varchar(5) after name; #在姓名之後添加性別
altertable t1 add height double first; #在第一位置添加身高
altertable t1 modify sex char(3); #modify適用於改類型
altertable t1 change name username varchar(5);#change既可以更改欄位名,又可以更改類型
altertable t1 rename users; #直接修改表名
altertable t1 drop age; #刪除欄位
droptable if exists users; #刪除資料表