MySQL數(shù)據(jù)庫技術(shù)與項目應(yīng)用教學(xué)課件匯總完整版電子教案_第1頁
MySQL數(shù)據(jù)庫技術(shù)與項目應(yīng)用教學(xué)課件匯總完整版電子教案_第2頁
MySQL數(shù)據(jù)庫技術(shù)與項目應(yīng)用教學(xué)課件匯總完整版電子教案_第3頁
MySQL數(shù)據(jù)庫技術(shù)與項目應(yīng)用教學(xué)課件匯總完整版電子教案_第4頁
MySQL數(shù)據(jù)庫技術(shù)與項目應(yīng)用教學(xué)課件匯總完整版電子教案_第5頁
已閱讀5頁,還剩508頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、認(rèn)識MySQL數(shù)據(jù)庫MySQL數(shù)據(jù)庫技術(shù)與項目應(yīng)用01目錄/Contents010203認(rèn)識數(shù)據(jù)庫安裝與配置MySQL數(shù)據(jù)庫設(shè)置MySQL字符集任務(wù)1 認(rèn)識數(shù)據(jù)庫在設(shè)計和使用MySQL數(shù)據(jù)庫之前,需要了解數(shù)據(jù)庫的基本概念、數(shù)據(jù)庫的發(fā)展以及關(guān)系型數(shù)據(jù)庫數(shù)據(jù)的存儲方式。任務(wù)場景數(shù)據(jù)庫的基本概念數(shù)據(jù)(Data)用來記錄信息的可識別符號,是信息的具體表現(xiàn)形式。數(shù)據(jù)是對現(xiàn)實世界的事物采用計算機(jī)能夠識別、存儲和處理的方式進(jìn)行描述,其具體表現(xiàn)形式可以是數(shù)字、文本、圖像、音頻、視頻等。數(shù)據(jù)庫(Database,DB)用來存放數(shù)據(jù)的倉庫。數(shù)據(jù)庫管理系統(tǒng)(Database Management System,DB

2、MS)是操縱和管理數(shù)據(jù)庫的軟件,為應(yīng)用程序提供訪問數(shù)據(jù)庫的方法,包括數(shù)據(jù)的定義、數(shù)據(jù)操縱、數(shù)據(jù)庫運行管理及數(shù)據(jù)庫建立與維護(hù)等功能。數(shù)據(jù)庫的基本概念數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)(Database System, DBS)由軟件、數(shù)據(jù)庫和數(shù)據(jù)庫管理員組成。數(shù)據(jù)庫技術(shù)的發(fā)展數(shù)據(jù)庫技術(shù)的發(fā)展演變?nèi)斯す芾恚?文件系統(tǒng)管理, 數(shù)據(jù)庫系統(tǒng)管理數(shù)據(jù)庫系統(tǒng)管理的發(fā)展演變層次/網(wǎng)狀數(shù)據(jù)庫系統(tǒng), 關(guān)系數(shù)據(jù)庫系統(tǒng), 新一代數(shù)據(jù)庫系統(tǒng)新一代數(shù)據(jù)庫系統(tǒng)ITDT關(guān)系型數(shù)據(jù)庫在關(guān)系模型中,實體和實體間的聯(lián)系均由單一的關(guān)系來表示。在關(guān)系型數(shù)據(jù)庫中,關(guān)系就是表,一個關(guān)系型數(shù)據(jù)庫就是若干個二維表的集合。關(guān)系型數(shù)據(jù)庫產(chǎn)品OracleOrac

3、le是商用關(guān)系型數(shù)據(jù)庫管理系統(tǒng)中的典型代表,是甲骨文公司的旗艦產(chǎn)品。MySQLMySQL是當(dāng)下最流行的開源和多線程的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它具有快速、可靠和易于使用的特點。SQL ServerSQL Server是微軟推出的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),廣泛應(yīng)用于電子商務(wù)、銀行、電力、教育等行業(yè),它使用Transact-SQL語言完成數(shù)據(jù)操作。SQL語言SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)是關(guān)系型數(shù)據(jù)庫語言的標(biāo)準(zhǔn)。數(shù)據(jù)定義語言(Data Definition Language,DDL)用于創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫對象,為數(shù)據(jù)庫操作提供對象。例如,數(shù)據(jù)庫、表、存儲過程、

4、視圖等都是數(shù)據(jù)庫中的對象,都需要通過定義才能使用。DDL中主要的SQL語句包括CREATE、ALTER、DROP,分別用來實現(xiàn)數(shù)據(jù)庫及數(shù)據(jù)庫對象的創(chuàng)建、更改和刪除操作。數(shù)據(jù)操縱語言(Data Manipulation Language,DML)主要是用于操縱數(shù)據(jù)庫中的數(shù)據(jù)。包括INSERT、SELECT、UPDATE、DELETE等語句。數(shù)據(jù)控制語言(Data Control Language,DCL)主要實現(xiàn)對象的訪問權(quán)限及對數(shù)據(jù)庫操作事務(wù)的控制,包括GRANT、REVOKE、COMMIT和ROLLBACK。數(shù)據(jù)庫中的操作都是通過執(zhí)行SQL語句來完成,它可以方便的嵌套在Java、C#、PHP

5、等程序語言中,以實現(xiàn)應(yīng)用程序?qū)?shù)據(jù)的查詢、插入、修改和刪除等操作。大數(shù)據(jù)時代的數(shù)據(jù)庫NoSQL(Not Only SQL)泛指非關(guān)系型數(shù)據(jù)庫,采用鍵值對(key-value)方式存儲數(shù)據(jù)。主要應(yīng)用于分布式數(shù)據(jù)處理環(huán)境,用于解決大規(guī)模數(shù)據(jù)集合下數(shù)據(jù)種類的多樣性問題。當(dāng)下流行的NoSQL數(shù)據(jù)庫主要有Redis、MonogoDB、HBase等。NewSQL為了將傳統(tǒng)關(guān)系型數(shù)據(jù)庫事務(wù)的ACID特性和NoSQL的高性能和可擴(kuò)展性進(jìn)行有機(jī)結(jié)合,以提升傳統(tǒng)關(guān)系數(shù)據(jù)庫在數(shù)據(jù)分析方面的能力。主要代表的數(shù)據(jù)庫有TiDB、VoltDB、MemSQL等。在大數(shù)據(jù)時代,適用事務(wù)處理的的傳統(tǒng)關(guān)系型數(shù)據(jù)庫、適用于高性能應(yīng)用

6、的NoSQL和適用于數(shù)據(jù)分析應(yīng)用的NewSQL三種形式不會單一存在,“多種架構(gòu)支持多類應(yīng)用”會成為數(shù)據(jù)庫行業(yè)應(yīng)用的基本思路。 任務(wù)2 安裝與配置MySQL數(shù)據(jù)庫要使用MySQL來存儲和管理數(shù)據(jù)庫,首先要安裝和配置MySQL數(shù)據(jù)庫。本任務(wù)介紹了MySQL的安裝和配置過程,并使用命令行和Navicat工具操作MySQL數(shù)據(jù)庫。任務(wù)場景MySQL概述MySQL作為關(guān)系型數(shù)據(jù)庫的重要產(chǎn)品之一,由于其體積小、開放源碼、成本低等優(yōu)點,被廣泛的應(yīng)用在Internet的中小型網(wǎng)站上。MySQL的主要特點可移植性好強大的數(shù)據(jù)保護(hù)功能強大的業(yè)務(wù)處理能力支持大型數(shù)據(jù)庫運行速度快MySQL8.0簡介自2009年MyS

7、QL5.1發(fā)布后,MySQL5.x系列延續(xù)了多年,直到2018年4月MySQL首個正式版8.0.11發(fā)布。MySQL8.0版本在功能上進(jìn)行較大的增加和改進(jìn) 。MySQL8.0的部分新特性事務(wù)性數(shù)據(jù)字典 安全與帳戶管理InnoDB增強字符集支持優(yōu)化器窗口函數(shù)安裝MySQL服務(wù)器下載MySQL,其官網(wǎng)下載地址為/downloads。配置MySQL服務(wù)器產(chǎn)品配置界面配置MySQL服務(wù)器服務(wù)器配置類型和網(wǎng)絡(luò)配置MySQL服務(wù)器身份驗證方式 配置MySQL服務(wù)器賬號與角色配置 配置MySQL服務(wù)器Windows服務(wù)配置 配置MySQL服務(wù)器查看MySQL80服務(wù)進(jìn)程 安裝后的目錄結(jié)構(gòu)(1)bin文件夾:

8、用于放置可執(zhí)行文件。(2)include文件夾:用于放置頭文件,如mysql.h、mysqld_ ername.h等。(3)lib文件夾:用于放置庫文件。(4)share文件夾:用于存放字符集、語言等信息。MySQL程序目錄學(xué)習(xí)提示:建議將MySQL程序目錄中bin文件夾加入到環(huán)境變量 PATH中,用戶即可在命令窗口中直接運行bin目錄下的執(zhí)行文件。安裝后的目錄結(jié)構(gòu)(1)data文件夾:用于放置日志文件以及數(shù)據(jù)庫。(2)my.ini:是MySQL數(shù)據(jù)庫中使用的配置文件。MySQL數(shù)據(jù)目錄更改MySQL配置修改安裝目錄下的my.ini文件# 數(shù)據(jù)庫連接端口,默認(rèn)為3306clientport=3

9、306 mysql# 客戶端默認(rèn)字符集# default-character-set# 服務(wù)器參數(shù)配置# SERVER SECTION mysqld# 服務(wù)器參數(shù)配置# MySQL服務(wù)程序TCP/IP監(jiān)聽端口,默認(rèn)為3306port=3306# 服務(wù)器安裝路徑basedir= C:/Program Files/MySQL/MySQL Server 8.0/# 服務(wù)器中數(shù)據(jù)文件的存儲路徑,讀者可以根據(jù)需要修改些參數(shù)datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data/# 設(shè)置服務(wù)器端的字符集# character-set-server# 設(shè)置默認(rèn)的

10、存儲引擎,當(dāng)創(chuàng)建表時若不指定存儲類型,則為INNODBdefault-storage-engine=INNODB# 設(shè)置MySQL服務(wù)器的最大連接數(shù)max_connections=151使用命令行操作MySQL使用net命令啟動和停止MySQL服務(wù)net start mysql80net stop mysql80使用Windows服務(wù)管理器啟動和停止MySQL服務(wù)。使用命令行操作MySQL登錄MySQL數(shù)據(jù)庫【例1.1】用戶root,登錄MySQL服務(wù)。mysql為登錄命令名,存放在MySQL的安裝目錄下-h表示后面的參數(shù)hostname為服務(wù)器的主機(jī)地址,當(dāng)客戶端與服務(wù)器在同一臺機(jī)器上時,h

11、ostname可以使用localhost或。-u表示后面的參數(shù)username為登錄MySQL服務(wù)的用戶名。-p則表示后面的參數(shù)為指定用戶的密碼。mysql h hostname u username -pmysql h localhost u root -pMySQL的相關(guān)命令命令名簡寫說明?(?)顯示幫助信息clear(c)清除當(dāng)前輸入語句connect(r)連接到服務(wù)器,可選參數(shù)數(shù)據(jù)庫和主機(jī)delimiter(d)設(shè)置語句分隔符exit或quit(q)退出MySQLhelp(h)顯示幫助信息prompt(R)改變MySQL提示信息source(.)執(zhí)行SQL腳本文件 status(s)獲

12、取MySQL的狀態(tài)信息tee(T)設(shè)置輸出文件,并將信息添加所有給定的輸出文件use(u)切換數(shù)據(jù)庫charset(C)切換字符集【例1.2】查看MySQL命令幫助。mysql help使用Navicat圖形化管理工具操作MySQL 【例1.3】使用Navicat連接到MySQL服務(wù)器。 使用Navicat圖形化管理工具操作MySQL 【例1.4】Navicat中執(zhí)行查詢語句,查看MySQL內(nèi)置的系統(tǒng)變量。 任務(wù)3 設(shè)置MySQL字符集MySQL8將默認(rèn)字符集設(shè)為utf8mb4,解決了長期困擾程序員因字符集產(chǎn)生的亂碼問題。本任務(wù)詳細(xì)介紹了MySQL8.0中常用字符集,并結(jié)合實際應(yīng)用闡述如何設(shè)置

13、和選擇合適的字符集。 任務(wù)場景MySQL常用字符集字符集是一套符號和編碼的規(guī)則。MySQL的字符集包括字符集(CHARACTER)和校對規(guī)則(COLLATION)兩個概念,其中字符集是用來定義MySQL存儲字符串的方式,校對規(guī)則則是定義了比較字符串的方式。(1)utf8:也稱為通用轉(zhuǎn)換格式(8-bit Unicode Transformation Format),是針對Unicode字符的一種變長字符編碼,在MySQL中是utf8mb3的別名。utf8編碼對英文使用1個字節(jié)、中文使用3個字節(jié)來編碼。utf-8包含了全世界所有國家日常需要用到的字符,是一種國際編碼,通用性強。在Internet應(yīng)

