版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
備課紙適用班級:_______P.課題項目一認識MySQL數(shù)據(jù)庫課時4課時教學目的了解數(shù)據(jù)庫的基本概念了解SQL語言會在Windows操作系統(tǒng)下安裝MySQL數(shù)據(jù)庫會啟動、登錄和配置MySQL數(shù)據(jù)庫會設置MySQL字符集重點會在Windows操作系統(tǒng)下安裝MySQL數(shù)據(jù)庫會啟動、登錄和配置MySQL數(shù)據(jù)庫會設置MySQL字符集難點配置MySQL數(shù)據(jù)庫為MySQL設置合適的字符集教具多媒體+機房課型新授作業(yè)課后習題課后項目實戰(zhàn)教學過程課時分配教學方法教學內(nèi)容教學提示:明確為什么要學這本書?學些什么?學完以后可以做什么?明確課程的結構,以及學習方法。課程引入:目前的大型應用軟件中幾乎沒有不同數(shù)據(jù)庫打交道的,數(shù)據(jù)庫就是一個企6’業(yè)的大型資料庫,一個企業(yè)的所有文件、資料和檔案都在這個庫中,MySQL學生參與討數(shù)據(jù)庫系統(tǒng)就是這個資料庫的管理者。MySQL中任何配置和程序的細微改動論程序員在都有可能對應用程序的整體效率產(chǎn)生重大影響。數(shù)據(jù)庫開發(fā)一個好的數(shù)據(jù)庫程序員,必須是首先是一個好的數(shù)據(jù)庫管理員,因此必須中的作用首先有扎實的關系數(shù)據(jù)庫理論知識和關系數(shù)據(jù)庫管理技能。備課紙適用班級:_P.目錄閱讀:2'理論基礎:項目1,了解MySQL所需要的基本概念和工具明確全書學案例設計:項目2,全書案例設計與實現(xiàn),數(shù)據(jù)庫的范式和關系代數(shù)習內(nèi)容基礎應用:項目3-4,數(shù)據(jù)庫基礎對象及數(shù)據(jù)操作查詢優(yōu)化:項目5,查詢性能優(yōu)化的方法和策略高級應用:項目6-8,數(shù)據(jù)庫程序設計及數(shù)據(jù)庫維護任務1認識數(shù)據(jù)庫任務場景在設計和使用MySQL數(shù)據(jù)庫之前,需要了解數(shù)據(jù)庫的基本概念以關系型數(shù)據(jù)庫數(shù)據(jù)的存儲方式。數(shù)據(jù)庫的基本概念基本概念介1.數(shù)據(jù)(Data)紹數(shù)據(jù)是用來記錄信息的可識別符號,是信息的具體表現(xiàn)形式。在計算機中,數(shù)據(jù)是對現(xiàn)實世界的事物采用計算機能夠識別、存儲和處理的方式進行描述,其具體表現(xiàn)形式可以是數(shù)字、文本、圖像、音頻、視頻等。2.數(shù)據(jù)庫(Database,DB)是用來存放數(shù)據(jù)的倉庫。具體的說,就是按照一定的數(shù)據(jù)結構來組織、存儲和管理數(shù)據(jù)的集合,具有較小的冗余度、較高的獨立性和易擴展性、可供多用戶共享等特點。3.數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS)是操縱和管理數(shù)據(jù)庫的軟件,介于應用程序與操作系統(tǒng)之間,為應用程序提供訪問數(shù)據(jù)庫的方法,包括數(shù)據(jù)的定義、數(shù)據(jù)操縱、數(shù)據(jù)庫運行管理及數(shù)據(jù)庫建立與維護等功能。分別介紹各當前流行的數(shù)據(jù)庫管理系統(tǒng)包括MySQL、Oracle、SQLServer、Sybase等。主流產(chǎn)品4.數(shù)據(jù)庫系統(tǒng)(DatabaseSystem,DBS)由軟件、數(shù)據(jù)庫和數(shù)據(jù)庫管理員組成。其軟件主要包括操作系統(tǒng)、各種宿主語言、數(shù)據(jù)庫應用程序以及數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理,備課紙適用班級:_P.數(shù)據(jù)的插入、修改和檢索均要通過數(shù)據(jù)庫管理系統(tǒng)進行,數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。數(shù)據(jù)庫管理員負責創(chuàng)建、監(jiān)控和維護整個數(shù)據(jù)庫,使數(shù)據(jù)能被任何有權使用的人有效使用。圖示各概念之間的關系數(shù)據(jù)庫的技術發(fā)展數(shù)據(jù)庫技術的發(fā)展演變?nèi)斯す芾恚募到y(tǒng),數(shù)據(jù)庫系統(tǒng)管理數(shù)據(jù)庫系統(tǒng)管理的發(fā)展演變層次/網(wǎng)狀數(shù)據(jù)庫系統(tǒng)關系數(shù)據(jù)庫系統(tǒng)新一代數(shù)據(jù)庫系統(tǒng)關系型數(shù)據(jù)庫數(shù)據(jù)存儲是計算機的基本功能之一。隨著計算機技術的不斷普及,數(shù)據(jù)存儲量越來越大,數(shù)據(jù)之間的關系也變得越來越復雜設問怎樣有效地管理計算機中的數(shù)據(jù)?備課紙適用班級:_P.使用模型描述數(shù)據(jù)及數(shù)據(jù)間的關系在關系模型中,實體和實體間的聯(lián)系均由單一的關系來表示。在關系型數(shù)據(jù)庫中,關系就是表,一個關系型數(shù)據(jù)庫就是由若干個二維表的集合。關系型數(shù)據(jù)庫存儲結構精講關系型數(shù)據(jù)庫是指按關系模型組織數(shù)據(jù)的數(shù)據(jù)庫,采用二維表來實現(xiàn)數(shù)據(jù)存儲,其中二維表中的每一行(row)在關系中稱為元組(記錄,record),表中的每一列(column)在關系中稱為屬性(字段,field),每個屬性都有屬性名,屬性值是各元組屬性的值。圖示分析講解關系型數(shù)據(jù)庫產(chǎn)品略講Oracle:是商用關系型數(shù)據(jù)庫管理系統(tǒng)中的典型代表,是甲骨文公司的旗艦產(chǎn)品。品。MySQL:是當下最流行的開源和多線程的關系型數(shù)據(jù)庫管理系統(tǒng),它具有快速、可靠和易于使用的特點。SQLServer:是微軟推出的關系型數(shù)據(jù)庫管理系統(tǒng),廣泛應用于電子商務、銀行、電力、教育等行業(yè),它使用Transact-SQL語言完成數(shù)據(jù)操作。SQL語言定義SQL(StructuredQueryLanguage,結構化查詢語言)是關系型數(shù)據(jù)庫語言的標準。SQL語言根據(jù)功能的不同被劃分成數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言。備課紙適用班級:_P.數(shù)據(jù)定義語言(DataDefinitionLanguage,DDL)數(shù)據(jù)操縱語言(DataManipulationLanguage,DML)數(shù)據(jù)控制語言(DataControlLanguage,DCL)應用價值數(shù)據(jù)庫中的操作都是通過執(zhí)行SQL語句來完成,它可以方便的嵌套在Java、C#、PHP等程序語言中,以實現(xiàn)應用程序?qū)?shù)據(jù)的查詢、插入、修改和刪除等操作。大數(shù)據(jù)時代的數(shù)據(jù)庫NoSQL(NotOnlySQL)泛指非關系型數(shù)據(jù)庫,采用鍵值對(key-value)方式存儲數(shù)據(jù)。主要應用于分布式數(shù)據(jù)處理環(huán)境,用于解決大規(guī)模數(shù)據(jù)集合下數(shù)據(jù)種類的多樣性問題。當下流行的NoSQL數(shù)據(jù)庫主要有Redis、MonogoDB、HBase等。NewSQL為了將傳統(tǒng)關系型數(shù)據(jù)庫事務的ACID特性和NoSQL的高性能和可擴展性性進行有機結合,以提升傳統(tǒng)關系數(shù)據(jù)庫在數(shù)據(jù)分析方面的能力。主要代表的數(shù)據(jù)庫有TiDB、VoltDB、MemSQL等。在大數(shù)據(jù)時代,適用事務處理的的傳統(tǒng)關系型數(shù)據(jù)庫、適用于高性能應用的NoSQL和適用于數(shù)據(jù)分析應用的NewSQL三種形式不會單一存在,“多種架構支持多類應用”會成為數(shù)據(jù)庫行業(yè)應用的基本思路。任務2安裝與配置MySQL數(shù)據(jù)庫任務場景要使用MySQL來存儲和管理數(shù)據(jù)庫,首先要安裝和配置MySQL數(shù)據(jù)庫。MySQL概述MySQL作為關系型數(shù)據(jù)庫的重要產(chǎn)品之一,當前被廣泛的應用在Internet上的中小型網(wǎng)站上。備課紙適用班級:_P.MySQL的優(yōu)點:可移植性好略講強大的數(shù)據(jù)保護功能提供多種存儲器引擎功能強大支持大型數(shù)據(jù)庫運行速度快MySQL的安裝與配置課堂視頻演1.MySQL的安裝示過程略2.配置MySQL過程略學習提示my.ini是MySQL正在使用的配置文件,當MySQL服務加載時會讀取該文件的配置信息。3.安裝后的目錄結構目錄中文件夾或文件具體釋義如下。詳講(1)bin文件夾:用于放置可執(zhí)行文件(2)data文件夾:用于放置日志文件以及數(shù)據(jù)庫。(3)include文件夾:用于放置頭文件,如mysql.h、mysqld_ername.h等。(4)lib文件夾:用于放置庫文件。(5)share文件夾:用于存放字符集、語言等信息。(6)my.ini:是MySQL數(shù)據(jù)庫中使用的配置文件。(7)my-huge.ini:適合超大型數(shù)據(jù)庫的配置文件。(8)my-large.ini:適合大型數(shù)據(jù)庫的配置文件。(9)my-medium.ini:適合中型數(shù)據(jù)庫的配置文件。(10)my-small.ini:適合小型數(shù)據(jù)庫的配置文件。(11)my-template.ini:是配置文件的模板。備課紙適用班級:_P.(12)my-innodb-heavy-4G.ini:表示該配置文件只對于InnoDB存儲引擎有效,且服務器的內(nèi)存不能小于4GB。更改MySQL的配置1.圖形方式略2.修改my.ini文件配置選項#數(shù)據(jù)庫連接端口,默認為3306[client]port=3306[mysql]#客戶端默認字符集default-character-set=utf8#服務器參數(shù)配置#SERVERSECTION#[mysqld]#服務器參數(shù)配置#MySQL服務程序TCP/IP監(jiān)聽端口,默認為3306port=3306#服務器安裝路徑basedir="D:/ProgramFiles/MySQL/MySQLServer8.0/"#服務器中數(shù)據(jù)文件的存儲路徑,讀者可以根據(jù)需要修改些參數(shù)datadir="C:/ProgramData/MySQL/MySQLServer8.0/Data/"#設置服務器端的字符集character-set-server=utf8#設置默認的存儲引擎,當創(chuàng)建表時若不指定存儲類型,則為INNODBdefault-storage-engine=INNODB#設置MySQL服務器的最大連接數(shù)max_connections=150#允許臨時存放在緩存區(qū)里的查詢結果的最大容量query_cache_size=15M#服務器安全配置學習提示用戶可以根據(jù)實際應用需要修改對應的配置項,并重新啟動MySQL服務即可。備課紙適用班級:_P.MySQL的使用1.啟動和停止MySQL服務(1)操作系統(tǒng)命令啟動和停止MySQL服務實操演示啟動MySQL服務的命令如下netstartmysql80停止MySQL服務的命令netstopmysql80學習提示Mysql80是安裝MySQL服務器時指定的服務器名稱。(2)Windows服務管理器啟動和停止MySQL服務2.登錄MySQL數(shù)據(jù)庫(1)命令行窗口執(zhí)行相關命令登錄MySQLmysql–hhostname–uusername-pmysql為登錄命令名,存放在MySQL的安裝目錄的bin目錄下。-h表示后面的參數(shù)hostname為服務器的主機地址,當客戶端與服務器在同一臺機器上時,hostname可以使用localhost或。-u表示后面的參數(shù)username為登錄MySQL服務的用戶名。-p則表示后面的參數(shù)為指定用戶的密碼。備課紙適用班級:_P.實例講解【例1.1】用戶root,登錄MySQL服務。mysql–hlocalhost–uroot-p學習提示當本地登錄MySQL服務器時,可以省略主機名。3.MySQL的相關命令【例1.2】查看MySQL命令幫助。mysql>help命令名簡寫說明?(\?)顯示幫助信clear(\c)清除當前輸入語句connect(\r)連接到服務器,可選參數(shù)數(shù)據(jù)庫和主機delimiter(\d)設置語句分隔符ego(\G)發(fā)送命令到mysql服務器,并顯示結果exit(\q)退出MySQLgo(\g)發(fā)送命令到mysql服務器help(\h)顯示幫助信息notee(\t)不寫輸出文件print(\p)打印當前命令prompt(\R)改變mysql提示信息quit(\q)退出MySQLrehash(\#)重建完成散列備課紙適用班級:_P.MySQL圖形化管理工具Navicat圖形方式訪MySQL圖形化管理工具可以極大的方便數(shù)據(jù)庫的操作和管理。問MySQL常用圖形化工具有NavicatforMySQL、MySQLWorkBench、phpMyAdmin等介紹本課程Navicat是可視化的MySQL管理和開發(fā)工具,用于訪問、配置、控制和管理使用工具MySQL數(shù)據(jù)庫服務器中的所有對象及組件。1.Navicat登錄MySQL服務器實例演示2.Navicat中使用命令列工具實例演示備課紙適用班級:_P.3.Navicat中使用查詢編輯器【例1.4】Navicat中執(zhí)行查詢命令,查看MySQL內(nèi)置的系統(tǒng)變量。SHOWVARIABLES;實例演示學習提示查詢編輯器默認保存地址為用戶目錄下的“Navicat\MySQL\servers\”目錄下任務3設置MySQL字符集任務場景MySQL支持服務器、數(shù)據(jù)庫、數(shù)據(jù)表和連接層四個層次的字符集,其默認字符集為拉丁文(latin1)。MySQL支持的常用字符集和校對規(guī)則字符集是一套符號和編碼的規(guī)則。字符集(CHARACTER)字符集是用來定義MySQL存儲字符串的方式校對規(guī)則(COLLATION)定義了比較字符串的方式MySQL8.0支持39種字符集和100多種校對規(guī)則。每個字符集至少對應一個校對規(guī)則。例舉latin1utf8utf8mb4gb2312備課紙適用班級:_P.實例講解【例1.5】查看MySQL支持的字符集。mysql>SHOWCHARACTERSET;實例講解【例1.6】查看uft8相關字符集的校對規(guī)則。mysql>SHOWCOLLATIONLIKE'utf8mb4_0900%';【例1.7】查看“SQL語言??”,在指定字符集下的轉(zhuǎn)換結果其中“??”為emoji字符。SELECTCONVERT('SQL語言??'USINGutf8mb4),CONVERT('SQL語言??'USINGutf8),CONVERT('SQL語言??'USINGgbk),CONVERT('SQL語言??'USINGlatin1);設置MySQL字符集MySQL支持服務器(Server)、數(shù)據(jù)庫(Database)、數(shù)據(jù)表(Table)、字段(Field)和連接層(Connection)五個層級的字符集設置。略講1.描述字符集的系統(tǒng)變量備課紙適用班級:_P.character_set_servercharacter_set_clientcharacter_set_connectioncharacter_set_resultscharacter_set_databasecharacter_set_filesystemcharacter_set_dir【例1.8】使用SHOW語句查看字符集變量。mysql>SHOWVARIABLESLIKE'char%';2.設置和修改默認字符集實例講解【例1.9】修改配置文件my.ini,設置客戶端和服務器的默認字符集為utf8。打開MySQL安裝目錄下的my.ini文件。分別修改“client”和“server”節(jié),配置如下。default_character_set=utf8保存修改結果,重新啟動MySQL服務,使修改生效?!纠?.10】使用MySQL命令修改字符集。mysql>SETcharacter_set_client=utf8mb4;mysql>SETcharacter_set_connection=utf8mb4mysql>SETcharacter_set_results=utf8mb4;備課紙適用班級:_P.3.使用MySQL字符集時的建議(1)在建立數(shù)據(jù)庫、數(shù)據(jù)表及進行數(shù)據(jù)庫操作時盡量顯式設定使用的字符集,學習提示而不是依賴于MySQL的默認設置,否則MySQL升級時可能帶來很大困擾;(2)數(shù)據(jù)庫和連接字符集都使用“l(fā)atin1”字符集時,雖然大部分情況下都可以解決亂碼問題,但缺點是無法以字符為單位來進行SQL操作。(3)建議在服務器級、結果級、客戶端、連接級、數(shù)據(jù)庫級、表級和字段級的字符集都統(tǒng)一為一種字符集一般情況下將數(shù)據(jù)庫和連接字符集都置為utf8是較好的選擇。項目實戰(zhàn)(1)訪問MySQL官網(wǎng),下載并安裝MySQL服務器。(2)利用配置向?qū)瓿蒑ySQL服務器配置。(3)使用net命令啟動和關閉MySQL服務器。(4)訪問Navicat官網(wǎng),下載并安裝Navicat軟件。(5)分別使用命令行和Navicat登錄和退出MySQL服務器。(6)使用SHOW語句分別查看MySQL的字符集變量。拓展實訓(1)打開Windows服務組件,將MySQL服務器改為自動啟動。備課紙適用班級:_P.(2)使用“SHOWSTATUS;”命令查看MySQL服務器的狀態(tài)信息。(3)使用“SHOWDATABASES;”命令查看MySQL服務器下的默認數(shù)據(jù)庫。(4)打開“my.ini”文件,記錄port、datadir、basedir、default-storage-engine、character-set-server等參數(shù)值,了解其各自含義。 備課紙適用班級:_______P.課題項目二網(wǎng)上商城系統(tǒng)數(shù)據(jù)庫建模課時4+4課時教學目的理解網(wǎng)上商城的系統(tǒng)需求理解數(shù)據(jù)庫設計的一般過程會根據(jù)系統(tǒng)需求抽象實體與實體間的關系會進行關系代數(shù)的選擇、投影及連接運算了解數(shù)據(jù)庫設計的規(guī)范化會使用PowerDesigner進行數(shù)據(jù)庫建模重點數(shù)據(jù)庫設計的一般過程抽象實體與實體間的關系使用PowerDesigner進行數(shù)據(jù)庫建模難點網(wǎng)上商城的系統(tǒng)需求抽象實體與實體間的關系教具多媒體+機房課型新授作業(yè)課后習題課后項目實戰(zhàn)教學過程課時分配教學方法教學內(nèi)容課程引入關于數(shù)據(jù)庫設計1.應用系統(tǒng)開發(fā)的一般流程?2.數(shù)據(jù)庫設計的目的?定義數(shù)據(jù)庫設計(DatabaseDesign)是指對于給定的應用環(huán)境,構造最優(yōu)的數(shù)據(jù)模式,建立數(shù)據(jù)庫及其應用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各類用戶的應用需求。數(shù)據(jù)庫建模是指在數(shù)據(jù)庫設計階段,對現(xiàn)實世界進行分析和抽象,進而確定應用系統(tǒng)的數(shù)據(jù)庫結構。備課紙適用班級:_P.任務1理解系統(tǒng)需求知識場景:B2C是電子商務的典型模式,是企業(yè)通過Internet為開展的在線銷售活動,它直接面向消費者銷售產(chǎn)品和服務。消費者通過網(wǎng)絡在網(wǎng)上選購商品和服務、發(fā)表相關評論及電子支付等。網(wǎng)上商城系統(tǒng)介紹1.系統(tǒng)概述B2C(Business-to-Customer,商家對顧客)是電子商務的典型模式,是企業(yè)通過Internet開展的在線銷售活動,它直接面向消費者銷售產(chǎn)品和服務。學生討論系統(tǒng)的一般業(yè)務流程是怎樣?主要功能有哪些?討論分析系2.系統(tǒng)面向的用戶群體統(tǒng)面向的用系統(tǒng)面向商城管理員,會員,游客三類用戶。戶系統(tǒng)功能說明1.前臺用戶購物主要包括的功能模塊瀏覽商品:游客或會員都可以通過商品展示頁面了解商品基本信息;可以通過商品詳細頁面獲知商品的詳細情況;可以根據(jù)商品名稱、商品類別、價格等條件進行商品的查詢;可對商品價格或銷售量排序,了解商品的銷售情況購買商品:會員在瀏覽商品的過程中,可以將商品添加到自己的購物車,會員在提交訂單前,可對購物車中的商品進行修改和刪除,確認購買后,系統(tǒng)將生成訂單,會員支付訂單后,可以查看自己的訂單的基本信息和訂單詳情。個人中心:在實際應用中,游客只能瀏覽商品信息,不能進行購買活動。游客可以通過注冊成為系統(tǒng)會員。會員成功登錄系統(tǒng)后,可以進行商品購買活動,也可以查看和維護個人信息,購物結束后可以注銷賬號。2.后臺信息管理主要包括的功能模塊個維護商品信息:管理員維護商品類別,根據(jù)需要添加、修改、刪除商品信息。備課紙適用班級:_P.信息。維護會員信息:管理員維護會員信息、統(tǒng)計會員的購買情況,分析會員的購買力。維護訂單:管理員可以查詢、撤銷訂單或?qū)τ唵螖?shù)據(jù)進行統(tǒng)計,生成商品銷售報表。維護管理員信息:系統(tǒng)管理員可以根據(jù)需要添加、修改和刪除一般管理員。其他管理功能:包括系統(tǒng)設置、系統(tǒng)數(shù)據(jù)備份和恢復等。3.系統(tǒng)用例圖圖示展示用戶的用例行為任務2建立系統(tǒng)數(shù)據(jù)模型任務描述要實現(xiàn)網(wǎng)上商城系統(tǒng)的數(shù)據(jù)庫管理,必須在系統(tǒng)需求分析的基礎上建立網(wǎng)上商城系統(tǒng)的數(shù)據(jù)模型。本任務主要完成如下內(nèi)容:帶著問題進什么是關系數(shù)據(jù)模型?行學習如何抽象實體、實體關系、實體屬性?如何建立E-R模型?如果將E-R模型轉(zhuǎn)換成邏輯模型及物理模型?如果規(guī)范關系模型?備課紙適用班級:_P.如果進行關系運算?關系數(shù)據(jù)模型數(shù)據(jù)模型是對現(xiàn)實世界的抽象關系型數(shù)據(jù)庫的基礎是數(shù)據(jù)模型(DateModel)關數(shù)據(jù)模型是一組向用戶提供的規(guī)則,這些規(guī)則定義了數(shù)據(jù)如何組織及允許進行何種操作。數(shù)據(jù)模型包括數(shù)據(jù)結構、數(shù)據(jù)操作和數(shù)據(jù)約束3個要素。數(shù)據(jù)模型應滿足三個方面要求能比較真實的模擬現(xiàn)實世界容易為人所理解便于在計算機上實現(xiàn)1.數(shù)據(jù)模型的組成要素數(shù)據(jù)結構:數(shù)據(jù)結構是數(shù)據(jù)模型的基礎,不同的數(shù)據(jù)結構具有不同的操作和約束。描述數(shù)據(jù)庫系統(tǒng)的靜態(tài)特征,如數(shù)據(jù)庫中表的結構定義、視圖定義等。數(shù)據(jù)操作:描述系統(tǒng)的動態(tài)特征,主要是在數(shù)據(jù)庫中對每個數(shù)據(jù)對象允許執(zhí)行的操作集合主要包括數(shù)據(jù)的添加、更改、刪除和查詢等。數(shù)據(jù)約束:用來描述數(shù)據(jù)結構內(nèi)數(shù)據(jù)間完整性規(guī)則的集合。完整性規(guī)則是數(shù)據(jù)及其關系所具有的制約和儲存規(guī)則,用來限定符合數(shù)據(jù)庫的語法、關系和它們間的制約與依存及數(shù)據(jù)動態(tài)的規(guī)則,以保證數(shù)據(jù)的正確性、有效性和兼容性。數(shù)據(jù)模型的分類備課紙適用班級:_P.(1)概念數(shù)據(jù)模型:是面向用戶的數(shù)據(jù)模型,E-R模型。E-R模型的主實體(Entity)要對象屬性(Attribute)標識符(Identifier)實體集(EntitySet)(2)邏輯數(shù)據(jù)模型:是用戶在數(shù)據(jù)庫中所看到的數(shù)據(jù)模型邏輯模型的字段(Field)主要對象記錄(Record)關鍵字(Keyword)表(Table)(3)物理數(shù)據(jù)模型:描述數(shù)據(jù)在物理存儲介質(zhì)上的組織結構,與DBMS相關模型的演化過程實體和關系備課紙適用班級:_P.1.實體、實體集實體是一個數(shù)據(jù)對象,是客觀存在且相互區(qū)分的事物。分析結論一個實體集中通常有多個實例。當描述實體的屬性值越多時,所描述的實體越清晰。實體通過一組屬性來表示,屬性是實體集中每個成員所擁有的特性,不同的實體其屬性值不同。舉例說明實體與屬性的表示方法2.關系定義關系是指多個實體間的相互關聯(lián)。關系集(RelationshipSet)是同類聯(lián)系的集合,是n(n≥2)個實體集上的數(shù)學關系。實體與關系的表示關系屬性的表示方法3.關系事物內(nèi)部及事物之間都存在一定的聯(lián)系,這些聯(lián)系在信息世界中反映為實體內(nèi)備課紙適用班級:_P.部的聯(lián)系和實體間的關系。舉例說明三種關系一對一關系一對多關系多對多關系建立E-R模型數(shù)據(jù)庫設計的第一步就是進行概念模型的設計,而概念模型最常用的表示方法為E-R模型。學習提示由于E-R模型接近人類的思維方式,容易理解并且與計算機無關,所以用戶容易接受。PeterChen陳氏畫法建立E-R模型的步驟備課紙適用班級:_P.1.標識實體實體通常由系統(tǒng)中的文檔、報表或需求調(diào)研中的名詞。如人物、地點、概念、事件或設備等表述。學生討論根據(jù)網(wǎng)上商城的系統(tǒng)業(yè)務,分析該系統(tǒng)中的實體有哪些?抽象結果2.標識實體間的關系實體間的關系由動詞或動詞短語來表示。例:會員和訂單實體間的關系學生討論根據(jù)網(wǎng)上商城的系統(tǒng)業(yè)務,分析該系統(tǒng)中的實體關系怎樣?關系分析結果實體實體關系類型關系類型會員商品添加購物車多對多(m:n)商品訂單生成訂單詳情多對多(m:n)會員訂單有一對多(1:n)商品商品類別屬于多對一(1:n)3.標識實體的屬性屬性是實體實例的特性或性質(zhì)。學生討論根據(jù)網(wǎng)上商城的系統(tǒng)業(yè)務,分析該系統(tǒng)中的實體或關系的屬性?歸納與標識實體類相似,標識實體屬性時先要在用戶需求說明中查找描述性的名備課紙適用班級:_P.詞,當這個名詞是特性、標志或確定實體的特性時即可被標識成為實體的屬性。例:會員實體的屬性4.確定主關鍵字關鍵字的確每一個實體必須要有一個屬性用來唯一地標識該實體以區(qū)分其他實體的特性認規(guī)則這種屬性稱為關鍵字。關鍵字的值在實體集中必須是唯一的,且不能為空,它唯一地標識了實體集中的一個實例。在實體屬性圖中,在主關鍵字上加下劃線。例:會員ID作為主鍵按照以上步驟將每一個實體及實體的關系抽象,完成概念數(shù)據(jù)模型的建立。(在B2C網(wǎng)上商城中,本課程僅考慮會員購買商品相關的業(yè)務)備課紙適用班級:_P.邏輯模型設計設問E-R模型是面向用戶的模型,設計的E-R模型如何轉(zhuǎn)換成計算機能識別的模型呢?邏輯數(shù)據(jù)模型是用戶在數(shù)據(jù)庫中所看到的數(shù)據(jù)模型,它由概念模型轉(zhuǎn)換得到轉(zhuǎn)換原則詳講(1)實體轉(zhuǎn)換原則將E-R模型中的每一個實體轉(zhuǎn)換成一個關系,即二維表;實體的屬性轉(zhuǎn)換為關系的字段實體的標識符轉(zhuǎn)換成關系模式中的主關鍵字。(2)關系轉(zhuǎn)換原則若實體間聯(lián)系為1:1時,可以在兩個實體類型轉(zhuǎn)換成兩個關系模式中任意一個關系模式中加入另一個關系模式的主關鍵字作為實體聯(lián)系的屬性。若實體間聯(lián)系為1:n時,則在n端實體類型轉(zhuǎn)換的關系模式中加入1端實體類型的關鍵字實體聯(lián)系的屬性。若實體間聯(lián)系為n:m時,則要將實體間聯(lián)系也轉(zhuǎn)換成關系模式,其屬性為兩端實體類型的關鍵字。網(wǎng)上商城系統(tǒng)的邏輯模型轉(zhuǎn)換如下。舉例商品類別(類別id,類別名稱)商品(商品id,商品編號,商品名稱,價格,庫存數(shù)量,……類別id)會員(會員id,登錄名(電話號碼),用戶名,密碼,性別,積分,……)訂單(訂單id,訂單金額,下單時間,會員id)購物車(購物車id,會員id,商品id,購買數(shù)量)訂單詳情(詳情Iid,訂單id,商品id,購買數(shù)量)學習提示:E-R數(shù)據(jù)模型和邏輯數(shù)據(jù)模型的都獨立于任何一種具體的DBMS,要最終實現(xiàn)用戶數(shù)據(jù)庫,需要將E-R數(shù)據(jù)模型或邏輯數(shù)據(jù)模型轉(zhuǎn)換為DBMS所支持的物理數(shù)據(jù)模型。備課紙適用班級:_P.關系模式的規(guī)范化如何衡量數(shù)據(jù)庫設計的優(yōu)劣?在關系數(shù)據(jù)庫中,規(guī)則范的理論稱為范式。范式是符合某一級別的關系模式集合。關系數(shù)據(jù)庫中的關系必須滿足一定的要求,即滿足不同的范式。詳講1.第一范式不滿足第一范式的數(shù)據(jù)庫就不是關系型數(shù)據(jù)庫。第一范式是指數(shù)據(jù)庫表的每一列都是不可分割的基本數(shù)據(jù)項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。簡而言之,第一范式就是無重復的列。例:不符合第一范式的會員信息表2.第二范式第二范式要求數(shù)據(jù)庫表中的每個實例或行必須能被唯一地區(qū)分。在第二范式中,要求實體的屬性完全依賴于主關鍵字。舉例在網(wǎng)上商城系統(tǒng)中,會員和商品間存在“添加購物車”關系如下分析{會員id,商品id}→{用戶名,商品名稱,價格,購買數(shù)量}這種模式存數(shù)據(jù)冗余:如同一件商品被n個用戶購買,則商品id,商品名稱,價格在的問題就要重復n-1次;當一個會員購買m件商品時,其用戶名就要重復m-1次。備課紙適用班級:_P.更新異常:若某件商品的價格要進行折扣銷售,則整個表中該商品的價格都要進行修改,否則會出現(xiàn)同一件商品價格不同的情況。改進方案對上述選課關系進行拆分后可形成如下3個關系。會員:users(會員id,用戶名)商品:goods(商品id,商品編號,價格)購物車:cart(會員id,商品id,購買數(shù)量)修改后的關系模式有效消除了數(shù)據(jù)冗余,更新、插入和刪除異常。學習提示在實際開發(fā)中,通常會為購物車表加上“購物車id”字段作為主鍵,以此來區(qū)別每一條購買記錄。3.第三范式第三范式要求關系表中不存在非關鍵字對任一候選關鍵字的傳遞函數(shù)依賴。提問什么是傳遞函數(shù)依賴?傳遞函數(shù)依賴是指如果存在“A→B→C”的決定關系,則C傳遞函數(shù)依賴于A。第三范式要求關系表不包含其他表中已包含的非主關鍵字段信息。討論關系模式{商品id}→{商品名稱,價格,類別id,類別名稱}符合哪一級范式?符合第二范式的要求,但不符合第三范式。因為還存在{商品id}→{類別id}→{類別名稱}的關系。存在的問題數(shù)據(jù)冗余:一個類別有多種商品,類別名稱會重復n-1次。更新異常:若要更改某類別名稱,則表中所有該類別的類別名稱的值都需要更改,否則就會出一件商品對應多種類別。插入異常:若新增了一種商品類別,如果還沒有指定到商品,則該類別名備課紙適用班級:_P.稱無法插入到數(shù)據(jù)庫中。刪除異常:當要刪除一種商品類別時,那就應該刪除它在數(shù)據(jù)庫中的記錄,而此時與相關的商品信息也會被刪除。改進方案要消除以上問題,就需要對關系進行拆分,去除非主關鍵字的傳遞依賴關系商品:goods(商品id,商品名稱,價格,類別id)商品類別:category(類別id,類別名稱)總結分析范式具有避免數(shù)據(jù)冗余、減少數(shù)據(jù)庫占用的空間、減輕維護數(shù)據(jù)完整性的工作量等優(yōu)點,但是隨著范式的級別升高,其操作難度越來越大,同時性能也隨之降低。因此,在數(shù)據(jù)庫設計中,尋求數(shù)據(jù)可操作性和可維護性之間的平衡,對數(shù)據(jù)庫設計者而言比較困難。關系代數(shù)定義關系代數(shù)是一種抽象的查詢語言,是關系數(shù)據(jù)操縱語言的傳統(tǒng)表達方式,它用關系運算來表達數(shù)據(jù)查詢。1.關系運算符關系代數(shù)的運算對象是關系,運算結果也是關系。關系運算符如下。備課紙適用班級:_P.2.傳統(tǒng)的集合運算(1)關系的并R∪S={t|t∈RVt∈S}(2)關系的差R-S={t|t∈R∧t?S}(3)關系的交R∩S={t|t∈R∧t∈S}(4)笛卡爾積R×S={trts|tr∈R∧ts∈S}舉例說明關【例2.1】設有3個關系R、S和T,如圖所示。系運算法則分別求出R∪S、R-S、R∩S和R×T的運算結果。運算結果分析3.專門的關系運算專門的關系運算包括選擇、投影、連接和除等運算。備課紙適用班級:_P.(1)選擇運算σF(R)={t|t∈R∧F(t)=TRUE}舉例說明【例2.2】查詢會員(Users)關系中,性別為“男”的會員信息。σ性別=’男’(Users)或σ3=’男’(Users)結果分析(2)投影運算πx(R)={t[x]|t∈R}舉例說明【例2.3】查詢會員(Users)的用戶名、性別和積分。π用戶名,性別,積分(Users)或π2,3,5(Users)結果分析(3)連接運算θ連接R?R?S={trts|tr∈R∧ts∈S∧tr[A]θts[B]}AθB自然連接R?S={trts|tr∈R∧ts∈S∧tr[A]=ts[A]}舉例說明【例2.5】查詢類別為服飾的商品信息。備課紙適用班級:_P.設Goods關系為R,GoodsType關系為S,由于兩個關系中有共同的屬性類別ID,則進行的連接運算為自然連接,其關系運算表達式可以描述如下。σ類別名稱=’服飾’(R?S)(4)除運算笛卡爾積的逆運算。設被除關系R有m元關系,除關系S有n元關系,那么它們的商為m-n元關系,記為R÷S。其中在關系R中每個元組i與關系S中每個元組j組成的新元組必在關系中R中。商的構成原則是將被除關系R中的m-n列,按其值分成若干組,檢查每一組的n列值的集合是否包含除關系S,若包含則取m-n列的值作為商的一個元組,否則不取。舉例說明【例2.7】設有關系R和關系S,如圖所示。求R÷S的運算結果。第1步:找出關系R和關系S中相同的屬性,設為關系Y,并從關系S中投影出關系Y。第2步:從關系R中,投影出與關系S不相同的屬性,記為關系X。第3步:找出關系X中每個元組對應于關系Y的象集,即元組(2,1)、(2,2)、(3,2)對應的Y值。第4步:判斷包含關系,若某個元組在關系Y上的象集完全包含關系Y的所有元組,則該元組在關系X上的投影即為所求。任務3使用PowerDesigner建立系統(tǒng)模型備課紙適用班級:_P.任務場景在網(wǎng)上商城系統(tǒng)概念數(shù)據(jù)和邏輯模型設計完成后,需要將模型轉(zhuǎn)換成相應的物理數(shù)據(jù)模型,并生成數(shù)據(jù)庫。PowerDesigner是現(xiàn)今數(shù)據(jù)庫建模市場中最為流行的工具之一,它能夠方便地實現(xiàn)概念模型、物理模型和數(shù)據(jù)庫之間的轉(zhuǎn)換。PowerDesigner簡介略講工欲善其事,必先利其器當前流利的設計工具:PD,RationalRose,VisioPowerDesigner支持的模型建立概念數(shù)據(jù)模型建立概念數(shù)據(jù)模型的實質(zhì)就是在PowerDesigner工具中繪制實體關系圖舉例+演示備課紙適用班級:_P.建立物理數(shù)據(jù)模型物理數(shù)據(jù)模型與數(shù)據(jù)庫的正逆向工程略課后實戰(zhàn)對于網(wǎng)上商城系統(tǒng)進行系統(tǒng)升級,新增兩個功能。對其進行數(shù)據(jù)庫需求分析和設計。(1)新增商品打折功能,管理員可以對每件商品進行折扣設定,會員購買該商品時就可以享受相應的折扣。(2)在商品分類上支持多層級分類,例如生鮮類可細分蔬菜水果、肉類、乳制品,肉類又可進一步細分成豬肉、牛羊肉、禽類等。管理員可以修改商品分類,調(diào)整目錄層級,用戶可以通過層級分類一步一步找到自己所需的商品。實踐內(nèi)容完成系統(tǒng)升級后的數(shù)據(jù)庫設計。(1)分析系統(tǒng)升級后,針對系統(tǒng)中的實體,標識實體間的關系,繪制E-R模型。(2)根據(jù)數(shù)據(jù)庫管理系統(tǒng)的要求,求E-R模型轉(zhuǎn)換成為物理數(shù)據(jù)模型。(3)撰寫數(shù)據(jù)庫設計說明書。備課紙適用班級:_______P.課題項目三操作系統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)表課時6+4課時教學目的會創(chuàng)建和維護數(shù)據(jù)庫掌握MySQL的數(shù)據(jù)類型了解MySQL數(shù)據(jù)庫存儲引擎會創(chuàng)建和維護數(shù)據(jù)表能為表中的列設計合理的約束會使用SQL語句插入、更新、刪除數(shù)據(jù)表中的數(shù)據(jù)重點創(chuàng)建和維護數(shù)據(jù)庫會創(chuàng)建和維護數(shù)據(jù)表約束設計修改數(shù)據(jù)難點數(shù)據(jù)庫存儲引擎合理設計約束教具多媒體+機房課型新授作業(yè)課后習題課后項目實戰(zhàn)教學過程課時分配教學方法教學內(nèi)容課程引入:數(shù)據(jù)庫是數(shù)據(jù)存儲的倉庫。3’創(chuàng)建及管理數(shù)據(jù)庫是MySQL最基本的操作任務1創(chuàng)建和維護數(shù)據(jù)庫知識場景:完成網(wǎng)上商城數(shù)據(jù)庫的邏輯設計后,接下來的工作是在MySQL數(shù)據(jù)庫管理系統(tǒng)中創(chuàng)建該數(shù)據(jù)庫,并實現(xiàn)相應的配置和管理工作。備課紙適用班級:_P.帶著問題開本任務討論如下內(nèi)容:展本章學習(1)怎樣建立數(shù)據(jù)庫?激發(fā)學習興(2)當用戶需求發(fā)生變化時,怎樣設置和管理數(shù)據(jù)庫的變化?趣(3)MySQL數(shù)據(jù)庫由哪些文件組成?創(chuàng)建和查看數(shù)據(jù)庫實例講解創(chuàng)【例3.1】使用Navicat工具,創(chuàng)建名為onlinedb的數(shù)據(jù)庫。建過程使用圖形工具創(chuàng)建數(shù)據(jù)庫,操作步驟略。使用SQL語句創(chuàng)建數(shù)據(jù)庫CREATEDATABASE數(shù)據(jù)庫名[DEFAULT]CHARACTERSET編碼方式|[DEFAULT]COLLATE排序規(guī)則;語法說明。CREATEDATABASE是SQL語言中用于創(chuàng)建數(shù)據(jù)庫的命令;數(shù)據(jù)庫名:表示待創(chuàng)建的數(shù)據(jù)庫名稱,該名稱在數(shù)據(jù)庫服務器中是唯一的;[DEFAULT]CHARACATERSET:指定數(shù)據(jù)庫的字符集名稱;[DEFAULT]COLLATEcollation_name:指定數(shù)據(jù)庫的排序規(guī)則名稱解釋+演示【例3.2】使用SQL語句,創(chuàng)建名為onlinedb的數(shù)據(jù)庫在執(zhí)行結果的提示信息中,“QueryOK”表示執(zhí)行成功,“1rowaffected”表示1行受到影響。查看數(shù)據(jù)庫命令提示行下可以使用SQL語句來查看數(shù)據(jù)庫服務器中的數(shù)據(jù)庫列表SHOWDATABASES;備課紙適用班級:_P.實例+演示【例3.3】使用SHOWDATABASES語句,查看數(shù)據(jù)庫服務器中存在的數(shù)據(jù)庫若想查看指定數(shù)據(jù)庫的信息,可以使用SHOW語句演示【例3.4】使用SHOW語句,查看數(shù)據(jù)庫onlinedb的信息修改數(shù)據(jù)庫ALTERDATABASE數(shù)據(jù)庫名[DEFAULT]CHARACTERSET編碼方式|[DEFAULT]COLLATE排序規(guī)則;實例+演示【例3.5】使用SQL語句,修改數(shù)據(jù)庫onlinedb的字符集設置為uft8,排序規(guī)則設置為utf8_bin。刪除數(shù)據(jù)庫刪除數(shù)據(jù)庫是指在數(shù)據(jù)庫系統(tǒng)中刪除已經(jīng)存在的數(shù)據(jù)庫。DROPDATABASE數(shù)據(jù)庫名;備課紙適用班級:_P.【例3.6】刪除數(shù)據(jù)庫服務器中名為onlinedb的數(shù)據(jù)庫學習提示刪除數(shù)據(jù)庫會刪除該數(shù)據(jù)庫中所有的表和所有數(shù)據(jù),且不能恢復,因此在執(zhí)行刪除數(shù)據(jù)庫操作時要慎重。MySQL的存儲引擎1.存儲引擎簡介存儲引擎就是數(shù)據(jù)的存儲技術。數(shù)據(jù)庫的存儲引擎決定了數(shù)據(jù)表在計算機中的存儲方式。DBMS使用數(shù)據(jù)存儲引擎進行創(chuàng)建、查詢、修改數(shù)據(jù)。學習提示Oracle和SQLServer等關系型數(shù)據(jù)庫系統(tǒng)都只提供一種存儲引擎,所以它們的數(shù)據(jù)存儲管理機制都一樣。2.查看MySQL支持的存儲引擎演示+精講SHOWENGINES;Engine指存儲引擎名稱Support參數(shù)說明mysql是否支持該類引擎Comment參數(shù)指對該引擎的說明Transactions參數(shù)表示是否支持事務處理XA參數(shù)表示是否支持分布式交易處理的XA規(guī)范備課紙適用班級:_P.實例+演示【例3.8】查看MySQL服務器系統(tǒng)支持的默認存儲引擎。3.InnnoDB存儲引擎InnoDB是MySQL的默認事務型引擎,也是最重要、使用最廣泛的存儲引擎。特性:InnoDB具有提交、回滾和崩潰恢復能力的事物安全(ACID兼容)InnoDB是為處理巨大數(shù)據(jù)量的最大性能設計,被用在眾多需要高性能的大型數(shù)據(jù)庫站點上。InnoDB支持外鍵完整性約束,存儲表中的數(shù)據(jù)時,每張表的存儲都按主鍵順序存放,如果沒有在表定義時指定主鍵,InnoDB會為每一行生成一個6字節(jié)的ROWID列,并以此作為主鍵。MySQL數(shù)據(jù)庫的的組成1.MySQL數(shù)據(jù)庫文件MySQL中每一個數(shù)據(jù)庫,在data目錄下都會有一個與數(shù)據(jù)庫同名的文件夾,用于存儲該數(shù)據(jù)庫的表文件。MySQL數(shù)據(jù)庫文件的組成取決于該數(shù)據(jù)庫使用的存儲引擎,因此這里僅介紹InnoDB存儲引擎相關的數(shù)據(jù)文件。備課紙適用班級:_P.2.系統(tǒng)數(shù)據(jù)庫MySQL的數(shù)據(jù)庫包括系統(tǒng)數(shù)據(jù)庫和用戶數(shù)據(jù)庫。系統(tǒng)數(shù)據(jù)庫是由MySQL安裝程序自動創(chuàng)建的數(shù)據(jù)庫,用于存放和管理用戶權限和其他數(shù)據(jù)庫的信息,包括數(shù)據(jù)庫名、數(shù)據(jù)庫中的對象及訪問權限等信息。MySQL中的系統(tǒng)數(shù)據(jù)庫數(shù)據(jù)庫名說明mysqlMySQL的核心數(shù)據(jù)庫,用于存儲MySQL服務的系統(tǒng)信息表,包括授權系統(tǒng)表、系統(tǒng)對象信息表、日志系統(tǒng)表、服務器端輔助系統(tǒng)表等服務器控制和管理信息information_schema用于保存MySQL服務器所維護的所有數(shù)據(jù)庫的信息,包括數(shù)據(jù)庫名、數(shù)據(jù)庫的表、表中列的數(shù)據(jù)類型與訪問權限等。此數(shù)據(jù)庫中的表均為視圖,因此在用戶或安裝目錄下無對應數(shù)據(jù)文件performance_schema用于收集數(shù)據(jù)庫服務器的性能參數(shù)。此數(shù)據(jù)庫中所有表的存儲引擎為performance_schema,用戶不能創(chuàng)建存儲引擎為performance_schema的表。默認情況下該數(shù)據(jù)庫為關閉狀態(tài)syssys數(shù)據(jù)庫中所有數(shù)據(jù)來自performance_schema。目標是把performance_schema的把復雜度降低,讓DBA(數(shù)據(jù)庫管理員)更快的了解DB的運行情況。
學習提示不要隨意刪除和更改系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)內(nèi)容,否則會使MySQL服務器不能正常運行。任務2解讀MySQL的數(shù)據(jù)類型任務描述數(shù)據(jù)類型決定了數(shù)據(jù)的存儲格式和有效范圍等。MySQL提供了豐富的數(shù)據(jù)類型,包括整數(shù)類型、小數(shù)類型、字符串類型、日期類型和JSON類型等。學生討論Java語言中支持哪些數(shù)據(jù)類型?基本類型和包裝類型備課紙適用班級:_P.整數(shù)類型整數(shù)類型是數(shù)據(jù)庫中最基本的數(shù)據(jù)類型MySQL支持數(shù)據(jù)類型的名稱后面指定該類型的顯示寬度數(shù)據(jù)類型(顯示寬度)數(shù)據(jù)類型參數(shù)指的是數(shù)據(jù)類型名稱;顯示寬度指能夠顯示的最大數(shù)據(jù)長度字節(jié)數(shù);實例+演示【例3.9】創(chuàng)建test_int表,用于測試整數(shù)類型的數(shù)據(jù)存儲。(1)創(chuàng)建test_int數(shù)據(jù)表(2)向表test_int中,添加兩條測試記錄如下。(3)查看表結構(4)查詢test_int表。小數(shù)類型使用浮點數(shù)和定點數(shù)來表示小數(shù)。浮點數(shù)類型包括單精度浮點數(shù)(FLOAT)和雙精度浮點數(shù)(DOUBLE),定點數(shù)類型是DECIMAL;DECIMAL型的有效取值范圍由M和D決定其中M表示數(shù)據(jù)的長度,D表示小數(shù)點后的長度備課紙適用班級:_P.實例+演示【例3.10】創(chuàng)建test_dec表,用于測試小數(shù)類型的數(shù)據(jù)存儲。(1)創(chuàng)建測試表(2)添加測試數(shù)據(jù)(3)查詢表結果分析結論從執(zhí)行結果可以看出,浮點型數(shù)據(jù)雖然支持精度,但并沒按預期輸出結果,存在數(shù)據(jù)誤差。實際應用中,類似貨幣等對精度敏感的數(shù)據(jù),建議使用DECIMAL類型。日期類型實例+演示【例3.11】創(chuàng)建test_date表,用于測試日期類型的數(shù)據(jù)存儲。(1)創(chuàng)建測試表(2)添加測試數(shù)據(jù)(3)查詢表結果分析結論YEAR類型精確到年份、DATE類型精確到日、TIME類型取時分秒、DATETIME和TIMESTAMP都可以精確到秒。實際開發(fā)中,TIMESTAMP支持動態(tài)默認值,當使用ONUPDATECURRENT_TIMESTAMP定義TIMESTAMP后,每一次對記錄的修改都會用系統(tǒng)當前時間自動更新時間。在要實時記錄更新時間的場景中,TIMESTAMP類型是最合適的選擇。字符串類型字符串類型是一種非常重要的數(shù)據(jù)類型,小到名稱,大到一篇博客都可以作為字符串。備課紙適用班級:_P.一般來說,MySQL指定的允許長度包括存儲空間和額外開銷的長度。實例+演示【例3.12】創(chuàng)建test_char1表,測試字符串類型單列數(shù)據(jù)存儲大小。(1)測試1:超出單列長度的定義分析結論錯誤提示列的長度最多為21845,這說明VARCHAR數(shù)據(jù)類型按字符存儲。其中,這里字符集默認為utf8mb4,每個字符占3個字節(jié)。(2)測試2:超出單列長度的定義分析結論錯誤提示行的長度最大為65535。這說明MySQL除對單列限制長度外,同時也限制單行長度不能超過65535;由于VARCAHR類型在存儲時有1個字符的開銷,因此21845+1超出了范圍。(3)測試3:符合單列長度的定義備課紙適用班級:_P.分析結論test_char1表創(chuàng)建成功。在使用VARCHAR存儲字符串,字符集設為utf8mb4時,最多存儲21844個字符。學習提示實際開發(fā)中,大多數(shù)要處理的字符串都是VARCHAR類型,且從執(zhí)行效率來說,TEXT和BLOB不如CHAR和VARCHAR,建議只有當需要保存大數(shù)量數(shù)據(jù)時,才選擇使用TEXT和BLOB類型。JSON類型JSON是一種輕量級的數(shù)據(jù)交換格式,是ECMAScript(歐洲計算機協(xié)會制定的JS規(guī)范)的子集,由于其簡潔和清晰的層次結構,已成為當前最為流行的數(shù)據(jù)交換格式,其本質(zhì)是一個字符串。MySQL中,JSON類型的值主要有對象和數(shù)組兩種方式。(1)JSON對象:用符號“{}”表示,其數(shù)據(jù)以鍵/值對組合,其中鍵名用雙引號“”包裹,使用冒號“:”分隔,后面緊跟鍵對應的值,形式如下所示。(2)JSON數(shù)組:用符號“[]”將數(shù)據(jù)一一列舉,與其他程序語言中數(shù)組不同的是,JSON數(shù)組支持不同數(shù)據(jù)類型的值存放在同一數(shù)組中。實例演示【例3.14】創(chuàng)建test_json表,測試JSON數(shù)據(jù)類型的存儲。學習提示與MySQL提供的字符串類型比,JSON數(shù)據(jù)類型具有優(yōu)化存儲格式、自動驗證格式等優(yōu)點,但其所需空間與LONGTEXT或LONGBLOB相同,且不能有默認值。任務3創(chuàng)建和操作數(shù)據(jù)表任務描述數(shù)據(jù)表是數(shù)據(jù)庫中存儲數(shù)據(jù)的基本單位,一個數(shù)據(jù)庫可包含若干個數(shù)據(jù)表。數(shù)據(jù)庫程序員在創(chuàng)建完數(shù)據(jù)庫后需要創(chuàng)建數(shù)據(jù)表,并確定表中各個字段列的名備課紙適用班級:_P.稱、數(shù)據(jù)類型、數(shù)據(jù)精度、是否為空等屬性。提出問題本任務主要闡述如下內(nèi)容。1.如何創(chuàng)建數(shù)據(jù)表,使用圖形工具或SQL語句創(chuàng)建表2.怎樣定義表中各列3.如何修改數(shù)據(jù)表4.如何刪除數(shù)據(jù)表回顧數(shù)據(jù)庫關系數(shù)據(jù)庫中,表是以行和列的形式組織,數(shù)據(jù)存在于行和列相交的單元格中,表的結構一行數(shù)據(jù)表示一條唯一的記錄,一列數(shù)據(jù)表示一個字段,唯一標識一行記錄的屬性稱為主鍵。1.查看數(shù)據(jù)表【例3.9】查看onlinedb數(shù)據(jù)庫下數(shù)據(jù)表。mysql>USEonlinedb;Databasechangedmysql>SHOWTABLES;2.使用Navicat圖形工具創(chuàng)建表實例講解備課紙適用班級:_P.3.使用CREATETABLE語句創(chuàng)建表語法精講IFNOTEXISTS:可選參數(shù),判斷表不存在時才執(zhí)行創(chuàng)建表的語句。表名:表示所要創(chuàng)建的表的名稱,若不在當前數(shù)據(jù)庫中創(chuàng)建表,則需要使用數(shù)據(jù)庫名.表名的方式引用,例如:onlinedb.users,表示在onlinedb數(shù)據(jù)庫下的表users。字段定義字段名類型[NOTNULL|NULL][DEFAULT默認值][AUTO_INCREMENT][UNIQUEKEY|PRIMARYKEY][COMMENT‘字符串’][外鍵定義]NULL(NOTNULL):表示字段是否可以為空。DEFUALT:指定字段的默認值。AUTO_INCREMENT:設置字段為自增,只有整數(shù)類型的字段才能設置自增。自增默認基數(shù)從1開始,步長為1,每個表只能有一個自增字段。UNIQUEKEY:唯一性約束。PRIMARYKEY:主鍵約束。COMMENT:注釋字段。
外鍵定義:外鍵約束?!纠?.17】使用CREATETABLE語句,創(chuàng)建users表備課紙適用班級:_P.實例講解學習提示表的名稱必須符合命名規(guī)則,且不能為SQL語言的關鍵字,如create、update、order等。使用有意義的英文詞匯,詞匯中間以下劃線分隔。只能使用英文字母,數(shù)字,下劃線,并以英文字母開頭,不超過32個字符,須見名知意,建議使用名詞不是動詞。4.查看表結構(1)使用DESCRIBE語句可以查看表的基本定義【例3.18】使用DESCRIBE語句查看users的表結構實例講解mysql>DESCRIBEonlinedb.users;+++++++|Field|Type|Null|Key|Default|Extra|+++++++|uid|int(11)|NO|PRI|NULL|auto_increment||uname|varchar(30)|NO||NULL|||upwd|varchar(50)|NO||NULL|||ugender||YES||男||+++++++4rowsinset(0.02sec)學習提示:DESCRIBE可以縮寫成DESC(2)使用SHOWCLOUMNSFROM語句查看表結構學習提示SHOW[FULL]COLUMNSFROM表名;若使用FULL關鍵字,則顯示基本結構外,還會顯示權限和注釋列;當不帶關鍵字FULL時,結構顯示與DESCIBE語句結果相同。備課紙適用班級:_P.【例3.19】使用SHOWFULLCOLUMNSFROM語句查看users的表結構。實例講解Privileges表示對該列的權限(3)使用SHOWCREATETABLE語句查看表結構使用SHOWCREATETABLE不僅可以查看表的詳細定義,還可以查看表使用的默認的存儲引擎和使用的字符集SHOWCREATETABLE表名;實例講解【例3.20】使用SHOWCREATETABLE語句查看users的表結構mysql>SHOWCREATETABLEusers\G;***************************1.row***************************Table:usersCreateTable:CREATETABLE`users`(`uid`intNOTNULLAUTO_INCREMENTCOMMENT'用戶id',`uname`varchar(30)NOTNULL,`upwd`varchar(50)NOTNULL,`ugender`char(1)DEFAULT'男',PRIMARYKEY(`uid`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci1rowinset(0.00sec)學習提示默認情況下,MySQL的查詢結果是橫向輸出的,第一行是表頭,其余行為記錄集。當字段比較多時,顯示的結果非常亂,不方便查看,這時可以在執(zhí)行語句后加上參數(shù)“\G”,以縱向輸出表結構?!纠?.21】使用\G語法查看users的表結構,執(zhí)行結果如下。備課紙適用班級:_P.mysql>DESCUSERS\G;***************************1.row***************************Field:uidType:intNull:NOKey:PRIDefault:NULLExtra:auto_increment***************************2.row***************************Field:unameType:varchar(30)Null:NOKey:Default:NULLExtra:***************************3.row***************************Field:upwdType:varchar(50)Null:NOKey:Default:NULLExtra:***************************4.row***************************Field:ugenderType:char(1)Null:YESKey:Default:男Extra:4rowsinset(0.00sec)表的結構按縱向進行排列,且每個字段單獨顯示,方便閱讀修改表1.修改表名語法講解ALTERTABLE原表名RENAME[TO]新表名;實例講解【例3.22】將數(shù)據(jù)庫onlinedb中的users表更名為users_new表備課紙適用班級:_P.mysql>ALTERTABLEusersRENAMEusers_new;QueryOK,0rowsaffected(0.01sec)2.修改字段語法講解修改字段可以實現(xiàn)修改字段名、字段類型等操作。在一張表中,字段名稱是唯一的。ALTERTABLE表名CHANGE原字段名新字段名新數(shù)據(jù)類型;實例講解【例3.23】將users_new表中upwd的字段名稱修改為upassword,數(shù)據(jù)類型為varchar(50)。mysql>ALTERTABLEusers_newCHANGEupwdupasswordvarchar(50);QueryOK,0rowsaffected(0.03sec)Records:0Duplicates:0Warnings:0其中“Records:0”表示0條記錄,“Duplicates:0”表示0條記錄重復,“Warning:0”表示0個警告??梢允褂肈ESC語句查看字段修改是否成功。學習提示在修改字段時,必須指定新字段名的數(shù)據(jù)類型,即使新字段的類型與原類型相若只需要修改字段的類型,使用的SQL語句語法如下。語法講解ALTERTABLE表名MODIFY字段名新數(shù)據(jù)類型;表名指的是要修改的表的名稱,字段名指的是待修改的字段名稱,新數(shù)據(jù)類型為修改后的新數(shù)據(jù)類型?!纠?.24】修改users_new表,將upassword字段類型改為varbinary,長度為50。mysql>ALTERTABLEusers_newMODIFYupasswordvarbinary(50);QueryOK,0rowsaffected(0.03sec)Records:0Duplicates:0Warnings:0可以使用DESC語句可以查看字段類型修改是否成功備課紙適用班級:_P.學習提示MODIFY和CHANGE都可以改變字段的數(shù)據(jù)類型,但CHANGE可以在改變字段數(shù)據(jù)類型的同時,改變字段名。3.修改字段的排列位置語法講解ALTERTABLE表名MODIFY字段名1數(shù)據(jù)類型FIRST|AFTER字段名2字段名1指待修改位置的字段名,數(shù)據(jù)類型是字段名1的數(shù)據(jù)類型,參數(shù)FIRST表示將字段名1設置為表的第1個字段;AFTER則表示將字段名1排列到字段名2之后。實例講解【例3.25】修改users_new表,將字段upassword排列到ugender字段之后。mysql>ALTERTABLEusers_newMODIFYupasswordvarbinary(50)AFTERugender;QueryOK,0rowsaffected(0.03sec)Records:0Duplicates:0Warnings:04.添加字段語法講解ALTERTABLE表名ADD字段名數(shù)據(jù)類型[FIRST|AFTER已存在的字段名];參數(shù)“字段名”是需要增加的字段名稱,數(shù)據(jù)類型是新增的字段的數(shù)據(jù)類型,F(xiàn)IRST和AFTER也是可選參數(shù),用于將增加的字段排列位置。當不指定位置時,新增字段默認為表的最后一個字段實例+演示【例
3.26】在users_new表中增加字段ulogin,用于存儲用戶的登錄帳號,其數(shù)據(jù)類型為varchar(20),并將其放在uid之后。mysql>ALTERTABLEusers_newADDuloginvarchar(20)AFTERuid;QueryOK,0rowsaffected(0.03sec)Records:0Duplicates:0Warnings:05.刪除字段ALTERTABLE表名DROP字段名;實例+演示【例3.27】刪除users_new表中的字段ugender。mysql>ALTERTABLEusers_newDROPugender;QueryOK,0rowsaffected(0.07sec)Records:0Duplicates:0Warnings:0備課紙適用班級:_P.復制表1.復制表結構及數(shù)據(jù)到新表CREATETABLE新表名SELECT*FROM源表名;實例+演示【例3.28】復制users_new表的結構及數(shù)據(jù)到temp1表mysql>CREATETABLEtemp1SELECT*FROMusers_new;QueryOK,0rowsaffected(0.06sec)Records:0Duplicates:0Warnings:02.只復制表結構到新表CREATETABLE新表名SELECT*FROM源表名WHEREFALSE;實例+演示【例3.29】復制users_new表的結構到temp2表mysql>CREATETABLEtemp2SELECT*FROMusers_newWHEREFALSE;QueryOK,0rowsaffected(0.02sec)此外,實現(xiàn)表結構的復制還可以使用關鍵字LIKECREATETABLE新表名LIKE源表名;實例+演示【例3.30】復制users_new表的結構到temp3表,mysql>CREATETABLEtemp3LIKEusers_new;QueryOK,0rowsaffected(0.02sec)學習提示使用LIKE關鍵字復制的表結構會將源表的約束一起復制到新表中,而【例3.28】和【例3.29】則不會復制約束3.復制表的部分字段及數(shù)據(jù)到新表CREATETABLE新表名AS(SELECT字段1,字段2,FROM源表名);實例+演示【例3.31】復制users_new表,將ulogin和upassword兩列數(shù)據(jù)到temp4表。執(zhí)行結果如下。備課紙適用班級:_P.mysql>CREATETABLEtemp4AS(SELECTulogin,upasswordFROMusers_new);QueryOK,3rowsaffected(0.02sec)Records:3Duplicates:0Warnings:0學習提示當源表和新表屬于不同的數(shù)據(jù)庫時,需要在源表名前面加上數(shù)據(jù)庫名,格式為“數(shù)據(jù)庫名.源表名”刪除表刪除表時,表的結構、數(shù)據(jù)、約束等都將被全部刪除。DROPTABLE表名;實例+演示【例3.32】刪除名為tem
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加氣混凝土蒸壓養(yǎng)護工崗前工藝分析考核試卷含答案
- 照相機與輔助器材維修工崗前工作考核試卷含答案
- 我國上市公司并購溢價:基于實證分析的深度洞察與策略考量
- 油鋸工崗前實操知識實踐考核試卷含答案
- 婦幼保健員安全管理考核試卷含答案
- 化工單元操作工崗前風險識別考核試卷含答案
- 林木采伐工操作技能能力考核試卷含答案
- 土方機械裝配調(diào)試工崗前創(chuàng)新應用考核試卷含答案
- 工藝扎染工安全理論考核試卷含答案
- 起重裝卸機械操作工崗前生產(chǎn)安全意識考核試卷含答案
- 消防知識培訓宣傳課件
- 2025-2026學年通-用版英語 高一上學期期末試題(含聽力音頻答案)
- 2025年國家基本公共衛(wèi)生服務考試試題(附答案)
- 25秋蘇教三年級上冊數(shù)學期末押題卷5套(含答案)
- 局部晚期腫瘤免疫放療新策略
- 食品加工廠乳制品設備安裝方案
- 高考英語3500詞分類整合記憶手冊(含完整中文釋義)
- 魯教版(2024)五四制英語七年級上冊全冊綜合復習默寫 (含答案)
- 內(nèi)分泌科ICD編碼課件
- 中醫(yī)護理案例分享
- 骨密度檢測的臨床意義
評論
0/150
提交評論