第01章 初识Mysql
數據庫基礎
數據庫由一批數據構成有序的集合,這些數據被存放在結構化的數據表里。數據表之間的相互關聯,反映了客官事物間的本質。數據庫系統提供對數據的安全控制和完整性控制。本節將介紹數據庫中的一些基本概念,包括:數據庫的定義、數據表的定義和數據類型等。
什么是數據庫
數據庫的概念誕生
? 數據庫的概念誕生于60年前,隨著信息技術和市場的快速發展,數據庫技術層出不窮,隨著應用的拓展和深入,數據庫的數量和規模越來越大,其誕生和發展給計算機信息管理帶來了一場巨大的革命。
數據庫的發展階段
數據庫的發展大致劃分為如下幾個階段:人工管理階段、文件系統階段、數據庫系統階段、高級數據庫階段。其種類大概有3種:層次式數據庫、網絡式數據庫和關系數據庫。不同種類的數據庫按不同的數據結構來聯系和組織。
對于數據庫的概念
? 對于數據庫的概念,沒有一個完全固定的定義,隨著數據庫歷史的發展,定義的內容也有很大的差異,其中一種比較普遍的觀點認為,數據庫是一個長期存儲在計算機內的、有組織的、有共享的、統一管理的數據集合。它是一個按數據結構來存儲和管理數據的計算機軟件系統,即數據庫包含兩層含義:保管數據的“倉庫”,以及數據管理的方法和技術。
數據庫的特點
數據庫的特點包括:實現數據共享,減少數據冗余;采用特定的數據類型;具有較高的獨立性;具有統一的數據控制功能。
表
? 在關系數據庫中,數據庫表是一系列二維數組的集合,用來存儲數據和操作數據的邏輯結構。它由縱向的列和橫向的行組成,行被稱為記錄,是組織數據的單位;列被稱為字段,每一列表示記錄的一個屬性,都有相應的描述信息,如數據類型;數據寬度等。
例如一個有關作者信息的名為authors的表中,每個列包含所有作者的某個特定類型的信息,比如“姓名”,而每行則包含了某個特定作者的所有信息:編號、姓名、性別、專業,如下表
| 編號 | 姓名 | 性別 | 專業 |
| 100 | 張三 | f | 計算機 |
| 101 | 李芬 | m | 會計 |
| 102 | 岳陽 | f | 園林 |
數據類型
? 數據類型決定了數據在計算機中的存儲格式,代表不同的信息類型。常用的數據類型有:整數數據類型、浮點數數據類型、精確小數類型、二進制數據類型、日期/時間數據類型、字符串數據類型。
表中的每一個字段就是某種特定數據類型,比如上面authors表中“編號”字段為整數數據,“性別”字段為字符型數據。
主鍵
? 主鍵又稱主碼,用于唯一地標識表中的每一條記錄。可以定義表中的一列或多列為主鍵,主鍵列上不能有兩行相同的值,也不能為空值。假如,定義authors表,該表給每一個作者分配一個“作者編號”,該編號做為數據表的主鍵,如果出現相同的值,將提示錯誤,系統不能確定查詢的究竟是哪一條記錄;如果把作者的“姓名”作為主鍵,則不能出現重復的名字,這與現實中的情況不相符合,因此“姓名”字段不適合作為主鍵。
?
數據庫技術構成
數據庫由硬件部分和軟件部分構成,硬件主要用于存儲數據庫中的數據,包括計算機,存儲設備等。軟件部分則主要包括DBMS、支持DBMS運行的操作系統,以及支持多種語言進行應用開發的訪問技術等。本節將介紹數據庫的技術構成。
數據庫系統
數據庫系統有三個主要的組成部分。
數據庫:用于存儲數據的地方。
數據庫管理系統:用于管理數據庫的軟件。
數據庫應用程序:為了提高數據庫系統的處理能力所使用的管理數據庫的軟件補充。
數據庫提供了一個存儲空間用以存儲各種數據,可以將數據庫視為一個存儲數據的容器。一個數據庫可能包含許多文件,一個數據庫系統中通常包含許多數據庫。
數據庫管理系統是用戶創建、管理和維護數據庫時所使用的軟件,位于用戶與操作系統之間,對數據庫進行統一管理。DBMS能定義數據存儲結構,提供數據的操作機制,維護數據庫的安全性、完整性和可靠性。
雖然有了DBMS,但是在很多情況下,DBMS無法滿足對數據管理的要求。數據庫應用程序的使用可以滿足對數據管理的更高要求,還可以使數據管理過程更加直觀和友好。數據庫應用程序負責與DBMS進行通信、訪問和管理DBMS中存儲的數據,允許用戶插入、修改、刪除DB中的數據。
數據庫系統如圖所示:
?
SQL語言
? 對數據庫進行查詢和修改操作的語言叫做SQL。SQL的含義是結構化查詢語言。SQL有許多不同的類型,有三個主要的標準:ANSI(美國國家標準機構) SQL,對ANSI SQL修改后在1992年采納的標準,成為SQL-92或SQL2。最近的SQL-99標準,從SQL2擴充而來并增加了對象關系特性和許多其他新功能。其次,各大數據庫廠商提供不同版本的SQL,這些版本的SQL不但能包括原始的ANSI標準,而且在很大程度上支持SQL-92標準。
SQL包含以下4個部分。
(1)數據定義語言(DDL):DROP、CREATE、ALTER等語句。
(2)數據操作語言(DML):INSERT(插入)、UPDATE(修改)、DELETE(刪除)語句。
(3)數據查詢語言(DQL):SELECT語句。
(4)數據控制語言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等語句。
下面是一條SQL語句的例子,該語句聲明創建一個名叫students的表:
1 CREATE TABLE students( 2 student_id INT UNSIGNED, 3 name VARCHAR(10), 4 sex CHAR(1), 5 birth DATE, 6 PRIMARY KEY(student_id) 7 );?
該表包含四個字段,分別為student_id、name、sex、birth,其中student_id定義為表的主鍵。
現在只是定義了一張表格,但并沒有任何數據,接下來這條SQL聲明語句,將在students表中插入一條數據記錄:
INSERT INTO students (student_id,name,sex,birth) VALUES (41048101,'Lucy Green','1','1990-02-14');執行完該SQL語句之后,students表中就會增加一行新記錄,該記錄中student_id的值為41048101,name字段的值為Lucy Green , sex 字段值為1,birth字段值為1990-02-14。
再使用SELECT查詢語句獲取剛才插入的數據,如下:
SELECT name from students WHERE student_id = 41048101;?
?
數據庫訪問接口
? 不同的程序設計語言會有各自不同的數據庫訪問接口,程序語言通過這些接口,執行SQL語句,進行數據庫管理,主要的數據庫訪問接口有:
ODBC
Open Database Connectivity(ODBC,開放數據連接)技術為訪問不同的SQL數據庫提供了一個共同的接口。ODBC使用SQL作為訪問數據庫的標準。這一接口提供了最大限度的互操作性:一個應用程序可以通過共同的一組代碼訪問不同的SQL數據庫管理系統(DBMS)。
一個基于ODBC的應用程序對數據庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的數據庫操作由對應的DBMS的ODBC驅動程序完成。也就是說,不論是Access、MySQL還是Oracle數據庫,均可用ODBC API進行訪問。由此可見,ODBC最大優點是能以統一的方式處理所有的數據庫。
JDBC
? Java Data Base Connectivity(JDBC,Java數據庫連接)用戶Java應用程序連接數據庫的標準方法,是一種用于執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。
ADO.NET
? ADO.NET是微軟在.NET框架下開發設計的一組用于和數據庫進行交互的面向對象類庫。ADO.NET提供了對關系數據、XML和應用程序數據的訪問,允許和不同類型的數據源及數據庫進行交互。
PDO
? PDO(PHP Data Object)為PHP訪問數據庫定義了一個輕量級的、一致性的接口,它提供了一個數據訪問抽象層,這樣,無論使用什么數據庫,都可以通過一致性的函數執行查詢和獲取數據。PDO是PHP5新加入的一個重大功能。
針對不同的程序語言,MySQL提供了不同數據庫的訪問連接驅動,您可以在下載頁面(http://dev.MySQL.com/downloads/)下載相關驅動。
什么是Mysql
MySQL是一個小型關系數據庫管理系統,與其他大型數據庫管理系統(例如Oracle、DB2、SQL Server等)相比,MySQL規模小、功能有限,但是它體積小、速度快、成本低,且它提供的功能對稍微復雜的應用來說已經夠用,這些特性使得MySQL成為世界上最受歡迎的開放源代碼數據庫。本節介紹MySQL的特點。
?客戶機-服務器軟件
主從式架構(Client-server model)或客戶端-服務器(Client/Server)結構簡稱C/S結構,是一種網絡架構,通常在該網絡架構下軟件分為客戶端(Client)和服務器(Server)。
服務器是整個應用系統資源的存儲與管理中心,過個客戶端則各自處理相應的功能,共同實現完整的應用。在客戶端/服務器結構中,客戶端用戶的請求被傳送到數據庫服務器,數據庫服務器進行處理后,將結果返回給用戶,從而減少了網絡數據傳輸量。
用戶使用應用程序時,首先啟動客戶端,通過有關命令告知服務器進行連接以完成各種操作,而服務器則按照此請示提供相應的服務。每一個客戶端軟件的實例都可以向一個服務器或應用程序服務器發出請求。
這種系統的特點就是,客戶端和服務器程序不在同一臺計算機上運行,這些客戶端和服務器程序通常歸屬不同的計算機。
MySQL版本
針對不通用戶,MySQL分為兩個不同的版本:
MySQL Community Server(社區版):該版本完全免費,但是官方不提供技術支持。
MySQL Enterprise Server(企業版服務器):它能夠以很高性價比為企業提供數據倉庫應用,支持ACID事務處理,提供完整的提交、回滾、崩潰恢復和行級鎖定功能。但是該版本需要付費使用,官方提供電話技術支持。
MySQL的明明機制由3個數字和1個后綴組成,例如;MySQL-5.7.10
(1) 第1個數字(5)是主版本號,描述了文件格式,所有版本5的發行版都有相同的文件格式。
(2) 第2個數字(7)是發行級別,主版本號和發行級別組合在一起便構成了發行序列號。
(3) 第3個數字(10)是在此發行系列的版本號,隨每次新分發版本遞增。通常選擇已經發行的最新版本。
在MySQL開發過程中,同事存在多個發布系列,每個發布處在成熟度的不同階段。
(1)?MySQL5.7是最新卡發的穩定(GA)發布系列,是將執行新功能的系列,目前已經可以正常使用。
(2)?MySQL5.6是比較穩定(GA)發布系列。只針對漏洞修復重新發布,沒有增加會影響穩定性的新功能。
(3)?MySQL5.1是前一穩定(產品質量)發布系列。只針對嚴重漏洞修復和安全修復重新發布,沒有增加會影響該系列的重要功能。
MySQL的優勢
MySQL的主要優勢如下:
(1)速度:運行速度快。
(2)價格:MySQL對多數個人來說是免費的。
(3)容易使用:與其他大型數據庫的設置和管理相比,其復雜程度較低,易于學習。
(4)可移植性:能夠工作在眾多不同的系統平臺上,例如:Windows、Linux、Unix、Mac OS等。
(5)豐富的接口:提供了用戶C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等語言的API。
(6)支持查詢語言:MySQL可以利用標準SQL語法和支持ODBC(開放式數據庫連接)的應用程序。
(7)安全性和連接性:十分靈活和安全的權限和密碼系統,允許基于主機的驗證。連接到服務器時,所有的密碼傳輸均采用加密形式,從而保證了密碼安全。并且由于MySQL是網絡化的,因此可以在因特網上的任何地方訪問,提高數據共享的效率。
?
MySQL5.7的新功能
和MySQL5.6相比,MySQL5.7的新功能主要包括以下幾個方面。
1. 支持JSON
JSON(Java Script Object Notation的縮寫)是一種存儲信息的格式,可以很好地替代XML。從MySQL5.7.8版本開始,MySQL將支持JSON,而在此版本之前,只能通過strings之類的通用形式來存儲JSON文件,這樣做的缺陷很明顯,就是必須要自行確認和解析數據、解決更新中的困難、在執行插入操作時忍受較慢的速度。
2.性能和可擴展性
改進InnoDB的可擴展性和臨時表的性能,從而實現更快的網絡和大數據加載等操作。
3.改進復制以提高可用性的性能
改進復制包括多源復制、多從線程增強、在線GTIDs和增強的半同步復制。
4.性能模式提供更好的視角
增加了許多新的監控功能,以減少空間和過載,使用新的SYS模式顯著提高易用性。
5.安全
以安全第一為宗旨,提供了很多新的功能,從而保證數據庫的安全。
6. 優化
重寫了大部分解析器、優化器和成本模型,這提高了可維護性、可擴展性和性能。
7.GIS
MySQL5.7全新的功能,包括InnoDB空間索引,使用Boost. Geometry,同時提高完整性和標準符合性。
Mysql工具
MySQL命令行實用程序
MySQL服務器端實用工具程序如下:
(1)mysqld:SQL后臺程序(即MySQL服務器進程)。該程序必須運行之后,客戶端才能通過連接服務器來訪問數據庫。
(2)mysqld-safe:服務器啟動腳本。在UNIX和NetWare中推薦實用mysqld_safe來啟動mysqld服務器。mysqld_safe增加了一些安全特性,例如當出現錯誤時重啟服務器并向錯誤日志文件寫入運行時間信息。
(3)mysql.server:服務器啟動腳本。在UNIX中的MySQL分發版包括可mysql.server腳本。該腳本用于實用包含為特性級別的、運行啟動服務的腳本的、運行目錄的系統。它調用mysqld_sage來啟動MySQL服務器。
(4)mysql_multi:服務器啟動腳本,可以啟動或停止系統上安裝的多個服務器。
(5)myisamchk:用來描述、檢查、優化和維護MyISAM表的使用工具。
(6)mysqlbug:MySQL缺陷報告腳本。它可以用來向MySQL郵件系統發送缺陷報告。
(7)mysql_install_db:該ijaoben用默認權限創建MySQL授權表。通常只是在系統上首次安裝MySQL時執行一次。
MySQL客戶端實用工具程序如下:
(1)myisampack:壓縮MyISAM表以產生更小的只讀表的一個工具。
(2)mysql:交互式輸入SQL語句或從文件以批處理模式執行它們的命令行工具。
(3)mysqlaccess:檢查訪問主機名、用戶名和數據庫組合的權限的腳本。
(4)MySQLadmin:執行管理操作的客戶程序,例如創建或刪除數據庫,重載授權表,將表刷新到硬盤上,以及重新打開日志文件。MySQLadmin還可以用來檢索版本、進程,以及服務器的狀態信息,
(5)mysqlbinlog:從二進制日志讀取語句的工具。在二進制日志文件中包含執行過的語句,可用來幫助系統從崩潰中恢復。
(6)mysqlcheck:檢查、修復、分析以及優化表的表維護客戶程序。
(7)mysqldump:將MySQL數據庫轉存到一個文件(例如SQL語句或tab分隔符文本文件)的客戶程序。
(8)mysqlhotcopy:當服務器在運行是,快速備份MyISAM或ISAM表的工具。
(9)mysql import:使用LOAD DATA INFILE將文本文件導入相關表的客戶程序。
(10)mysqlshow:顯示數據庫、表、列以及索引相關信息的客戶程序。
(11)perror:顯示系統或MySQL錯誤代碼含義的工具。
MySQL Workbench
MySQL Workbench是下一代可視化數據庫設計軟件,MySQL Worebench為數據庫管理員和開發人員提供了一整套可視化數據庫操作環境,主要功能有:
數據庫設計和模型建立。
SQL開發(取代MySQL Query Browser)。
數據庫管理(取代MySQL Administrator)。
MySQL Workbench有兩個版本:
MySQL Workbench Community Edition(也叫MySQL Workbench OSS 社區版),MySQL Workbench OSS是在GPL證書下發布的開源社區版本。
MySQL Workbench Standard Edition(也叫MySQL Workbench SE,商業版),MySQL Workbench SE是按年收費的商業版本。
轉載于:https://www.cnblogs.com/haixiaoxing/p/9223660.html
總結
以上是生活随笔為你收集整理的第01章 初识Mysql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指offer 面试3题
- 下一篇: linux cmake编译源码,linu