14、用中廣泛使用。(2)utf8mb4(most bytes 4):MySQL8.0默認(rèn)字符集,是utf8的超集。專門用于兼容4個字節(jié)的字符,包括Emoji表情、不常用的漢字、新增的 Unicode 字符等。(3)latin1:MySQL5.x默認(rèn)字符集,占1個字節(jié),主要用于西文字符及基本符號的編碼,使用該字符集對中文編碼會出現(xiàn)亂碼。(4)gb2312和gbk:gb2312是簡體中文集,而gbk是對gb2312的擴(kuò)展,是中國國家編碼。 gbk的文字編碼采用雙字節(jié)表示,即不論中文和英文字符都使用雙字節(jié),為了區(qū)分中英文,gbk在編碼時將中文每個字節(jié)的最高位設(shè)為1。查看字符集和校對規(guī)則 【例1.5】查看

15、MySQL支持的字符集。mysql SHOW CHARACTER SET ;查看字符集和校對規(guī)則 【例1.6】查看uft8mb4相關(guān)字符集的校對規(guī)則。mysql SHOW COLLATION LIKE utf8mb4_0900% ;查看字符集和校對規(guī)則 【例1.7】查看“SQL語言”,在指定字符集下的轉(zhuǎn)換結(jié)果,其中“”為emoji字符。 SELECT CONVERT(SQL語言 USING utf8mb4),CONVERT(SQL語言 USING utf8),CONVERT(SQL語言 USING gbk),CONVERT(SQL語言 USING latin1);設(shè)置MySQL字符集MySQL

16、支持服務(wù)器(Server)、數(shù)據(jù)庫(Database)、數(shù)據(jù)表(Table)、字段(Field)和連接層(Connection)五個層級的字符集設(shè)置。數(shù)據(jù)庫進(jìn)行存取數(shù)據(jù)時,會根據(jù)各層級字符集尋找對應(yīng)的編碼,進(jìn)行轉(zhuǎn)換,若轉(zhuǎn)換失敗則顯示為亂碼。系統(tǒng)變量名說明character_set_server默認(rèn)的內(nèi)部操作字符集,標(biāo)識服務(wù)器的字符集。服務(wù)器啟動時通過該變量設(shè)置字符集,當(dāng)未設(shè)置值時,系統(tǒng)默認(rèn)為utf8mb4 。該變量為create database命令提供默認(rèn)值character_set_client客戶端來源數(shù)據(jù)使用的字符集,該變量用來決定MySQL如何解釋客戶端發(fā)到服務(wù)端的SQL命令char

17、acter_set_connection連接層字符集。用來決定MySQL如何處理客戶端發(fā)來的SQL命令character_set_results查詢結(jié)果字符集。當(dāng)SQL返回結(jié)果時,這個變量的值決定了發(fā)給客戶端的字符編碼character_set_database當(dāng)前選中數(shù)據(jù)庫的默認(rèn)字符集character_set_system系統(tǒng)元數(shù)據(jù)(字段名等)字符集。數(shù)據(jù)庫、表和字段都用這個字符集character_set_filesystem文件系統(tǒng)的編碼格式,默認(rèn)值為binary,表示不對字符編碼進(jìn)行轉(zhuǎn)換character_set_dir指示字符集的安裝目錄設(shè)置MySQL字符集【例1.8】使用SHOW

18、語句查看字符集變量。mysql SHOW VARIABLES LIKE char% ;設(shè)置MySQL字符集【例1.9】使用SET語句修改字符集變量。mysql SET character_set_client = utf8mb4 ;mysql SET character_set_connection = utf8mb4;mysql SET character_set_results = utf8mb4;項目實踐實踐任務(wù)(1)安裝、配置和訪問MySQL服務(wù)器。(2)安裝Navicat圖形化管理工具,并使用該工具操作MySQL服務(wù)器。(3)使用SHOW語句查看MySQL服務(wù)器的字符集、校對規(guī)則及狀

19、態(tài)信息等。(4)了解MySQL服務(wù)器配置文件(my.ini)的常用參數(shù)。實踐內(nèi)容(1)安裝、配置和訪問MySQL服務(wù)器。(2)安裝Navicat圖形化管理工具,并使用該工具操作MySQL服務(wù)器。(3)使用SHOW語句查看MySQL服務(wù)器的字符集、校對規(guī)則及狀態(tài)信息等。(4)了解MySQL服務(wù)器配置文件(my.ini)的常用參數(shù)。拓展實訓(xùn)1. 打開Windows服務(wù)組件,將MySQL服務(wù)器改為自動啟動。2. 使用“SHOW STATUS;”命令查看MySQL服務(wù)器的狀態(tài)信息。3. 使用“SHOW DATABASES;”命令查看MySQL服務(wù)器下的默認(rèn)數(shù)據(jù)庫。4. 打開“my.ini”文件,記錄p

20、ort、datadir、basedir、default-storage-engine、character-set-server等參數(shù)值,了解其各自含義。您的關(guān)注是我們前行的動力Keep on going never give upPPT模板下載:/moban/ 行業(yè)PPT模板:/hangye/ 節(jié)日PPT模板:/jieri/ PPT素材下載:/sucai/PPT背景圖片:/beijing/ PPT圖表下載:/tubiao/ 優(yōu)秀PPT下載:/xiazai/ PPT教程: /powerpoint/ Word教程: /word/ Excel教程:/excel/ 資料下載:/ziliao/ PPT課

21、件下載:/kejian/ 范文下載:/fanwen/ 試卷下載:/shiti/ 教案下載:/jiaoan/ PPT論壇: 網(wǎng)上商城系統(tǒng)數(shù)據(jù)庫建模MySQL數(shù)據(jù)庫技術(shù)與項目應(yīng)用02引言/FOREWORD一個成功的應(yīng)用管理系統(tǒng),是由50%的業(yè)務(wù)+50%的軟件所組成,而50%的成功軟件又是由25%的數(shù)據(jù)庫+25%的程序所組成。因此,一個應(yīng)用管理系統(tǒng)的成功與否,系統(tǒng)數(shù)據(jù)庫設(shè)計的好壞是關(guān)鍵,它將直接影響到系統(tǒng)的功能性和可擴(kuò)展性。數(shù)據(jù)庫設(shè)計(Database Design)是指對于給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各類用戶的應(yīng)用需求。數(shù)據(jù)庫建模是指在數(shù)

