- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標記
- 域名注冊服務(wù)機構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機構(gòu):新網(wǎng)數(shù)碼
一、MySQL簡介
MySQL是目前最流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng)之一,由瑞典MySQL AB公司開發(fā),目前屬于Oracle 旗下產(chǎn)品。在Web應(yīng)用方面,MySQL是最好的關(guān)系數(shù)據(jù)庫管理系統(tǒng)支撐軟件之一。MySQL將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),表之間通過外鍵建立關(guān)聯(lián),這樣就增加了數(shù)據(jù)存取的速度并提高了數(shù)據(jù)操作的靈活性。MySQL使用最常用的標準化SQL定義、訪問和操作數(shù)據(jù)庫。其社區(qū)版的性能卓越,搭配PHP和Apache即可組建良好的開發(fā)環(huán)境。MySQL軟件體積小、運行速度快、總體擁有成本低,特別是開放源碼這一特點,一般中小型Web應(yīng)用程序的開發(fā)都選擇MySQL作為支撐數(shù)據(jù)庫。
二、MySQL的體系結(jié)構(gòu)
MySQL采用的是客戶機/服務(wù)器(Client/Server)體系結(jié)構(gòu),因此,在使用MySQL存取數(shù)據(jù)時,必須至少使用兩個或者兩類程序。
(1) 在數(shù)據(jù)服務(wù)器上的數(shù)據(jù)庫服務(wù)程序(對應(yīng)Server端)。數(shù)據(jù)庫服務(wù)程序監(jiān)聽從網(wǎng)絡(luò)上傳過來的客戶機請求并根據(jù)這些請求訪問數(shù)據(jù)庫,并將結(jié)果返回給客戶機以響應(yīng)它們的請求。
(2) 連接到數(shù)據(jù)庫服務(wù)器的客戶機程序(對應(yīng)Client端)。這些程序是用戶和服務(wù)器交互的工具,負責將用戶需求進行加工并傳遞到服務(wù)器以及將服務(wù)器返回的信息告知用戶。
MySQL的分發(fā)包由服務(wù)器和幾個客戶機程序組成。程序員可以根據(jù)具體的需求來選擇使用客戶機。最常用的客戶機程序為mysql,這是一個交互式的客戶機程序,它能發(fā)布查詢并看到結(jié)果。此外,其他的客戶機程序有mysqldump和mysqlimport,分別導(dǎo)出表的內(nèi)容到某個文件或?qū)⑽募膬?nèi)容導(dǎo)入某個表;mysqladmin用來查看服務(wù)器的狀態(tài)并完成管理任務(wù),如告訴服務(wù)器關(guān)閉、重啟、刷新緩存等。如果現(xiàn)有的客戶機程序不滿足需要,MySQL還提供了一個客戶機開發(fā)庫,可以編寫自己的程序。開發(fā)人員可以直接調(diào)用開發(fā)庫中的C語言程序,如果希望使用其他語言,還有幾種其他的接口可用。
MySQL的客戶機/服務(wù)器體系結(jié)構(gòu)具有如下優(yōu)點。
(1) 服務(wù)器提供并發(fā)控制,使兩個用戶不能同時修改相同的記錄。所有客戶機的請求都通過服務(wù)器處理,服務(wù)器分類辨別誰準備做什么、何時做。如果多個客戶機希望同時訪問相同的表,它們不必互相裁決和協(xié)商,只要發(fā)送自己的請求給服務(wù)器并讓它仔細確定完成這些請求的順序即可。
(2) 不必在數(shù)據(jù)庫所在的機器上注冊。MySQL可以非常出色地在互聯(lián)網(wǎng)上工作,因此用戶可以在任何位置運行一個客戶機程序,只要此客戶機程序能夠連接到網(wǎng)絡(luò)上的服務(wù)器即可。當然,不是任何人都可以通過網(wǎng)絡(luò)訪問你的MySQL服務(wù)器。MySQL含有一個靈活而又有高效的安全系統(tǒng),只允許有權(quán)限的人訪問數(shù)據(jù),而且可以保證用戶只能夠做允許的事情。
三、MySQL的查詢語言
MySQL使用結(jié)構(gòu)化查詢語言(Structured Query Language,SQL)與服務(wù)器通信。MySQL系統(tǒng)使用的SQL基本上符合SQL 92的標準,但其對SQL 92標準既有擴展又有未實現(xiàn)的地方。
表、列和數(shù)據(jù)類型
表是數(shù)據(jù)在一個MySQL數(shù)據(jù)庫中的存儲單元。如表8-1所示,它是一張二維表,包含一組固定的列。表中的列描述該表所表示的實體的屬性,每列都有一個名字及各自的特性。列由兩部分組成:數(shù)據(jù)類型(Data Type)和長度(Length)。
■ 表8-1MySQL中的表結(jié)構(gòu)
MySQL常用的數(shù)據(jù)類型有數(shù)值類型、字符串類型及日期類型等。表8-2中給出了MySQL的基本數(shù)據(jù)類型及其描述。
■ 表8-2常用的數(shù)據(jù)類型
函數(shù)
函數(shù)(Function)是存儲在數(shù)據(jù)庫中的代碼塊。程序員可以根據(jù)需要創(chuàng)建不同的函數(shù),并直接在SQL語句中調(diào)用。函數(shù)可以把計算的結(jié)果直接返回給調(diào)用的SQL。例如,MySQL提供一個SUBSTRING函數(shù)來執(zhí)行字符串上的“取子串”操作,如果創(chuàng)建一個叫作MYSUB的函數(shù)來執(zhí)行一個自定義的取子串操作,就可以在一個SQL命令中調(diào)用它。如:
select mysub("This is a test", 6, 2)
SQL語句
SQL是一種典型的非過程化程序設(shè)計語言。這種語言的特點是:只指定哪些數(shù)據(jù)被操縱,至于對這些數(shù)據(jù)要執(zhí)行哪些操作,以及這些操作是如何執(zhí)行的,則未被指定。非過程化程序設(shè)計語言的優(yōu)點在于簡單易學,因此SQL已經(jīng)成為關(guān)系數(shù)據(jù)庫訪問和操縱數(shù)據(jù)的標準語言。
與SQL對應(yīng)的是過程化程序設(shè)計語言,各種高級程序設(shè)計語言都屬于這一范疇。該語言的特點是:一條語句的執(zhí)行是與其前后的語句和控制結(jié)構(gòu)(如條件語句、循環(huán)語句等)相關(guān)的。與SQL相比,這些語言顯得比較復(fù)雜,但優(yōu)點是使用靈活,數(shù)據(jù)操縱能力非常強大。
這些過程化的程序設(shè)計語言在訪問數(shù)據(jù)庫時一般不允許按照某種特定的順序來讀取表的記錄,因為這樣做會降低DBMS讀取記錄的效率。而使用SQL只能按查詢條件來讀取記錄。當考慮如何從表中取出記錄時,自然會想到按記錄的位置讀取它們。例如,也可以通過循環(huán)逐個記錄地掃描,來選出特定的記錄。但在使用SQL讀取記錄時,要盡量避免這種操作思路。
假如想選出所有名字是Tom的記錄,如果使用傳統(tǒng)的編程語言,可能會構(gòu)造一個循環(huán),逐個查找表中的記錄,看名字字段內(nèi)容是否匹配Tom。這種選擇記錄的方法是可行的,但是效率非常低。而用SQL時,只要說“選擇所有名字域等于Tom的記錄”,SQL就會篩選出所有符合條件的記錄。SQL會確定實現(xiàn)查詢的最佳方法。
例如,從表teachers中取出id為1的數(shù)據(jù):
select * from teachers where id=1
實現(xiàn)相同的功能,如果用普通的高級語言,也許需要一個復(fù)雜的循環(huán)。
MySQL云數(shù)據(jù)庫免費試用3個月
云數(shù)據(jù)庫 RDS MySQL是藍隊云為用戶提供的一種安全可靠、性能穩(wěn)定、靈活擴展的企業(yè)級云數(shù)據(jù)庫服務(wù),可幫助用戶分鐘級創(chuàng)建、操作和擴展關(guān)系型數(shù)據(jù)庫,無需擔心底層基礎(chǔ)設(shè)施的維護和管理。
藍隊云mysql云數(shù)據(jù)庫支持免費試用,新老用戶都可以申請免費試用3個月,需要的朋友可以直接領(lǐng)取使用。云數(shù)據(jù)庫、云消息隊列、云負載均衡免費試用-藍隊云
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP