mySQL 教程 第2章 安裝和介紹mySQL

來源:互聯網
上載者:User

標籤:mysql

第2章 安裝和介紹mySQL設定mySQL字元集

支援中文的字元集是utf8,該設定可以更改mySQL設定檔進行全域設定,也可以針對資料庫設定,也可以針對錶設定,也可以針對列設定。字元集更改後新插入的資料生效,對以前不生效。

練習1:更改MySQL的預設字元集

直接修改 my.cnf,增加一行內容,然後重啟 MySQL,使之全域生效,影響建立的所有資料庫。

default-character-set = utf8

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image001" border="0" alt="clip_image001" src="http://img1.51cto.com/attachment/201302/22/400469_1361515523iv4L.png" width="650" height="465" />

重啟mySQL服務

[email protected]:~# /etc/init.d/mysql restart

查看全域預設字元集

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://img1.51cto.com/attachment/201302/22/400469_1361515523vm6R.png" height="177" />

查看支援的所有字元集

mysql> show character set;

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image003" border="0" alt="clip_image003" src="http://img1.51cto.com/attachment/201302/22/400469_1361515524wVvj.png" height="673" />

練習2:為一個資料庫指定字元集

指定資料庫字元集後,該資料庫下建立的表預設都採用該庫指定的字元集。

1、建立資料庫時,指定其字元集

CREATE DATABASE db DEFAULT CHARSET UTF8;

2、或者採用 ALTER 文法來轉換欄位的字元集

ALTER DATABASE db DEFAULT CHARSET UTF8;

使用圖形管理介面也可以為資料庫指定字元集

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image004" border="0" alt="clip_image004" src="http://img1.51cto.com/attachment/201302/22/400469_1361515524RB0R.png" height="313" />

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image005" border="0" alt="clip_image005" src="http://img1.51cto.com/attachment/201302/22/400469_1361515525MX5J.png" height="414" />

練習3:為 一個資料表指定字元集

指定資料表字元集後,該資料表裡的所有字元型欄位預設都使用該表指定的字元集。

1、建立資料表時,指定其字元集

CREATE TABLE tbl

(

......

) ENGINE = MyISAM DEFAULT CHARSET UTF8;

2、或者採用 ALTER 文法來轉換欄位的字元集

ALTER TABLE tbl CONVERT TO CHARACTER SET utf8;

3、採用其他用戶端工具來設定,例如 Navicat/MySQL Front/PhpMyAdmin

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image006" border="0" alt="clip_image006" src="http://img1.51cto.com/attachment/201302/22/400469_1361515527pnOz.png" width="650" height="536" />

練習4:為一個欄位指定字元集

儘管資料表建立時已經指定預設字元集了,但是該表裡面的欄位還是可以指定自己的字元集的。

1、建立資料表時,指定其字元集

CREATE TABLE tbl

(

......

name CHAR(20) CHARACTER SET UTF8,

......

) ENGINE = MyISAM DEFAULT CHARSET UTF8;

2、或者採用 ALTER 文法來轉換欄位的字元集

ALTER TABLE tbl CHANGE name name CHAR(20) CHARACTER SET utf8;

3、採用其他用戶端工具來設定,例如 Navicat/MySQL Front/PhpMyAdmin

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image007" border="0" alt="clip_image007" src="http://img1.51cto.com/attachment/201302/22/400469_1361515528PIlg.png" width="650" height="532" />

練習5:設定用戶端字元集

為用戶端串連指定字元集,最好伺服器的字元集一致。

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image008" border="0" alt="clip_image008" src="http://img1.51cto.com/attachment/201302/22/400469_1361515529m1T7.png" height="458" />

設定putty字元集

查看姓名是亂碼

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image009" border="0" alt="clip_image009" src="http://img1.51cto.com/attachment/201302/22/400469_13615155294Lt2.png" width="650" height="417" />

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image010" border="0" alt="clip_image010" src="http://img1.51cto.com/attachment/201302/22/400469_1361515530EgYl.png" height="367" />

點擊“應用”。

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image011" border="0" alt="clip_image011" src="http://img1.51cto.com/attachment/201302/22/400469_1361515530DHsi.png" height="439" />

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image012" border="0" alt="clip_image012" src="http://img1.51cto.com/attachment/201302/22/400469_1361515531yPwT.png" width="650" height="434" />

MySQL儲存引擎MySQL儲存引擎概述

外掛程式式儲存引擎是MySQL資料庫最重要的特性之一,使用者可以根據應用的需要選擇如何儲存和索引資料庫,是否使用事物等。mySQL預設支援多種儲存引擎,以適應不同領域的資料庫應用需要。使用者可以通過選擇使用不同的儲存引擎提高應用的效率,提供靈活的儲存,使用者佈建可以按照自己的需要定製和使用自己的儲存引擎,以實現最大程度的可定製性。