22、據(jù)庫設(shè)計階段,對現(xiàn)實世界進(jìn)行分析和抽象,進(jìn)而確定應(yīng)用系統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu)。本項目通過分析網(wǎng)上商城系統(tǒng)的需求,以網(wǎng)上商城中購物和信息管理兩大模塊為對象,結(jié)合數(shù)據(jù)庫設(shè)計理論,使用系統(tǒng)建模工具演繹網(wǎng)上商城系統(tǒng)的數(shù)據(jù)庫設(shè)計過程。 目錄/Contents010203理解系統(tǒng)需求建立系統(tǒng)數(shù)據(jù)模型使用PowerDesigner建立系統(tǒng)模型任務(wù)1 理解系統(tǒng)需求B2C是電子商務(wù)的典型模式,是企業(yè)通過Internet開展的在線銷售活動,它直接面向消費者銷售產(chǎn)品和服務(wù)。本任務(wù)分析網(wǎng)上商城中購物和信息管理兩大模塊的具體功能,使讀者對網(wǎng)上商城系統(tǒng)有初步了解。任務(wù)場景網(wǎng)上商城系統(tǒng)介紹系統(tǒng)概述B2C(Business-to-C

23、ustomer,商家對顧客)是電子商務(wù)的典型模式,企業(yè)直接面向消費者銷售產(chǎn)品和服務(wù)。消費者在網(wǎng)上選購商品和服務(wù)、發(fā)表相關(guān)評論及電子支付等。由于這種模式節(jié)省了客戶和企業(yè)的時間和空間,大大提高了交易效率,是目前廣泛流行的商品交易模式。 B2C網(wǎng)上商城系統(tǒng)通常會包括購物和信息管理這兩大功能模塊,其中,用戶購物主要面向用戶,一般也稱為系統(tǒng)前臺,其功能主要有瀏覽商品、個人中心、添加購物車、提交訂單等;而信息管理主要面向管理員,也稱為系統(tǒng)后臺,主要包括維護(hù)商品、會員及系統(tǒng)設(shè)置等功能。系統(tǒng)面向的用戶群體管理員會員游客系統(tǒng)功能說明前臺用戶購物主要包括的功能模塊瀏覽商品:游客或會員都可以通過商品展示頁面了解商品

24、基本信息;可以通過商品詳細(xì)頁面獲知商品的詳細(xì)情況;可以根據(jù)商品名稱、商品類別、價格等條件進(jìn)行商品的查詢;可對商品價格或銷售量排序,了解商品的銷售情況。購買商品:會員在瀏覽商品的過程中,可以將商品添加到自己的購物車,會員在提交訂單前,可對購物車中的商品進(jìn)行修改和刪除,確認(rèn)購買后,系統(tǒng)將生成訂單,會員支付訂單后,可以查看自己的訂單的基本信息和訂單詳情。個人中心:在實際應(yīng)用中,游客只能瀏覽商品信息,不能進(jìn)行購買活動。游客可以通過注冊成為系統(tǒng)會員。會員成功登錄系統(tǒng)后,可以進(jìn)行商品購買活動,也可以查看和維護(hù)個人信息,購物結(jié)束后可以注銷賬號。系統(tǒng)功能說明后臺信息管理主要包括的功能模塊維護(hù)商品信息:管理員維

25、護(hù)商品類別,根據(jù)需要添加、修改、刪除商品信息。維護(hù)會員信息:管理員維護(hù)會員信息、統(tǒng)計會員的購買情況,分析會員的購買力。維護(hù)訂單:管理員可以查詢、撤銷訂單或?qū)τ唵螖?shù)據(jù)進(jìn)行統(tǒng)計,生成商品銷售報表。維護(hù)管理員信息:系統(tǒng)管理員可以根據(jù)需要添加、修改和刪除一般管理員。其他管理功能:包括系統(tǒng)設(shè)置、系統(tǒng)數(shù)據(jù)備份和恢復(fù)等。系統(tǒng)功能說明系統(tǒng)用例圖任務(wù)2 建立系統(tǒng)數(shù)據(jù)模型要實現(xiàn)網(wǎng)上商城系統(tǒng)的數(shù)據(jù)庫管理,必須在系統(tǒng)需求分析的基礎(chǔ)上建立網(wǎng)上商城系統(tǒng)的數(shù)據(jù)模型。本任務(wù)在闡述關(guān)系數(shù)據(jù)庫基本理論的基礎(chǔ)上,詳細(xì)描述網(wǎng)上商城系統(tǒng)實體關(guān)系模型的設(shè)計過程。任務(wù)場景數(shù)據(jù)模型數(shù)據(jù)模型是對現(xiàn)實世界的抽象關(guān)系型數(shù)據(jù)庫的基礎(chǔ)是數(shù)據(jù)模型(Da

26、te Model)數(shù)據(jù)模型是一組向用戶提供的規(guī)則,這些規(guī)則定義了數(shù)據(jù)如何組織及允許進(jìn)行何種操作。數(shù)據(jù)模型包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束3個要素。 數(shù)據(jù)模型應(yīng)滿足三個方面要求能比較真實的模擬現(xiàn)實世界容易為人所理解便于在計算機(jī)上實現(xiàn)數(shù)據(jù)模型數(shù)據(jù)模型數(shù)據(jù)結(jié)構(gòu)Data Model定義:模型是對現(xiàn)實世界的抽象,表示對象(實體)與對象之間關(guān)系的模型,在關(guān)系數(shù)據(jù)庫系統(tǒng)中,使用數(shù)據(jù)模型描述數(shù)據(jù)庫的結(jié)構(gòu)和語義。數(shù)據(jù)操作數(shù)據(jù)約束數(shù)據(jù)模型數(shù)據(jù)模型的組成要素數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)模型的基礎(chǔ), 不同的數(shù)據(jù)結(jié)構(gòu)具有不同的操作和約束。描述數(shù)據(jù)庫系統(tǒng)的靜態(tài)特征,如數(shù)據(jù)庫中表的結(jié)構(gòu)定義、視圖定義等。 數(shù)據(jù)操作描述系統(tǒng)的動態(tài)特

27、征,主要是在數(shù)據(jù)庫中對每個數(shù)據(jù)對象允許執(zhí)行的操作集合主要包括數(shù)據(jù)的添加、更改、刪除和查詢等。數(shù)據(jù)約束用來描述數(shù)據(jù)結(jié)構(gòu)內(nèi)數(shù)據(jù)間完整性規(guī)則的集合。完整性規(guī)則是數(shù)據(jù)及其關(guān)系所具有的制約和儲存規(guī)則,用來限定符合數(shù)據(jù)庫的語法、關(guān)系和它們間的制約與依存及數(shù)據(jù)動態(tài)的規(guī)則,以保證數(shù)據(jù)的正確性、有效性和兼容性。 數(shù)據(jù)模型的分類數(shù)據(jù)模型概念模型Data Model邏輯模型物理模型概念模型概念模型定義:是面向用戶的數(shù)據(jù)模型,它是用戶容易理解的現(xiàn)實世界特征的數(shù)據(jù)抽象。最常用的概念模型是實體-關(guān)系模型 。實體(Entity)實體集(Entity Set)屬性(Atrribute)標(biāo)識符(Identifier)邏輯模型邏

