講稿數(shù)據(jù)庫(kù)課件_第1頁(yè)
講稿數(shù)據(jù)庫(kù)課件_第2頁(yè)
講稿數(shù)據(jù)庫(kù)課件_第3頁(yè)
講稿數(shù)據(jù)庫(kù)課件_第4頁(yè)
講稿數(shù)據(jù)庫(kù)課件_第5頁(yè)
已閱讀5頁(yè),還剩118頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Tableof客戶端與服務(wù)端搭配場(chǎng)Navicat數(shù)據(jù)表操數(shù)據(jù)庫(kù)的備份與恢SQL數(shù)據(jù)表操排分高數(shù)據(jù)庫(kù)設(shè)

命令行客戶函過視事提回索外用為什么學(xué)習(xí)數(shù)據(jù)絕大多數(shù)的軟件都跟數(shù)據(jù)緊密相關(guān),比如、、、商城等,這些軟件都在不停的操作數(shù)比如測(cè)試登錄功能,在輸入了信息后,提示成功,但是使用剛才的信息登錄不成數(shù)據(jù)學(xué)習(xí)熟練編寫SQL語(yǔ)言中的查詢語(yǔ)基本此部分為理論知識(shí),需要數(shù)據(jù)1、人工管理階結(jié)繩記甲紙人工管理階段,數(shù)據(jù)都是靠人工進(jìn)行整理和保存,使用起來很不方便。不便于查詢、共享、保2、文件系統(tǒng)階磁3、數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)網(wǎng)頁(yè)中顯示的商品信數(shù)據(jù)庫(kù)中的商品數(shù)真實(shí)的商關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)當(dāng)前主要使用兩種類型的數(shù)據(jù)庫(kù):關(guān)系型數(shù)據(jù)庫(kù)、非關(guān)系型數(shù)據(jù)庫(kù),我們主要學(xué)習(xí)主流的關(guān)系查看數(shù)據(jù)庫(kù) 關(guān)系型數(shù)據(jù)庫(kù)的主要產(chǎn)mssqlserver:在微軟的項(xiàng)目中使用:關(guān)系型數(shù)據(jù)庫(kù)元數(shù)據(jù)表(數(shù)據(jù)行的集合數(shù)據(jù)庫(kù)(數(shù)據(jù)表的集合,一個(gè)數(shù)據(jù)庫(kù)中能夠有n多個(gè)數(shù)據(jù)表結(jié)構(gòu)化查詢行操作,也就是說可以通過sql操作oracle,sqlserver,mysql,等等所有的關(guān)系型的數(shù)據(jù)庫(kù)sql語(yǔ)言主要分為 數(shù)據(jù)操作語(yǔ)言,對(duì)數(shù)據(jù)進(jìn)行增加、修改、刪除,如insert、udpate、deleteTPL:事 mit、rollbackDCL: 語(yǔ)言,通過控制指針完成表的操作,如declarecursorMySQL點(diǎn)擊查看特使用C和C++編寫,并使用了多種編譯器進(jìn)試,保證源代碼的可移植支持多種操作系統(tǒng),如Linux、Windows、AIX、FreeBSD、HP-UX、MacOSNovellNetware、OpenBSD、 Wrap、Solaris優(yōu)化的SQL查詢算法,有效地提高查詢提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫(kù)操作的管理MySQL安裝與使后面的操作主要在Windows中進(jìn)服務(wù)輸入servicemysqld查看進(jìn)程中是否存在mysqlpspsajx|grep停止服務(wù)(需要root權(quán)限輸入servicemysqld重啟服務(wù)(需要root權(quán)限輸入servicemysqld配配置文件位置為 常用的有圖形化界面客戶端(navicat)、命令行客戶圖形化界面客戶端可以到Navicat官網(wǎng) cdcd啟動(dòng)后如下點(diǎn)擊兩次“取消”按鈕后如下點(diǎn)擊“試用”按鈕后如下問題:試用期到解決:刪除用 下的cdcdrm-r命令行客戶當(dāng)前使用的Cents鏡像中已經(jīng)安裝好了MySQ客戶端,無需再安裝最基本的連接命令如下,輸入后回車mysqlmysql-u連接成功后提示如下按ctrl+d或輸入如下命令quitquit服務(wù)1、解壓mysql-essential-5.1.55-win32.zip,雙擊運(yùn)行mysql-essential-5.1.55-2、點(diǎn)擊3、選擇accept,點(diǎn)擊4、點(diǎn)擊5、點(diǎn)擊6、點(diǎn)擊7、點(diǎn)擊8、點(diǎn)擊finish,開始配置9、點(diǎn)擊10、點(diǎn)擊11、點(diǎn)擊12、點(diǎn)擊13、點(diǎn)擊14、點(diǎn)擊15、勾選addfirewall,點(diǎn)擊16、選擇最下面選項(xiàng),下拉框里選擇utf8,點(diǎn)擊17、點(diǎn)擊18、輸入兩次,勾選enableroot,點(diǎn)擊19、點(diǎn)擊20、點(diǎn)擊finish,配置完成,MySQL服務(wù)端已經(jīng)配置成開機(jī)自啟動(dòng),且已經(jīng)配配置文件位置為C:\ProgramFiles(x86)\MySQL\MySQLServer服務(wù)端的啟動(dòng)、停止、打開控制面在控制面板中以小圖標(biāo)顯示,打開管理在管理工具中,打開服務(wù),找到MySQL,,能看到啟動(dòng)、停止、重命令行客戶Server5.1 下,點(diǎn)擊MySQLCommandLineClient,彈出如下圖所示窗口輸入安裝MySQL時(shí)設(shè)置的,既連接上MySQL的服務(wù)按ctrl+c或輸入如下命令quitquit或者圖形化界面客戶端雙擊navicat112_premium_cs_x86.exe,一路下一步,安裝完navicat(不要打開navicat程序1、解壓navicat機(jī).7z,navicat_chs.exe,以管理員運(yùn)2、在產(chǎn)品下拉框中選擇NavicatPremiumEnterprise (x86)\PremiumSoft\NavicatPremium,選擇navicat.exe,點(diǎn)擊打開按鈕4、此時(shí)機(jī)會(huì)顯示成功補(bǔ)丁信息,如下 6、此時(shí)機(jī)會(huì)顯示序列號(hào),如下7、打開navicat程序,點(diǎn)擊按8、把剛才生成的序列號(hào)粘貼過來,不要點(diǎn)擊激活按9、按住Ctrl+Shilft鍵不松開,再點(diǎn)擊激活按鈕,彈出如下10、選擇license_file,點(diǎn)擊打開按鈕(license_file在navicat 中11、navicat成客戶端與服務(wù)端搭配場(chǎng)My在L和(vc)1、連接:Windows中的客戶端連接Linux中的服務(wù)、檢查Windows與Centos之間的網(wǎng)絡(luò)是否可以連、Centos中查看ip,打開Ternimal命令行,輸入輸入59(前面查看的Centos的mysqlmysql-urootusemysql;updateusersethost='%'whereflush、在Windows中使用navicat連接Centos中的MySQL服務(wù)、打開windows中的navicat程序,點(diǎn)擊連接-、在彈出的窗口,輸入連接名、,點(diǎn)擊連接測(cè)、雙擊之前的連接名(59),就可以看到Centos的MySQL中所有的倉(cāng)2、本機(jī)連接:Windows中的客戶端連接Windows中的服務(wù)、打開navicat程序,點(diǎn)擊連接-、在彈出的窗口,輸入連接名、,點(diǎn)擊連接測(cè)、測(cè)試成功后,點(diǎn)擊確定、雙擊之前的連接名(local),就可以看到本機(jī)MySQL中所有的Navicat使數(shù)據(jù)表操數(shù)據(jù)庫(kù)的備份與恢此部分為圖形化界面客戶端的使用,需要熟練數(shù)據(jù)庫(kù)操創(chuàng)建數(shù)2、輸入數(shù)據(jù)庫(kù)名,字符集選擇utf8--UTF-8Unicode,排序規(guī)則選擇使用數(shù)修改數(shù)鼠 某個(gè)數(shù)據(jù)庫(kù),點(diǎn)擊編輯數(shù)據(jù)可以修改字符集和排序規(guī)則,數(shù)據(jù)庫(kù)名刪除數(shù)鼠 某個(gè)數(shù)據(jù)庫(kù),點(diǎn)擊刪除數(shù)據(jù)數(shù)據(jù)表操創(chuàng)建打開某個(gè)數(shù)據(jù)庫(kù),鼠標(biāo)數(shù)據(jù)庫(kù)下面的表,點(diǎn)擊新建創(chuàng)建表時(shí),至少要添加一個(gè)字段,填寫字段名,選擇一個(gè)類型(varchar),然后點(diǎn)擊保存按輸入表名,確定即可以在數(shù)據(jù)庫(kù)下看到剛才修改表重命鼠標(biāo)某個(gè)表,點(diǎn)擊重命名按此時(shí)表的名稱可以直接編輯,輸入新的名稱后,回車添加字鼠標(biāo)某個(gè)表,點(diǎn)擊設(shè)計(jì)此時(shí)已經(jīng)打開了表的設(shè)計(jì)界面,點(diǎn)擊添輸入字段名,選一個(gè)類型(int),然后點(diǎn)擊保存即修改字刪除字刪除鼠標(biāo)某個(gè)表,點(diǎn)擊刪除數(shù)據(jù)操作-增刪添加數(shù)鼠標(biāo)某個(gè)表,點(diǎn)擊打開此時(shí)進(jìn)入打開表的界面,界面顯示當(dāng)前表的所有數(shù)據(jù),的加號(hào)按點(diǎn)擊加號(hào)后,直接在對(duì)應(yīng)的字段輸入數(shù)據(jù),然后的對(duì)勾按鈕,這樣數(shù)據(jù)就添加成修改數(shù)鼠標(biāo)某個(gè)表,點(diǎn)擊打開表,此時(shí)進(jìn)入打開表的界面,界面顯示當(dāng)前表的所有數(shù)鼠標(biāo)直接點(diǎn)擊要修改的數(shù)據(jù),輸入新的數(shù)據(jù),然后的對(duì)勾按鈕,既修改成刪除數(shù)鍵點(diǎn)擊要?jiǎng)h除的數(shù)據(jù)的任何一個(gè)字段,然后的減號(hào)按鈕,既刪除成功刪除所有數(shù)查詢數(shù)鼠標(biāo)左鍵點(diǎn)擊某個(gè)數(shù)據(jù)庫(kù)下面的查詢按鈕,然后點(diǎn)擊在打開的查詢編輯器中,輸入下面的SQL查詢語(yǔ)selectselect*from然后點(diǎn)擊運(yùn)行按鈕,既顯示查詢的數(shù)據(jù)類型與常用數(shù)據(jù)類 ),無符號(hào)范圍(0~ 日期時(shí)間:datetime,范圍(1000-01-0100:00:00~9999-12-3123:59:59),如'2020-01-約主鍵(primarykey):物理上的順序非空(notnull):此字段不允許填寫空值外鍵(foreignkey):兩個(gè)表之間的關(guān)聯(lián)關(guān)系數(shù)據(jù)庫(kù)的備備鼠標(biāo)某個(gè)數(shù)據(jù)庫(kù),點(diǎn)擊轉(zhuǎn)儲(chǔ)SQL文件->結(jié)構(gòu)和數(shù)選擇備份文件將要保存的位置,點(diǎn)擊恢新創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),名字隨便起,字符集和排序規(guī)則必須和之前備份的數(shù)據(jù)庫(kù)雙擊打開剛才創(chuàng)建的數(shù)據(jù)庫(kù),鼠標(biāo)此數(shù)據(jù)庫(kù),點(diǎn)擊運(yùn)行SQL文在彈出的窗口中,點(diǎn)擊選擇文件的按鈕在彈出的窗口中,選中之前備份的文件,點(diǎn)擊打開點(diǎn)擊開始按等待運(yùn)行完成,關(guān)閉即可,此時(shí)數(shù)據(jù)已經(jīng)恢復(fù)到新的數(shù)據(jù)庫(kù)SQL語(yǔ)數(shù)據(jù)表操作:創(chuàng)建、此部分中查詢?yōu)橹攸c(diǎn),需要熟練SQL語(yǔ)言編寫和運(yùn)鼠標(biāo)左鍵點(diǎn)擊某個(gè)數(shù)據(jù)庫(kù)下面的查詢按鈕,然后點(diǎn)擊在打開的查詢編輯器中,編寫SQL語(yǔ)言,再點(diǎn)擊運(yùn)數(shù)據(jù)表操創(chuàng)建createcreatetable(字段名類型約束,)(長(zhǎng)度為createcreatestudents(name)(長(zhǎng)度為10),createcreatestudents(namevarchar(10),ageintunsigned)例:創(chuàng)建學(xué)生表,字段要(長(zhǎng)度為10),,身高(保留小數(shù)點(diǎn)2位createcreatetableidintunsignedprimarykeyauto_increment,namevarchar(20),ageintunsigned,)刪除格式一:格式一:droptable格式二:格式二:droptableifexists例:刪除學(xué)dropdroptable或droptableifexists數(shù)據(jù)操作-增刪簡(jiǎn)單查selectselect*from表名例:查詢所有學(xué)生數(shù)select*from添加數(shù)添加一行數(shù)格式一:所有字段設(shè)置值,值的順序與表中字段的順insertinsertinto表名例:插入一個(gè)學(xué)生,設(shè)置所有字段的insertinsertintostudentsvalues(0,'亞瑟格式二:部分字段設(shè)置值,值的順序與給出的字段順insertinsertinto表名(字段1values(值例:插入一個(gè)學(xué)生,只設(shè)添加多行數(shù)方式一:寫多條insert語(yǔ)句,語(yǔ)句之間用英文分號(hào)隔insertintostudents(name)values('insertintostudents(name)values('老夫子2');insertintostudents(name)values('老夫子3');insertintostudentsvalues(0,'亞瑟2',23,167.56)方式二:寫一條insert語(yǔ)句,設(shè)置多條數(shù)據(jù),數(shù)據(jù)之間用英文逗號(hào)格式一:格式一:insertinto例:插入多個(gè)學(xué)生,只設(shè)修格式:格式:updateset列1=值1,列2=值2where例:修改id為5的學(xué)生數(shù)據(jù),改為,改為updateupdatestudentsset ',age=20where刪格式:格式:deletefromwhere例:刪除id為6的學(xué)生數(shù)deletedeletefromstudentswhere邏輯刪除:對(duì)于重要的數(shù)據(jù),不能輕易執(zhí)行時(shí)可以進(jìn)行邏輯刪除。1、給表添加字段,代表數(shù)據(jù)是否刪除,一般起名isdelete,0代表未刪除,1代表刪除,默認(rèn)值為2、當(dāng)要?jiǎng)h除某條數(shù)據(jù)時(shí),只需要設(shè)置這條數(shù)據(jù)的isdelete字段為3、以后在查詢數(shù)據(jù)時(shí),只查詢出isdelete為0的數(shù)例例updatestudentssetisdelete=0updatestudentssetisdelete=1whereid=1select*fromstudentswhere數(shù)據(jù)操作-查創(chuàng)建數(shù)dropdroptableifexistsstudents;createtablestudents(studentNovarchar(10)primarykey,namevarchar(10),sexvarchar(1),agetinyint(4),classvarchar(10),cardvarchar(20))準(zhǔn)備數(shù)insertinsertintostudents('001', 女('002', 男('003', 男('004',白起男('005', 女201班182班243班224班193班('006', 女河北181班('007',百里玄策男山西'202班('008', ','女', ','15','3班',('009',百里守約男湖南'211班('010','妲己','女', ','26','2班', ('011', ','男', ','30','4班', ('012', ','男', ','26','3班', 查詢所有字selectselect*from表名select*from查詢指定字在select后面的列名部分,可以使用as為列起別名,這個(gè)別名出現(xiàn)在結(jié)果selectselect列1,列2,s.agefromstudentsasselectname,agefromselectstudentNoas學(xué)號(hào),nameas名字,sex from消除重在select后面列前使用distinct可以消除重復(fù)的selectselectdistinct列1from表名;selectdistinctsexfrom條selectselect字段1,字段2fromwhere條件;select*fromstudentswhere比較運(yùn)等于大于大于等于小于小于等于不等于例1:查詢selectselectagefromstudentswhere 例2:查詢20歲以下的學(xué)selectselect*fromstudentswhere例3:查詢家鄉(xiāng)不在的學(xué)selectselect*fromstudentswhere 練習(xí)11、查詢學(xué)號(hào)是'007'的學(xué)生2、查詢'1班'以外的學(xué)生號(hào)3、查 大于20的學(xué)生 邏輯運(yùn)例1:查詢小于20的女同selectselect*fromstudentswhereage<20andsex='女例2:查詢女學(xué)生或'1班'selectselect*fromstudentswheresex='女orclass='1班例3:查詢非的學(xué)selectselect*fromstudentswherenot 練習(xí)11、查 或河北的學(xué)2、查詢'1班'的 '的學(xué)3、查詢非20歲的模糊查%表示任意多個(gè)任意字select*fromstudentsselect*fromstudentswherenamelike孫例2:查詢姓名字是一個(gè)字的學(xué)selectselect*fromstudentswherenamelike孫例3:查詢叫喬的學(xué)selectselect*fromstudentswherenamelike喬例4:查詢含白的學(xué)selectselect*fromstudentswherenamelike白練習(xí)11、查 為兩個(gè)字的學(xué)2、查詢姓百 大于20的學(xué)3、查詢學(xué)號(hào)以1結(jié)尾的范圍查in表示在一個(gè)非連續(xù)的范例1:查詢家鄉(xiāng)是或或的學(xué)selectselect*fromstudentswherehometown select*fromstudentswhereagebetween18andselect*fromstudentswhereagebetween18and練習(xí)、、查2、查在的在20到25以外的空判判空isnull例1:查詢沒有填寫的學(xué)selectselect*fromstudentswherecardis判非空isnot例2:查詢填寫了的學(xué)selectselect*fromstudentswherecardisnot排selectselect*fromorderby列1asc|desc,列2desc從大到小排序,即降例1:查詢所有學(xué)生信息,按從小到大排selectselect*fromstudentsorderby例2:查詢所有學(xué)生信息,按從大到小排序,相同時(shí),再按學(xué)號(hào)從小到大排selectselect*fromstudentsorderbyage練習(xí)11、查詢所有學(xué)生信息,按班級(jí)從小到大排序,班級(jí)相同時(shí),再按學(xué)號(hào)再按學(xué)號(hào)從小到大聚合聚合函數(shù)不能在where中使用例1:查詢學(xué)生總selectselectcount(*)fromselectmax(agefromstudentswheresex='女selectmax(agefromstudentswheresex='女selectmin(age)fromselectmin(age)fromselectsum(age)fromstudentswhere selectsum(age)fromstudentswhere selectavg(agefromstudentswheresex='女selectavg(agefromstudentswheresex='女練習(xí)11、查詢所有學(xué)生的最2、一班共有多少個(gè)學(xué)、最、平3、查詢3 小于18歲的同學(xué)有幾分按照字段分組,表示此字段相同的數(shù)據(jù)會(huì)被放到一個(gè)語(yǔ)法selectselect列1,列2,聚合fromgroupby列1,列例1:查詢各種的人selectselectsex,count(*)fromstudentsgroupby例2:查詢各種的人selectselectage,count(*)fromstudentsgroupby練查查詢各個(gè)班級(jí)學(xué)生的平 、最 、最分組后的數(shù)據(jù)篩語(yǔ)法selectselect列1,列2,聚合fromgroupby列1,列2,列3...having列1,...聚合...selectcount(*fromstudentsselectcount(*fromstudentswheresex='男方案二selectsex,count(*)fromstudentsgroupbysexhavingsex='男練查詢查詢1班除外其他班級(jí)學(xué)生的平 、最 、最對(duì)比where與having是對(duì)groupby的結(jié)果進(jìn)行篩選獲取部分selectselect*fromlimit從start開始,獲取countstart索引從0例1:查詢前3行學(xué)生信selectselect*fromstudentslimit練查查詢第4到第6行學(xué)生分已知:每頁(yè)顯示m條數(shù)據(jù),求:顯示第n頁(yè)的數(shù)selectselect*fromstudentslimit(n-求總頁(yè)查詢總條數(shù)如果不整除則p2+1為總練習(xí)每每頁(yè)顯示5條數(shù)據(jù),顯示每一連接當(dāng)查詢結(jié)果的列來源于多張表時(shí),需要將多張表連接成一個(gè)大的數(shù)據(jù)集,再選擇合適的列返回等值連接查詢:查詢的結(jié)果為兩個(gè)表匹配到的數(shù)據(jù)準(zhǔn)備數(shù)dropdroptableifexistscourses;createtablecourses(courseNoint(10)unsignedprimarykeyauto_increment,namevarchar(10)insertintocoursesvalues('1','數(shù)據(jù)庫(kù)'),('2',('3',('4系統(tǒng)測(cè)試('5單元測(cè)試('6測(cè)試過程dropdroptableifexistsscores;createtablescores(idint(10)unsignedprimarykeyauto_increment,courseNoint(10),scoretinyint(4)insertintoscoresvalues('1','1','001',('2','1','002',('3','2','002',('4','3','001',('5','3','003',('6','4','004',('7','5','005',('8','6','006',等值連方式selectselect*from表1,表2where表1.列=表2.方式二(又稱內(nèi)連接selectselect*from表innerjoin表2on表1.列=表2.例1:查詢學(xué)生信息及學(xué)*scoresscstu.studentNo=*studentsinnerjoinscoressconstu.studentNo=例2:查詢課程信息及課*scoressccs.courseNo=*coursesinnerjoinscoressconcs.courseNo=例3:查詢學(xué)生信息及學(xué)生的課程對(duì)應(yīng)的成*coursescs,scoresscstu.studentNo=sc.studentnoandcs.courseNo=sc.courseNo*studentsinnerjoinscoressconstu.studentNo=sc.studentNoinnerjoincoursescsoncs.courseNo=sc.courseNo例4:查詢的成績(jī),要求顯示、課程號(hào)、成scoresscstu.studentNo=sc.studentN=' studentsinnerjoinscoressconstu.studentNo=sc.studentN= 例5:查詢的數(shù)據(jù)庫(kù)成績(jī),要求顯示、課程名、成scoressc,coursescsstu.studentNo=sc.studentNoandsc.courseNo=cs.courseN=''數(shù)據(jù)庫(kù)studentsinnerjoinscoressconstu.studentNo=sc.studentNoinnerjoincoursescsonsc.courseNo=cs.courseN 數(shù)據(jù)庫(kù)例6:查詢所有學(xué)生的數(shù)據(jù)庫(kù)成績(jī),要求顯示、課程名、成scoressc,coursescsstu.studentNo=sc.studentNoandsc.courseNocs.courseN='數(shù)據(jù)庫(kù)'studentsinnerjoinscoressconstu.studentNo=sc.studentNoinnerjoincoursescsonsc.courseNo=cs.courseN數(shù)據(jù)庫(kù)例7:查詢男生中最高成績(jī),要求顯示、課程名、成scoressc,coursescsstu.studentNo=sc.studentNoandsc.courseNocs.courseNoandstu.sex='男'orderlimit1studentsinnerjoinscoressconstu.studentNo=sc.studentNoinnerjoincoursescsonsc.courseNo=cs.courseNostu.sex男'orderbylimit1左連selectselect*from表leftjoin表2on表1.列=表2.例1:查詢所有學(xué)生的成績(jī),包括沒有成績(jī)的*studentsleftjoinscoressconstu.studentNo=例2:查詢所有學(xué)生的成績(jī),包括沒有成績(jī)的學(xué)生,需要顯示課*studentsleftjoinscoressconstu.studentNo=sc.studentNoleftjoincoursescsoncs.courseNo=sc.courseNo右連selectselect*from表rightjoin表2on表1.列=表2.添加兩門insertinsertintocoursesvalues(0,'語(yǔ)文'),(0數(shù)學(xué)例1:查詢所有課程的成績(jī),包括沒有成績(jī)的*scoresrightjoincoursescsoncs.courseNo=例2:查詢所有課程的成績(jī),包括沒有成績(jī)的課程,包括學(xué)生*scoresrightjoincoursescsoncs.courseNo=sc.courseNoleftjoinstudentsstuonstu.studentNo=sc.studentNocitysproi表示城市所屬的省,對(duì)應(yīng)著visi值問題:能不能將兩個(gè)表合成一張表呢?思考:觀察兩張表發(fā)現(xiàn),citys表比provinces表多一個(gè)列proid,其它列的類型都是一樣答案:定義表areas,結(jié)構(gòu)如因?yàn)槭]有所屬的省份,所以可以填寫為l城市所屬的省份,填寫省所對(duì)應(yīng)的編號(hào)createareas(createareas(aidintprimarykey,atitlevarchar(20),pidintinsertintovalues'130000',河北省('130100石家莊市('130400邯鄲市('130600保定市('130700張家口市('130800承德市('410000 省('410100鄭州市('410300洛陽(yáng)市('410500安陽(yáng)市('410700('410700新鄉(xiāng)市('410800焦作市例1:查詢一共有多少個(gè)selectselectcount(*)fromareaswherepidis例1:查詢省的所有城**areasasinnerjoinareasasconc.pid=p.aidp.atitle='河北省添加區(qū)縣insertintoareasvalues('410101中原區(qū)('410102二七區(qū)('410103金水區(qū)例2:查詢鄭州市的所有*areasasinnerjoinareasasaona.pid=c.aidc.atitle='鄭州市例3:查詢省的所有區(qū)*areasasleftjoinareasasconc.pid=p.aidleftjoinareasasaona.pid=c.aidp.atitle='省select語(yǔ)句中,select語(yǔ)句select語(yǔ)句稱之為子查詢語(yǔ)主查主要查詢的對(duì)象,第一條select主查詢查詢的關(guān)子查詢是嵌入到主查st子查詢列子查詢:返回的結(jié)果是一列(一列多行)表級(jí)子查詢:返回的結(jié)果是多行多列標(biāo)量子查例1:查詢班級(jí)學(xué)生的平查查詢班級(jí)學(xué)生selectavg(age)from查詢大于平 的學(xué)select*fromstudentswhereage>select*fromstudentswhereage>(selectavg(age)from例2:查詢的成績(jī),要求顯示成學(xué)學(xué)生表中查的學(xué)selectstudentNofromstudentswherename='成績(jī)表中根據(jù)學(xué)號(hào)查詢成select*fromscoreswherestudentNo=select*fromscoreswherestudentNoselectstudentNofromstudentswherename昭君昭君列級(jí)子查例3:查詢18歲的學(xué)生的成績(jī),要求顯示成學(xué)學(xué)生表中查詢18歲的學(xué)生的selectstudentNofromstudentswhere成績(jī)表中根據(jù)學(xué)號(hào)查詢成select*fromscoreswherestudentNoinselect*fromscoreswherestudentNoin(selectstudentNofromstudentswhere行級(jí)子查例4:查詢男生中最大的學(xué)生信selectselect*fromstudentswheresex='男andage=(selectmax(age)fromstudents)select*fromstudentswhere(sex,age)=('男',30)select*fromstudentswheresex,age)selectsex,agefromstudentswheresex='男orderbyagedesclimit1)表級(jí)子查例5:查詢數(shù)據(jù)庫(kù)和系統(tǒng)測(cè)試的課程*innerjoin(select*fromcourseswherenamein數(shù)據(jù)庫(kù)','系統(tǒng)測(cè)試cons.courseNo=c.courseNo子查詢中特定關(guān)鍵字in格式wherein列子查詢)any|some任意一個(gè)格式whereany列子查詢?cè)跅l件查詢的結(jié)果中匹配任意一個(gè)即可,等價(jià)于格式:where列=all(列子查詢):等于里面所有格式where<>all(列子查詢不等一其中所有selectselect*fromstudentswhereagein(selectagefromstudentswhereagebetween18and準(zhǔn)備createtableidintunsignedprimarykeyauto_increment,namevarchar(150),catevarchar(40),pricedecimal(10,3)default0,is_showbitdefault1,is_saleoffbitdefault0insertintogoodsvalues(0,'y400n14.0英寸筆記本電腦','筆記本','聯(lián)想','4999',default,defainsertintogoodsvalues(0,'x240超極本','超級(jí)本','聯(lián)想;insertintogoodsvalues(0,'svp13226scb觸控超極本','超級(jí)本','索尼','7999',default,defaulinsertintogoodsvalues(0,'ipadmini7.9英寸平板電腦','平板電腦','蘋果','1998',default,dinsertintogoodsvalues(0,'ipadair9.7英寸平板電腦','平板電腦','蘋果','3388',default,deinsertintogoodsvalues(0,'ipadminiretina顯示屏','平板電腦','蘋果','2788',defaulinsertintogoodsvalues(0,'ideacentrec34020','臺(tái)式機(jī)','聯(lián)想','3499',defauinsertintogoodsvalues(0,'vostro3800-r1206臺(tái)式電腦','臺(tái)式機(jī)','戴爾','2899',default,dinsertintogoodsvalues(0,'imacme086ch/a21.5英寸一體電腦','臺(tái)式機(jī)','蘋果','9188',defauinsertintogoodsvalues(0,'at7-7414lplinux)','臺(tái)式機(jī)','宏碁','3699',default,insertintogoodsvalues(0,'z220sfff4f06pa工作站','服務(wù)器/工作站','惠普','4288',default,insertintogoodsvalues(0,'poweredgeii服務(wù)器','服務(wù)器/工作站','戴爾','5388',default,definsertintogoodsvalues(0,'hmz-t3w頭戴顯示設(shè)備','筆記本配件','索尼','6999',default,defainsertintogoodsvalues(0,'insertintogoodsvalues(0,'商務(wù)雙肩背包','筆記本配件','索尼','99',default,default);insertintogoodsvalues(0,'x3250m4機(jī)架式服務(wù)器','服務(wù)器/工作站','ibm','6888',default,deinsertintogoodsvalues(0,'hmz-t3w頭戴顯示設(shè)備','筆記本配件','索尼','6999',default,defa查詢演求所有電腦產(chǎn)品的平均價(jià)格,并且保留兩位小selectselectround(avg(price),2)asavg_pricefrom查詢所有價(jià)格大于平均價(jià)格的商品,并且按價(jià)格降序selectselectid,name,pricefromwhereprice>(selectround(avg(price),2)asavg_pricefromgoods)orderbypricedesc;查詢類型為'超極本'的商品價(jià)selectselectpricefromgoodswherecate超級(jí)本查詢價(jià)格大于或等于"超級(jí)本"價(jià)格的商品,并且按價(jià)格降序selectselectid,name,pricefromwherepriceany(selectpricefromgoodswherecate超級(jí)本')orderbypricedesc;any=someselectselectid,name,pricefromwherepriceinselectpricefromgoodswherecate超級(jí)本')orderbypricedesc;!=allnotselectselectid,name,pricefromwherepricenotinselectpricefromgoodswherecate超級(jí)本')orderbypricedesc;數(shù)據(jù)分創(chuàng)建“商品分類”createcreatetableifnotexistscate_idintunsignedprimarykeyauto_increment,cate_namevarchar(40)查詢goods表的所有記錄,并且按"類別"selectselectcatefromgoodsgroupby將分組結(jié)果寫入到goods_catesinsertinsertintogoods_cates(cate_name)selectcatefromgoodsgroupby通過goods_cates數(shù)據(jù)表來更新goodsupdateupdategoodsasginnerjoingoods_catesascong.cate=c.cate_namesetcate=cate_id;通過create...select來創(chuàng)建數(shù)據(jù)表并且同時(shí)寫入記錄,一步到createcreatetablegoods_brandsbrand_idintunsignedprimarykeybrand_namevarchar(40))selectbrand_namefromgoodsgroupby通過goods_brands數(shù)據(jù)表來更新goodsupdateupdategoodsasginnerjoingoods_brandsasbong.brand_name=b.brand_namesetg.brand_name=b.brand_id;查看goods的數(shù)據(jù)表結(jié)構(gòu),會(huì)發(fā)現(xiàn)cate和brand_name對(duì)應(yīng)的類型為varchar但是的都brand_id且類型為intunsigned分別good_scatesgoods_brands表中插入記insertintogoods_cates(cate_name)values('insertintogoods_cates(cate_name)values('路由器'),('交換機(jī)'),('網(wǎng)卡');insertintogoods_brands(brand_name)values('海爾'),(' goods數(shù)據(jù)表中寫入任意記insertintogoods(name,cate_id,brand_id,price)values('LaserJetProP1606dninsertintogoods(name,cate_id,brand_id,price)values('LaserJetProP1606dn黑白激光 查詢所有商品的詳細(xì)信息(通過左右來做selectselect*fromgoodsleftjoingoods_catesongoods.cate_id=goods_cates.idinnerjoingoods_brandsongoods.brand_id=goods_brands.id顯示沒有商品的品牌(通過右+子查詢來做)--selectselect*fromgoodsrightjoingoods_brandsongoods.brand_idselectselect*fromgoods_brandswhereidnotin(selectDISTINCTbrand_idfrom高數(shù)據(jù)庫(kù)設(shè)E-R模E-R模型的基本元素是:實(shí)體、聯(lián)系和E表示entry,實(shí)體:一個(gè)數(shù)據(jù)對(duì)象,描述具有相同特屬性:實(shí)體的某一特性稱為屬關(guān)系也是一種數(shù)據(jù),需要通過一個(gè)字段在表1、實(shí)體A對(duì)實(shí)體B為1對(duì)1,則在表A或表B中創(chuàng)建一個(gè)字段,另一個(gè)表的主鍵2、實(shí)體A對(duì)實(shí)體B為1對(duì)多:在表B中創(chuàng)建一個(gè)字段,表A的主鍵想:舉些例子,滿足一對(duì)一、一對(duì)多、多對(duì)多的對(duì)應(yīng)關(guān)連接服務(wù)另式,打開cmd程序,進(jìn)入到mysql安 的 1、1、進(jìn)入mysql的cdC:\ProgramFiles(x86)\MySQL\MySQLServermysqlurootp查看所有數(shù)showshow使用數(shù)據(jù)useuse數(shù)據(jù)庫(kù)名查看當(dāng)前使用的數(shù)據(jù)selectselect創(chuàng)建數(shù)據(jù)createcreatedatabase例createdatabaseceshi刪除數(shù)據(jù)dropdropdatabase數(shù)據(jù)庫(kù)名;dropdatabase查看當(dāng)前數(shù)據(jù)庫(kù)中所showshow查看表結(jié)descdesc表名查看表的創(chuàng)建語(yǔ)showshowcreatetable表名;showcreatetable備以管理員運(yùn)行cmd程運(yùn)行mysqldumpcdcdC:\ProgramFiles(x86)\MySQL\MySQLServer5.1\binmysqldump–uroot–p數(shù)據(jù)庫(kù)名>ceshi.sql恢先創(chuàng)建新的數(shù)據(jù)mysqlmysqlurootp內(nèi)置字符串拼接字符串selectselect案例:體現(xiàn)類似"的家鄉(xiāng)是"的功能包含字符個(gè)數(shù)selectselect查找班級(jí)里邊名字為兩個(gè)字的所有學(xué)生信息截取字符串substring(str,pos,len)返回字符串str的位置pos起lenselectselectselectselectltrim(' selectselect數(shù)學(xué)函求四舍五入值round(n,d),n表示原數(shù),d表示小數(shù)位置,默認(rèn)為selectselect求x的y次冪selectselect獲取圓周率selectselect隨機(jī)數(shù)rand(),值為0-1.0的浮點(diǎn)selectselect案例1:實(shí)現(xiàn)0-10之間的隨機(jī) 案例2:做出一個(gè)從學(xué)生中抽獎(jiǎng)的功日期時(shí)間函當(dāng)前日期selectselect當(dāng)前時(shí)間selectselect當(dāng)前日期時(shí)間selectselect%H獲取時(shí),返回24%h獲取時(shí),返回12例:將使用-拼接的日期轉(zhuǎn)換為使用空格拼流程控case語(yǔ)法:等值判說明:當(dāng)值等于某個(gè)比較值的時(shí)候,對(duì)應(yīng)的結(jié)果會(huì)被返回;如果所有的比較值都不相等則else的結(jié)果;如果沒有else并且所有比較值都不相等則返回casecase值when比較值1then結(jié)果1when比較值2then結(jié)果2else結(jié)果例selectcase1when1then'one'when2then'two'else'zero'endas案例:做出一個(gè)女同學(xué)稱為,男同學(xué)稱為帥哥的小功自定義創(chuàng)語(yǔ)法如delimiterdelimitercreatefunction函數(shù)名稱(參數(shù)列表returns$$delimiter;說明:delimiter用于設(shè)置分割符,默認(rèn)為分示要求:創(chuàng)建函數(shù)my_trim,用于刪除字符串左右兩側(cè)的空step1:設(shè)置分割delimiterdelimiterstep2:創(chuàng)建函createcreatefunctionmy_trim(strvarchar(100))returnsvarchar(100)step3:還原分割delimiterdelimiter使用自定義selectselect'abc 過過程,也翻譯為程序,是一條或者多條SQL語(yǔ)句的集創(chuàng)語(yǔ)法如delimiterdelimitercreateprocedure 說明:delimiter用于設(shè)置分割符,默認(rèn)為分示要求:創(chuàng)建查詢過程,查詢學(xué)生step1:設(shè)置分割delimiterdelimiterstep2:創(chuàng)建過createcreateprocedureproc_stu()select*fromstudents;step3:還原分割delimiterdelimiter調(diào)語(yǔ)法如 call過程和函數(shù)都是為了可重復(fù)的執(zhí)行操作數(shù)據(jù)庫(kù)的sql語(yǔ)句的集合過程和函數(shù)都是一次編譯,就會(huì)被緩存起來,下次使用就直接命中緩存中已經(jīng)編譯好 不需要重復(fù)減少網(wǎng)絡(luò)交互,減少網(wǎng)絡(luò)流視解決:定義createcreateviewasselect語(yǔ)句例:創(chuàng)建視圖,查詢學(xué)生對(duì)應(yīng)的成績(jī)createcreateviewv_stu_score_courseasstudentsinnerjoinscoressconstu.studentNo=sc.studentNoinnerjoincoursescsoncs.courseNo=sc.courseNo查看視圖:查看表會(huì)將所有的視圖也列showshow刪除視dropdropview視圖名稱;dropview使用:視圖的用途就是selectselect*from事為什么要有事事務(wù)廣泛的運(yùn)用于訂單系統(tǒng)、銀行系統(tǒng)等多種例如:A用戶和B用戶是銀行的儲(chǔ)戶,現(xiàn)在A要給B轉(zhuǎn)賬500元,那么需要做以下幾件事檢查A的賬戶余額>500A賬戶中扣除500元B賬戶中增加500元,事務(wù)命showshowcreatetable修

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論