MySQL常用的儲存引擎為MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事務安全表,其他儲存引擎都是非事務安全表。

MyISAM是MySQL的預設儲存引擎。MyISAM不支援事務、也不支援外鍵,但其訪問速度快,對事務完整性沒有要求。

InnoDB儲存引擎提供了具有提交、復原和崩潰恢複能力的事務安全。但是比起MyISAM儲存引擎,InnoDB寫的處理效率差一些並且會佔用更多的磁碟空間以保留資料和索引。MySQL支援外鍵儲存引擎只有InnoDB,在建立外鍵的時候,要求附表必須有對應的索引,子表在建立外鍵的時候也會自動建立對應的索引。

儲存引擎各自的一些特點

上面提到的四種儲存引擎都有各自適用的環境,這取決於它們專屬的一些特徵。主要體現在效能、事務、並發控制、參照完整性、緩衝、 故障恢複,備份及回存等幾個方面

目前比較普及的儲存引擎是MyISAM和InnoDB.而MyISAM又是絕大部分Web應用的首選。MyISAM與InnoDB的主要的不同點在於效能和事務控制上。

MyISAM是早期ISAM(Indexed Sequential Access Method,我現在用的MySQL5.0已經不支援ISAM了)的擴充實現,ISAM被設計為適合處理讀頻率遠大於寫頻率這樣一種情況,因此ISAM以及後來的MyISAM都沒有考慮對事物的支援,不需要事務記錄,ISAM的查詢效率相當可觀,而且記憶體佔用很少。MyISAM在繼承了這類優點的同時,與時俱進的提供了大量實用的新特性和相關工具。例如考慮到並發控制,提供了表級鎖。而且由於MyISAM是每張表使用各自獨立的隱藏檔(MYD資料檔案和MYI索引檔案),使得備份及恢複十分方便(拷貝覆蓋即可),而且還支援線上恢複。

所以如果你的應用是不需要事務,不支援外鍵。處理的只是基本的CRUD(增刪改查)操作,那麼MyISAM是不二選擇。

1. 設定mysql的預設儲存引擎

編輯my.cnf設定檔,在伺服器端配置資訊[mysqld]下面添加:

default-storage-engine = MyISAM

即可設定mysql資料庫的預設引擎為MyISAM

2. 指定表的儲存引擎

如:

create table t_innodb( id int(3))

engine = innodb;

然後使用

mysql> show table status like ‘t_innodb‘;

查看錶的詳細資料。

3. 修改表的儲存引擎

ALTER TABLE t_name ENGINE = innodb;

更改預設儲存引擎和表的儲存引擎

4. 更改預設儲存引擎

查看預設儲存引擎

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image013" border="0" alt="clip_image013" src="http://img1.51cto.com/attachment/201302/22/400469_1361515531Qdw4.png" height="177" />

更改預設儲存引擎

編輯設定檔

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image014" border="0" alt="clip_image014" src="http://img1.51cto.com/attachment/201302/22/400469_1361515532eXXk.png" height="49" />

在[mysql]下添加

default-storage-engine = InnoDB

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image015" border="0" alt="clip_image015" src="http://img1.51cto.com/attachment/201302/22/400469_1361515532zIp6.png" width="650" height="544" />

再次查看預設引擎,發現已經被更改

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image016" border="0" alt="clip_image016" src="http://img1.51cto.com/attachment/201302/22/400469_13615155332NPy.png" height="177" />

重啟mySQL服務

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image017" border="0" alt="clip_image017" src="http://img1.51cto.com/attachment/201302/22/400469_1361515533puxi.png" height="145" />

5. 更表的儲存引擎

雙擊某個表,可以更改表的儲存引擎

使用命令更改

mysql> use schoolDB;

mysql> alter table TStudent engine=InnoDB;

使用管理工具更改

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image018" border="0" alt="clip_image018" src="http://img1.51cto.com/attachment/201302/22/400469_1361515535Q3Tc.png" width="650" height="536" />

InnoDB存擎的特點

6. 自動成長列

自動成長列可以送給插入,但是插入的如果是空或者為0,則實際插入的值是自動成長後的值。

建立一個表,指定自動成長列,儲存引擎innoDB。

create table au

(

studentid int not null auto_increment,

name varchar(10),

primary key(studentid)

)

engine=innodb CHARACTER SET UTF8,

插入記錄,有空值且自增列也沒按順序

insert au values (1,‘韓立剛‘),(3,‘韓立輝‘),(2,‘張京‘),(null,‘楊帥‘)

可以看到自增列的值

select * from au

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image019" border="0" alt="clip_image019" src="http://img1.51cto.com/attachment/201302/22/400469_1361515536FaOD.png" height="115" />