28、輯模型定義:是用戶在數(shù)據(jù)庫中所看到的數(shù)據(jù)模型,它由概念數(shù)據(jù)模型轉(zhuǎn)換得到。字段(Field)記錄(Record)關(guān)鍵字(Keyword)表(Table)物理模型物理模型定義:是描述數(shù)據(jù)在物理存儲介質(zhì)上的組織結(jié)構(gòu),它與具體的數(shù)據(jù)庫管理系統(tǒng)(DBMS)相關(guān),也與操作系統(tǒng)和硬件相關(guān),是物理層次上的數(shù)據(jù)模型。實體和關(guān)系實體:是一個數(shù)據(jù)對象,是客觀存在且相互區(qū)分的事物。 例:商品、會員、訂單等實體集 :具有相同屬性實體的所有實例集合例:數(shù)據(jù)庫中存儲的所有用戶 在E-R模型中,實體表示 :會員實體實例1實例2登錄名1380911231217134324389用戶名李明劉立性別男女會員積分200120實體和關(guān)

29、系實體通過一組屬性來表示。屬性是實體集中成員所擁有的特性,不同的實體其屬性值不同。 在E-R模型中,實體屬性的表示 :實體和關(guān)系關(guān)系是指多個實體間的相互關(guān)聯(lián)。 例:商品“紫竹洞簫”和商品類別“樂器”之間的聯(lián)系 關(guān)系集(Relationship Set)是同類聯(lián)系的集合,是n(n2)個實體集上的數(shù)學(xué)關(guān)系 。在E-R模型中,商品實體和會員實體間的關(guān)系表示:添加購物車商品會員實體和關(guān)系關(guān)系屬性:關(guān)系同實體一樣也具有描述性的屬性 在E-R模型中, “添加購物車”關(guān)系及其屬性 :添加購物車商品會員購買數(shù)量實體和關(guān)系現(xiàn)實世界中,事物內(nèi)部及事物之間存在一定的聯(lián)系,這些聯(lián)系在信息世界中反映為實體內(nèi)部的聯(lián)系和實

30、體間的關(guān)系。 關(guān)系數(shù)據(jù)模型主要研究實體間的關(guān)系,它是指不同實體集之間的關(guān)系。這種關(guān)系通常有一對一、一對多和多對多3種。概念模型設(shè)計抽象實體標(biāo)識實體間的關(guān)系標(biāo)識實體屬性確定主關(guān)鍵字 1 2 3 4標(biāo)識實體概念模型設(shè)計抽象實體確立實體間的關(guān)系標(biāo)識實體屬性確定主關(guān)鍵字 1 2 3 4標(biāo)識實體間的關(guān)系概念模型設(shè)計抽象實體確立實體間的關(guān)系標(biāo)識實體屬性確定主關(guān)鍵字 1 2 3 4標(biāo)識實體屬性概念模型設(shè)計抽象實體確立實體間的關(guān)系標(biāo)識實體屬性確定主關(guān)鍵字 1 2 3 4確定主關(guān)鍵字網(wǎng)上商城系統(tǒng)E-R圖邏輯模型設(shè)計關(guān)系數(shù)據(jù)庫設(shè)計過程中,概念模型確定了系統(tǒng)中應(yīng)有的實體和實體關(guān)系,為了創(chuàng)建用戶所需的數(shù)據(jù)庫,還需要將

31、實體和實體關(guān)系轉(zhuǎn)換成對應(yīng)的關(guān)系模式,也就是建立系統(tǒng)邏輯模型。邏輯模型是用戶在數(shù)據(jù)庫中所看到的數(shù)據(jù)模型,它由概念模型轉(zhuǎn)換得到。 (1)實體轉(zhuǎn)換原則將E-R模型中的每一個實體轉(zhuǎn)換成一個關(guān)系,即二維表;實體的屬性轉(zhuǎn)換為表的字段,實體的標(biāo)識符轉(zhuǎn)換成表的主關(guān)鍵字。(2)關(guān)系轉(zhuǎn)換原則由于實體間存在1:1、1:n和n:m 3種關(guān)系,所以實體關(guān)系在轉(zhuǎn)換成邏輯模型時,不同的關(guān)系作不同的處理。若實體間聯(lián)系為1:1時,可選擇實體關(guān)系中的任意一個關(guān)系模式(表),將其主關(guān)鍵字作為另一個關(guān)系模式的屬性。若實體間聯(lián)系為1:n時,則在n端實體類型的關(guān)系模式中加入1端實體類型的主關(guān)鍵字作為屬性。若實體間聯(lián)系為n:m時,則要將實

32、體關(guān)系轉(zhuǎn)換成新的關(guān)系模式,兩端實體集中的主關(guān)鍵字作為新關(guān)系模式的屬性。邏輯模型設(shè)計根據(jù)網(wǎng)上商城系統(tǒng)的E-R模型和轉(zhuǎn)換原則,其中會員、商品、商品類別和訂單等實體及添加購物車和訂單詳情的關(guān)系模式設(shè)計如下。商品類別(類別id,類別編號)。商品(商品id,類別id,商品編號,名稱,價格,庫存量,銷售量,上架時間,是否熱銷)。會員(會員id,用戶名,密碼,性別,聯(lián)系電話,積分,注冊時間)。訂單(訂單id,會員id,訂單金額,下單時間)。購物車(購物車id,會員id,商品id,購買數(shù)量)。訂單詳情(詳情id,訂單id,商品id,購買數(shù)量)。關(guān)系模式的規(guī)范化范式定義:范式是符合某一級別的關(guān)系模式的集合。關(guān)系

33、數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求,即滿足不同的范式。 第一范式(1NF)第二范式(2NF)第三范式(3NF)Boyee-Codd范式(BCNF)范式可以有效避免數(shù)據(jù)冗余,減少數(shù)據(jù)庫的空間,減輕維護(hù)數(shù)據(jù)完整性等優(yōu)點 。但是隨著范式的級別越高,其操作難度越大,性能降低。 第一范式不符合1NF的會員信息表定義:第一范式(1NF)是指數(shù)據(jù)庫表的每一列都是不可分割的基本數(shù)據(jù)項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復(fù)的屬性。 會員id用戶名聯(lián)系方式1李明手機(jī) 郵箱:2劉立手機(jī) 郵箱:liuli會員id

