MySQL學習筆記_4_MySQL建立資料表(下),學習筆記_4_mysql

來源:互聯網
上載者:User

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; #刪除資料表

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.