外鍵約束

MySQL支援外鍵儲存引擎只有InnoDB,在建立外鍵的時候,要求父表必須有對應的索引,子表在建立外鍵的時候也會自動建立索引

在刪除更新父表時,對子表進行相應的操作,包括restrict、cascade、set null和no action

使用InnoDB儲存引擎資料按主鍵順序存放

如果不建立索引,資料以插入順序存放

create table au1

(

studentid int,

name varchar(10),

)

engine=innodb

insert au1 values (1,‘韓立剛‘),(3,‘韓立輝‘),(2,‘張京‘),(8,‘楊帥‘),(6,‘楊柳青‘)

select * from au1

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image020" border="0" alt="clip_image020" src="http://img1.51cto.com/attachment/201302/22/400469_1361515536Pud2.png" height="134" />

給表添加主鍵

alter TABLE `au1` ADD PRIMARY KEY (studentid)

select * from au1

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image019[1]" border="0" alt="clip_image019[1]" src="http://img1.51cto.com/attachment/201302/22/400469_1361515536v0Ka.png" height="115" />

建立資料庫和表練習7:建立資料庫

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image021" border="0" alt="clip_image021" src="http://img1.51cto.com/attachment/201302/22/400469_1361515537rBgS.png" height="419" />

也可使用命令建立資料庫

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image022" border="0" alt="clip_image022" src="http://img1.51cto.com/attachment/201302/22/400469_1361515537ZUlp.png" height="420" />

輸入以下命令 create database SchoolDB; 選中執行

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image023" border="0" alt="clip_image023" src="http://img1.51cto.com/attachment/201302/22/400469_1361515538HkL7.png" width="650" height="443" />

練習8:建立表

選中剛才建立的資料庫 執行建立表的語句

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image024" border="0" alt="clip_image024" src="http://img1.51cto.com/attachment/201302/22/400469_1361515539Yord.png" width="650" height="608" />

建立學生表

create table TStudent

(StudentID nvarchar(15),

Sname nvarchar(10),

sex nchar(1),

cardID nvarchar(20),

Birthday datetime,

Email nvarchar(40),

Class nvarchar(20),

enterTime datetime )

建立課程表

create table TSubject

(

subJectID nvarchar(10),

subJectName nvarchar(30),

BookName nvarchar(30),

Publisher nvarchar(20)

)

建立分數表

create table TScore

(

StudentID nvarchar(15),

subJectID nvarchar(10),

mark decimal

)

練習9:使用圖形介面產生表的SQL語句

使用圖形介面可以產生建立、刪除、更改對象的SQL語句。

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image025" border="0" alt="clip_image025" src="http://img1.51cto.com/attachment/201302/22/400469_1361515540EmqI.png" width="650" height="551" />

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image026" border="0" alt="clip_image026" src="http://img1.51cto.com/attachment/201302/22/400469_1361515541rMqx.png" width="650" height="548" />

使用mySQL協助查看mySQL協助練習10:查看協助

如果你不知道協助能夠提供什麼?輸入

? contents

可以查看可用的協助

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image027" border="0" alt="clip_image027" src="http://img1.51cto.com/attachment/201302/22/400469_1361515542epY4.png" height="417" />

輸入? Data definition

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image028" border="0" alt="clip_image028" src="http://img1.51cto.com/attachment/201302/22/400469_1361515545sP5J.png" height="673" />

查看建立表的文法

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image029" border="0" alt="clip_image029" src="http://img1.51cto.com/attachment/201302/22/400469_13615155469G4U.png" height="673" />

快速查閱協助

在實際應用當中,如果需要快速查看某項文法時,可以使用關鍵字進行快速查詢。比如想知道show命令都能看到些什麼東西,可以使用如下命令。

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image030" border="0" alt="clip_image030" src="http://img1.51cto.com/attachment/201302/22/400469_1361515547ursL.png" height="705" />

查看資料庫

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image031" border="0" alt="clip_image031" src="http://img1.51cto.com/attachment/201302/22/400469_1361515550MXst.png" height="305" />

查看建立資料庫的命令

650) this.width=650;" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image032" border="0" alt="clip_image032" src="http://img1.51cto.com/attachment/201302/22/400469_1361515554v88Q.png" width="650" height="257" />

查看建立表的命令

650) this.width=650;" style="background-image:none;padding-left:0px;padding-right:0px;padding-top:0px;" title="clip_image033" border="0" alt="clip_image033" src="http://img1.51cto.com/attachment/201302/22/400469_1361515554w4u1.png" width="650" height="673" />

 

本文出自 “ghost” 部落格,請務必保留此出處http://caizi.blog.51cto.com/5234706/1543125

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.