34、用戶名郵箱手機(jī)手機(jī)1李明136890700002劉立liuli1398060000013567809000第一范式符合1NF的模型設(shè)計會員id用戶名1李明2劉立會員表聯(lián)系id會員id聯(lián)系方式聯(lián)系值11郵箱21手機(jī)1368907000032郵箱liuli42手機(jī)1398060000052手系方式表第二范式會員id用戶名商品id商品名稱價格購買數(shù)量1李明1曾國藩全集25511李明2平凡的世界全三集9812劉立2平凡的世界全三集9852劉立3SSD固態(tài)硬盤40023張三2平凡的世界全三集981不符合2NF的學(xué)生選課表從上表中可以看出,會員id不能唯一標(biāo)識一行記錄,且屬性值存

35、在如下關(guān)系:會員id,商品id用戶名,商品編號,商品名稱,價格,購買數(shù)量定義:第二范式要求數(shù)據(jù)庫表中的每個實例或行必須被唯一區(qū)分。第二范式這時需要通過會員id和商品id作為復(fù)合主關(guān)鍵字,決定非主關(guān)鍵字的情況。因此,該購物車表不符合第二范式的要求,在實際操作中會出現(xiàn)如下問題。數(shù)據(jù)冗余:如同一件商品被n個用戶購買,則商品id,商品名稱,價格就要重復(fù)n-1次;當(dāng)一個會員購買m件商品時,其用戶名就要重復(fù)m-1次。更新異常:若某件商品的價格要進(jìn)行折扣銷售,則整個表中該商品的價格都要進(jìn)行修改,否則會出現(xiàn)同一件商品價格不同的情況。對上述購買關(guān)系進(jìn)行拆分后形成的關(guān)系模式包含如下3張表。會員:Users(會員i

36、d,用戶名)商品:Goods(商品id,商品名稱,價格)購物車:Scar(會員id,商品id,購買數(shù)量)商品id商品名稱價格1曾國藩全集2552平凡的世界全三集983SSD固態(tài)硬盤400會員ID商品id購買數(shù)量111121225232321會員id用戶名1李明2劉立3張三第三范式從表可以看出,在此關(guān)系模式中存在如下關(guān)系。商品id商品編號,商品名稱,價格,類別id,類別名稱商品id作為該關(guān)系中的唯一關(guān)鍵字,符合第二范式的要求,但不符合第三范式,因為還存在商品ID 類別ID類別名稱的關(guān)系。 定義:第三范式是在第二范式的基礎(chǔ)上建立起來,即滿足3NF必須滿足2NF。 3NF要求關(guān)系表中不存在非關(guān)鍵字列

37、對任一候選關(guān)鍵字的傳遞函數(shù)依賴。傳遞函數(shù)依賴,指的是如果存在“ABC”的決定關(guān)系,則C傳遞函數(shù)依賴于A。也就是說,第三范式要求關(guān)系表不包含其他表中已包含的非主關(guān)鍵字段信息。商品id商品名稱價格類別id類別名稱1曾國藩全集2551圖書2平凡的世界全三集981圖書3SSD固態(tài)硬盤4002電腦及配件第三范式即存在非關(guān)鍵字段“類別名稱”對關(guān)鍵字“商品id”的傳遞依賴,這種情況下也會存在數(shù)據(jù)冗余、更新異常、插入異常和刪除異常。數(shù)據(jù)冗余:一個類別有多種商品,類別名稱會重復(fù)n-1次。更新異常:若要更改某類別名稱,則表中所有該類別的類別名稱的值都需要更改,否則就會出一件商品對應(yīng)多種類別。插入異常:若新增了一種

38、商品類別,如果還沒有指定到商品,則該類別名稱無法插入到數(shù)據(jù)庫中。刪除異常:當(dāng)要刪除一種商品類別時,那就應(yīng)該刪除它在數(shù)據(jù)庫中的記錄,而此時與其相關(guān)的商品信息也會被刪除。對上述選課關(guān)系進(jìn)行拆分后可形成如下2個關(guān)系。商品:Goods(商品id,商品名稱,價格,類別id)商品類別:GoodsType(類別id,類別名稱)商品id商品名稱價格類別id1曾國藩全集25512平凡的世界全三集9813SSD固態(tài)硬盤4002類別id類別名稱1圖書2電腦及配件關(guān)系代數(shù)數(shù)據(jù)模型通過對現(xiàn)實世界抽象來優(yōu)化數(shù)據(jù)存儲,其目的是為了有效使用數(shù)據(jù)。在關(guān)系數(shù)據(jù)模型中,通過關(guān)系代數(shù)建立數(shù)據(jù)操縱模型。關(guān)系代數(shù)是一種抽象的查詢語言,是

39、關(guān)系數(shù)據(jù)庫中數(shù)據(jù)操縱語言(DML)的傳統(tǒng)表達(dá)方式,它用關(guān)系運算來表示數(shù)據(jù)查詢。 類別運算符說明類別運算符說明傳統(tǒng)集合運算符交并差比較運算符 CREATE DATABASE onlinedb ;Query OK, 1 row affected (0.01 sec)查看數(shù)據(jù)庫查看數(shù)據(jù)庫SQL語句mysql SHOW DATABASES;+| Database |+| information_schema | mysql | onlinedb | performance_schema | sys|+5 rows in set (0.06 sec)SHOW DATABASES;查看數(shù)據(jù)庫查看指定數(shù)據(jù)庫

40、信息的SQL語句mysql SHOW CREATE DATABASE onlinedb;+| Database | Create Database |+| onlinedb | CREATE DATABASE onlinedb /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION=N */ |+1 row in set (0.00 sec)SHOW CREATE DATABASE 數(shù)據(jù)庫名;修改數(shù)據(jù)庫修改數(shù)據(jù)庫的基本語法為:【例3.5】使用SQL語句,修改

41、數(shù)據(jù)庫onlinedb的字符集設(shè)置為uft8,排序規(guī)則設(shè)置為utf8_bin。ALTER DATABASE 數(shù)據(jù)庫名DEFAULT CHARACTER SET 字符集名 | DEFAULT COLLATE 排序規(guī)則名;mysql ALTER DATABASE onlinedb CHARACTER SET utf8 COLLATE utf8_bin;Query OK, 1 row affected (0.00 sec)刪除數(shù)據(jù)庫刪除數(shù)據(jù)庫的基本語法;【例3.6】刪除數(shù)據(jù)庫服務(wù)器中名為onlinedb的數(shù)據(jù)庫,執(zhí)行結(jié)果如下。mysql DROP DATABASE onlinedb;Query OK

