版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第一章數(shù)據(jù)庫概述第1章數(shù)據(jù)庫概述第2章MySQL數(shù)據(jù)庫安裝與配置第3章MySQL支持的數(shù)據(jù)類型第4章數(shù)據(jù)庫的基本操作第5章表的基本操作第6章索引第7章插入、更新和刪除數(shù)據(jù)第8章單表查詢操作第9章多表查詢操作第10章事務(wù)全套PPT課件本章主要內(nèi)容數(shù)據(jù)庫簡介MySQL簡介主要內(nèi)容121.1數(shù)據(jù)庫簡介
1.1.1數(shù)據(jù)管理技術(shù)的發(fā)展過程
人工管理階段文件系統(tǒng)階段數(shù)據(jù)庫系統(tǒng)階段數(shù)據(jù)管理技術(shù)三個階段人工管理階段文件系統(tǒng)階段數(shù)據(jù)庫系統(tǒng)階段1.1數(shù)據(jù)庫簡介
1.1.1數(shù)據(jù)管理技術(shù)的發(fā)展過程
1.1數(shù)據(jù)庫簡介
1.1.2數(shù)據(jù)庫系統(tǒng)相關(guān)概念
數(shù)據(jù)data數(shù)字,文字,圖形,圖像,聲音等。凡是計算機(jī)中用來描述事物的記錄,都可以統(tǒng)稱為數(shù)據(jù)。例數(shù)據(jù)的形式與其內(nèi)容不一定一致。數(shù)據(jù)與其語義是不可分割的。(李明,男,19,上海,信息管理)數(shù)據(jù)庫是一些長期儲存的信息的聚集。是長期存儲在計算機(jī)內(nèi)、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲,具有較小的冗余度,較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,可為各種用戶共享。數(shù)據(jù)庫就是由DBMS管理的數(shù)據(jù)的聚集。數(shù)據(jù)庫database,DB1.1數(shù)據(jù)庫簡介
1.1.2數(shù)據(jù)庫系統(tǒng)相關(guān)概念
Databasemanagementsystem,DBMS數(shù)據(jù)庫管理系統(tǒng),簡稱DBMS,是專門用于建立和管理數(shù)據(jù)庫的一套軟件,介于應(yīng)用程序和操作系統(tǒng)之間。DBMS不僅具有最基本的數(shù)據(jù)管理功能,還能保證數(shù)據(jù)的完整性、安全性,提供多用戶的并發(fā)控制,當(dāng)數(shù)據(jù)庫出現(xiàn)故障時對系統(tǒng)進(jìn)行恢復(fù)。數(shù)據(jù)庫管理系統(tǒng)1.1數(shù)據(jù)庫簡介1.1.2數(shù)據(jù)庫系統(tǒng)相關(guān)概念
數(shù)據(jù)庫系統(tǒng),包括與數(shù)據(jù)庫有關(guān)的整個系統(tǒng):數(shù)據(jù)庫、DBMS、應(yīng)用程序以及數(shù)據(jù)庫管理員和用戶等。數(shù)據(jù)庫系統(tǒng)Databasesystem,DBS用戶用戶用戶...應(yīng)用系統(tǒng)應(yīng)用開發(fā)工具數(shù)據(jù)庫管理系統(tǒng)操作系統(tǒng)數(shù)據(jù)庫數(shù)據(jù)庫管理員DBS1.1數(shù)據(jù)庫簡介1.1.2數(shù)據(jù)庫系統(tǒng)相關(guān)概念
1.1數(shù)據(jù)庫簡介
1.1.3什么是SQL語言
SQL結(jié)構(gòu)化查詢語言StructuredQueryLanguage
1974年,IBM公司Boyce和Chamberlin提出1981年,IBM推出關(guān)系數(shù)據(jù)庫系統(tǒng)SQL/DS,廣泛應(yīng)用1982年,ANSI著手制定SQL標(biāo)準(zhǔn)1987年,ISO通過SQL86標(biāo)準(zhǔn)1989年,ISO制定SQL89標(biāo)準(zhǔn);在SQL86基礎(chǔ)上增補(bǔ)完整性描述1990年,我國制定等同SQL89的國家標(biāo)準(zhǔn)1992年,ISO制定SQL92標(biāo)準(zhǔn),即SQL21999年,ANSI制定SQL3標(biāo)準(zhǔn)1.1數(shù)據(jù)庫簡介1.1.3什么是SQL語言
SQL語言分為5部分(1)數(shù)據(jù)查詢語言(DataQueryLanguage,DQL):DQL主要用于數(shù)據(jù)的查詢,其基本結(jié)構(gòu)是使用SELECT子句,F(xiàn)ROM子句和WHERE子句的組合來查詢一條或多條數(shù)據(jù);(2)數(shù)據(jù)操作語言(DataManipulationLanguage,DML):DML主要用于對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行增加、修改和刪除的操作;1.1數(shù)據(jù)庫簡介
1.1.3什么是SQL語言
(3)數(shù)據(jù)定義語言(DataDefinitionLanguage,DDL):DDL主要用針對是數(shù)據(jù)庫對象(表、索引、視圖、觸發(fā)器、存儲過程、函數(shù)、表空間等)進(jìn)行創(chuàng)建、修改和刪除操作;(4)數(shù)據(jù)控制語言(DataControlLanguage,DCL):DCL用來授予或回收訪問數(shù)據(jù)庫的權(quán)限;(5)事務(wù)控制語言(TransactionControlLanguage,TCL):TCL用于數(shù)據(jù)庫的事務(wù)管理。1.1數(shù)據(jù)庫簡介1.1.4如何訪問數(shù)據(jù)庫
數(shù)據(jù)庫管理系統(tǒng)可以使用SQL語句來操作數(shù)據(jù)庫中的數(shù)據(jù)。其實,應(yīng)用程序中也可以嵌套使用SQL語句來實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的操作,但是如何才能讓程序中的SQL語句發(fā)揮作用。多種數(shù)據(jù)庫訪問技術(shù),如ODBC(OpenDataBaseConnectivity,開放數(shù)據(jù)庫互連)、DAO(DataAccessObject,數(shù)據(jù)訪問對象)、RDO(RemoteDataObject,遠(yuǎn)程數(shù)據(jù)對象)、OLEDB(ObjectLinkingandEmbeddingDataBase,對象鏈接和嵌入數(shù)據(jù)庫)、ADO(ActiveDataObject,活動數(shù)據(jù)對象)、JDBC(JavaDataBaseConnectivity,Java數(shù)據(jù)庫連接)等等。1.1數(shù)據(jù)庫簡介
1.1.4如何訪問數(shù)據(jù)庫
(1)ODBC,Microsoft創(chuàng)建了ODBC技術(shù),它為編寫關(guān)系型數(shù)據(jù)庫的應(yīng)用程序提供了一種統(tǒng)一的接口。1.1數(shù)據(jù)庫簡介1.1.4如何訪問數(shù)據(jù)庫
(2)OLEDB是對ODBC的拓展,前者在后者基礎(chǔ)上提供了COM接口,讓應(yīng)用程序能夠以統(tǒng)一的方式存取各種不同的數(shù)據(jù)源。實際開發(fā)中,數(shù)據(jù)可能存儲在Excel、Email或者非關(guān)系型數(shù)據(jù)庫中,而并非傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,但是ODBC只能訪問關(guān)系型數(shù)據(jù)庫,所以O(shè)LEDB技術(shù)便應(yīng)運(yùn)而生。1.1數(shù)據(jù)庫簡介
1.1.4如何訪問數(shù)據(jù)庫
(3)ADO看成是對OLEDB的封裝。雖然OLEDB允許程序員訪問各種類型的數(shù)據(jù)源,但是其非常底層化,編程非常困難,對程序員的水平有很高的要求。為了解決這個問題,Microsoft推出了ADO技術(shù),大大簡化了程序員的工作量,因此ADO越來越被程序員所喜愛。1.1數(shù)據(jù)庫簡介1.1.4如何訪問數(shù)據(jù)庫
(4)JDBC是專門針對Java語言的一種數(shù)據(jù)庫訪問技術(shù),是一種用于執(zhí)行SQL語句的JavaAPI。1.2MySQL簡介
1.2.1數(shù)據(jù)庫的分類
關(guān)系型數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫模型是將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)用較為簡單的二元關(guān)系(二維表)來表示。該類型數(shù)據(jù)庫中,對數(shù)據(jù)的操作基本上都建立在一個或多個表格上,我們可以采用結(jié)構(gòu)化查詢語言(SQL)對數(shù)據(jù)庫進(jìn)行操作。關(guān)系型數(shù)據(jù)庫是目前主流的數(shù)據(jù)庫技術(shù),其中具有代表性的數(shù)據(jù)庫管理系統(tǒng)有:Oracle、DB2、SQLServer、MySQL等。1.2MySQL簡介
1.2.1數(shù)據(jù)庫的分類
非關(guān)系型數(shù)據(jù)庫NOSQL(NotOnlySQL)泛指非關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫在超大規(guī)模和高并發(fā)的web2.0純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題。NOSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。常見的非關(guān)系型數(shù)據(jù)庫管理系統(tǒng)有Memcached、MongoDB、Redis等。1.2MySQL簡介1.2.2常見的關(guān)系型數(shù)據(jù)庫
(1)Oracle
Oracle數(shù)據(jù)庫是由美國的甲骨文(Oracle)公司開發(fā)的世界上第一款支持SQL語言的關(guān)系型數(shù)據(jù)庫。經(jīng)過多年的完善與發(fā)展,Oracle數(shù)據(jù)庫已經(jīng)成為世界上最流行的數(shù)據(jù)庫,也是甲骨文公司的核心產(chǎn)品。Oracle數(shù)據(jù)庫具有很好的開放性,能在所有的主流平臺上運(yùn)行,并且性能高、安全性高、風(fēng)險低;但是其對硬件的要求很高、管理維護(hù)和操作比較復(fù)雜而且價格昂貴,所以一般用在滿足對銀行、金融、保險等行業(yè)大型數(shù)據(jù)庫的需求上。1.2MySQL簡介1.2.2常見的關(guān)系型數(shù)據(jù)庫
(2)DB2
DB2是IBM公司著名的關(guān)系型數(shù)據(jù)庫產(chǎn)品。DB2無論穩(wěn)定性,安全性,恢復(fù)性等等都無可挑剔,而且從小規(guī)模到大規(guī)模的應(yīng)用都可以使用,但是用起來非常繁瑣,比較適合大型的分布式應(yīng)用系統(tǒng)。(3)SQLServerSQLServer是由Microsoft開發(fā)和推廣的關(guān)系型數(shù)據(jù)庫,SQLServer的功能比較全面、效率高,可以作為中型企業(yè)或單位的數(shù)據(jù)庫平臺。SQLServer可以與Windows操作系統(tǒng)緊密繼承,無論是應(yīng)用程序開發(fā)速度還是系統(tǒng)事務(wù)處理運(yùn)行速度,都能得到大幅度提升。但是,SQLServer只能在Windows系統(tǒng)下運(yùn)行,毫無開放性可言。1.2MySQL簡介1.2.2常見的關(guān)系型數(shù)據(jù)庫
(3)MySQL
MySQL是一種開放源代碼的輕量級關(guān)系型數(shù)據(jù)庫,MySQL數(shù)據(jù)庫使用最常用的結(jié)構(gòu)化查詢語言(SQL)對數(shù)據(jù)庫進(jìn)行管理。由于MySQL是開放源代碼的,因此任何人都可以在GeneralPublicLicense的許可下下載并根據(jù)個人需要對其缺陷進(jìn)行修改。由于MySQL數(shù)據(jù)庫體積小、速度快、成本低、開放源碼等優(yōu)點,現(xiàn)已被廣泛應(yīng)用于互聯(lián)網(wǎng)上的中小型網(wǎng)站中,并且大型網(wǎng)站也開始使用MySQL數(shù)據(jù)庫,如網(wǎng)易、新浪等。1.2MySQL簡介1.2.3MySQL的優(yōu)勢
(1)開放源代碼
MySQL最強(qiáng)大的優(yōu)勢之一在于它是一個開放源代碼的數(shù)據(jù)庫管理系統(tǒng)。開源的特點是給予了用戶根據(jù)自己需要修改DBMS的自由。MySQL采用了GeneralPublicLicense,這意味著授予用戶閱讀、修改和優(yōu)化源代碼的權(quán)利,這樣即使是免費(fèi)版的MySQL的功能也足夠強(qiáng)大,這也是為什么MySQL越來越受歡迎的主要原因。1.2MySQL簡介
1.2.3MySQL的優(yōu)勢
(2)可移植
MySQL可以在不同的操作系統(tǒng)下運(yùn)行,簡單地說,MySQL可以支持Windows系統(tǒng)、UNIX系統(tǒng)、Linux系統(tǒng)等多種操作系統(tǒng)平臺。這意味著在一個操作系統(tǒng)中實現(xiàn)的應(yīng)用程序可以很方便地移植到其他的操作系統(tǒng)下。1.2MySQL簡介
1.2.3MySQL的優(yōu)勢
(3)輕量級
MySQL的核心程序完全采用多線程編程,這些線程都是輕量級的進(jìn)程,它在靈活地為用戶提供服務(wù)的同時,又不會占用過多的系統(tǒng)資源。因此MySQL能夠更快速、高效的處理數(shù)據(jù)。1.2MySQL簡介1.2.3MySQL的優(yōu)勢
(4)成本低
MySQL分為社區(qū)版和企業(yè)版,社區(qū)版是完全免費(fèi)的,而企業(yè)版是收費(fèi)的。即使在開發(fā)中需要用到一些付費(fèi)的附加功能,價格相對于昂貴的Oracle、DB2等也是有很大優(yōu)勢的。其實免費(fèi)的社區(qū)版也支持多種數(shù)據(jù)類型和正規(guī)的SQL查詢語言,能夠?qū)?shù)據(jù)進(jìn)行各種查詢、增加、刪除、修改等操作,所以一般情況下社區(qū)版就可以滿足開發(fā)需求了,而對數(shù)據(jù)庫可靠性要求比較高的企業(yè)可以選擇企業(yè)版。另外,PHP中提供了一整套的MySQL函數(shù),對MySQL進(jìn)行了全方位的強(qiáng)力支持。本章總結(jié)數(shù)據(jù)管理技術(shù)總共歷經(jīng)了三個階段:人工管理階段、文件系統(tǒng)階段、數(shù)據(jù)庫系統(tǒng)階段。目前,仍然處于數(shù)據(jù)庫系統(tǒng)階段。數(shù)據(jù)庫(Database,DB)指的是以一定格式存放、能夠?qū)崿F(xiàn)多個用戶共享、與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合。數(shù)據(jù)庫系統(tǒng)(DatabaseSystem,DBS)一般是由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫應(yīng)用程序、數(shù)據(jù)庫管理員和最終用戶構(gòu)成。SQL語言分為五個部分:數(shù)據(jù)查詢語言(DQL)、數(shù)據(jù)操作語言(DML)、數(shù)據(jù)定義語言(DDL)、數(shù)據(jù)控制語言(DCL)、事務(wù)控制語言(TCL)。數(shù)據(jù)庫訪問技術(shù)主要有ODBC、OLEDB、ADO、JDBC等。根據(jù)數(shù)據(jù)的組織結(jié)構(gòu)不同,數(shù)據(jù)庫主要分為網(wǎng)狀數(shù)據(jù)庫、層次數(shù)據(jù)庫、關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫四種。MySQL的主要優(yōu)勢:開放源代碼、開放性、輕量級、成本低等。本章作業(yè)1.簡述數(shù)據(jù)庫管理技術(shù)的發(fā)展過程。2.數(shù)據(jù)庫系統(tǒng)包括哪幾部分?3.SQL語言主要分為幾類?4.Java中如何訪問數(shù)據(jù)庫?5.常見的關(guān)系型數(shù)據(jù)庫有哪幾種?6.簡述MySQL的優(yōu)勢。第二章MySQL數(shù)據(jù)庫安裝與配置本章主要內(nèi)容下載MySQL軟件Windows平臺下安裝與配置MySQLWindows平臺下ZIP版配置MySQLLinux平臺下安裝與配置MySQLMySQL的常用操作123456主要內(nèi)容常用圖形化管理工具—Navicat2.1下載MySQL
2.1.1Windows平臺下載MySQL
(1)進(jìn)入MySQL的官網(wǎng):/。點擊DOWNLOADS導(dǎo)航欄,再點擊Community(社區(qū)版),切換到社區(qū)版的下載頁面,最后點擊MySQLCommunityServer下邊的DOWNLOAD按鈕即可進(jìn)入MySQL數(shù)據(jù)庫下載頁面。2.1下載MySQL
2.1.1Windows平臺下載MySQL
2.1下載MySQL
2.1.1Windows平臺下載MySQL
(2)進(jìn)入MySQL數(shù)據(jù)庫的下載界面后,首先在“SelectOperatingSystem”下拉菜單中選擇“MicrosoftWindows”平臺,然后進(jìn)入MySQL下載頁面。2.1下載MySQL
2.1.1Windows平臺下載MySQL
MySQL安裝版下載2.1下載MySQL
2.1.1Windows平臺下載MySQL
MySQLZIP版下載2.1下載MySQL
2.1.2Linux平臺下載MySQL
Linux操作系統(tǒng)的版本有很多種,如RedHatEnterprise、Ubnutu、Debian、CentOS等,我們需要針對自己電腦選擇適合的操作平臺,然后再選擇是下載32位的還是64位的文件。下面以64位的CentOS7系統(tǒng)進(jìn)行演示,由于CentOS系統(tǒng)是來自于RedHatEnterpriseLinux依照開放源代碼規(guī)定釋出的源代碼編譯而成的,所以下載時可以按照RedHat平臺進(jìn)行選擇版本的下載。2.1下載MySQL
2.1.2Linux平臺下載MySQL
需要注意的是,CentOS7系統(tǒng)不能只下載服務(wù)器端和客戶端軟件,還要下載一些依賴包,所以在此直接下載“RPMBundle”壓縮包。最后使用xftp或其他工具,將下載的壓縮包上傳到Linux服務(wù)器中的“download”目錄中。2.1下載MySQL
2.1.2Linux平臺下載MySQL
2.2安裝與配置MySQL
2.2.1安裝MySQL
雙擊安裝程序mysql-installer-community-.msi,此時會彈出MySQL許可協(xié)議界面。單擊選中復(fù)選框“Iacceptthelicenseterms”后,點擊“Next”按鈕,進(jìn)入安裝類型選擇界面。2.2安裝與配置MySQL
2.2.1安裝MySQL
2.2安裝與配置MySQL
2.2.1安裝MySQL
選擇自定義安裝類型“Custom”(此類型可以根據(jù)用戶自己的需求選擇安裝需要的產(chǎn)品),然后單擊“Next”按鈕。2.2安裝與配置MySQL
2.2.1安裝MySQL
在選擇安裝版本界面,展開第一個節(jié)點“MySQLServers”,找到并點擊“MySQLServer8.0.12-X64”,之后向右的箭頭會變成綠色,點擊該綠色的箭頭,將選中的產(chǎn)品添加到右邊的待安裝列表框中,然后在展開安裝列表中的MySQLServer8.0.12-X64節(jié)點,取消“DevelopmentComponents”選項前邊的“√”,然后點擊“Next”按鈕進(jìn)入安裝列表界面。2.2安裝與配置MySQL
2.2.1安裝MySQL
2.2安裝與配置MySQL
2.2.1安裝MySQL
點擊安裝列表界面的“Execute”按鈕后,要安裝的產(chǎn)品右邊會顯示一個進(jìn)度百分比,安裝完成之后會前邊會出現(xiàn)綠色個的“√”,之后繼續(xù)點擊“Next”按鈕即可。2.2安裝與配置MySQL
2.2.1安裝MySQL
2.2安裝與配置MySQL
2.2.2配置MySQL
直接點擊“Next”按鈕,直接進(jìn)入?yún)?shù)配置頁面中的“TypeandNetWorking”界面。2.2安裝與配置MySQL
2.2.2配置MySQL
進(jìn)入“TypeandNetworking”界面后,我們要選擇的是“StandaloneMySQLServer/ClassicMySQLReplication”選項,然后點擊“Next”按鈕服務(wù)器配置類型“ConfigType”選擇“Developmentmachine”,不同的選擇將決定系統(tǒng)為MySQL服務(wù)器實例分配資源的大小,“Developmentmachine”占用的內(nèi)存是最少的;連接方式保持默認(rèn)的TCP/IP,端口號也保持默認(rèn)的3306即可;點擊“Next”按鈕。2.2安裝與配置MySQL
2.2.2配置MySQL
2.2安裝與配置MySQL
2.2.2配置MySQL
2.2安裝與配置MySQL
2.2.2配置MySQL
設(shè)置MySQL數(shù)據(jù)庫Root賬戶密碼,需要輸入兩遍。這個密碼必須記住,后邊會用到。此處我們將密碼設(shè)置成“bjsxt”,之后點擊“Next”按鈕。2.2安裝與配置MySQL
2.2.2配置MySQL
在配置Windows服務(wù)時,需要以下幾部操作:勾選“ConfigureMySQLServerasaWindowsService”選項,將MySQL服務(wù)器配置為Windows服務(wù);取消“StarttheMySQLServeratSystemStartup”選項前邊的“√”(該選項是設(shè)置是否開機(jī)自啟動MySQL服務(wù),在此我們選擇開機(jī)不啟動,大家也可以根據(jù)自己的需要來選擇);勾選“StandardSystemAccount”選項,該選項是標(biāo)準(zhǔn)系統(tǒng)賬戶,推薦使用該賬戶;點擊“Next”按鈕。2.2安裝與配置MySQL
2.2.2配置MySQL
2.2安裝與配置MySQL
2.2.2配置MySQL
最后執(zhí)行上述一系列配置的時候了,直接點擊“Execute”按鈕。等到所有的配置完成之后,點擊“Finish”按鈕即可完成配置。2.2安裝與配置MySQL
2.2.2配置MySQL
2.3
zip版MySQL的安裝
2.3.1減壓配置MySQL將下載的zip版安裝文件解壓到你想放到的磁盤處,例如(E:\mysql-8.0.12-winx64)。在mysql-8.0.12-winx64文件夾下找到my.ini,進(jìn)行配置。如果沒有.ini結(jié)尾的文件那么就新增。注意basedir和datadir是我自己的路徑位置,根據(jù)自己的定奪。記得新增一個文件data文件夾2.3
zip版MySQL的安裝
2.3.1減壓配置MySQLmy.ini文件內(nèi)容[mysqld]#設(shè)置3306端口port=3306#設(shè)置mysql的安裝目錄basedir=E:\\mysql-8.0.12-winx64#設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄datadir=E:\\mysql-8.0.12-winx64\\Data#允許最大連接數(shù)max_connections=200#允許連接失敗的次數(shù)。這是為了防止有人從該主機(jī)試圖攻擊數(shù)據(jù)庫系統(tǒng)max_connect_errors=102.3
zip版MySQL的安裝
2.3.1減壓配置MySQL#服務(wù)端使用的字符集默認(rèn)為UTF8character-set-server=utf8#創(chuàng)建新表時將使用的默認(rèn)存儲引擎default-storage-engine=INNODB#默認(rèn)使用“mysql_native_password”插件認(rèn)證default_authentication_plugin=mysql_native_password[mysql]#設(shè)置mysql客戶端默認(rèn)字符集default-character-set=utf8[client]#設(shè)置mysql客戶端連接服務(wù)端時默認(rèn)使用的端口port=3306default-character-set=utf82.3
zip版MySQL的安裝
2.3.1減壓配置MySQLcmd打開命令窗口,初始化mysql,初始化語句:mysqld--defaults-file=E:\mysql-8.0.12-winx64\my.ini--initialize–console執(zhí)行該語句后會出下日志內(nèi)容,找到root@localhost,冒號后面的為mysql的初始密碼,一定要先記住,下面用來登錄修改密碼。2.3
zip版MySQL的安裝
2.3.1減壓配置MySQL安裝MySQL當(dāng)前服務(wù),2.3
zip版MySQL的安裝
2.3.1減壓配置MySQL接著啟動服務(wù)我們來修改密碼,執(zhí)行mysql-uroot-p登錄mysql,回車后輸入我們記下來的初始密碼,回車后進(jìn)入mysql命令,輸入修改密碼命令A(yù)LTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'root';
root是你自己定義的密碼。至此mysql免安裝版的配置已完成。2.3
zip版MySQL的安裝
2.3.1減壓配置MySQL查看默認(rèn)安裝的數(shù)據(jù)庫。執(zhí)行如下命令:showdatabases;2.4
Linux平臺下安裝與配置MySQL
2.4.1安裝MySQL查看有沒有安裝包。執(zhí)行如下命令:yumlistmysql*;2.4
Linux平臺下安裝與配置MySQL
2.4.1安裝MySQL安裝mysql,執(zhí)行yuminstallmysql-server.x86_64
2.4
Linux平臺下安裝與配置MySQL
2.4.1安裝MySQL2.4
Linux平臺下安裝與配置MySQL
2.4.2
配置MySQL開啟MySQL服務(wù)。輸入如下命令啟動:servicemysqldstart2.4
Linux平臺下安裝與配置MySQL
2.4.2
配置MySQL連接數(shù)據(jù)庫。輸入如下命令:mysql-uroot-pmysql是登錄數(shù)據(jù)庫的命令;-u后邊填寫的是連接數(shù)據(jù)庫的用戶名,在此為root用戶;-p后邊是設(shè)置的root用戶的密碼(密碼不需要直接寫在-p后邊)。2.4
Linux平臺下安裝與配置MySQL
2.4.2
配置MySQL修改密碼。一般情況下,我們安裝MySQL主要是用于自己學(xué)習(xí)或者測試,沒有必要把密碼設(shè)置的很復(fù)雜,即可設(shè)置一些簡單的密碼,命令如下:setpassword=password('root');2.5
MySQL的常用操作
2.5.1
啟動與關(guān)閉MySQL服務(wù)首先點開“開始”菜單,在最下邊的“搜索程序和文件”搜索框中輸入cmd,回車即可進(jìn)入DOS窗口。在DOS窗口中輸入命令“netstart”,回車后即可查看Windows系統(tǒng)目前已經(jīng)開啟的服務(wù)有哪些,2.5
MySQL的常用操作
2.5.1
啟動與關(guān)閉MySQL服務(wù)如果列表中有“MySQL8012”這一項,說明該服務(wù)已經(jīng)啟動;如果沒有,則說明還尚未啟動,那么我們就可以使用命令“netstartMySQL8012”來啟動服務(wù)。2.5
MySQL的常用操作
2.5.1
啟動與關(guān)閉MySQL服務(wù)使用簡便的圖形化界面來啟動與關(guān)閉MySQL服務(wù)。打開服務(wù)列表窗口:依次點擊“開始”菜單—>“控制面板”—>“管理工具”—>“服務(wù)”,進(jìn)入服務(wù)列表窗口選中MySQL8012服務(wù),點擊左側(cè)的“啟動”按鈕,或者右鍵選擇“啟動”選項,則可以啟動該服務(wù),此時服務(wù)狀態(tài)會更改為“已啟動”。2.5
MySQL的常用操作
2.5.2
登錄與退出MySQL數(shù)據(jù)庫1.Windows平臺在“開始”菜單中按照如下操作:“所有程序”—>“MySQL”—>“MySQLServer8.0”—>“MySQL8.0CommandLineClient”,便可打開MySQL客戶端。輸入正確的密碼然后回車即可登錄成功。2.5
MySQL的常用操作
2.5.2
登錄與退出MySQL數(shù)據(jù)庫1.Windows平臺
登錄成功后,我們可以使用“quit”或者“exit”退出登錄。在執(zhí)行完“quit”或者“exit”命令后,客戶端窗口會直接消息。2.5
MySQL的常用操作
2.5.2
登錄與退出MySQL數(shù)據(jù)庫2.Linux平臺
使用root用戶進(jìn)行了登錄操作,登錄命令為:mysql-uroot-p退出MySQL的命令與Windows系統(tǒng)相同,均是“exit”或者“quit”2.6MySQL常用圖形化管理工具—Navicat
2.6.1下載Navicat軟件
在/en/download/navicat-for-mysql官網(wǎng)下載Navicat軟件,根據(jù)自己電腦的版本選擇一個直接下載。2.6MySQL常用圖形化管理工具—Navicat
2.6.2安裝Navicat軟件(1)雙擊“navicat120_mysql_en_x64.exe”文件,就可以進(jìn)入Navicat的歡迎界面,點擊“Next”按鈕,進(jìn)入許可協(xié)議界面。2.6MySQL常用圖形化管理工具—Navicat
2.6.2安裝Navicat軟件(2)在許可協(xié)議界面中,選中“Iaccepttheagreement”,然后繼續(xù)點擊“Next”按鈕,進(jìn)入選擇安裝路徑界面。(3)根據(jù)自己的喜好選擇Navicat的安裝路徑(建議大家安裝到除C盤以外的路徑),之后點擊“Next”按鈕。2.6MySQL常用圖形化管理工具—Navicat
2.6.2安裝Navicat軟件2.6MySQL常用圖形化管理工具—Navicat
2.6.2安裝Navicat軟件(4)需要我們選擇在哪里創(chuàng)建快捷方式,直接保持默認(rèn)路徑即可(也可以根據(jù)自己的喜好修改),點擊“Next”按鈕。(5)選中“Createadesktopicon”選項(該選項是在詢問用戶是否在桌面創(chuàng)建圖標(biāo),這個不影響后續(xù)的操作,可以根據(jù)自己的需求選擇),點擊“Next”按鈕。2.6MySQL常用圖形化管理工具—Navicat
2.6.2安裝Navicat軟件2.6MySQL常用圖形化管理工具—Navicat
2.6.2安裝Navicat軟件(6)點擊“Install”按鈕,開始進(jìn)行安裝,此時會顯示安裝進(jìn)度,等安裝完成后點擊“Finish”按鈕后安裝成功。2.6MySQL常用圖形化管理工具—Navicat
2.6.2安裝Navicat軟件2.6MySQL常用圖形化管理工具—Navicat
2.6.3通過Navicat軟件登錄MySQL數(shù)據(jù)庫(1)雙擊桌面的程序圖標(biāo),在菜單欄中點擊“Connection”功能模塊后,會彈出選擇框,選擇“MySQL”。2.6MySQL常用圖形化管理工具—Navicat
2.6.3通過Navicat軟件登錄MySQL數(shù)據(jù)庫(2)在彈出的“NewCollection”界面中,填入正確的HostName/IPAddress(主機(jī)名/IP地址)、Port(端口號)、UserName(用戶名)、Password(密碼)等信息,然后點擊“TestConnection”按鈕,在提示我們連接成功后,點擊“OK”即可,2.6MySQL常用圖形化管理工具—Navicat
2.6.3通過Navicat軟件登錄MySQL數(shù)據(jù)庫本章總結(jié)學(xué)會在Windows平臺和Linux平臺下MySQL的安裝與配置過程。學(xué)會使用my.ini(Linux平臺中為f)配置文件更改MySQL配置。在使用MySQL數(shù)據(jù)庫之前,一定要先開啟MySQL服務(wù)。通過Navicat圖形化管理工具來操作MySQL數(shù)據(jù)庫更加方便、靈活。本章作業(yè)1.在Windows平臺下安裝與配置MySQL數(shù)據(jù)庫。2.在Linux平臺下安裝與配置MySQL數(shù)據(jù)庫。3.在Windows平臺下安裝Navicat軟件。4.分別使用DOS窗口、MySQL自帶客戶端、Navicat軟件登錄與退出MySQL數(shù)據(jù)庫。第三章MySQL支持的數(shù)據(jù)類型本章主要內(nèi)容數(shù)值類型日期和時間類型字符串類型JSON類型123主要內(nèi)容43.1數(shù)值類型
3.1.1整數(shù)類型
整數(shù)類型,顧名思義是用來存儲整數(shù)的。MySQL支持的整數(shù)類型有SQL標(biāo)準(zhǔn)中的整數(shù)類型INTEGER和SMALLINT,并在此基礎(chǔ)上拓展了新的整數(shù)類型,如TINYINT、MEDIUMINT、BIGINT。不同的整數(shù)類型所占用的存儲空間大小不同,所以表示的數(shù)據(jù)范圍不同。3.1數(shù)值類型
3.1.1整數(shù)類型整數(shù)類型大小表數(shù)范圍(有符號)表數(shù)范圍(無符號)作用TINYINT1字節(jié)(-128,127)(0,255)小整數(shù)值SMALLINT2字節(jié)(-32768,32767)(0,65535)大整數(shù)值MEDIUMINT3字節(jié)(-8388608,8388607)(0,16777215)大整數(shù)值INT/INTEGER4字節(jié)(-2147483648,2147483647)(0,4294967295)大整數(shù)值BIGINT8字節(jié)(-9233372036854775808,9223372036854775807)(0,18446744073709551615)極大整數(shù)值整數(shù)類型特征3.1數(shù)值類型
3.1.1整數(shù)類型
整數(shù)類型,顧名思義是用來存儲整數(shù)的。MySQL支持的整數(shù)類型有SQL標(biāo)準(zhǔn)中的整數(shù)類型INTEGER和SMALLINT,并在此基礎(chǔ)上拓展了新的整數(shù)類型,如TINYINT、MEDIUMINT、BIGINT。不同的整數(shù)類型所占用的存儲空間大小不同,所以表示的數(shù)據(jù)范圍不同。3.1數(shù)值類型
3.1.2浮點數(shù)和定點數(shù)類型
如果想要在數(shù)據(jù)庫中存儲小數(shù)類型,則需要學(xué)習(xí)下面兩種MySQL指出的數(shù)據(jù)類型:浮點數(shù)類型和定點數(shù)類型。浮點數(shù)類型在數(shù)據(jù)庫中存放的是近似值,因此也稱為近似值類型,而定點數(shù)類型在數(shù)據(jù)庫中存放的是精確值。浮點數(shù)類型包括FLOAT(單精度)和DOUBLE(雙精度)兩種,定點數(shù)類型只包括DEC/DECIMAL/NUMERIC一種(DEC/DECIMAL與NUMERIC表示的是同一種數(shù)據(jù)類型,習(xí)慣上使用DEC或DECIMAL)。3.1數(shù)值類型
3.1.2浮點數(shù)和定點數(shù)類型浮點數(shù)類型大小表數(shù)范圍(有符號)表數(shù)范圍(無符號)作用FLOAT4字節(jié)(-3.402823466E+38,-1.175494351E-38),0,(1.175494351E-38,3.402823466351E+38)0,(1.175494351E-38,3.402823466E+38)單精度浮點數(shù)值DOUBLE8字節(jié)(-1.7976931348623157E+308,-2.2250738585072014E-308),0,(2.2250738585072014E-308,1.7976931348623157E+308)0,(2.2250738585072014E-308,1.7976931348623157E+308)雙精度浮點數(shù)值浮點類型特征3.1數(shù)值類型
3.1.2浮點數(shù)和定點數(shù)類型
定點數(shù)類型在數(shù)據(jù)庫中是以字符串形式存的,因此是精確值。定點數(shù)只有一種數(shù)據(jù)類型,即DECIMAL,該數(shù)據(jù)類型用于精度要求非常高的計算中,如涉及金錢操作的領(lǐng)域。3.1數(shù)值類型
3.1.2浮點數(shù)和定點數(shù)類型浮點數(shù)類型大小表數(shù)范圍作用DECIMAL(M,D)M+2最小最大取值范圍與DOUBLE相同;指定M和D時,有效取值范圍由M和D的大小決定精度較高的小數(shù)值定點類型特征3.1數(shù)值類型
3.1.2浮點數(shù)和定點數(shù)類型
DECIMAL(M,D)與浮點數(shù)類型(M,D)的用法不同處:(1)DECIMAL類型的M默認(rèn)值為10,D默認(rèn)值為0。如果在創(chuàng)建表時,定義某字段為DECIMAL類型而沒有帶任何參數(shù),則等同于DECIMAL(10,0),比如我們要存儲的數(shù)據(jù)是1.23,則保存到數(shù)據(jù)庫中的實際是1,而不是1.23。如果只帶一個參數(shù),則該參數(shù)為M值,D則取默認(rèn)值0。(2)M的取值范圍為1~65,取0時會被設(shè)為默認(rèn)值10,超出范圍則會報錯。(3)D的取值范圍為0~30,同時必須滿足D<=M,否則會報錯。3.1數(shù)值類型
3.1.3BIT類型
MySQL5.0以前,BIT與TINYINT表示同一種數(shù)據(jù)類型。但是在MySQL5.0以及之后的版本中,BIT是一個完全不同的數(shù)據(jù)類型。我們可以使用使用BIT數(shù)據(jù)類型保存位字段值,即BIT可以方便的存儲二進(jìn)制數(shù)據(jù)。BIIT類型大小表數(shù)范圍作用BIT(M)1~8字節(jié)BIT(1)~BIT(64)位字段值BIT類型特性3.2日期和時間類型
MySQL提供了5種不同的日期時間類型:TIME、DATE、YEAR.、DATETIME和TIMESTAMP。每種日期與時間類型都有一個取值范圍和一個“0”值。在非嚴(yán)格模式下,當(dāng)存儲的數(shù)據(jù)格式不合法時,系統(tǒng)會給出警告,并將0值插入到數(shù)據(jù)庫中;當(dāng)插入的數(shù)據(jù)格式合法,但是超出數(shù)據(jù)類型的范圍時,該數(shù)據(jù)將被裁剪為范圍最接近的端點(最大值或最小值)。但是在嚴(yán)格模式下,非法或合法但超出范圍的數(shù)據(jù)是不允許存入數(shù)據(jù)庫的,系統(tǒng)會提示錯誤。3.2日期和時間類型
日期與時間類型類型格式取值范圍0值TIME'HH:MM:SS'('-838:59:59','838:59:59')'00:00:00'DATE'YYYY-MM-DD'('1000-01-01','9999-12-31')'0000-00-00'YEARYYYY(1901,2155),00000000DATETIME'YYYY-MM-DDHH:MM:SS'('1000-01-0100:00:00','9999-12-3123:59:59')'0000-00-0000:00:00'TIMESTAMP'YYYY-MM-DDHH:MM:SS'('1970-01-0100:00:01'UTC,'2038-01-1903:14:07'UTC)'0000-00-0000:00:00'3.2日期和時間類型
3.2.1TIME類型
TIME類型專門用來存儲時間數(shù)據(jù),如果不需要記錄日期而只需要記錄時間的話,選擇TIME類型是最合適的。MySQL中使用'HH:MM:SS'(如果所要表示的時間值較大,也可以使用'HHH:MM:SS')的形式來檢索和顯示TIME數(shù)據(jù)類型。其中HH表示小時,取值范圍為-838~838(因為TIME類型不僅可以表示一天中的某個時間,此時小時取值為0~23;TIME還可以表示兩個事件的時間間隔,此時小時的取值可能會比23大,甚至是負(fù)數(shù));MM表示分,取值范圍為0~59;SS表示秒,取值范圍為0~59。3.2日期和時間類型
3.2.1TIME類型TIME值四種表示方式:(1)'DHH:MM:SS[.fraction]'有分隔符格式的字符串。其中D表示天數(shù),取值范圍為0~34;fraction表示小數(shù)部分。比如我們指定數(shù)據(jù)類型為TIME,要存儲的值為'114:13:12.8',則實際存儲到數(shù)據(jù)庫中的值為'38:13:13',這是因為在保存數(shù)據(jù)時,小時的值為(D*24+HH);而SS后邊的小數(shù)部分則會四舍五入(這是因為我們沒有指定小數(shù)部分的位數(shù),所以默認(rèn)沒有小數(shù)部分)。(2)'HHMMSS[.fraction]'無分隔符的字符串。如果是個有意義的時間值,如'101112',則會被解析為'10:11:12';但如果是個沒有意義的時間值,如'109712'(非法時間值,其分鐘部分的數(shù)值為97,沒有意義),則系統(tǒng)將提示“Incorrecttimevalue”錯誤。3.2日期和時間類型
3.2.1TIME類型TIME值四種表示方式:(3)HHMMSS[.fraction]格式的數(shù)字。這種格式是以數(shù)字形式表示TIME數(shù)據(jù)的(注意:沒有單引號)。如果該數(shù)字是個有意義的時間值,如111213,則會被轉(zhuǎn)換為標(biāo)準(zhǔn)時間格式的'11:12:13';如果該數(shù)字是個不合法的日期值,如111267(該數(shù)據(jù)有不合法的秒數(shù)),則系統(tǒng)會提示“Incorrecttimevalue”錯誤。如果直接輸入數(shù)字0,則會轉(zhuǎn)化成TIME數(shù)據(jù)類型對應(yīng)的0值,即'00:00:00'。(4)使用CURRENT_TIME、NOW()或者SYSDATE()三種方式獲取系統(tǒng)當(dāng)前時間。3.2日期和時間類型
3.2.2DATE類型
DATE類型是專門用來存儲日期數(shù)據(jù)的,如果只需要存儲日期值而不需要時間部分時,則應(yīng)該選擇DATE類型。MySQL中使用'YYYY-MM-DD'的形式來檢索和顯示DATE數(shù)據(jù)類型。其中YYYY表示年,取值范圍為1000~9999;MM表示月,取值范圍為1~12;DD表示日,取值范圍為1~31。DATE數(shù)據(jù)類型支持的范圍是'1000-01-01'到'9999-12-31'。3.2日期和時間類型
3.2.2DATE類型DATE值五種表示方式:(1)'YYYY-MM-DD'有分隔符格式的字符串。如果數(shù)據(jù)中月和日的值小于10,則不需要指定兩位數(shù),直接指定一位數(shù)即可。如DATE數(shù)據(jù)'2017-7-9'與'2017-07-09'表示的含義是相同的。(2)'YY-MM-DD'有分隔符格式的字符串。其中YY的取值如果在00~69范圍之間,則年份自動轉(zhuǎn)換為2000~2069,如果在70~99范圍之間,則年份自動轉(zhuǎn)換為1970~1999。如數(shù)據(jù)'17-7-9'會轉(zhuǎn)換成'2017-07-09';數(shù)據(jù)'70-7-9'則會轉(zhuǎn)換成'1970-07-09'。3.2日期和時間類型
3.2.2DATE類型(3)'YYYYMMDD'或者'YYMMDD'無分隔符格式的字符串。如果DATE數(shù)據(jù)是個有意義的日期值,如'20170711'和'170711'均會被轉(zhuǎn)換為'2017-07-11';如果DATE數(shù)據(jù)是個不合法的日期值,如'171332'(其中的月和日部分無意義),則系統(tǒng)會提示“Incorrectdatevalue”錯誤。(4)YYYYMMDD或者YYMMDD格式的數(shù)字。這種格式是以數(shù)字形式表示DATE數(shù)據(jù)的(注意:沒有單引號)。如果該數(shù)字是個有意義的日期值,如20170711和170711均會被轉(zhuǎn)換為標(biāo)準(zhǔn)日期格式的'2017-07-11';如果該數(shù)字是個不合法的日期值,如171332則系統(tǒng)會提示“Incorrectdatevalue”錯誤。如果直接輸入數(shù)字0,則會轉(zhuǎn)化成DATE數(shù)據(jù)類型對應(yīng)的0值,即'0000-00-00'。用法與無分隔符格式的字符串表示形式基本一致。(5)使用CURRENT_DATE、NOW()或者SYSDATE()三種方式獲取系統(tǒng)當(dāng)前日期。3.2日期和時間類型
3.2.3YEAR類型
YEAR類型只是用來表示年份的數(shù)據(jù)類型,MySQL中使用YYYY來檢索和顯示YEAR類型,其取值范圍為1901~2155以及0000。3.2日期和時間類型
3.2.3YEAR類型YEAR類型四種表示方式:(1)YYYY或者'YYYY'格式的4位數(shù)字或字符串。使用該形式表示的年份范圍在1901~2155之間,具體寫法如2017、'2017';但如果數(shù)據(jù)超出該范圍,則會提示“Outofrange”錯誤,如數(shù)據(jù)2050或'2050'。(2)Y、YY、'Y'、'YY'格式的1~2位數(shù)字。如果取值范圍在1~69之間,則將年份自動轉(zhuǎn)換為2001~2069;如果取值范圍在70~99之間,則將年份自動轉(zhuǎn)換為1970~1999;如果取值為0,則年份會轉(zhuǎn)換成YEAR類型對應(yīng)的0值:0000。(3)'Y'、'YY'格式的1~2位字符串。如果取值范圍在'0'~'69'之間,則將年份自動轉(zhuǎn)換為2000~2069;如果取值范圍在'70'~'99'之間,則將年份自動轉(zhuǎn)換為1970~1999。(4)使用NOW()或者SYSDATE()兩種方式獲取系統(tǒng)當(dāng)前年份。3.2日期和時間類型
3.2.4DATETIME類型
DATETIME類型適用于需要同時存儲日期與時間的場合。MySQL中使用'YYYY-MM-DDHH:MM:SS'的形式來檢索和顯示DATETIME類型數(shù)據(jù),其支持的取值范圍為'1000-01-0100:00:00'~'9999-12-3123:59:59'。3.2日期和時間類型
3.2.4DATETIME類型DATETIME值的五種指定方式:(1)'YYYY-MM-DDHH:MM:SS[.fraction]'有分隔符格式的字符串。這種表示方式下,DATETIME類型的取值范圍為'1000-01-0100:00:00'~'9999-12-3123:59:59'。(2)'YY-MM-DDHH:MM:SS[.fraction]'有分隔符格式的字符串。其中YY的取值范圍與DATE類型種的YY相同:YY的取值如果在00~69范圍之間,則年份部分會自動轉(zhuǎn)換為2000~2069,如果YY在70~99范圍之間,則年份自動轉(zhuǎn)換為1970~1999。(3)'YYYYMMDDHHMMSS[.fraction]'或者'YYMMDDHHMMSS[.fraction]'無分隔符格式的字符串。'YYYYMMDDHHMMSS[.fraction]'的使用方式同'YYYY-MM-DDHH:MM:SS[.fraction]';'YYMMDDHHMMSS[.fraction]'的使用方式同'YY-MM-DDHH:MM:SS[.fraction]'。3.2日期和時間類型
3.2.4DATETIME類型DATETIME值的五種指定方式:(4)YYYYMMDDHHMMSS[.fraction]或者YYMMDDHHMMSS[.fraction]格式的數(shù)字。如果要存儲的數(shù)字是個有意義的日期與時間值,如20170711160645和170711160645均會被轉(zhuǎn)換為標(biāo)準(zhǔn)日期格式的'2017-07-1116:06:45';如果要存儲的數(shù)字是個不合法的日期與時間值,如171332160645則系統(tǒng)會提示“Incorrectdatetimevalue”錯誤。如果直接輸入數(shù)字0,則會轉(zhuǎn)化成DATETIME數(shù)據(jù)類型對應(yīng)的0值,即'0000-00-0000:00:00'。(5)使用NOW()或者SYSDATE()兩種方式獲取系統(tǒng)當(dāng)前日期。3.2日期和時間類型
3.2.5TIMESTAMP類型
TIMESTEMP類型與DATETIME類型相似,都是存儲日期與時間的。其檢索與顯示形式同樣是'YYYY-MM-DDHH:MM:SS',但是取值范圍要比DATETIME小,為'1970-01-0100:00:01'UTC~'2038-01-1903:14:07'UTC。3.2日期和時間類型
3.2.5TIMESTAMP類型TIMESTEMP類型的數(shù)據(jù)指定方式與DATETIME基本相同,兩者的不同之處在于以下幾點:(1)數(shù)據(jù)的取值范圍不同,TIMESTEMP類型的取值范圍更小。(2)如果我們對TIMESTAMP類型的字段沒有明確賦值,或是被賦與了NULL值,MySQL會自動將該字段賦值為系統(tǒng)當(dāng)前的日期與時間。(3)TIMESTEMP類型還可以使用CURRENT_TIMESTAMP來獲取系統(tǒng)當(dāng)前時間。(4)TIMESTEMP類型有一個很大的特點,那就是時間是根據(jù)時區(qū)來顯示的。例如,在東八區(qū)插入的TIMESTEMP數(shù)據(jù)為2017-07-1116:43:25,在東七區(qū)顯示時,時間部分就變成了15:43:25,在東九區(qū)顯示時,時間部分就變成了17:43:25。3.3字符串類型
字符串類型是在數(shù)據(jù)庫中存儲字符串的數(shù)據(jù)類型。MySQL中提供了多種字符串類型,分別為CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET等。使用不同的字符串類型可以實現(xiàn)從簡單的一個字符到巨大的文本塊或二進(jìn)制字符串?dāng)?shù)據(jù)的存儲。3.3字符串類型
字符串類型大小描述CHAR(M)0255字節(jié)允許長度0~M個字符的定長字符串VARCHAR(M)0~65535字節(jié)允許長度0~M個字符的變長字符串(M)0~255字節(jié)允許長度0~M個字節(jié)的定長二進(jìn)制字符串VARBINARY(M)0~65535字節(jié)允許長度0~M個字節(jié)的變長二進(jìn)制字符串TINYBLOB0~255字節(jié)二進(jìn)制形式的短文本數(shù)據(jù)(長度為不超過255個字符)TINYTEXT0~255字節(jié)短文本數(shù)據(jù)BLOB0~65535字節(jié)二進(jìn)制形式的長文本數(shù)據(jù)TEXT0~65535字節(jié)長文本數(shù)據(jù)MEDIUMBLOB0~16777215字節(jié)二進(jìn)制形式的中等長度文本數(shù)據(jù)MEDIUMTEXT0~16777215字節(jié)中等長度文本數(shù)據(jù)LOGNGBLOB0~4294967295字節(jié)二進(jìn)制形式的極大文本數(shù)據(jù)LONGTEXT0~4294967295字節(jié)極大文本數(shù)據(jù)
CHAR和VARCHAR類型相似,均用于存于較短的字符串,主要的不同之處在于存儲方式。CHAR類型長度固定,VARCHAR類型的長度可變。CHAR類型用于存儲定長的字符串,該長度在創(chuàng)建表時便以CHAR(M)的形式指定。其中M即指定的字符串長度,取值范圍為0~255。VARCHAR類型用于存儲不定長的字符串,即VARCHAR類型的長度是可變的。我們同樣是以VARCHAR(M)的形式指定長度,其中M指的是最大長度,取值范圍為0~65535,而存儲的數(shù)據(jù)所占空間大小為字符串的實際長度加1。3.3字符串類型
3.3.1CHAR和VARCHAR類型3.3字符串類型
3.3.1CHAR和VARCHAR類型存儲值CHAR(4)大小VARCHAR(4)大小''''4字節(jié)''1字節(jié)'ab''ab'4字節(jié)'ab'3字節(jié)'abcd''abcd'4字節(jié)'abcd'5字節(jié)'abcdefgh'錯誤—錯誤—CHAR(4)與VARCHAR(4)對比
BINARY和VARBINARY數(shù)據(jù)類型與CHAR和VARCHAR數(shù)據(jù)類型類似,只不過前者用來存儲二進(jìn)制字符串,而非字符型字符串。也就是說,BINARY和VARBINARY類型中并沒有字符集的概念,所以對其進(jìn)行的排序和比較都是按照二進(jìn)制值進(jìn)行計算的。其中BINARY類型長度固定,VARBINARY類型長度可變。BINARY類型用來存儲長度固定的二進(jìn)制字符串。指定數(shù)據(jù)類型的方式為BINARY(M),其中M為字節(jié)長度,取值范圍為0~255。如果要存儲的數(shù)據(jù)長度不足M,則在數(shù)據(jù)右邊填補(bǔ)'\0'以達(dá)到指定的字節(jié)長度M。例如:定義數(shù)據(jù)類型為BINARY(4),要存儲的數(shù)據(jù)為'ab',則在其右側(cè)補(bǔ)充兩個'\0'轉(zhuǎn)化為'ab\0\0'后再存儲到數(shù)據(jù)庫中。3.3字符串類型
3.3.2BINARY和VARBINARY類型VARBINARY類型用來存儲長度可變的二進(jìn)制字符串。指定數(shù)據(jù)類型的方式同樣為VARBINARY(M),其中M為最大字節(jié)長度,取值范圍為0~65535。存儲數(shù)據(jù)所占的空間為數(shù)據(jù)的實際占用空間加1,這樣能夠有效的系統(tǒng)空間、提高存儲效率。3.3字符串類型
3.3.2BINARY和VARBINARY類型
TEXT類型只能用來存儲數(shù)據(jù)量比較大的文本數(shù)據(jù)。MySQL中提供了四種TEXT的子類型:TINYTEXT、TEXT、MEDIUMTEXT以及LONGTEXT。這四種TEXT的區(qū)別在于能夠保存數(shù)據(jù)的最大長度不同,其中TINYTEXT的長度最小,LONGTEXT的長度最大。BLOB類型用來存儲數(shù)據(jù)量比較大的二進(jìn)制數(shù)據(jù)。BLOB類型也包括四種子類型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。這四種BLOB類型最大的區(qū)別也是最大長度不同,其中TINYBLOB的長度最小,LONGBLOB的長度最大,具體長度詳見表3-6。BLOB類型與TEXT類型很類似。不同點在于BLOB類型用于存儲二進(jìn)制數(shù)據(jù)。BLOB類型數(shù)據(jù)是基于數(shù)據(jù)的二進(jìn)制編碼進(jìn)行排序和比較,而TEXT類型是根據(jù)文本中字符對應(yīng)的字符集進(jìn)行排序和比較的,這一點類似于BINARY與CHAR的區(qū)別。3.3字符串類型
3.3.3TEXT和BLOB類型
ENUM類型的中文名稱為枚舉類型。ENUM是一個字符串對象,其值通常選自一個允許值列表中,該列表在創(chuàng)建表時會被明確地設(shè)定,設(shè)定的格式為:ENUM('value1','value2','value3','value4','value5',···)。在使用ENUM類型時,主要有以下幾條注意事項:(1)從允許值列表選擇值時,可以使用字符串對象所對應(yīng)的索引,也可以使用字符串對象本身。(2)在嚴(yán)格模式下,如果選取了一個無效值(即一個不在允許值列表中的字符串對象),則會提示“Datatruncatedforcolumn”錯誤。3.3字符串類型
3.3.4ENUM類型
(3)在非嚴(yán)格模式下,如果選取了一個無效值,那么空字符串將作為一個特殊的錯誤值被插入。為了區(qū)分無效值導(dǎo)致的空字符串和普通的空字符串,MySQL中規(guī)定前者的索引為0。(4)如果定義某ENUM字段時標(biāo)明值非空,則無法插入NULL值,但如果定義時并沒有標(biāo)明該值非空,則可以將NULL值插入數(shù)據(jù)中,該NULL值對應(yīng)的索引值也為NULL。3.3字符串類型
3.3.4ENUM類型
SET類型也是一個字符串對象,與ENUM類似但不相同。SET類型可以從允許值列表中選擇多個字符串成員,其列表的設(shè)定方式與ENUM相似,為:SET('value1','value2','value3','value4','value5',···),但SET列表中字符串成員的個數(shù)范圍為0~64。列表中的每一個字符串成員同樣都對應(yīng)一個索引值,依次為1、2、3、4、5···,存入數(shù)據(jù)庫中的依然是該索引值,而非字符串對象。3.3字符串類型
3.3.5SET類型在使用SET類型時,主要有以下幾條注意事項:(1)在非嚴(yán)格模式下,SET同樣可以使用空字符串代替無效值插入數(shù)據(jù)庫中,而在嚴(yán)格模式下插入無效值會提示錯誤。(2)在非嚴(yán)格模式下,如果插入一個即有有效值又有無效值的記錄,那么MySQL會自動過濾掉無效值,只插入有效值,而在嚴(yán)格模式下則會提示錯誤。(3)如果選擇的多個字符串對象中包含有重復(fù)元素,則MySQL會自動去除重復(fù)的元素,如選擇的成員為('a,b,a'),但存入數(shù)據(jù)庫的是('a,b')。因為SET類型的數(shù)據(jù)能夠從設(shè)定的允許值列表中選擇多個,所以SET適合存儲表單界面中的“多選值”。3.3字符串類型
3.3.5SET類型
從MySQL5.7.8開始,MySQL便可以支持原生JSON(JavaScriptObjectNotation)數(shù)據(jù)類型,這樣能夠更加快速有效的訪問JSON文件中的數(shù)據(jù)。JSON是一種輕量級的數(shù)據(jù)交換格式,采用了獨(dú)立于語言的文本格式,類似XML但是比XML簡單,更易讀、易編寫。對計算機(jī)來說易于解析和生成。3.4JSON類型
在MySQL中支持兩種JSON數(shù)據(jù),即JSON數(shù)組和JSON對象:(1)JSON數(shù)組。JSON數(shù)組中可以存儲多種數(shù)據(jù)類型,其格式為:[值1,值2,值3,···],以“[”開始,以“]”結(jié)束,兩個數(shù)據(jù)之間使用“,”隔開,如["abc",10,null,true,false]。(2)JSON對象。JSON對象是以“鍵/值”對形式存儲的,其格式為:{“鍵1”:值1,“鍵2”:值2,···},以“{”開始,以“}”結(jié)束,每個“鍵”后跟一個“:”;多個“鍵/值”對之間使用“,”(逗號)分隔,如{"k1":"value","k2":10}。3.4JSON類型
本章總結(jié)MySQL支持多種數(shù)據(jù)類型,主要包括數(shù)值類型、日期和時間類型和字符串類型三種,從MySQL5.7開始支持JSON類型。數(shù)值類型包括:整數(shù)類型、浮點數(shù)類型、定點數(shù)類型和BIT類型。日期與時間類型主要包括:TIME、DATE、YEAR、DATETIME、TIMESTAMP。用戶可以根據(jù)開發(fā)需求選擇合適的類型。字符串類型主要包括:CHAR、VARCHAR、BINARY、VARBINARY、TEXT、BLOB、ENUM、SET。在MySQL中支持兩種JSON數(shù)據(jù),即JSON數(shù)組和JSON對象。本章作業(yè)1.列舉浮點數(shù)與定點數(shù)的異同之處。2.如果想要數(shù)據(jù)庫中存儲的時間顯示為用戶所在時區(qū)的時間,應(yīng)該選取哪種日期與時間類型?3.列舉CHAR與VARCHAR類型的異同之處。4.列舉ENUM與SET類型的異同之處。第四章數(shù)據(jù)庫的基本操作本章主要內(nèi)容創(chuàng)建數(shù)據(jù)庫查看數(shù)據(jù)庫修改數(shù)據(jù)庫刪除數(shù)據(jù)庫123主要內(nèi)容44.1創(chuàng)建數(shù)據(jù)庫
4.1.1使用SQL語句創(chuàng)建數(shù)據(jù)庫(1)連接數(shù)據(jù)庫。(2)創(chuàng)建一個SQL語句執(zhí)行窗口。(3)創(chuàng)建數(shù)據(jù)庫。語法格式如下所示:createdatabasedb_name;4.1創(chuàng)建數(shù)據(jù)庫
4.1.1使用SQL語句創(chuàng)建數(shù)據(jù)庫【示例4-1】使用SQL語句創(chuàng)建名為“test1”的數(shù)據(jù)庫createdatabasetest1;4.1創(chuàng)建數(shù)據(jù)庫
4.1.1使用SQL語句創(chuàng)建數(shù)據(jù)庫【示例4-1】執(zhí)行結(jié)果4.1創(chuàng)建數(shù)據(jù)庫
4.1.2使用圖形界面創(chuàng)建數(shù)據(jù)庫(1)右擊“bjsxt”在彈出的列表中選擇“NewDatabase”選項4.1創(chuàng)建數(shù)據(jù)庫
4.1.2使用圖形界面創(chuàng)建數(shù)據(jù)庫(2)在彈出的“NewDatabase”窗口的“General”欄中按照要求輸入數(shù)據(jù)庫名稱、字符集和排序規(guī)則。4.1創(chuàng)建數(shù)據(jù)庫
4.1.2使用圖形界面創(chuàng)建數(shù)據(jù)庫在“SQLPreview”欄中,我們可以看到系統(tǒng)根據(jù)我們的操作自動生成的SQL語句。(3)點擊“OK”按鈕之后,會在左側(cè)的目錄結(jié)構(gòu)中看到名為test2的數(shù)據(jù)庫。4.2查看數(shù)據(jù)庫
4.2.1使用SQL語句查看數(shù)據(jù)庫1.查看所有的數(shù)據(jù)庫,在SQL語句執(zhí)行窗口中輸入:showdatabases;4.2查看數(shù)據(jù)庫
4.2.1使用SQL語句查看數(shù)據(jù)庫四個MySQL自帶的數(shù)據(jù)庫:(1)information_schema:提供了訪問數(shù)據(jù)庫元數(shù)據(jù)的方式。其中保存著關(guān)于MySQL服務(wù)器所維護(hù)的所有其他數(shù)據(jù)庫的信息,如數(shù)據(jù)庫名、表名、列的數(shù)據(jù)類型、訪問權(quán)限等。(2)mysql:這個是MySQL的核心數(shù)據(jù)庫。主要負(fù)責(zé)存儲數(shù)據(jù)庫的用戶、權(quán)限設(shè)置、關(guān)鍵字以及MySQL自己需要使用的控制和管理信息等。(3)performance_schema:主要用于收集數(shù)據(jù)庫服務(wù)器性能參數(shù),如提供進(jìn)程等待的詳細(xì)信息,包括鎖、互斥變量、文件信息;保存歷史的事件匯總信息,為提供MySQL服務(wù)器性能做出詳細(xì)的判斷;對于新增和刪除監(jiān)控事件點都非常容易,并可以改變MySQL服務(wù)器的監(jiān)控周期等。(4)sys:是MySQL5.7新增的系統(tǒng)數(shù)據(jù)庫,其在MySQL5.7中是默認(rèn)存在的,在MySQL5.6及以上版本可以手動導(dǎo)入。這個庫通過視圖的形式把information_schema和performance_schema結(jié)合起來,查詢出更加令人容易理解的數(shù)據(jù)。4.2查看數(shù)據(jù)庫
4.2.1使用SQL語句查看數(shù)據(jù)庫2.查看指定的數(shù)據(jù)庫使用SQL語句查看test1數(shù)據(jù)庫showcreatedatabasedb_name;showcreatedatabasetest1;4.2查看數(shù)據(jù)庫
4.2.1使用SQL語句查看數(shù)據(jù)庫查看test1數(shù)據(jù)庫執(zhí)行結(jié)果:4.2查看數(shù)據(jù)庫
4.2.2使用圖形界面查看數(shù)據(jù)庫使用Navicat軟件查看所有的數(shù)據(jù)庫非常簡單,所有的數(shù)據(jù)庫直接顯示在左側(cè)視圖中4.2查看數(shù)據(jù)庫
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生社區(qū)服務(wù)體系的優(yōu)化路徑
- 2025年度裝配式建筑構(gòu)件生產(chǎn)與安裝合同2篇
- 2025浙江省安全員《C證》考試題庫及答案
- 2024物聯(lián)網(wǎng)農(nóng)業(yè)技術(shù)與項目合作合同
- 2025年統(tǒng)編版2024八年級化學(xué)下冊階段測試試卷
- 2025年華東師大版必修2地理下冊階段測試試卷
- 2025年北師大版必修3英語下冊月考試卷
- 2024版公司計時工作勞動合同書
- 高中生物必修三知識點總結(jié)填空形式
- 教育心理學(xué)較全復(fù)習(xí)資料,看后必過
- 2024年度員工試用期勞動合同模板(含保密條款)3篇
- 2024-2030年全球與中國汽車音頻DSP芯片組市場銷售前景及競爭策略分析報告
- 機(jī)關(guān)事業(yè)單位財務(wù)管理制度(六篇)
- 2025禮品定制合同范本
- 醫(yī)院消毒隔離制度范文(2篇)
- 2024年01月11026經(jīng)濟(jì)學(xué)(本)期末試題答案
- 烘干煤泥合同范例
- 人教版六年級上冊數(shù)學(xué)第八單元數(shù)學(xué)廣角數(shù)與形單元試題含答案
- 2025年“三基”培訓(xùn)計劃
- 第20課 北洋軍閥統(tǒng)治時期的政治、經(jīng)濟(jì)與文化 教案
- 叉車租賃合同模板
評論
0/150
提交評論