版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目1創(chuàng)建教學(xué)管理數(shù)據(jù)庫數(shù)據(jù)庫基本概念、使用MySQL創(chuàng)建數(shù)據(jù)庫
創(chuàng)建教學(xué)管理數(shù)據(jù)庫1.1認(rèn)識(shí)數(shù)據(jù)庫1.2安裝與登錄MySQL1.3創(chuàng)建用戶數(shù)據(jù)庫
數(shù)據(jù)庫技術(shù)產(chǎn)生于20世紀(jì)60年代末,是計(jì)算機(jī)應(yīng)用領(lǐng)域數(shù)據(jù)管理的關(guān)鍵技術(shù)。數(shù)據(jù)庫技術(shù)是計(jì)算機(jī)科學(xué)的重要組成部分,也是信息管理的技術(shù)依托,主要用于研究如何向用戶提供具有共享性、安全性和可靠性數(shù)據(jù)的方法。數(shù)據(jù)庫的建設(shè)規(guī)模、數(shù)據(jù)信息的存儲(chǔ)容量和處理能力已成為衡量一個(gè)國(guó)家現(xiàn)代化程度的重要標(biāo)志。
認(rèn)識(shí)數(shù)據(jù)庫問題:數(shù)據(jù)庫與日常生活有什么關(guān)系?答案:其密切程度超出您的想像……您訪問的許多網(wǎng)站都是由數(shù)據(jù)庫驅(qū)動(dòng)的1
信息與數(shù)據(jù)數(shù)據(jù)(Data):是描述事物的符號(hào)記錄,它有多種表現(xiàn)形式,可以是文本、圖表、圖形、圖像、聲音、語言或視頻等。信息(Information):是具有特定意義的數(shù)據(jù)。信息不僅具有能夠感知、存儲(chǔ)、加工、傳播和再生等自然屬性,同時(shí)也是具有重要價(jià)值的社會(huì)資源。信息是用一定的規(guī)則或算法篩選的數(shù)據(jù)集合。1.1.1信息與數(shù)據(jù)庫2
數(shù)據(jù)庫數(shù)據(jù)庫(Database,DB):是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫中的數(shù)據(jù)需要?jiǎng)?chuàng)建數(shù)據(jù)模型來描述,如網(wǎng)絡(luò)、層次、關(guān)系模型。我們可以把數(shù)據(jù)庫理解為一個(gè)容器,它為各種數(shù)據(jù)提供了一個(gè)存儲(chǔ)空間。1.1.1信息與數(shù)據(jù)庫2
數(shù)據(jù)庫1.1.1信息與數(shù)據(jù)庫學(xué)號(hào)姓名性別出生日期專業(yè)20231012101李偉男2004-09-06計(jì)算機(jī)應(yīng)用20231012102張?zhí)m女2005-03-09軟件技術(shù)20231012103王芳女2005-05-06通信技術(shù)...............學(xué)號(hào)課程號(hào)成績(jī)20231012101c061019020231012101c061028920231012102c0610185.........student表score表1
數(shù)據(jù)庫管理系統(tǒng)1.1.2數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS):位于用戶和操作系統(tǒng)之間,是一種用于控制和管理數(shù)據(jù)庫的大型軟件,主要用于建立、使用和維護(hù)數(shù)據(jù)庫。如MySQL、Oracle等。
DBMS可以對(duì)數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)的安全性和完整性,它是數(shù)據(jù)庫系統(tǒng)的核心。
DBMS提供了數(shù)據(jù)定義語言(DataDefinitionLanguage,DDL)、數(shù)據(jù)操作語言(DataManipulationLanguage,DML)和應(yīng)用程序,可以提供用戶定義數(shù)據(jù)庫的模式結(jié)構(gòu)與權(quán)限約束,實(shí)現(xiàn)對(duì)數(shù)據(jù)的添加、刪除等操作。1
數(shù)據(jù)庫管理系統(tǒng)1.1.2數(shù)據(jù)庫管理系統(tǒng)(1)存儲(chǔ)管理(StorageManager)。DBMS通常會(huì)自行配置磁盤空間,將數(shù)據(jù)存入存儲(chǔ)裝置的數(shù)據(jù)庫。(2)查詢處理(QueryProcessor)。查詢處理負(fù)責(zé)處理用戶下達(dá)的查詢語言命令語句,可以再細(xì)分出多個(gè)模塊負(fù)責(zé)檢查語法、優(yōu)化查詢命令的處理程序。(3)事務(wù)管理(TransactionManager)。事務(wù)管理負(fù)責(zé)處理數(shù)據(jù)庫的事務(wù),保障數(shù)據(jù)庫商業(yè)事務(wù)的操作需要,以及并發(fā)控制管理(Concurrency-ControlManager)資源鎖定等。(4)恢復(fù)管理(RecoveryManager)?;謴?fù)管理主要是日志管理(LogManager),負(fù)責(zé)記錄數(shù)據(jù)庫的所有操作,可以恢復(fù)數(shù)據(jù)庫系統(tǒng)指定時(shí)間點(diǎn)存儲(chǔ)的數(shù)據(jù)。1
數(shù)據(jù)庫系統(tǒng)1.1.3數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,DBS):)是由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用程序和用戶組成的存儲(chǔ)、管理、處理和維護(hù)數(shù)據(jù)的系統(tǒng)。通常包括硬件、軟件、數(shù)據(jù)和用戶四大組件,其架構(gòu)如圖所示。1SQL1.1.4結(jié)構(gòu)化查詢語言結(jié)構(gòu)化查詢語言(StructuredQueryLanguage,SQL)是一種數(shù)據(jù)查詢語言和程序設(shè)計(jì)語言,主要用于管理數(shù)據(jù)庫中的數(shù)據(jù),如存取數(shù)據(jù)、查詢數(shù)據(jù)、更新數(shù)據(jù)等,由四部分組成。1.?dāng)?shù)據(jù)定義語言
數(shù)據(jù)定義語言(DDL)主要用于創(chuàng)建數(shù)據(jù)庫、表等,其語句包括動(dòng)詞CREATE、DROP和ALTER,如在數(shù)據(jù)庫中創(chuàng)建新表或刪除表的語句(CREATETABLE或DROPTABLE)。2.?dāng)?shù)據(jù)操作語言
數(shù)據(jù)操作語言(DML)主要用于對(duì)數(shù)據(jù)表進(jìn)行添加、修改和刪除操作,其語句包括動(dòng)詞INSERT、UPDATE和DELETE,分別用于添加、修改和刪除表中的行。3.?dāng)?shù)據(jù)查詢語言
數(shù)據(jù)查詢語言(DataQueryLanguage,DQL)主要用于查詢數(shù)據(jù)。例如,使用SELECT語句可以查詢數(shù)據(jù)庫中的一條數(shù)據(jù)或多條數(shù)據(jù)。4.?dāng)?shù)據(jù)控制語言
數(shù)據(jù)控制語言(DataControlLanguage,DCL)主要用于控制用戶的訪問權(quán)限。
創(chuàng)建教學(xué)管理數(shù)據(jù)庫1.1認(rèn)識(shí)數(shù)據(jù)庫1.2安裝與登錄MySQL1.3創(chuàng)建用戶數(shù)據(jù)庫
1.2.1
MySQL的安裝和配置1
MySQL版本信息官網(wǎng)地址:。MySQL版本:企業(yè)版(Enterprise)和社區(qū)版(Community)。社區(qū)版是通過GPL協(xié)議授權(quán)的開源軟件,可以免費(fèi)使用。企業(yè)版是需要收費(fèi)的商業(yè)軟件。安裝文件類型:MSI(安裝版)和ZIP(壓縮包)兩種打包的版本。2
MySQL安裝文件類型3下載MySQL8.01.2.1
MySQL的安裝和配置3下載MySQL8.01.2.1
MySQL的安裝和配置4
安裝MySQL1.2.1
MySQL的安裝和配置選擇需要安裝的產(chǎn)品:4
安裝MySQL安裝提示界面:1.2.1
MySQL的安裝和配置4
安裝MySQL安裝完成界面:1.2.1
MySQL的安裝和配置4
安裝MySQL設(shè)置root賬號(hào)密碼:1.2.1
MySQL的安裝和配置4
安裝MySQL設(shè)置MySQL服務(wù)名稱:1.2.1
MySQL的安裝和配置4
安裝MySQL應(yīng)用配置界面:1.2.1
MySQL的安裝和配置4
安裝MySQL安裝后的目錄結(jié)構(gòu):bin目錄:存放可執(zhí)行文件,如MySQL服務(wù)程序mysqld.exe、命令行客戶端工具mysql.exe等。docs目錄:存放文檔,如ChangeLog。include目錄:用于存放一些頭文件,如mysql.h、mysql_version.h等。lib目錄:用于存放一系列的庫文件。share目錄:用于存放字符集、語言等信息。etc目錄:用于存放配置文件。1.2.1
MySQL的安裝和配置1
啟動(dòng)MySQL服務(wù)1.2.2
MySQL的啟動(dòng)和登錄通過Windows服務(wù)管理器啟動(dòng)MySQL服務(wù)(3種方式)①單擊“開始”菜單,
在“附件”中選擇“運(yùn)行”命令,打開“運(yùn)行”對(duì)話框,在其文本框中輸入“services.msc”,單擊“確定”按鈕。②用鼠標(biāo)右鍵單擊桌面上的“計(jì)算機(jī)”圖標(biāo),在彈出的快捷菜單中選擇“管理”命令,打開“計(jì)算機(jī)管理”窗口,在窗口左側(cè)選擇“服務(wù)和應(yīng)用程序”中的“服務(wù)”即可。③打開“控制面板”窗口,選擇“性能與維護(hù)”,再單擊“管理工具”→“服務(wù)”,就可以打開Windows服務(wù)管理器了。1
啟動(dòng)MySQL服務(wù)1.2.2
MySQL的啟動(dòng)和登錄通過Windows服務(wù)管理器啟動(dòng)MySQL服務(wù)(3種方式)1
啟動(dòng)MySQL服務(wù)1.2.2
MySQL的啟動(dòng)和登錄通過命令行啟動(dòng)MySQL服務(wù)①在“開始”菜單的“搜索”文本框中輸入“cmd”,出現(xiàn)“命令提示符”命令,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“以管理員身份運(yùn)行”命令②輸入如下命令:netstartmysql80停止MySQL服務(wù),輸入命令:netstopmysql802
設(shè)置path環(huán)境變量1.2.2
MySQL的啟動(dòng)和登錄使用DOS命令行方式登錄MySQL服務(wù)器,需要設(shè)置Path環(huán)境變量3
登錄MySQL服務(wù)器1.2.2
MySQL的啟動(dòng)和登錄兩種方式登錄MySQL服務(wù)器mysql-h主機(jī)名-u用戶名-p①使用命令行登錄②使用MySQLCommandLineClient登錄。從“開始”菜單中選擇“所有程序”→“MySQL”→“MySQLServer8.0”→“MySQL8.0CommandLineClient”命令,打開MySQL客戶端窗口。mysql-h主機(jī)名
-u用戶名
-pmysql-uroot-p如果想從任何路徑下都能夠執(zhí)行此命令,需要設(shè)置path環(huán)境變量
MySQL客戶端的相關(guān)命令命令簡(jiǎn)寫具體含義?\?顯示幫助信息clear\c清除當(dāng)前輸入語句connect\r連接到服務(wù)器,可選參數(shù)為數(shù)據(jù)庫和主機(jī)delimiter\d設(shè)置語句分隔符exit\q退出MySQLhelp\h顯示幫助信息1.2.2
MySQL的啟動(dòng)和登錄
MySQL客戶端的相關(guān)命令命令簡(jiǎn)寫具體含義print\p打印當(dāng)前命令prompt\R改變MySQL提示信息quit\q退出MySQLsource\.執(zhí)行一個(gè)SQL腳本文件,以一個(gè)文件名作為參數(shù)status\s從服務(wù)器獲取MySQL的狀態(tài)信息tee\T設(shè)置輸出文件,將所有信息添加到給定的輸出文件中use\u選擇一個(gè)數(shù)據(jù)庫使用,參數(shù)為數(shù)據(jù)庫名稱charset\C切換到另一個(gè)字符集1.2.2
MySQL的啟動(dòng)和登錄1.2.3
MySQL的圖形化工具——NavicatNavicatforMySQL是一款功能強(qiáng)大的MySQL數(shù)據(jù)庫管理和開發(fā)工具,它為專業(yè)開發(fā)者提供可視化設(shè)計(jì)和數(shù)據(jù)庫管理功能,并且方便初學(xué)者學(xué)習(xí)和掌握。
1.新建連接1.2.3
MySQL的圖形化工具——Navicat
2.打開連接
3.輸入SQL命令,查看結(jié)果1.2.3
MySQL的圖形化工具——Navicat
創(chuàng)建教學(xué)管理數(shù)據(jù)庫1.1認(rèn)識(shí)數(shù)據(jù)庫1.2安裝與登錄MySQL1.3創(chuàng)建用戶數(shù)據(jù)庫
1.創(chuàng)建數(shù)據(jù)庫CREATEDATABASE數(shù)據(jù)庫名稱[庫選項(xiàng)];
2.查看數(shù)據(jù)庫
3.選擇數(shù)據(jù)庫SHOWDATABASES;SHOWCREATEDATABASE數(shù)據(jù)庫名稱;USE數(shù)據(jù)庫名稱;
4.刪除數(shù)據(jù)庫DROPDATABASE數(shù)據(jù)庫名稱;1.3創(chuàng)建用戶數(shù)據(jù)庫
打開連接,鼠標(biāo)右鍵,新建數(shù)據(jù)庫1.3.4
使用Navicat創(chuàng)建數(shù)據(jù)庫
項(xiàng)目小結(jié)
本項(xiàng)目介紹了數(shù)據(jù)的基本概念、數(shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)及MySQL數(shù)據(jù)庫下載、安裝以及使用的基本知識(shí),還介紹了創(chuàng)建和刪除數(shù)據(jù)庫的基本方法,為后續(xù)項(xiàng)目的學(xué)習(xí)打下了基礎(chǔ)。
下課了。。。休息一會(huì)兒。。。攀登項(xiàng)目2創(chuàng)建與維護(hù)教學(xué)管理
數(shù)據(jù)表建表、對(duì)表數(shù)據(jù)的增刪改查操作
創(chuàng)建教學(xué)管理數(shù)據(jù)庫2.1解讀MySQL的數(shù)據(jù)類型2.2創(chuàng)建數(shù)據(jù)表2.3操作表數(shù)據(jù)庫2.4使用Navicat管理表2.5添加表的約束
2.1解讀MySQL的數(shù)據(jù)類型學(xué)號(hào)sno姓名sname性別ssex出生日期birthday專業(yè)spec20231012101李偉男2002-09-06計(jì)算機(jī)應(yīng)用20231012102張?zhí)m女2003-03-09軟件技術(shù)20231012103王芳女2003-05-06通信技術(shù)20231012104劉勇男2003-06-16軟件技術(shù)課程號(hào)cno課程名cname學(xué)分credit開課學(xué)期termc06101高等數(shù)學(xué)41c06102大學(xué)英語21c06103C語言52c05101軟件工程44學(xué)號(hào)sno課程號(hào)cno成績(jī)grade20231012101c061019020231012101c061028920231012102c061018520231012103c0610375字符串類型數(shù)值類型日期時(shí)間類型三大類型:學(xué)生表課程表成績(jī)表1
字符串類型char類型:定長(zhǎng)的字符串。varchar類型:不定長(zhǎng)的字段串。2.1解讀MySQL的數(shù)據(jù)類型插入值char(4)char(4)存儲(chǔ)需求varchar(4)varchar(4)存儲(chǔ)需求‘’‘‘4字節(jié)‘’1字節(jié)‘a(chǎn)b’‘a(chǎn)b‘4字節(jié)‘a(chǎn)b’3字節(jié)‘a(chǎn)bc’‘a(chǎn)bc‘4字節(jié)‘a(chǎn)bc’4字節(jié)‘a(chǎn)bcd’‘a(chǎn)bcd’4字節(jié)‘a(chǎn)bcd’5字節(jié)1
字符串類型text類型:用于保存大文本數(shù)據(jù),例如,文章內(nèi)容、評(píng)論等比較長(zhǎng)的文本。binary和varbinary類型:binary和varbinary類型類似于char和varchar,不同的是,它們所表示的是二進(jìn)制數(shù)據(jù)。blob類型:是一種特殊的二進(jìn)制類型,它用于表示數(shù)據(jù)量很大的二進(jìn)制數(shù)據(jù),例如圖片、PDF文檔等。2.1解讀MySQL的數(shù)據(jù)類型1
字符串類型enum類型:也稱為枚舉類型,只能從枚舉列表中取,并且只能取一個(gè)。set類型:集合類型,用于表示字符串對(duì)象,它的值可以有零個(gè)或多個(gè)。與enum不同的是,enum只允許向一條記錄中插入一個(gè)值,而set可以向一條記錄中插入多個(gè)值。2.1解讀MySQL的數(shù)據(jù)類型2
數(shù)字類型1.整數(shù)類型數(shù)據(jù)類型字節(jié)數(shù)有符號(hào)數(shù)的取值范圍無符號(hào)數(shù)的取值范圍tinyint1-128~1270~255smallint2-32768~327670~65535mediumint3-8388608~83886070~16777215int4-2147483648~21474836470~4294967295bigint8-9223372036854775808~92233720368547758070~18446744073709551615intunsigned2.1解讀MySQL的數(shù)據(jù)類型2
數(shù)字類型2.小數(shù)類型數(shù)據(jù)類型精度取值范圍字節(jié)數(shù)
float(p[,s])8位精度,p表示數(shù)據(jù)長(zhǎng)度,s表示小數(shù)位數(shù),若不指定精度,則默認(rèn)保存實(shí)際精度+(-)3.402823466E+384
double(p[,s])16位精度,p表示數(shù)據(jù)長(zhǎng)度,s表示小數(shù)位數(shù),若不指定精度,則默認(rèn)保存實(shí)際精度+(-)1.7976931348623157E+308+(-)2.2250738585072014E-3088
decimal(p[,s])p表示數(shù)據(jù)長(zhǎng)度,s表示小數(shù)位數(shù),默認(rèn)的精度為10,小數(shù)位數(shù)為0可變自定義浮點(diǎn)數(shù)定點(diǎn)數(shù)--2.1解讀MySQL的數(shù)據(jù)類型3
日期和時(shí)間類型類型取值范圍說明year1901~2155年份,格式Y(jié)YYY或YYdate1000-01-01~1999-12-31日期,格式Y(jié)YYY-MM-DDtime-838:59:59~838:59:59時(shí)間,格式HH:MM:SSdatetime1000-01-0100:0:0~9999-12-3123:59:59日期和時(shí)間,格式Y(jié)YYY-MM-DDHH:MM:SStimestamp1970-01-0100:00:01~2038-01-1903:14:07時(shí)間標(biāo)簽,在處理報(bào)告時(shí)使用顯示格式取決于M的值2.1解讀MySQL的數(shù)據(jù)類型
創(chuàng)建教學(xué)管理數(shù)據(jù)庫2.1解讀MySQL的數(shù)據(jù)類型2.2創(chuàng)建數(shù)據(jù)表2.3操作表數(shù)據(jù)庫2.4使用Navicat管理表2.5添加表的約束
1
表的基本概念2.2創(chuàng)建數(shù)據(jù)表學(xué)號(hào)sno姓名sname性別ssex出生日期birthday專業(yè)spec20231012101李偉男2002-09-06計(jì)算機(jī)應(yīng)用20231012102張?zhí)m女2003-03-09軟件技術(shù)20231012103王芳女2003-05-06通信技術(shù)20231012104劉勇男2003-06-16軟件技術(shù)表名、表結(jié)構(gòu)、字段名、字段長(zhǎng)度和小數(shù)位數(shù)student表1
表的基本概念2.2創(chuàng)建數(shù)據(jù)表說明:(1)字符串類型。對(duì)于字符串類型來說,長(zhǎng)度代表字段所能容納字符的數(shù)目,因此它會(huì)限制用戶所能輸入的文本長(zhǎng)度。(2)整數(shù)類型。對(duì)于整數(shù)類型來說,長(zhǎng)度代表該數(shù)據(jù)類型指定的顯示寬度。顯示寬度是指能夠顯示的最大數(shù)據(jù)的長(zhǎng)度。在不指定寬度的情況下,每個(gè)整數(shù)類型都有默認(rèn)的顯示寬度。(3)二進(jìn)制類型。對(duì)于二進(jìn)制類型來說,長(zhǎng)度代表字段所能容納的最大字節(jié)數(shù)。(4)浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型。對(duì)于浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型來說,長(zhǎng)度代表數(shù)據(jù)的總長(zhǎng)度,也就是精度。精度是指數(shù)據(jù)中數(shù)字的位數(shù)(包括小數(shù)點(diǎn)左側(cè)的整數(shù)部分和小數(shù)點(diǎn)右側(cè)的小數(shù)部分),而小數(shù)位數(shù)是指數(shù)字中小數(shù)點(diǎn)右側(cè)的位數(shù)。例如,數(shù)字12345.678的精度是8,小數(shù)位數(shù)是3。1
表的基本概念2.2創(chuàng)建數(shù)據(jù)表確定數(shù)據(jù)類型的原則:(1)數(shù)據(jù)內(nèi)容是數(shù)值。
如果數(shù)據(jù)內(nèi)容是數(shù)值,則數(shù)據(jù)類型應(yīng)為整型、浮點(diǎn)型和定點(diǎn)型中的一種。其遵循的原則如下。①選擇最小的可用類型,如果值永遠(yuǎn)不超過127,則使用tinyint。②對(duì)于沒有小數(shù)部分的數(shù),可以選擇整數(shù)類型。③浮點(diǎn)類型用于可能具有小數(shù)部分的數(shù),如貨物單價(jià)、網(wǎng)上購物支付金額等。(2)數(shù)據(jù)內(nèi)容是文本。
如果數(shù)據(jù)內(nèi)容是文本,則數(shù)據(jù)類型應(yīng)為字符串類型,具體選擇哪一種字符串類型,可以遵循以下原則。①從速度方面考慮,要選擇固定長(zhǎng)度的列,可以使用char類型。②要節(jié)省空間,使用長(zhǎng)度可變的列,可以使用varchar類型。③要將列中的內(nèi)容限制在一種選擇,可以使用enum類型。④允許在一列中有多于一個(gè)的條目,可以使用set類型。⑤對(duì)于長(zhǎng)文本數(shù)據(jù),如果要搜索的內(nèi)容不區(qū)分大小寫,可以使用text類型。⑥對(duì)于長(zhǎng)文本數(shù)據(jù),如果要搜索的內(nèi)容區(qū)分大小寫,可以使用blob類型。2
建表2.2創(chuàng)建數(shù)據(jù)表學(xué)號(hào)sno姓名sname性別ssex出生日期birthday專業(yè)spec20231012101李偉男2002-09-06計(jì)算機(jī)應(yīng)用20231012102張?zhí)m女2003-03-09軟件技術(shù)20231012103王芳女2003-05-06通信技術(shù)20231012104劉勇男2003-06-16軟件技術(shù)student表2
建表2.2創(chuàng)建數(shù)據(jù)表mysql>createtablestudent(->snochar(11)comment'學(xué)號(hào)'primarykey,->snamechar(8)comment'姓名',->sexenum('男','女')comment'性別',->birthdaydatecomment'出生日期',->specvarchar(20)comment'專業(yè)'->);CREATETABLE[IFNOTEXISTS]表名(字段名字段類型[字段屬性]…)[表選項(xiàng)]語法格式:3
查看表結(jié)構(gòu)2.2創(chuàng)建數(shù)據(jù)表1.SHOWCREATETABLE表名;2.DESCRIBE表名;3.使用SHOWTABLES語句查看庫中所有表;mysql>showcreatetablestudent;mysql>descstudent;mysql>showtables;4修改表結(jié)構(gòu)2.2創(chuàng)建數(shù)據(jù)表
ALTERTABLE
命令1.修改表名2.修改字段名ALTERTABLE舊表名RENAME[TO]新表名;ALTERTABLE表名CHANGE舊屬性名
新屬性名
新數(shù)據(jù)類型
[字段屬性];3.增加字段ALTERTABLE表名ADD[COLUMN]新字段名字段類型[FIRST|AFTER字段名]mysql>altertablestudentrenametostudents;mysql>altertablestudentaddemailvarchar(30)afterspec;4修改表結(jié)構(gòu)2.2創(chuàng)建數(shù)據(jù)表
ALTERTABLE
命令4.修改字段的數(shù)據(jù)類型ALTERTABLE表名MODIFY[COLUMN]字段名
數(shù)據(jù)類型
[字段屬性];5.刪除字段ALTERTABLE表名DROP[COLUMN]字段名;mysql>altertablecoursemodifytermenum('1','2','3','4','5','6');mysql>altertablestudentdropemail;5
刪除數(shù)據(jù)表2.2創(chuàng)建數(shù)據(jù)表DROP
TABLE表名;
刪除數(shù)據(jù)表是指刪除數(shù)據(jù)庫中已存在的表,在刪除數(shù)據(jù)表的同時(shí),數(shù)據(jù)表中存儲(chǔ)的數(shù)據(jù)都將被刪除。
創(chuàng)建教學(xué)管理數(shù)據(jù)庫2.1解讀MySQL的數(shù)據(jù)類型2.2創(chuàng)建數(shù)據(jù)表2.3操作表數(shù)據(jù)庫2.4使用Navicat管理表2.5添加表的約束
1添加數(shù)據(jù)2.3操作表數(shù)據(jù)INSERT[INTO]表名[字段名,…]VALUES(值1,[值2]…);1.為所有字段添加數(shù)據(jù)2.為部分字段添加數(shù)據(jù)mysql>insertintostudent->values('20231012101','李偉','男','2004-09-06','計(jì)算機(jī)應(yīng)用');mysql>insertintostudent(sno,sname)values('20231012102','張?zhí)m');3.一次添加多行數(shù)據(jù)mysql>insertintostudentvalues->('20231012103','王芳','女','2005-05-06','通信技術(shù)'),->('20231012104','劉勇','男','2005-06-16','軟件技術(shù)'),->('20231012105','高興','男',null,null);2查詢數(shù)據(jù)2.3操作表數(shù)據(jù)2.查詢表中部分字段SELECT*FROM數(shù)據(jù)表名;1.查詢表中全部數(shù)據(jù)SELECT{字段名1,字段名2,字段名3,…}FROM數(shù)據(jù)表名;3.簡(jiǎn)單條件查詢SELECT*|{字段名1,字段名2,字段名3,…}FROM數(shù)據(jù)表名WHERE字段名=值;mysql>select*fromstudent;mysql>selectsno,snamefromstudent;mysql>select*fromstudentwherespec='軟件技術(shù)';3修改數(shù)據(jù)2.3操作表數(shù)據(jù)UPDATE表名SET字段名1=值1[,字段名2=值2,…][WHERE條件=表達(dá)式];4刪除數(shù)據(jù)1.使用DELETE語句刪除數(shù)據(jù)DELETEFROM表名[WHETE條件表達(dá)式];2.使用TRUNCATE語句刪除數(shù)據(jù)TRUNCATE[TABLE]表名mysql>updatecoursesetterm='1'wherecname='C語言';mysql>deletefromstudentwheresno='20231012105';
創(chuàng)建教學(xué)管理數(shù)據(jù)庫2.1解讀MySQL的數(shù)據(jù)類型2.2創(chuàng)建數(shù)據(jù)表2.3操作表數(shù)據(jù)庫2.4使用Navicat管理表2.5添加表的約束
1建表2.4使用Navicat管理表打開連接--->打開數(shù)據(jù)庫--->用鼠標(biāo)右鍵單擊“表”節(jié)點(diǎn)--->快捷菜單中選擇“新建表”--->在打開的設(shè)計(jì)表窗口中輸入列名、數(shù)據(jù)類型等等列屬性--->保存并輸入表名2.4使用Navicat管理表2編輯表數(shù)據(jù)左側(cè)窗口中展開數(shù)據(jù)庫中的表--->選中要編輯的表--->鼠標(biāo)右鍵快捷菜單中選擇“打開表”命令--->打開該表的數(shù)據(jù)窗口--->利用窗口底部的“+”、“—”按鈕進(jìn)行添加、刪除數(shù)據(jù)--->“√”按鈕保存編輯結(jié)果
創(chuàng)建教學(xué)管理數(shù)據(jù)庫2.1解讀MySQL的數(shù)據(jù)類型2.2創(chuàng)建數(shù)據(jù)表2.3操作表數(shù)據(jù)庫2.4使用Navicat管理表2.5添加表的約束
1非空約束2.5添加表的約束NOTNULL字段名
數(shù)據(jù)類型
NOTNULL;
非空約束指的是數(shù)據(jù)列不能為NULL,非空表示數(shù)據(jù)列不允許有空值出現(xiàn),空值表示數(shù)值未確定,并不是數(shù)字“0”或字符“空格”。非空約束可以確保數(shù)據(jù)列中必須是有意義的值。語法格式:2.5添加表的約束2主鍵約束PRIMARYKEY1.創(chuàng)建表時(shí)定義主鍵約束2.修改表的主鍵修改表結(jié)構(gòu)ALTERTABLE
設(shè)置主鍵的目的是幫助MySQL以最快的速度查找到表中的指定信息。主鍵的值能唯一標(biāo)識(shí)表中的記錄,類似指紋、身份證用于標(biāo)識(shí)人的身份一樣。#列級(jí)約束mysql>createtablecourse01(->cnochar(6)primarykey,->cnamevarchar(20)notnull,->credittinyintnotnull,->termtinyintnotnull->);#表級(jí)約束mysql>createtablecourse02(->cnochar(6),->cnamevarchar(20)notnull,->credittinyintnotnull,->termtinyintnotnull,->primarykey(cno)->);mysql>altertablestudent01addprimarykey(sno);3外鍵約束2.5添加表的約束FOREIGNKEYCONSTRAINT外鍵名FOREIGNKEY(字段名1,[字段名2…])REFERENCES表名(字段名1,[字段名2…])[ONDELETE{RESTRICT|CASCADE|SETNULL|NOACTION}][ONUPDATE{RESTRICT|CASCADE|SETNULL|NOACTION}]1.參照完整性
在關(guān)系數(shù)據(jù)庫中,有很多規(guī)則是跟表之間的關(guān)系有關(guān)的,表與表之間往往存在一種“父子”關(guān)系。外鍵的作用是建立子表與其父表的關(guān)聯(lián)關(guān)系,保證子表與父表關(guān)聯(lián)數(shù)據(jù)的一致性。當(dāng)父表中更新或刪除某條信息時(shí),子表中與之對(duì)應(yīng)的信息也必須有相應(yīng)的改變。語法格式:3外鍵約束2.5添加表的約束FOREIGNKEY參數(shù)名稱功能描述RESTRICT默認(rèn)值。拒絕父表刪除或修改外鍵關(guān)聯(lián)字段CASCADE父表中刪除或更新記錄時(shí),同時(shí)自動(dòng)刪除或更新子表中對(duì)應(yīng)的記錄SETNULL父表中刪除或更新記錄時(shí),使用NULL值替換子表中對(duì)應(yīng)的記錄(不適用于NOTNULL字段)NOACTION與默認(rèn)值RESTRICT相同,拒絕父表刪除或修改外鍵關(guān)聯(lián)字段SETDEFAULT設(shè)默認(rèn)值,但I(xiàn)nnoDB目前不支持外鍵約束的參數(shù)說明3外鍵約束2.5添加表的約束FOREIGNKEY2.創(chuàng)建表時(shí)定義外鍵mysql>createtablescore(->snochar(11)notnull,->cnochar(6)notnull,->gradeint,->primarykey(sno,cno),->foreignkey(sno)referencesstudent(sno)->);3.對(duì)已有的表添加外鍵mysql>altertablescoreaddconstraintfk_cno->foreignkey(cno)referencescourse(cno);2.5添加表的約束4檢查約束CHECKCONSTRAINT約束名CHECK(條件)5唯一約束UNIQUE
唯一性約束是指所有記錄中該字段的值不能重復(fù)出現(xiàn)。
在進(jìn)行數(shù)據(jù)完整性管理時(shí),還需要一些針對(duì)數(shù)據(jù)表列的取值范圍進(jìn)行限定的約束。語法格式:mysql>altertablestudent->addconstraintcheck_birth->check(birthday>'1999-12-31');mysql>altertablecourseaddunique(cname);2.5添加表的約束6其他約束默認(rèn)值DEFAULT、自動(dòng)增長(zhǎng)AUTO_INCREMENT
默認(rèn)約束就是給數(shù)據(jù)表中的字段指定默認(rèn)值。在插入一條新的記錄時(shí),如果沒有為這個(gè)字段賦值,那么系統(tǒng)會(huì)自動(dòng)為這個(gè)字段插入默認(rèn)值。1.默認(rèn)約束字段名數(shù)據(jù)類型
DEFAULT默認(rèn)值;語法格式:mysql>createtablemy_default(->idintprimarykey,->stu_idintunique,->gradefloatdefault0);2.5添加表的約束6其他約束默認(rèn)值DEFAULT、自動(dòng)增長(zhǎng)AUTO_INCREMENTAUTO_INCREMENT是MySQL數(shù)據(jù)庫中一個(gè)特殊的約束。其主要用于為表中插入的新記錄自動(dòng)生成唯一的ID。AUTO_INCREMENT約束的字段可以是任何整數(shù)類型(TINYINT、SMALLINT、INT、BIGINT等)。2.自動(dòng)增長(zhǎng)字段字段名
數(shù)據(jù)類型AUTO_INCREMENT語法格式:mysql>createtabletest(->idintprimarykeyauto_increment,->namevarchar(20));2.5添加表的約束6其他約束默認(rèn)值DEFAULT、自動(dòng)增長(zhǎng)AUTO_INCREMENT2.自動(dòng)增長(zhǎng)字段說明:(1)一個(gè)表中只能有一個(gè)自動(dòng)增長(zhǎng)字段,該字段的數(shù)據(jù)類型是整數(shù)類型,且必須為鍵,如唯一鍵、主鍵。(2)若為自動(dòng)增長(zhǎng)字段插入Null、0或在插入時(shí)省略該字段,則該字段就會(huì)使用自動(dòng)增長(zhǎng)值;若插入的是一個(gè)具體值,則不會(huì)使用自動(dòng)增長(zhǎng)值。(3)自動(dòng)增長(zhǎng)從1開始自增,每次加1。若插入的值大于自動(dòng)增長(zhǎng)的值,則下次插入的自動(dòng)增長(zhǎng)值會(huì)自動(dòng)使用最大值加1;若插入的值小于自動(dòng)增長(zhǎng)值,則不會(huì)對(duì)自動(dòng)增長(zhǎng)值產(chǎn)生影響。(4)使用DELETE刪除記錄時(shí),自動(dòng)增長(zhǎng)值不會(huì)減小或填補(bǔ)空缺。72.5添加表的約束字段名數(shù)據(jù)類型約束說明snochar(11)主鍵學(xué)號(hào)snamechar(8)非空姓名sexchar(2)默認(rèn)值’男’且只有’男’或’女’兩種情況性別birthdaydate大于1999-12-31出生日期specvarchar(20)非空專業(yè)課堂練習(xí):按照下表要求創(chuàng)建student表72.5添加表的約束課堂練習(xí):按照下表要求創(chuàng)建course表字段名數(shù)據(jù)類型約束說明cnochar(6)主鍵課程號(hào)cnamevarchar(20)非空,唯一課程名credittinyint非空,數(shù)值范圍(1~8)學(xué)分termtinyint非空,數(shù)值范圍(1~8)開設(shè)學(xué)期72.5添加表的約束課堂練習(xí):按照下表要求創(chuàng)建score表字段名數(shù)據(jù)類型約束說明snochar(11)組合主鍵,外鍵學(xué)號(hào)cnochar(6)組合主鍵,外鍵課程號(hào)gradeint數(shù)值范圍(1~100)成績(jī)項(xiàng)目小結(jié)
本項(xiàng)目介紹了數(shù)據(jù)表的創(chuàng)建、修改、刪除及表數(shù)據(jù)的增、刪、改等操作,還介紹了數(shù)據(jù)類型及添加表約束的方法。學(xué)習(xí)完本項(xiàng)目,讀者能夠?qū)?shù)據(jù)表的管理具備一定的理論和操作基礎(chǔ)。
下課了。。。休息一會(huì)兒。。。攀登項(xiàng)目3查詢教學(xué)管理數(shù)據(jù)表對(duì)表數(shù)據(jù)的查詢,單表和多表查詢
查詢教學(xué)管理數(shù)據(jù)表3.1掌握單表查詢3.2掌握連接查詢3.3掌握嵌套查詢
查詢教學(xué)管理數(shù)據(jù)表學(xué)號(hào)sno姓名sname性別ssex出生日期birthday專業(yè)spec20231012101李偉男2002-09-06計(jì)算機(jī)應(yīng)用20231012102張?zhí)m女2003-03-09軟件技術(shù)20231012103王芳女2003-05-06通信技術(shù)20231012104劉勇男2003-06-16軟件技術(shù)課程號(hào)cno課程名cname學(xué)分credit開課學(xué)期termc06101高等數(shù)學(xué)41c06102大學(xué)英語21c06103C語言52c05101軟件工程44學(xué)號(hào)sno課程號(hào)cno成績(jī)grade20231012101c061019020231012101c061028920231012102c061018520231012103c0610375學(xué)生表student課程表course成績(jī)表score3.1掌握單表查詢SELECT語句的一般格式
SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]…
FROM<表名或視圖名>[,<表名或視圖名>][WHERE<條件表達(dá)式>][GROUPBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC|DESC]][LIMIT[OFFSET]記錄數(shù)];
SELECT子句:指定要顯示的屬性列FROM子句:指定查詢對(duì)象(基本表或視圖)WHERE子句:指定查詢條件GROUPBY子句:對(duì)查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個(gè)組。通常會(huì)在每組中作用聚集函數(shù)。HAVING短語:只有滿足指定條件的組才予以輸出ORDERBY子句:對(duì)查詢結(jié)果表按指定列值的升序或降序排序LIMIT子句:指定只輸出查詢結(jié)果集的部分行3.1掌握單表查詢查詢僅涉及一個(gè)表1.SELECT…FROM基本子句的使用2.使用WHERE子句查詢滿足條件的行3.對(duì)查詢結(jié)果排序(ORDERBY子句)4.使用LIMIT子句限制查詢結(jié)果(LIMIT子句)5.使用聚集函數(shù)6.分組查詢(GROUPBY子句)3.1掌握單表查詢3.1.1SELECT…FROM基本子句的使用1.查詢表中的指定列
【例3.1】查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。
SELECTsno,snameFROMstudent;【例3.2】查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在專業(yè)。SELECTsname,sno,specFROMstudent;2.查詢?nèi)苛小纠?.3】查詢?nèi)w學(xué)生的信息。SELECT*FROMstudent;等價(jià)于SELECTsno,sname,ssex,birthday,specFROMstudent;3.查詢經(jīng)過計(jì)算的值
SELECT子句的<目標(biāo)列表達(dá)式>不僅可以是表中的屬性列,還可以是表達(dá)式。
+-------+---------------------+|sname|2025-year(birthday)|+-------+---------------------+|李偉|20||張?zhí)m|19||王芳|19||劉勇|19|+-------+---------------------+3.1.1SELECT…FROM基本子句的使用【例3.4】查詢?nèi)w學(xué)生的姓名及年齡。SELECTsname,2025-year(birthday)FROMstudent;/*假設(shè)當(dāng)時(shí)為2025年*/輸出結(jié)果:4.為列取別名可以通過指定別名來改變查詢結(jié)果的列標(biāo)題。在列的別名前也可以添加關(guān)鍵字AS。
+-------+-----------------+------+------------+|sname|ageofstudent:|sage|spec|+-------+-----------------+------+------------+|李偉|ageofstudent:|20|計(jì)算機(jī)應(yīng)用||張?zhí)m|ageofstudent:|19|軟件技術(shù)||王芳|ageofstudent:|19|通信技術(shù)||劉勇|ageofstudent:|19|軟件技術(shù)|+-------+-----------------+------+------------+3.1.1SELECT…FROM基本子句的使用【例3.5】查詢?nèi)w學(xué)生的姓名、年齡和所在專業(yè)。輸出結(jié)果:SELECTsname,'ageofstudent:',2025-year(birthday)sage,specFROMstudent;5.消除取值重復(fù)的行如果希望一個(gè)查詢結(jié)果集中沒有重復(fù)行,可以使用關(guān)鍵字DISTINCT去除重復(fù)行。如果沒有指定DISTINCT關(guān)鍵詞,則缺省為ALL。
+-------------+|sno|+-------------+|20231012101||20231012102||20231012103|+-------------+3.1.1SELECT…FROM基本子句的使用【例3.6】查詢選修了課程的學(xué)生學(xué)號(hào)。輸出結(jié)果:SELECTdistinctsnoFROMscore;查詢僅涉及一個(gè)表1.SELECT…FROM基本子句的使用2.使用WHERE子句查詢滿足條件的行3.對(duì)查詢結(jié)果排序(ORDERBY子句)4.使用LIMIT子句限制查詢結(jié)果5.使用聚集函數(shù)6.分組查詢(GROUPBY子句)3.1掌握單表查詢3.1.2使用where子句查詢滿足條件的行查詢條件謂詞比較=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較運(yùn)算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件(邏輯運(yùn)算)AND,OR,NOTWHERE子句常用的查詢條件:3.1.2使用where子句查詢滿足條件的行1.比較大小用于比較的運(yùn)算符一般是關(guān)系運(yùn)算符,如=(等于),>(大于),<(小于),>=(大于或等于),<=(小于或等于),!=或<>(不等于),!>(不大于),!<(不小于)?!纠?.7】查詢軟件技術(shù)專業(yè)全體學(xué)生的姓名。SELECTsnameFROMstudentWHEREspec='軟件技術(shù)';【例3.8】查詢考試成績(jī)不及格的學(xué)生的學(xué)號(hào)。SELECTDISTINCTsnoFROMscoreWHEREgrade<60;3.1.2使用where子句查詢滿足條件的行2.確定范圍謂詞BETWEEN…AND…和NOTBETWEEN…AND…可以用來查找列值在(或不在)指定范圍的元組,其中,BETWEEN后是范圍的下限(低值),AND后是范圍的上限(高值)?!纠?.9】查找成績(jī)?cè)?0~90的學(xué)號(hào)、課程號(hào)和成績(jī)。SELECTsno,cno,gradeFROMscoreWHEREgradeBETWEEN80AND90;【例3.10】查找成績(jī)不在80~90的學(xué)號(hào)、課程號(hào)和成績(jī)。SELECTsno,cno,gradeFROMscoreWHEREgradeNOTBETWEEN80AND90;3.1.2使用where子句查詢滿足條件的行3.確定集合謂詞IN可以用來查找列值屬于指定集合的記錄?!纠?.11】查詢軟件技術(shù)專業(yè)、計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)和通信技術(shù)專業(yè)學(xué)生的姓名和性別。SELECTsname,ssexFROMstudentWHEREspecIN('軟件技術(shù)','計(jì)算機(jī)應(yīng)用技術(shù)','通信技術(shù)');【例3.12】查詢既不是軟件技術(shù)專業(yè)、計(jì)算機(jī)應(yīng)用技術(shù)專業(yè),又不是通信技術(shù)專業(yè)的學(xué)生的姓名和性別。SELECTsname,ssexFROMstudentWHEREspecNOTIN('軟件技術(shù)','計(jì)算機(jī)應(yīng)用技術(shù)','通信技術(shù)');3.1.2使用where子句查詢滿足條件的行4.字符匹配謂詞LIKE可以用來進(jìn)行字符串的匹配。其一般的語法格式如下。[NOT]LIKE'<匹配串>'[ESCAPE'<轉(zhuǎn)義字符>']<匹配串>可以是一個(gè)完整的字符串,也可以是含有通配符%和_的字符串。(1)通配符%(百分號(hào))代表任意長(zhǎng)度(長(zhǎng)度可以是0)的字符串。例如,a%b表示以a開頭、以b結(jié)尾的任意長(zhǎng)度的字符串。(2)通配符_(下劃線)代表任意單個(gè)字符。例如,a_b表示以a開頭、以b結(jié)尾的長(zhǎng)度為3的任意字符串。【例3.13】查詢學(xué)號(hào)為20231012101的學(xué)生的詳細(xì)情況。SELECT*FROMstudentWHEREsnoLIKE'20231012101';等價(jià)于SELECT*FROMstudentWHEREsno='20231012101';3.1.2使用where子句查詢滿足條件的行4.字符匹配【例3.14】查詢所有姓李的學(xué)生的姓名、學(xué)號(hào)和性別。SELECTsname,sno,ssexFROMstudentWHEREsnameLIKE'李%';【例3.16】查詢名字中第二個(gè)字為“白”的學(xué)生的姓名、學(xué)號(hào)和性別。SELECTsname,sno,ssexFROMstudentWHEREsnameLIKE'_白%';謂詞LIKE可以用來進(jìn)行字符串的匹配。其一般的語法格式如下。[NOT]LIKE'<匹配串>'[ESCAPE'<轉(zhuǎn)義字符>']【例3.17】查詢所有不姓“李”的學(xué)生的姓名、學(xué)號(hào)和性別。SELECTsname,sno,ssexFROMstudentWHEREsnameNOTLIKE'李%';3.1.2使用where子句查詢滿足條件的行4.字符匹配謂詞LIKE可以用來進(jìn)行字符串的匹配。其一般的語法格式如下?!纠?.18】查詢姓名中包含“_”字符的學(xué)號(hào)和姓名。SELECTsno,snameFROMstudentWHEREsnameLIKE'%/_%'ESCAPE'/';[NOT]LIKE'<匹配串>'[ESCAPE'<轉(zhuǎn)義字符>']ESCAPE'/'表示“/”為轉(zhuǎn)義字符。這樣匹配字符串中緊跟在“/”后的字符“_”不再具有通配符的含義,轉(zhuǎn)義為普通字符“_”。如果要查詢的字符串本身就含有字符%或_,則需要使用ESCAPE'<轉(zhuǎn)義字符>'短語對(duì)通配符進(jìn)行轉(zhuǎn)義。3.1.2使用where子句查詢滿足條件的行5.涉及空值的查詢
判斷是否為空值的查詢用ISNULL或ISNOTNULL謂詞【例】查詢沒有考試成績(jī)的學(xué)號(hào)和課程號(hào)。SELECTsno,cnoFROMcourseWHEREgradeisnull;【例】查詢查詢沒有考試成績(jī)的學(xué)號(hào)和課程號(hào)。SELECTsno,cnoFROMcourseWHEREgradeisnotnull;“IS”不能用“=”代替3.1.2使用where子句查詢滿足條件的行6.多重條件查詢邏輯運(yùn)算符AND和OR可用來連接多個(gè)查詢條件。AND的優(yōu)先級(jí)高于OR,但用戶可以用括號(hào)改變優(yōu)先級(jí)?!纠?.19】查詢軟件技術(shù)專業(yè)的男同學(xué)的學(xué)號(hào)和姓名。SELECTsno,snameFROMstudentWHEREspec='軟件技術(shù)'ANDssex='男';【例3.11】查詢軟件技術(shù)專業(yè)、計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)和通信技術(shù)專業(yè)學(xué)生的姓名和性別。SELECTsname,ssexFROMstudentWHEREspec='軟件技術(shù)'ORspec='計(jì)算機(jī)應(yīng)用技術(shù)'ORspec='通信技術(shù)';查詢僅涉及一個(gè)表1.SELECT…FROM基本子句的使用2.使用WHERE子句查詢滿足條件的行3.對(duì)查詢結(jié)果排序(ORDERBY子句)4.使用LIMIT子句限制查詢結(jié)果(LIMIT子句)5.使用聚集函數(shù)6.分組查詢(GROUPBY子句)3.1掌握單表查詢ORDERBY子句可以按一個(gè)或多個(gè)屬性列排序升序:ASC;降序:DESC;缺省值為升序?qū)τ诳罩档呐判?,MySQL中設(shè)定空值為最小值,若按升序排列,則含空值的行排在最前面;若按降序排列,則含空值的元組排在最后。3.1.3對(duì)查詢結(jié)果排序3.1.3對(duì)查詢結(jié)果排序(續(xù))
【例3.23】查詢選修了c103號(hào)課程的學(xué)生的學(xué)號(hào)和成績(jī),查詢結(jié)果按分?jǐn)?shù)降序排列。
SELECTsno,gradeFROMscoreWHEREcno='c103'ORDERBYgradeDESC;【例3.24】查詢?nèi)w學(xué)生信息,查詢結(jié)果按專業(yè)升序排列,同一專業(yè)的學(xué)生按出生日期降序排列。SELECT*FROMstudentORDERBYspec,birthdayDESC;查詢僅涉及一個(gè)表1.SELECT…FROM基本子句的使用2.使用WHERE子句查詢滿足條件的行3.對(duì)查詢結(jié)果排序(ORDERBY子句)4.使用LIMIT子句限制查詢結(jié)果(LIMIT子句)5.使用聚集函數(shù)6.分組查詢(GROUPBY子句)3.1掌握單表查詢3.1.4使用LIMIT子句限制查詢結(jié)果
【例3.26】查詢c101號(hào)課程成績(jī)高于75分的行,按照成績(jī)降序排列,從編號(hào)2開始,查詢3條記錄。SELECT*FROMscoreWHEREcno='c101'ANDgrade>75ORDERBYgradeDESCLIMIT2,3;LIMIT子句用于限制查詢結(jié)果輸出行數(shù),可以指定查詢結(jié)果從第幾條記錄開始顯示,還可以指定共顯示多少條記錄?!纠?.25】查詢student表的學(xué)號(hào)、姓名、出生日期和專業(yè)信息,按照出生日期降序排列,顯示前3條記錄。SELECTsno,sname,birthday,specFROMstudentORDERBYbirthdayDESCLIMIT3;查詢僅涉及一個(gè)表1.SELECT…FROM基本子句的使用2.使用WHERE子句查詢滿足條件的行3.對(duì)查詢結(jié)果排序(ORDERBY子句)4.使用LIMIT子句限制查詢結(jié)果(LIMIT子句)5.使用聚集函數(shù)6.分組查詢(GROUPBY子句)3.1掌握單表查詢聚集函數(shù):統(tǒng)計(jì)元組個(gè)數(shù)COUNT(*)統(tǒng)計(jì)一列中值的個(gè)數(shù)COUNT([DISTINCT|ALL]<列名>)計(jì)算一列值的總和(此列必須為數(shù)值型)SUM([DISTINCT|ALL]<列名>) 計(jì)算一列值的平均值(此列必須為數(shù)值型)AVG([DISTINCT|ALL]<列名>)求一列中的最大值和最小值
MAX([DISTINCT|ALL]<列名>)
MIN([DISTINCT|ALL]<列名>)3.1.5使用聚集函數(shù)
聚集函數(shù)(續(xù))
【例3.27】
查詢學(xué)生總?cè)藬?shù)。
SELECTCOUNT(*)FROMStudent;
【例3.28】
查詢選修了課程的學(xué)生人數(shù)。
SELECTCOUNT(DISTINCTSno)FROMscore;
【例3.29】查詢選修了C101號(hào)課程的學(xué)生的平均成績(jī)。
SELECTAVG(Grade)FROMscoreWHERECno='C101';聚集函數(shù)(續(xù))
【例3.30】查詢選修了C101號(hào)課程的學(xué)生的最高分?jǐn)?shù)。SELECTMAX(Grade)FROMscoreWHERECno='C101';
【例3.31】查詢“20231012101”學(xué)生的總成績(jī)和平均成績(jī)。
SELECT
SUM(grade),AVG(grade)FROMscoreWHERESno='20231012101';查詢僅涉及一個(gè)表1.SELECT…FROM基本子句的使用2.使用WHERE子句查詢滿足條件的行3.對(duì)查詢結(jié)果排序(ORDERBY子句)4.使用LIMIT子句限制查詢結(jié)果(LIMIT子句)5.使用聚集函數(shù)6.分組查詢(GROUPBY子句)3.1掌握單表查詢GROUPBY子句分組:
GROUPBY子句將查詢結(jié)果按某一列或多列的值分組,值相等的為一組。
對(duì)查詢結(jié)果分組是為了細(xì)化聚集函數(shù)的作用對(duì)象。如果未對(duì)查詢結(jié)果分組,則聚集函數(shù)將作用于整個(gè)查詢結(jié)果。分組后,聚集函數(shù)將作用于每一組。3.1.6分組查詢
GROUPBY子句(續(xù))【例3.32】求每門課程的平均分?jǐn)?shù)。
SELECTcno,AVG(grade)FROMscoreGROUPBYcno;
【例3.33】求各門課程的選課人數(shù)。SELECTcno,COUNT(sno)
FROMscoreGROUPBYcno;
GROUPBY子句(續(xù))【例3.34】查詢選課人數(shù)超過50人的課程號(hào)。SELECTcnoFROMscoreGROUPBYcnoHAVINGcount(*)>=50;
如果分組后還要按一定的條件對(duì)這些組進(jìn)行篩選,最終只輸出滿足指定條件的組,則可使用HAVING短語指定篩選條件。WHERE子句與HAVING短語都用于篩選,區(qū)別在于作用對(duì)象不同。WHERE子句作用于基本表或視圖,從中選擇滿足條件的行。HAVING短語作用于組,從中選擇滿足條件的組。【例3.35】查詢成績(jī)不及格學(xué)生的不及格科目數(shù)。SELECTsno,COUNT(cno)FROMscoreWHEREgrade<60GROUPBYsno;【例3.36】查詢平均成績(jī)大于或等于90分的學(xué)生的學(xué)號(hào)和平均成績(jī)。SELECTsno,AVG(grade)FROMscoreGROUPBYsnoHAVINGAVG(grade)>=90;
查詢教學(xué)管理數(shù)據(jù)表3.1掌握單表查詢3.2掌握連接查詢3.3掌握嵌套查詢
掌握連接查詢(續(xù))1.內(nèi)連接2.自連接3.外連接4.多表連接連接查詢:同時(shí)涉及兩個(gè)以上的表的查詢連接條件或連接謂詞:用來連接兩個(gè)表的條件
一般格式:[<表名1>.]<列名1><比較運(yùn)算符>[<表名2>.]<列名2>[<表名1>.]<列名1>BETWEEN[<表名2>.]<列名2>AND[<表名2>.]<列名3>連接字段:連接謂詞中的列名稱連接條件中的各連接字段類型必須是可比的,但名字不必相同3.2.1內(nèi)連接
3.2.1內(nèi)連接
在MySQL中有兩種語法實(shí)現(xiàn)連接:一種是將連接條件放在WHERE子句中;另一種是使用
JOIN…ON系列語句實(shí)現(xiàn)連接。1.使用WHERE子句實(shí)現(xiàn)連接當(dāng)連接運(yùn)算符為“=”時(shí),該連接稱為等值連接。使用其他運(yùn)算符的連接稱為非等值連接。【例3.37】查詢每個(gè)學(xué)生及其選修課程的情況。SELECTstudent.*,score.*FROMstudent,scoreWHEREstudent.sno=score.sno;若在等值連接中把目標(biāo)列中的重復(fù)列去掉,則該連接為自然連接?!纠?.38】用自然連接完成例3.37。SELECTstudent.sno,sname,sex,birthday,spec,cno,gradeFROMstudent,scoreWHEREstudent.sno=score.sno;3.2.1內(nèi)連接
【例3.39】查詢選修了c102號(hào)課程的學(xué)生的學(xué)號(hào)、姓名和成績(jī)。SELECTsno,sname,gradeFROMstudent,scoreWHEREstudent.sno=score.snoANDo='c102';2.使用JOIN…ON系列語句實(shí)現(xiàn)內(nèi)連接語法格式:FROM<表名1>INNERJOIN<表名2>ON<連接條件>【例3.40】用JOIN…ON…語句實(shí)現(xiàn)例3.38中的查詢。SELECTstudent.sno,sname,sex,birthday,spec,cno,gradeFROMstudentINNERJOINscoreONstudent.sno=score.sno;【例3.41】用JOIN…ON…語句實(shí)現(xiàn)例3.39中的查詢。SELECTsno,sname,gradeFROMstudentINNERJOINscoreONstudent.sno=score.snoWHEREo='c102';掌握連接查詢(續(xù))1.內(nèi)連接2.自連接3.外連接4.多表連接自連接:一個(gè)表與其自身進(jìn)行連接。自連接可以看作一張表的兩個(gè)副本進(jìn)行的連接。在自連接中,必須為表指定兩個(gè)別名,使之在邏輯上看起來是兩張表。【例3.42】查詢與張?zhí)m在同一專業(yè)學(xué)習(xí)的學(xué)生的學(xué)號(hào)、姓名及專業(yè)。
3.2.2自連接
SELECTsecond.sno,second.sname,second.specFROMstudentfirst,studentsecondWHEREfirst.spec=second.specANDfirst.sname='張?zhí)m'ANDsecond.sname!='張?zhí)m';【例3.43】用INNERJOIN…ON…語句實(shí)現(xiàn)例3.42,語句如下。SELECTsecond.sno,second.sname,second.specFROMstudentfirstINNERJOINstudentsecondONfirst.spec=second.specWHEREfirst.sname='張?zhí)m'ANDsecond.sname!='張?zhí)m';自連接(續(xù))FIRST表(student表)SECOND表(student表)學(xué)號(hào)sno姓名sname性別ssex出生日期birthday專業(yè)spec20231012101李偉男2002-09-06計(jì)算機(jī)應(yīng)用20231012102張?zhí)m女2003-03-09軟件技術(shù)20231012103王芳女2003-05-06通信技術(shù)20231012104劉勇男2003-06-16軟件技術(shù)學(xué)號(hào)sno姓名sname性別ssex出生日期birthday專業(yè)spec20231012101李偉男2002-09-06計(jì)算機(jī)應(yīng)用20231012102張?zhí)m女2003-03-09軟件技術(shù)20231012103王芳女2003-05-06通信技術(shù)20231012104劉勇男2003-06-16軟件技術(shù)掌握連接查詢(續(xù))1.內(nèi)連接
2.自連接3.外連接4.多表連接3.2.3
外連接外連接與普通連接的區(qū)別普通連接操作只輸出滿足連接條件的行外連接操作以指定表為連接主體,將主體表中不滿足連接條件的行一并輸出
左外連接列出左邊表中所有的行右外連接列出右邊表中所有的行
外連接(續(xù))
【例3.44】利用左外連接改寫例3.38。SELECTstudent.sno,sname,sex,birthday,spec,cno,gradeFROMstudentLEFTJOINscoreONstudent.sno=score.sno;
語法格式:FROM<表名1>LEFT|RIGHT|FULL[OUTER]JOIN<表名2>ON<連接條件>掌握連接查詢(續(xù))1.內(nèi)連接
2.自連接
3.外連接4.多表連接3.2.4
多表連接多表連接:兩個(gè)以上的表進(jìn)行連接【例3.45】查詢每個(gè)學(xué)生的學(xué)號(hào)、姓名、專業(yè)、選修的課程名及成績(jī)。
SELECTstudent.sno,sname,spec,cname,gradeFROMstudent,score,courseWHEREstudent.sno=score.snoANDo=o;【例3.46】用INNERJOIN…ON…語句改寫例3.45。SELECTstudent.sno,sname,spec,cname,gradeFROMstudentINNERJOINscoreONstudent.sno=score.snoINNERJOINcourseONo=o;
查詢教學(xué)管理數(shù)據(jù)表3.1掌握單表查詢3.2掌握連接查詢3.3掌握嵌套查詢
3.3嵌套查詢嵌套查詢概述一個(gè)SELECT-FROM-WHERE語句稱為一個(gè)查詢塊將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢SELECTSname /*外層查詢/父查詢*/FROMStudentWHERESnoIN
(SELECTSno/*內(nèi)層查詢/子查詢*/FROMScoreWHERECno=‘c102’);
嵌套查詢(續(xù))上層的查詢塊稱為外層查詢或父查詢下層查詢塊稱為內(nèi)層查詢或子查詢SQL語言允許多層嵌套查詢即一個(gè)子查詢中還可以嵌套其他子查詢子查詢的限制不能使用ORDER
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 稱重儀表裝配調(diào)試工創(chuàng)新意識(shí)水平考核試卷含答案
- 2026年一級(jí)建造師之一建礦業(yè)工程實(shí)務(wù)考試題庫300道(真題匯編)
- 中國(guó)食品跨境冷鏈物流溫控技術(shù)升級(jí)報(bào)告
- 畜牧技術(shù)員班組安全競(jìng)賽考核試卷含答案
- 2026年心理咨詢師考試題庫300道附參考答案(奪分金卷)
- 信息技術(shù)項(xiàng)目開發(fā)流程管理手冊(cè)
- 蔬菜種苗工操作知識(shí)測(cè)試考核試卷含答案
- 數(shù)控激光切割機(jī)操作工崗前基礎(chǔ)效率考核試卷含答案
- 化學(xué)合成制藥工崗前評(píng)審考核試卷含答案
- 五彩斑斕的世界
- 中醫(yī)院物業(yè)管理服務(wù)項(xiàng)目招標(biāo)文件
- 《建筑材料介紹》課件
- 外墻水包砂施工合同(7篇)
- 奔馳C200用戶使用手冊(cè)
- 電子產(chǎn)品整機(jī)裝配工藝
- 湖南省綜合評(píng)標(biāo)專家培訓(xùn)題-湖南綜合評(píng)標(biāo)專家?guī)煸诰€培訓(xùn)評(píng)標(biāo)方法判斷題
- GB/T 25848-2010耐酸陶瓷球拱
- GA 923-2011公安特警專用車輛外觀制式涂裝規(guī)范
- 第十六章 教學(xué)交往與課堂管理
- DB32T 4064-2021 江蘇省城鎮(zhèn)燃?xì)獍踩珯z查標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論