42、, 0 rows affected (0.16 sec)學(xué)習(xí)提示:刪除數(shù)據(jù)庫會刪除該數(shù)據(jù)庫中所有的表和所有數(shù)據(jù),且不能恢復(fù),因此在執(zhí)行刪除數(shù)據(jù)庫操作時要慎重。DROP DATABASE 數(shù)據(jù)庫名;MySQL的存儲引擎存儲引擎就是數(shù)據(jù)的存儲技術(shù)。針對不同的處理要求,對數(shù)據(jù)采用不同的存儲機(jī)制、索引技巧、讀寫鎖定水平等。MySQL現(xiàn)提供有InnoDB、MyISAM、CSV、Memory等。查看MySQL支持的存儲引擎【例3.7】查看MySQL服務(wù)器系統(tǒng)支持的存儲引擎。SHOW ENGINES;MySQL的存儲引擎【例3.8】查看MySQL服務(wù)器系統(tǒng)支持的默認(rèn)存儲引擎。 mysql SHOW VARI

43、ABLES LIKE default_storage_engine;+| Variable_name | Value |+| default_storage_engine | InnoDB |+1 row in set (0.00 sec)MySQL的存儲引擎InnoDB存儲引擎InnoDB是MySQL的默認(rèn)事務(wù)型引擎,也是最重要、使用最廣泛的存儲引擎。InnoDB的性能和自動崩潰恢復(fù)特性,使得它在非事務(wù)型存儲的需求中也很流行,MySQL一般優(yōu)先考慮InnoDB引擎。InnoDB具有提交、回滾和崩潰恢復(fù)能力的事物安全(ACID兼容)。InnoDB是為處理巨大數(shù)據(jù)量的最大性能設(shè)計,被用在眾多需要

44、高性能的大型數(shù)據(jù)庫站點上。InnoDB支持外鍵完整性約束,存儲表中的數(shù)據(jù)時,每張表的存儲都按主鍵順序存放,如果沒有在表定義時指定主鍵,InnoDB會為每一行生成一個6字節(jié)的ROWID列,并以此作為主鍵。MySQL數(shù)據(jù)庫的組成MySQL數(shù)據(jù)庫文件MySQL中每一個數(shù)據(jù)庫,在data目錄下都會有一個與數(shù)據(jù)庫同名的文件夾,用于存儲該數(shù)據(jù)庫的表文件。 MySQL數(shù)據(jù)庫文件的組成取決于該數(shù)據(jù)庫使用的存儲引擎。InnoDB存儲引擎采用表空間來管理數(shù)據(jù),其主要文件如下表。文件名說明Ibdata*MySQL中共享表空間文件, 存儲InnoDB系統(tǒng)信息和用戶數(shù)據(jù)表數(shù)據(jù)和索引,為所有表共用。如ibdata1、ib

45、data2等*.ibdibd文件表示單表表空間文件,每個表使用一個表空間文件,存儲用戶數(shù)據(jù)表數(shù)據(jù)和索引。不能直接讀取Ibtmp* MySQL臨時獨立的表空間文件。如ibtmp1、ibtmp2等ib_logfile*MySQL的日志文件,如ib_logfile0、ib_logfile1等*.errMySQL的錯誤日志文件,記錄MySQL服務(wù)器運行或啟停時發(fā)生的錯誤信息。可用記事本打開*_bin.00000n二進(jìn)制日志文件,n是1開始的自然數(shù)。用于記錄數(shù)據(jù)庫中對象和數(shù)據(jù)的添加和更改操作undo_00*MySQL中的undo日志文件,主要記錄事務(wù)異常時的數(shù)據(jù),以實現(xiàn)數(shù)據(jù)回滾操作,如undo_001、

46、undo_002等*.pid用來記錄當(dāng)前mysqld進(jìn)程的pid值,即Process ID*.pemMySQL中的證書文件,用于SSL認(rèn)證。包括MySQL服務(wù)器的公鑰、私鑰及客戶端和服務(wù)器端的證書和密鑰等。如private_key.pem、public_key.pem等系統(tǒng)數(shù)據(jù)庫MySQL的數(shù)據(jù)庫包括系統(tǒng)數(shù)據(jù)庫和用戶數(shù)據(jù)庫用戶數(shù)據(jù)庫是用戶創(chuàng)建的數(shù)據(jù)庫;系統(tǒng)數(shù)據(jù)庫是由MySQL安裝程序自動創(chuàng)建的數(shù)據(jù)庫,用于存放和管理用戶權(quán)限和其他數(shù)據(jù)庫的信息,包括數(shù)據(jù)庫名、數(shù)據(jù)庫中的對象及訪問權(quán)限等信息。MySQL中共有4個可見的系統(tǒng)數(shù)據(jù)庫數(shù)據(jù)庫名說明mysql包含用于存儲MySQL服務(wù)的系統(tǒng)信息表,包括授權(quán)系

47、統(tǒng)表、系統(tǒng)對象信息表、日志系統(tǒng)表、服務(wù)器端輔助系統(tǒng)表等。此數(shù)據(jù)庫中的表默認(rèn)情況下多為MYASIM引擎。information_schema用于保存MySQL服務(wù)器所維護(hù)的所有其他數(shù)據(jù)庫的信息,包括數(shù)據(jù)庫名、數(shù)據(jù)庫的表、表中列的數(shù)據(jù)類型與訪問權(quán)限等。此數(shù)據(jù)庫中的表均為視圖,因此在用戶或安裝目錄下無對應(yīng)用數(shù)據(jù)文件。performance_schema主要用于收集數(shù)據(jù)庫服務(wù)器的性能參數(shù)。此數(shù)據(jù)庫中所有表的存儲引擎為performance_schema,用戶不能創(chuàng)建存儲引擎為performance_schema的表。默認(rèn)情況下些數(shù)據(jù)庫為關(guān)閉狀態(tài)。syssys數(shù)據(jù)庫中所有數(shù)據(jù)來自performance_

48、schema。目標(biāo)是把performance_schema的把復(fù)雜度降低,讓DBA(數(shù)據(jù)庫管理員)更快的了解DB的運行情況。 任務(wù)2 MySQL中數(shù)據(jù)的表示數(shù)據(jù)類型決定了數(shù)據(jù)的存儲格式和有效范圍等。MySQL提供了豐富的數(shù)據(jù)類型,包括整數(shù)類型、小數(shù)類型、字符串類型、日期類型和JSON類型等。本節(jié)通過實例解讀MySQL中的常用數(shù)據(jù)類型,以及在實際開發(fā)中數(shù)據(jù)類型的選擇建議。任務(wù)場景整數(shù)類型整數(shù)類型是數(shù)據(jù)庫中最基本的數(shù)據(jù)類型,MySQL中支持的5種整數(shù)類型,整數(shù)類型的數(shù)據(jù)范圍主要是通過區(qū)分有符號和無符號數(shù)據(jù)。整數(shù)類型字節(jié)數(shù)無符號數(shù)的取值范圍有符號數(shù)的取值范圍TINYINT10255-128127SM

