官术网_书友最值得收藏!

第3章 數據庫的創建與操作

本章內容提要

MySQL數據庫安裝好之后,就可以進行數據庫的相關操作了。MySQL數據庫是指所涉及的對象以及數據的集合,它不僅反映了數據本身的內容,而且反映了對象以及數據之間的聯系,對數據庫的操作是開發人員的一項重要工作。本章就來介紹MySQL數據庫的創建與操作。

本章知識點

  • 創建MySQL數據庫的方法。
  • 查看數據庫的方法。
  • 選擇數據庫的方法。
  • 刪除數據庫的方法。
  • MySQL數據庫中的存儲引擎。
  • 修改存儲引擎的方法。

3.1 MySQL數據庫概述

MySQL數據庫是存放有組織的數據集合的容器,以系統文件的形式存儲在磁盤上,由數據庫系統進行管理和維護。

3.1.1 數據庫特點

在MySQL中,數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。每個數據庫都有一個或多個不同的應用程序接口(Application Program Interface,API),用于創建、訪問、管理、搜索和復制所保存的數據。

不過,也可以將數據存儲在文件中,但是在文件中讀寫數據的速度相對較慢。所以,現在使用關系數據庫管理系統(Relational Database Management System,RDBMS)來存儲和管理大數據量。而MySQL是最流行的關系數據庫管理系統,尤其是在Web應用方面,MySQL可以說是最好的RDBMS應用軟件之一。

關系數據庫,是建立在關系模型基礎上的數據庫,借助于集合代數等數學概念和方法來處理數據庫中的數據。關系數據庫管理系統具有以下特點,這也是MySQL數據庫具有的特點。

(1)數據以表格的形式出現。

(2)每行為各種記錄名稱。

(3)每列為記錄名稱所對應的數據域。

(4)許多的行和列組成一張表單。

(5)若干的表單組成數據庫。

3.1.2 數據庫對象

MySQL數據庫中的數據在邏輯上被組織成一系列對象,當一個用戶連接到數據庫后,所看到的是這些邏輯對象,而不是物理的數據庫文件。MySQL中有以下數據庫對象。

(1)數據表:數據庫中的數據表與我們日常生活中使用的表格類似,由列和行組成。其中,每一列代表一個相同類型的數據。每列又稱為一個字段,每列的標題稱為字段名;每一行包括若干列信息,一行數據稱為一個元組或一條記錄,它是有一定意義的信息組合,代表一個實體或聯系;一個數據庫表由一條或多條記錄組成,沒有記錄的表稱為空表。

(2)主鍵:每個表中通常都有一個主關鍵字,用于唯一標識一條記錄。主鍵是唯一的,用戶可以使用主鍵來查詢數據。

(3)外鍵:用于關聯兩個表。

(4)復合鍵:復合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復合索引。

(5)索引:使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構,類似于書籍的目錄。

(6)視圖:視圖看上去同表相似,具有一組命名的字段和數據項,但它其實是一個虛擬的表,在數據庫中并不實際存在。視圖是由查詢數據庫表或其他視圖產生的,它限制了用戶能看到和修改的數據。由此可見,視圖可以用來控制用戶對數據的訪問,并能簡化數據的顯示,即通過視圖只顯示那些需要的數據信息。

(7)默認值:默認值是當在表中創建列或插入數據時,為沒有指定具體值的列或列數據項賦予事先設定好的值。

(8)約束:是數據庫實施數據一致性和數據完整性的方法,或者說是一套機制,包括主鍵約束、外鍵約束、唯一性約束、默認值約束和非空約束。

(9)規則:用來限制數據表中字段的有限范圍,以確保列中數據完整性的一種方式。

(10)觸發器:一種特殊的存儲過程,與表格或某些操作相關聯,當用戶對數據進行插入、修改、刪除或對數據庫表進行建立、修改、刪除時激活,并自動執行。

(11)存儲過程:一組經過編譯的可以重復使用的T-SQL代碼的組合,它是經過編譯存儲到數據庫中的,所以運行速度要比執行相同的SQL語句塊快。

MySQL為關系數據庫,這種所謂的“關系”可以理解為“表格”的概念,一個關系數據庫由一個或數個表格組成。圖3-1所示為一個表格。

(1)表頭(header):每一列的名稱。

(2)列(col):具有相同數據類型的數據的集合。

(3)行(row):每一行用來描述某條記錄的具體信息。

圖3-1 一個表格

(4)值(value):行的具體信息,每個值必須與該列的數據類型相同。

(5)鍵(key):鍵的值在當前列中具有唯一性。

3.1.3 系統數據庫

MySQL包含了information_schema、mysql、performance_schema、sakila、sys和world 6個系統數據庫。在創建任何數據庫之前,用戶可以使用命令來查看系統數據庫,具體的方法為:在“命令提示符”窗口中登錄到MySQL數據庫,然后輸入如下命令:

    SHOW DATAVASES;

圖3-2 查看數據庫

按Enter鍵,即可顯示出系統數據庫,如圖3-2所示。

(1)information_schema:這個數據庫保存了mysql服務器所有數據庫的信息,比如數據庫的名、數據庫的表、訪問權限、數據庫表的數據類型、數據庫索引的信息等。該數據庫是一個虛擬數據庫,物理上并不存在,在查詢數據后,從其他數據庫獲取相應的信息。

(2)mysql:這個數據庫是MySQL的核心數據庫,類似于SQL Server中的master表,主要負責存儲數據庫的用戶、權限設置、關鍵字等,還有mysql自己需要使用的控制和管理信息。例如,可以使用mysql數據庫中的mysql.user表來修改root用戶的密碼。

(3)performance_schema:這個數據庫主要用于收集數據庫服務器性能參數,并且數據庫里表的存儲引擎均為PERFORMANCE_SCHEMA,而用戶是不能創建存儲引擎為PERFORMANCE_SCHEMA的表的。

(4)sakila:這個數據庫最初由MySQL AB文檔團隊的前成員Mike Hillyer開發,旨在提供可用于書籍、教程、文章、樣本等示例的標準模式。sakila示例數據庫還用于突出MySQL的最新功能,如視圖、存儲過程和觸發器。

(5)sys:這個數據庫所有的數據源來自performance_schema數據庫。目標是把performance_schema數據庫的復雜度降低,讓數據庫管理員(DBA)能更好地閱讀這個庫里的內容,從而讓數據庫管理員更快地了解數據庫的運行情況。

(6)world:這個數據庫是MySQL提供的示例數據庫,包括3個數據表,分別是city城市表、country國家表、countrylanguage國家語言表。

主站蜘蛛池模板: 镇坪县| 会昌县| 平潭县| 灵武市| 渑池县| 德兴市| 泊头市| 大名县| 嘉兴市| 乌鲁木齐县| 阳江市| 重庆市| 达尔| 那曲县| 岳阳市| 若尔盖县| 巴楚县| 绥滨县| 枣阳市| 政和县| 宣汉县| 博客| 平原县| 泌阳县| 德化县| 射洪县| 合肥市| 大田县| 乐东| 噶尔县| 天柱县| 申扎县| 孟津县| 无棣县| 会理县| 雅江县| 新宁县| 陇南市| 鲁甸县| 凤凰县| 丽水市|