49、ALLINT2065535-3276832767MEDIUMINT30224-223223-1INT40232-1-231231-1BIGINT80264-1-263 263-1整數(shù)類型【例3.9】創(chuàng)建test_int表,用于測試整數(shù)類型的數(shù)據(jù)存儲。創(chuàng)建test_int數(shù)據(jù)表 向表test_int中,添加兩條測試記錄如下。 mysql CREATE TABLE test_int - ( - int_1 int , - int_2 int unsigned , - int_3 int(6) zerofill , - int_4 tinyint , - int_5 tinyint unsigned

50、 - ) ;#測試1:添加成功mysql INSERT INTO test_int VALUES(100, 100, 100, 100, 100);Query OK, 1 row affected (0.01 sec)#測試2:添加失敗mysql INSERT INTO test_int VALUES(100, -100, 100, 100, 100);ERROR 1264 (22003): Out of range value for column int_2 at row 1整數(shù)類型查看表結(jié)構(gòu)查詢test_int表mysql DESC test_int ;+| Field | Type |

51、 Null | Key | Default | Extra |+| int_1 | int | YES | | NULL | | int_2 | int unsigned | YES | | NULL | | int_3 | int(6) unsigned zerofill | YES | | NULL | | int_4 | tinyint | YES | | NULL | | int_5 | tinyint unsigned | YES | | NULL | |+5 rows in set (0.00 sec)mysql SELECT * FROM test_int ;+| int_1 |

52、 int_2 | int_3 | int_4 | int_5 |+| 100 | 100 | 000100 | 100 | 100 |+1 row in set (0.00 sec)小數(shù)類型MySQL中,小數(shù)類型包括浮點數(shù)和定點數(shù)。浮點數(shù)又包括單精度(FLOAT)和雙精度(DOUBLE),定點數(shù)類型是DECIMAL;浮點數(shù)在數(shù)據(jù)庫中存放的是近似值,定點數(shù)存放的是精確值。 類型字節(jié)數(shù)負(fù)數(shù)的取值范圍非負(fù)數(shù)的取值范圍FLOAT4-3.402823466E+38 -1.175494351E-380或1.175494351E-38 3.402823466E+38DOUBLE8-1.79769313486

53、23157E+308-2.2250738585072014E-3080 和 2.2250738585072014E-3081.7976931348623157E+308DECIMAL(M,D)或DEC(M,D)M+2同DOUBLE型同DOUBLE型小數(shù)類型DECIMAL類型的有效取值范圍由M和D決定M稱為精度,是數(shù)據(jù)的總長度,小數(shù)點不占位D為標(biāo)度,是指小數(shù)點后面的位數(shù)。如DECIMAL(6,2)表示指定的數(shù)據(jù)類型為DECIMAL,數(shù)據(jù)長度是6,小數(shù)點后保留2位,如1234.56是符合該類型的小數(shù)。數(shù)據(jù)類型(M,D)小數(shù)類型【例3.10】創(chuàng)建test_dec表,用于測試小數(shù)類型的數(shù)據(jù)存儲。創(chuàng)建測

54、試表添加測試數(shù)據(jù)mysql CREATE TABLE test_dec - ( - float_1 float(10, 2) , - double_2 double(10, 2) , - decimal_3 decimal(10, 2) - ) ;Query OK, 0 rows affected, 2 warnings (0.02 sec)mysql INSERT INTO test_dec VALUES(12345678.99, 12345678.99, 12345678.99);Query OK, 1 row affected (0.01 sec)小數(shù)類型查詢表結(jié)果mysql SELEC

55、T * from test_dec ;+| float_1 | double_2 | decimal_3 |+| 12345679.00 | 12345678.99 | 12345678.99 |+1 row in set (0.00 sec)日期類型MySQL中提供了多種表示日期和時間的數(shù)據(jù)類型,其主要差別是在精度和范圍上。類型字節(jié)數(shù)取值范圍零值表示形式Y(jié)EAR1190121550000DATE41000-01-019999-12-310000:00:00TIME3-838:59:59838:59;5900:00:00DATETIME81000-01-01 00:00:009999-12-3

56、1 23:59:590000-00-00 00:00:00TIMESTAMP41970010108000120380119111407000000000000000日期類型【例3.11】創(chuàng)建test_date表,用于測試日期類型的數(shù)據(jù)存儲。 創(chuàng)建測試表添加測試數(shù)據(jù)mysql CREATE TABLE test_date - ( - year_1 year , - date_2 date , - time_2 time , - datetime_4 datetime , - timestamp_5 timestamp - ) ;Query OK, 0 rows affected (0.03 se

57、c)mysql INSERT INTO test_date VALUES(NOW(), CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);Query OK, 1 row affected (0.01 sec)日期類型查詢表結(jié)果mysql SELECT * FROM test_date ;字符串類型字符串類型是一種非常重要的數(shù)據(jù)類型,MySQL提供了非常豐富的字符串類型。類型允許長度用途CHAR0255字節(jié)定長字符串VARCHAR065 535字節(jié)變長字符串BIT164位不超過8個字符的字符串,存儲每個字符ASCI

58、I碼TINYTEXT0255字節(jié)短文本字符串TEXT065 535字節(jié)長文本字符串BINARY0255字節(jié)定長的二進(jìn)制數(shù)據(jù)VARBINARY065 535字節(jié)變長的二進(jìn)制數(shù)據(jù)TINYBLOB0255字節(jié)不超過255個字符的二進(jìn)制字符串BLOG065 535字節(jié)二進(jìn)制形式的長文本字符串MECDIUMTEXT0167 772 150字節(jié)中等長度文本字符串LONGTEXT04 294 967 295字節(jié)極大長度文本字符串MEDIUMBLOB0167 772 150字節(jié)中等長度的二進(jìn)制字符串LONGBLOG04 294 967 295字節(jié)極大長度的二進(jìn)制字符串字符串類型【例3.12】創(chuàng)建test_ch

59、ar1表,測試字符串類型單列數(shù)據(jù)存儲大小。 測試1:超出列長度的定義測試2:超出列長度的定義mysql CREATE TABLE test_char1 - ( - varchar_1 varchar(65535) - ) ;ERROR 1074 (42000): Column length too big for column varchar_1 (max = 21845); use BLOB or TEXT insteadmysql CREATE TABLE test_char1 - ( - varchar_1 varchar(21845) - ) ;ERROR 1118 (42000):

60、Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs字符串類型測試3:符合列長度的定義mysql CREATE TABLE test_char1 - ( - varchar_1 varchar(21844) - ) ;Query OK, 0 rows affect

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論