MySql零基礎(chǔ)教學(xué)超細(xì)致從小白到精通_第1頁(yè)
MySql零基礎(chǔ)教學(xué)超細(xì)致從小白到精通_第2頁(yè)
MySql零基礎(chǔ)教學(xué)超細(xì)致從小白到精通_第3頁(yè)
MySql零基礎(chǔ)教學(xué)超細(xì)致從小白到精通_第4頁(yè)
MySql零基礎(chǔ)教學(xué)超細(xì)致從小白到精通_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

MySql零基礎(chǔ)教學(xué),超細(xì)致,從??到精通第1章數(shù)據(jù)庫(kù)的介紹1.1數(shù)據(jù)庫(kù)概述1.1.1什么是數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù).其本質(zhì)是?個(gè)?件系統(tǒng),數(shù)據(jù)庫(kù)按照特定的格式將數(shù)據(jù)存儲(chǔ)起來(lái),?戶可以對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)?增加,修改,刪除及查詢(xún)操作。1.1.2數(shù)據(jù)的存儲(chǔ)?式1.數(shù)據(jù)保存在內(nèi)存優(yōu)點(diǎn):內(nèi)存速度快缺點(diǎn):斷電/程序退出,數(shù)據(jù)就清除了.內(nèi)存價(jià)格貴2.數(shù)據(jù)保存在普通?件優(yōu)點(diǎn):永久保存缺點(diǎn):查找,增加,修改,刪除數(shù)據(jù)?較?煩,效率低2.數(shù)據(jù)保存在數(shù)據(jù)庫(kù)優(yōu)點(diǎn):永久保存,通過(guò)SQL語(yǔ)句?較?便的操作數(shù)據(jù)庫(kù)1.2數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)數(shù)據(jù)庫(kù)是按照特定的格式將數(shù)據(jù)存儲(chǔ)在?件中,通過(guò)SQL語(yǔ)句可以?便的對(duì)?量數(shù)據(jù)進(jìn)?增、刪、改、查操作,數(shù)據(jù)庫(kù)是對(duì)?量的信息進(jìn)?管理的?效的解決?案。1.3常見(jiàn)數(shù)據(jù)庫(kù)MYSQL:開(kāi)源免費(fèi)的數(shù)據(jù)庫(kù),?型的數(shù)據(jù)庫(kù).已經(jīng)被Oracle收購(gòu)了。Oracle:收費(fèi)的?型數(shù)據(jù)庫(kù),Oracle公司的產(chǎn)品。Oracle收購(gòu)SUN公司,收購(gòu)MYSQL。DB2:IBM公司的數(shù)據(jù)庫(kù)產(chǎn)品,收費(fèi)的。常應(yīng)?在銀?系統(tǒng)中.SQLServer:MicroSoft公司收費(fèi)的中型的數(shù)據(jù)庫(kù)。C#、.net等語(yǔ)?常使?。SyBase:已經(jīng)淡出歷史舞臺(tái)。提供了?個(gè)?常專(zhuān)業(yè)數(shù)據(jù)建模的?具PowerDesigner。SQLite:嵌?式的?型數(shù)據(jù)庫(kù),應(yīng)?在?機(jī)端。常?數(shù)據(jù)庫(kù):MYSQL,Oracle在web應(yīng)?中,使?的最多的就是MySQL數(shù)據(jù)庫(kù),原因如下:1.開(kāi)源、免費(fèi)2.功能?夠強(qiáng)?,?以應(yīng)付web應(yīng)?開(kāi)發(fā)(最??持千萬(wàn)級(jí)別的并發(fā)訪問(wèn))#第2章數(shù)據(jù)庫(kù)的安裝與使?2.1數(shù)據(jù)庫(kù)的卸載1.打開(kāi)電腦的服務(wù)窗?,關(guān)閉MySQL服務(wù)并且卸載?切與mysql相關(guān)的模塊2.找到MySQL的安裝?錄,查找是否還殘留相關(guān)?件夾,如果有刪除即可3.勾選顯??件夾選項(xiàng)4.找到ProgramDate?件夾,刪除??mysql?件夾即可2.2數(shù)據(jù)庫(kù)的安裝2.3數(shù)據(jù)庫(kù)的啟動(dòng)MySQL啟動(dòng)?式和普通的windows程序雙擊啟動(dòng)?式不同,分為以下3種:1.Windows服務(wù)?式啟動(dòng)操作步驟:2.命令?式啟動(dòng)windows+r鍵調(diào)出運(yùn)?窗?,輸?services.msc命令。隨后在服務(wù)中找到MySQL80服務(wù)啟動(dòng)即可3.以管理員?份運(yùn)?cmd打開(kāi)dos窗?,輸出netstartmysql804.使?cmd命令打開(kāi)dos窗?,輸出mysql-V查看當(dāng)前MySQL版本2.4控制臺(tái)連接數(shù)據(jù)庫(kù)MySQL是?個(gè)需要賬戶名密碼登錄的數(shù)據(jù)庫(kù),登陸后使?,它提供了?個(gè)默認(rèn)的root賬號(hào),使?安裝時(shí)設(shè)置的密碼即可登錄1.登錄格式1:mysql-u?戶名-p密碼例如:mysql–uroot-proot后輸?密碼?式:mysql-u?戶名-p回車(chē)密碼2.登錄格式2:mysql-hip地址-u?戶名-p密碼例如:mysql–h–uroot-proot3.登錄格式3:mysql--host=ip地址--user=?戶名--password=密碼例如:mysql--host=localhost--user=root--password=root4.退出MySQL:exit2.5數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)和表的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBaseManagementSystem,DBMS):指?種操作和管理數(shù)據(jù)庫(kù)的?型軟件,?于建?、使?和維護(hù)數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)進(jìn)?統(tǒng)?管理和控制,以保證數(shù)據(jù)庫(kù)的安全性和完整性。?戶通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)中表內(nèi)的數(shù)據(jù)數(shù)據(jù)庫(kù)管理程序(DBMS)可以管理多個(gè)數(shù)據(jù)庫(kù),?般開(kāi)發(fā)?員會(huì)針對(duì)每?個(gè)應(yīng)?創(chuàng)建?個(gè)數(shù)據(jù)庫(kù)。為保存應(yīng)?中實(shí)體的數(shù)據(jù),?般會(huì)在數(shù)據(jù)庫(kù)創(chuàng)建多個(gè)表,以保存程序中實(shí)體的數(shù)據(jù)。數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)和表的關(guān)系如圖所?:先有數(shù)據(jù)庫(kù)→再有表→再有數(shù)據(jù)?個(gè)庫(kù)包含多個(gè)表第3章SQL語(yǔ)句3.1SQL的概念3.1.1什么是SQL結(jié)構(gòu)化查詢(xún)語(yǔ)?(StructuredQueryLanguage)簡(jiǎn)稱(chēng)SQL,SQL語(yǔ)句就是對(duì)數(shù)據(jù)庫(kù)進(jìn)?操作的?種語(yǔ)?。3.1.2SQL作?通過(guò)SQL語(yǔ)句我們可以?便的操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)、表、數(shù)據(jù)。SQL是數(shù)據(jù)庫(kù)管理系統(tǒng)都需要遵循的規(guī)范。不同的數(shù)據(jù)庫(kù)?產(chǎn)?商都?持SQL語(yǔ)句,但都有特有內(nèi)容。3.1.3SQL語(yǔ)句分類(lèi)DDL(DataDefinitionLanguage)數(shù)據(jù)定義語(yǔ)??來(lái)定義數(shù)據(jù)庫(kù)對(duì)象:數(shù)據(jù)庫(kù),表,列等。關(guān)鍵字:create,drop,alter等DML(DataManipulationLanguage)數(shù)據(jù)操作語(yǔ)??來(lái)對(duì)數(shù)據(jù)庫(kù)中表的數(shù)據(jù)進(jìn)?增刪改。關(guān)鍵字:insert,delete,update等DQL(DataQueryLanguage)數(shù)據(jù)查詢(xún)語(yǔ)??來(lái)查詢(xún)數(shù)據(jù)庫(kù)中表的記錄(數(shù)據(jù))。關(guān)鍵字:select,where等DCL(DataControlLanguage)數(shù)據(jù)控制語(yǔ)?(了解)?來(lái)定義數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限和安全級(jí)別,及創(chuàng)建?戶。關(guān)鍵字:GRANT,REVOKE等3.2SQL通?語(yǔ)法SQL語(yǔ)句可以單?或多?書(shū)寫(xiě),以分號(hào)結(jié)尾。可使?空格和縮進(jìn)來(lái)增強(qiáng)語(yǔ)句的可讀性。MySQL數(shù)據(jù)庫(kù)的SQL語(yǔ)句不區(qū)分??寫(xiě),關(guān)鍵字建議使??寫(xiě)。SELECT*FROMstudent;select*fromstudent;SELECT*FROMstudent;3.3DDL語(yǔ)句DDL(DataDefinitionLanguage)數(shù)據(jù)定義語(yǔ)??來(lái)定義數(shù)據(jù)庫(kù)對(duì)象:數(shù)據(jù)庫(kù),表,列等。關(guān)鍵字:create,drop,alter等3.3.1DDL操作數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)直接創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASE數(shù)據(jù)庫(kù)名;判斷是否存在并創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASEIFNOTEXISTS數(shù)據(jù)庫(kù)名;創(chuàng)建數(shù)據(jù)庫(kù)并指定字符集(編碼表)CREATEDATABASE數(shù)據(jù)庫(kù)名CHARACTERSET字符集;具體操作:直接創(chuàng)建數(shù)據(jù)庫(kù)db1CREATEDATABASEdb1;image-20200903093635240判斷是否存在并創(chuàng)建數(shù)據(jù)庫(kù)db2CREATEDATABASEIFNOTEXISTSdb2;創(chuàng)建數(shù)據(jù)庫(kù)并指定字符集為gbkCREATEDATABASEdb3CHARACTERSETgbk;查看數(shù)據(jù)庫(kù)查看所有的數(shù)據(jù)庫(kù)SHOWDATABASES;查看某個(gè)數(shù)據(jù)庫(kù)的定義信息SHOWCREATEDATABASE數(shù)據(jù)庫(kù)名;修改數(shù)據(jù)庫(kù)修改數(shù)據(jù)庫(kù)字符集格式ALTERDATABASE數(shù)據(jù)庫(kù)名DEFAULTCHARACTERSET字符集;具體操作:將db3數(shù)據(jù)庫(kù)的字符集改成utf8ALTERDATABASEdb3DEFAULTCHARACTERSETutf8;刪除數(shù)據(jù)庫(kù)DROPDATABASE數(shù)據(jù)庫(kù)名;具體操作:刪除db2數(shù)據(jù)庫(kù)DROPDATABASEdb2;使?數(shù)據(jù)庫(kù)查看正在使?的數(shù)據(jù)庫(kù)SELECTDATABASE();使?/切換數(shù)據(jù)庫(kù)USE數(shù)據(jù)庫(kù)名;具體操作:查看正在使?的數(shù)據(jù)庫(kù)SELECTDATABASE();使?db1數(shù)據(jù)庫(kù)USEdb1;3.3.2DDL操作表>前提先使?某個(gè)數(shù)據(jù)庫(kù)創(chuàng)建表表的結(jié)構(gòu)與excel相似語(yǔ)法:CREATETABLE表名(字段名1字段類(lèi)型1,字段名2字段類(lèi)型2…);關(guān)鍵字說(shuō)明:CREATE--表?創(chuàng)建TABLE--表?創(chuàng)建?張表建議寫(xiě)成如下格式:CREATETABLE表名(字段名1字段類(lèi)型1,字段名2字段類(lèi)型2);MySQL數(shù)據(jù)類(lèi)型MySQL中的我們常使?的數(shù)據(jù)類(lèi)型如下:類(lèi)型描述int整型double浮點(diǎn)型varchardata字符串型?期類(lèi)型:yyyy-MM-dd詳細(xì)的數(shù)據(jù)類(lèi)型如下(不建議詳細(xì)閱讀!)分類(lèi)類(lèi)型名稱(chēng)說(shuō)明整數(shù)類(lèi)型tinyInt很?的整數(shù)smallint?的整數(shù)mediumintint(integer)float中等??的整數(shù)普通??的整數(shù)?數(shù)類(lèi)型單精度浮點(diǎn)數(shù)double雙精度浮點(diǎn)數(shù)decimal(m,d)year壓縮嚴(yán)格的定點(diǎn)數(shù)?期類(lèi)型YYYY1901~2155timeHH:MM:SS-838:59:59~838:59:59YYYY-MM-DD1000-01-01~9999-12-3YYYY-MM-DDHH:MM:SS1000-01-0100:00:00~9999-12-3123:59:59YYYY-MM-DDHH:MM:SS1970010100:00:01UTC~2038-01-1903:14:07UTCM為0~255之間的整數(shù)datedatetimetimestampCHAR(M)VARCHAR(M)TINYBLOBBLOB?本、?進(jìn)制類(lèi)型M為0~65535之間的整數(shù)允許長(zhǎng)度0~255字節(jié)允許長(zhǎng)度0~65535字節(jié)MEDIUMBLOBLONGBLOBTINYTEXTTEXT允許長(zhǎng)度0~167772150字節(jié)允許長(zhǎng)度0~4294967295字節(jié)允許長(zhǎng)度0~255字節(jié)允許長(zhǎng)度0~65535字節(jié)MEDIUMTEXTLONGTEXTVARBINARY(M)BINARY(M)允許長(zhǎng)度0~167772150字節(jié)允許長(zhǎng)度0~4294967295字節(jié)允許長(zhǎng)度0~M個(gè)字節(jié)的變長(zhǎng)字節(jié)字符串允許長(zhǎng)度0~M個(gè)字節(jié)的定長(zhǎng)字節(jié)字符串具體操作:創(chuàng)建student表包含id,name,birthday字段CREATETABLEstudent(idINT,nameVARCHAR(20),

birthdayDATE);查看表查看某個(gè)數(shù)據(jù)庫(kù)中的所有表SHOWTABLES;查看表結(jié)構(gòu)DESC表名;查看創(chuàng)建表的SQL語(yǔ)句SHOWCREATETABLE表名;快速創(chuàng)建?個(gè)表結(jié)構(gòu)相同的表CREATETABLE新表名LIKE舊表名;具體操作:創(chuàng)建s1表,s1表結(jié)構(gòu)和student表結(jié)構(gòu)相同CREATETABLEs1LIKEstudent;刪除表直接刪除表DROPTABLE表名;判斷表是否存在并刪除表DROPTABLEIFEXISTS表名;修改表結(jié)構(gòu)修改表結(jié)構(gòu)使?不是很頻繁,只需要了解,等需要使?的時(shí)候再回來(lái)查即可添加表列ALTERTABLE表名ADD列名類(lèi)型;具體操作:為學(xué)?表添加?個(gè)新的字段remark,類(lèi)型為varchar(20)ALTERTABLEstudentADDremarkVARCHAR(20);修改列類(lèi)型ALTERTABLE表名MODIFY列名新的類(lèi)型;具體操作:將student表中的remark字段的改成varchar(100)ALTERTABLEstudentMODIFYremarkVARCHAR(100);修改列名ALTERTABLE表名CHANGE舊列名新列名類(lèi)型;具體操作:將student表中的remark字段名改成intro,類(lèi)型varchar(30)ALTERTABLEstudentCHANGEremarkintrovarchar(30);刪除列ALTERTABLE表名DROP列名;具體操作:刪除student表中的字段introALTERTABLEstudentDROPintro;修改表名RENAMETABLE表名TO新表名;具體操作:將學(xué)?表student改名成student2RENAMETABLEstudentTOstudent2;修改字符集ALTERTABLE表名characterset字符集;具體操作:將sutden2表的編碼修改成gbkALTERTABLEstudent2charactersetgbk;3.4DML語(yǔ)句DML(DataManipulationLanguage)數(shù)據(jù)操作語(yǔ)??來(lái)對(duì)數(shù)據(jù)庫(kù)中表的數(shù)據(jù)進(jìn)?增刪改。關(guān)鍵字:insert,delete,update等3.4.1插?記錄關(guān)鍵字說(shuō)明INSERTINTO表名–表?往哪張表中添加數(shù)據(jù)(字段名1,字段名2,…)--要給哪些字段設(shè)置值VALUES(值1,值2,…);--設(shè)置具體的值注意值與字段必須對(duì)應(yīng),個(gè)數(shù)相同,類(lèi)型相同值的數(shù)據(jù)??必須在字段的長(zhǎng)度范圍內(nèi)除了數(shù)值類(lèi)型外,其它的字段類(lèi)型的值必須使?引號(hào)引起。(建議單引號(hào))如果要插?空值,可以不寫(xiě)字段,或者插?null插?全部字段所有的字段名都寫(xiě)出來(lái)INSERTINTO表名(字段名1,字段名2,字段名3…)VALUES(值1,值2,值3);不寫(xiě)字段名INSERTINTO表名VALUES(值1,值2,值3…);插?部分?jǐn)?shù)據(jù)INSERTINTO表名(字段名1,字段名2,...)VALUES(值1,值2,...);沒(méi)有添加數(shù)據(jù)的字段會(huì)使?NULL具體操作:創(chuàng)建db2數(shù)據(jù)庫(kù),并使?。CREATEDATABASEdb2;USEdb2;創(chuàng)建完整學(xué)?信息表,包括學(xué)員的id,姓名,年齡,性別,家庭地址,電話號(hào)碼,??,數(shù)學(xué)成績(jī),英語(yǔ)成績(jī)CREATETABLEstudent4(idint,namevarchar(20),ageint,sexchar(1),addressvarchar(200),phonevarchar(20),birthdaydate,mathdouble,englishdouble);插?部分?jǐn)?shù)據(jù),往學(xué)?表中添加id,name,age,sex,address數(shù)據(jù)INSERTINTOstudent(id,name,age,sex,address)values(1,'張三',19,'男','北京市');提?:使?SELECT*FROM表名;測(cè)試是否插?成功向表中插?所有字段所有的字段名都寫(xiě)出來(lái)INSERTINTOstudent(id,name,age,sex,address,phone,birthday,math,english)values(2,'?美',18,'?','上海市','188****8888','2011-12-12',65.5,99.2);不寫(xiě)字段名INSERTINTOstudentvalues(3,'?明',27,'男','深圳市','133****3333','2000-11-06',95.5,92);蠕?復(fù)制什么是蠕?復(fù)制:在已有的數(shù)據(jù)基礎(chǔ)之上,將原來(lái)的數(shù)據(jù)進(jìn)?復(fù)制,插?到對(duì)應(yīng)的表中語(yǔ)法格式:INSERTINTO表名1SELECT*FROM表名2;作?:將表名2中的數(shù)據(jù)復(fù)制到表名1中具體操作:創(chuàng)建student2表,student2結(jié)構(gòu)和student表結(jié)構(gòu)?樣CREATETABLEstudentLIKEstudent2;將student表中的數(shù)據(jù)添加到student2表中INSERTINTOstudentSELECT*FROMstudent2;注意:如果只想復(fù)制student表中name,age字段數(shù)據(jù)到student2表中使?如下格式INSERTINTOstudent2(name,age)SELECTname,ageFROMstudent;3.4.2更新表記錄不帶條件修改數(shù)據(jù)UPDATE表名SET字段名=值;帶條件修改數(shù)據(jù)UPDATE表名SET字段名=值WHERE字段名=值;關(guān)鍵字說(shuō)明UPDATE:修改數(shù)據(jù)SET:修改哪些字段WHERE:指定條件具體操作:不帶條件修改數(shù)據(jù),將所有的性別改成?UPDATEstudentSETsex='?';帶條件修改數(shù)據(jù),將id號(hào)為2的學(xué)?性別改成男UPDATEstudentSETsex='男'WHEREid=2;?次修改多個(gè)列,把id為3的學(xué)?,年齡改成26歲,address改成北京UPDATEstudentSETage=26,address='北京'WHEREid=3;3.4.3刪除表記錄不帶條件刪除數(shù)據(jù)DELETEFROM表名;帶條件刪除數(shù)據(jù)DELETEFROM表名WHERE字段名=值;具體操作:帶條件刪除數(shù)據(jù),刪除id為3的記錄DELETEFROMstudentWHEREid=3;不帶條件刪除數(shù)據(jù),刪除表中的所有數(shù)據(jù)DELETEFROMstudent;truncate刪除表記錄`TRUNCATETABLE表名;`truncate和delete的區(qū)別:delete是將表中的數(shù)據(jù)?條?條刪除truncate是將整個(gè)表摧毀,重新創(chuàng)建?個(gè)新的表,新的表結(jié)構(gòu)和原來(lái)表結(jié)構(gòu)?模?樣3.5DQLDQL(DataQueryLanguage)數(shù)據(jù)查詢(xún)語(yǔ)??來(lái)查詢(xún)數(shù)據(jù)庫(kù)中表的記錄(數(shù)據(jù))。關(guān)鍵字:select,where等>注意:查詢(xún)不會(huì)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)?修改.只是?種顯?數(shù)據(jù)的?式3.5.1簡(jiǎn)單查詢(xún)--為student準(zhǔn)備數(shù)據(jù)INSERTINTOstudentvalues(1,'閆妮',43,'?','北京市','12222222222','2019-02-12',92.5,88);INSERTINTOstudentvalues(2,'郭富城',21,'男','上海市','1666666666','2018-06-06',97.5,65.5);INSERTINTOstudentvalues(3,'趙麗穎',44,'?','深圳市','133****3333','2012-07-15',42.5,74.5);INSERTINTOstudentvalues(4,'張學(xué)友',34,'男','杭州市','177****7777','2013-11-17',69,65);INSERTINTOstudentvalues(5,'成龍',51,'男','哈爾濱市','155****5555','2005-10-12',88,97);INSERTINTOstudentvalues(6,'劉德華',57,'男','盤(pán)錦市','199****9999','2015-11-11',74.5,92.5);INSERTINTOstudentvalues(7,'馬伊琍',42,'?','長(zhǎng)沙市','188****8888','2008-03-26',86.5,71.5);INSERTINTOstudentvalues(8,'黎明',49,'男','昆明市','11111111111','2000-09-14',77.5,60);查詢(xún)表所有數(shù)據(jù)使?*表?所有列SELECT*FROM表名;具體操作:SELECT*FROMstudent;寫(xiě)出查詢(xún)每列的名稱(chēng)SELECT字段名1,字段名2,字段名3,...FROM表名;具體操作:SELECTid,name,age,sex,address,phone,birthday,math,englishFROMstudent;查詢(xún)指定列查詢(xún)指定列的數(shù)據(jù),多個(gè)列之間以逗號(hào)分隔SELECT字段名1,字段名2...FROM表名;具體操作:查詢(xún)student表中的name和age列SELECTNAME,ageFROMstudent;別名查詢(xún)查詢(xún)時(shí)給列、表指定別名需要使?AS關(guān)鍵字使?別名的好處是?便觀看和處理查詢(xún)到的數(shù)據(jù)SELECT字段名1AS別名,字段名2AS別名...FROM表名;注意:AS可以省略不寫(xiě)具體操作:查詢(xún)sudent表中name和age列,name列的別名為”姓名”,age列的別名為”年齡”SELECTNAMEAS姓名,ageAS年齡FROMstudent;清除重復(fù)值查詢(xún)指定列并且結(jié)果不出現(xiàn)重復(fù)數(shù)據(jù)SELECTDISTINCT字段名FROM表名;--補(bǔ)充數(shù)據(jù)INSERTINTOstudentvalues(9,'黎明',49,'?','錦州市',,'2000-06-18',73.5,69);INSERTINTOstudentvalues(10,'黎明',31,'?','重慶市','10000000000','2010-05-23',63.5,88);具體操作:查詢(xún)name,age列并且結(jié)果不出現(xiàn)重復(fù)nameSELECTDISTINCTNAME,ageFROMstudent;查詢(xún)結(jié)果參與運(yùn)算某列數(shù)據(jù)和固定值運(yùn)算SELECT列名1+固定值FROM表名;某列數(shù)據(jù)和其他列數(shù)據(jù)參與運(yùn)算SELECT列名1+列名2FROM表名;注意:參與運(yùn)算的必須是數(shù)值類(lèi)型需求:查詢(xún)的時(shí)候?qū)?shù)學(xué)和英語(yǔ)的成績(jī)相加讓學(xué)員的年齡增加10歲實(shí)現(xiàn):查詢(xún)math+english的和SELECTmath+englishFROMstudent;>結(jié)果確實(shí)將每條記錄的math和english相加,但是效果不好看查詢(xún)math+english的和使?別名”總成績(jī)”SELECTmath+english總成績(jī)FROMstudent;查詢(xún)所有列與math+english的和并使?別名”總成績(jī)”SELECT*,math+english總成績(jī)FROMstudent;查詢(xún)姓名、年齡,將每個(gè)?的年齡增加10歲SELECTname,age+10FROMstudent;3.5.2Navicat連接?具的使?為什么使?NavicatNavicat是?套快速、可靠并價(jià)格相當(dāng)便宜的?具,專(zhuān)為簡(jiǎn)化數(shù)據(jù)庫(kù)的管理及降低系統(tǒng)管理成本?設(shè)。它的設(shè)計(jì)符合、開(kāi)發(fā)?員及中?企業(yè)的需要。Navicat是以直覺(jué)化的?建的,讓你可以以安全并且簡(jiǎn)單的?式創(chuàng)建、組織、訪問(wèn)并共?信息。Navicat的安裝1.雙擊運(yùn)?Navicat程序2.點(diǎn)擊下?步3.勾選我同意,點(diǎn)擊下?步4.選擇安裝?錄后,點(diǎn)擊下?步5.點(diǎn)擊下?步6.點(diǎn)擊下?步7.點(diǎn)擊安裝8.等待安裝完畢9.點(diǎn)擊完成即可10.主頁(yè)?點(diǎn)擊連接選擇MySQL11.填寫(xiě)連接名稱(chēng)以及密碼信息12.數(shù)據(jù)庫(kù)正常登錄Navicat完成hero表1.創(chuàng)建db數(shù)據(jù)庫(kù)2.使?db數(shù)據(jù)庫(kù)3.創(chuàng)建hero表,表中包括:id,name,age,sex,location,life,magic,is_hot,grounding_date,max_score字段4.添加?條數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)?增刪改操作3.5.3條件查詢(xún)前?我們的查詢(xún)都是將所有數(shù)據(jù)都查詢(xún)出來(lái),但是有時(shí)候我們只想獲取到滿?條件的數(shù)據(jù)語(yǔ)法格式:SELECT字段名FROM表名WHERE條件;流程:取出表中的每條數(shù)據(jù),滿?條件的記錄就返回,不滿?條件的記錄不返回準(zhǔn)備數(shù)據(jù)--準(zhǔn)備數(shù)據(jù)INSERTintoherovalues(1,'亞瑟',35,'男',320,'戰(zhàn)?',3000,0,1,'2017-05-14',14.2);INSERTintoherovalues(2,'阿珂',19,'?',470,'刺客',1500,1100,0,'2019-06-11',15.6);INSERTintoherovalues(3,'?夫?',75,'男',430,'戰(zhàn)?',2500,0,1,'2016-11-18',17.7);INSERTintoherovalues(4,'呂布',40,'男',500,'戰(zhàn)?',2700,1000,1,'2015-04-22',12.2);INSERTintoherovalues(5,'甄姬',27,'?',210,'法師',1400,1900,0,'2018-06-06',13.1);INSERTintoherovalues(6,'虞姬',25,'?',370,'射?',1600,1200,1,'2013-02-24',11.2);INSERTintoherovalues(7,'德瑪西亞',35,'男',220,'戰(zhàn)?',3900,1500,1,'2011-02-14',11.2);INSERTintoherovalues(8,'孫尚?',24,'?',260,'射?',1300,900,0,'2020-03-12',9.2);INSERTintoherovalues(9,'孫策',39,'男',280,'戰(zhàn)?',3200,1100,1,'2016-07-14',16.7);INSERTintoherovalues(10,'孫悟空',32,'男',460,'戰(zhàn)?',2900,1300,0,'2013-02-11',17.2);INSERTintoherovalues(11,'公孫策',37,'男',210,'法師',2200,700,1,'2019-09-16',11.4);INSERTintoherovalues(12,'??孫',22,'男',195,'刺客',1400,1700,1,'2013-02-16',12.4);INSERTintoherovalues(13,'后裔',39,'男',420,'射?',780,700,0,'2019-01-19',NULL);?較運(yùn)算符>?于<?于<=?于等于>=?于等于=等于<>、!=不等于具體操作:查詢(xún)攻擊?于350的英雄SELECT*FROMherowhereattack>350;查詢(xún)?cè)u(píng)分?于12的英雄SELECT*FROMheroWHEREmax_score<12;查詢(xún)定位為射?的英雄SELECT*FROMheroWHERElocation='射?';查詢(xún)不是熱門(mén)的英雄1:熱門(mén)0:?熱門(mén)SELECT*FROMheroWHEREis_hot<>1;SELECT*FROMheroWHEREis_hot!=1;邏輯運(yùn)算符and多個(gè)條件同時(shí)滿?or多個(gè)條件其中?個(gè)滿?not不滿?具體操作:查詢(xún)age?于35且?命值?于2500的英雄(兩個(gè)條件同時(shí)滿?)SELECT*FROMheroWHEREage>35ANDlife>2500;查詢(xún)age?于35或評(píng)分?于10的英雄(兩個(gè)條件其中?個(gè)滿?)SELECT*FROMheroWHEREage>35ORmax_score<10;查詢(xún)id是1或3或5的英雄SELECT*FROMheroWHEREid=1ORid=3ORid=5;in關(guān)鍵字語(yǔ)法格式:SELECT字段名FROM表名WHERE字段in(數(shù)據(jù)1,數(shù)據(jù)2...);in??的每個(gè)數(shù)據(jù)都會(huì)作為?次條件,只要滿?條件的就會(huì)顯?具體操作:查詢(xún)id是1或3或5的英雄SELECT*FROMheroWHEREidin(1,3,5);查詢(xún)id不是1或3或5的英雄SELECT*FROMheroWHEREidnotin(1,3,5);范圍BETWEEN值1AND值2表?從值1到值2范圍,包頭?包尾?如:ageBETWEEN35AND70相當(dāng)于:age>=35&&age<=70具體操作:查詢(xún)英雄上架?期?于等于2013-01-01?于等于2017-01-01之間的英雄SELECT*FROMheroWHEREgrounding_dateBETWEEN'2013-01-01'AND'2017-01-01';SELECT*FROMheroWHEREgrounding_date>='2013-01-01'ANDgrounding_date<='2017-01-01';likeLIKE表?模糊查詢(xún)SELECT*FROM表名WHERE字段名LIKE'通配符字符串';滿?通配符字符串規(guī)則的數(shù)據(jù)就會(huì)顯?出來(lái)MySQL通配符有兩個(gè):%:表?0個(gè)或多個(gè)字符(任意個(gè)字符)_:表??個(gè)字符具體操作:查詢(xún)姓孫的英雄SELECT*FROMheroWHEREnameLIKE'孫%';查詢(xún)姓名中包含’孫’字的英雄SELECT*FROMheroWHEREnameLIKE'%孫%';查詢(xún)姓孫,且姓名有三個(gè)字的英雄SELECT*FROMheroWHEREnameLIKE'孫__';排序通過(guò)ORDERBY?句,可以將查詢(xún)出的結(jié)果進(jìn)?排序(排序只是顯??式,不會(huì)影響數(shù)據(jù)庫(kù)中數(shù)據(jù)的順序)語(yǔ)法:SELECT字段名FROM表名WHERE字段=值ORDERBY字段名[ASC|DESC];ASC:升序,默認(rèn)是升序DESC:降序.1單列排序單列排序就是使??個(gè)字段排序具體操作:查詢(xún)年齡?于等于35歲的英雄,按照年齡升序排列SELECT*FROMheroWHEREage<=35ORDERBYageASC;.2組合排序組合排序就是先按第?個(gè)字段進(jìn)?排序,如果第?個(gè)字段相同,才按第?個(gè)字段進(jìn)?排序,依次類(lèi)推。上?的例?中,年齡是有相同的。當(dāng)年齡相同再使?其他字段進(jìn)?排序SELECT字段名FROM表名WHERE字段=值ORDERBY字段名1[ASC|DESC],字段名2[ASC|DESC];具體操作:查詢(xún)年齡?于等于35歲的英雄,按照年齡升序排列,如果年齡相同按照?命的降序排列SELECT*FROMheroWHEREage<=35ORDERBYageASC,lifedesc;聚合函數(shù)之前我們做的查詢(xún)都是橫向查詢(xún),它們都是根據(jù)條件????的進(jìn)?判斷,?使?聚合函數(shù)查詢(xún)是縱向查詢(xún),它是對(duì)?列的值進(jìn)?計(jì)算,然后返回?個(gè)結(jié)果值。另外聚合函數(shù)會(huì)忽略空值五個(gè)聚合函數(shù):count:統(tǒng)計(jì)指定列記錄數(shù),記錄為NULL的不統(tǒng)計(jì)sum:計(jì)算指定列的數(shù)值和,如果不是數(shù)值類(lèi)型,那么計(jì)算結(jié)果為0max:計(jì)算指定列的最?值min:計(jì)算指定列的最?值avg:計(jì)算指定列的平均值,如果不是數(shù)值類(lèi)型,那么計(jì)算結(jié)果為0聚合函數(shù)的使?:寫(xiě)在SQL語(yǔ)句SELECT后字段名的地?SELECT字段名...FROM表名;SELECTCOUNT(age)FROM表名;具體操作:查詢(xún)英雄總數(shù)SELECTCOUNT(max_score)FROMhero我們發(fā)現(xiàn)對(duì)于NULL的記錄不會(huì)統(tǒng)計(jì)只要使?全部字段作為衡量標(biāo)準(zhǔn)既不會(huì)有遺漏的錯(cuò)誤統(tǒng)計(jì)出現(xiàn)SELECTCOUNT(*)FROMhero查詢(xún)年齡?于40的總數(shù)SELECTCOUNT(*)FROMheroWHEREage>35;查詢(xún)所?英雄的總評(píng)分SELECTSUM(max_score)FROMhero查詢(xún)英雄評(píng)分的平均分SELECTAVG(max_score)FROMhero查詢(xún)英雄評(píng)分的最?分SELECTMAX(max_score)FROMhero查詢(xún)英雄評(píng)分的最低分SELECTMIN(max_score)FROMhero分組分組查詢(xún)是指使?GROUPBY語(yǔ)句對(duì)查詢(xún)信息進(jìn)?分組,相同數(shù)據(jù)作為?組SELECT字段1,字段2...FROM表名GROUPBY分組字段[HAVING條件];GROUPBY怎么分組的?將分組字段結(jié)果中相同內(nèi)容作為?組SELECT*FROMheroGROUPBYsex;這句話會(huì)將sex相同的數(shù)據(jù)作為?組,但是會(huì)返回每組的第?條,沒(méi)有任何意義分組的?的就是為了統(tǒng)計(jì),?般分組會(huì)跟聚合函數(shù)?起使?。分組后聚合函數(shù)的作??不是操作所有數(shù)據(jù),?是操作?組數(shù)據(jù)。SELECTSUM(life)FROMheroGROUPBYsex效果如下:注意事項(xiàng):當(dāng)我們使?某個(gè)字段分組,在查詢(xún)的時(shí)候也需要將這個(gè)字段查詢(xún)出來(lái),否則看不到數(shù)據(jù)屬于哪組的查詢(xún)的時(shí)候?qū)?分組字段即可練習(xí):查詢(xún)年齡?于30歲的?,按性別分組,統(tǒng)計(jì)每組的?數(shù)1.先過(guò)濾掉年齡?于25歲的?。2.再分組。3.最后統(tǒng)計(jì)每組的?數(shù)SELECTsex,count(*)FROMheroWHEREage<30GROUPBYsex;思考:查詢(xún)年齡?于25歲的?,按性別分組,統(tǒng)計(jì)每組的?數(shù),并只顯?性別?數(shù)?于2的數(shù)據(jù)有很多同學(xué)可能會(huì)將SQL語(yǔ)句寫(xiě)出這樣:SELECTsex,count(*)FROMheroWHEREage<30GROUPBYsexWHERECOUNT(*)>2;;>注意:并只顯?性別?數(shù)>2的數(shù)據(jù)屬于分組后的條件,對(duì)于分組后的條件需要使?having?句SELECTsex,count(*)FROMheroWHEREage<30GROUPBYsexHAVINGCOUNT(*)>2;只有分組后?數(shù)?于2的`?`這組數(shù)據(jù)顯?出來(lái)having與where的區(qū)別having是在分組后對(duì)數(shù)據(jù)進(jìn)?過(guò)濾.where是在分組前對(duì)數(shù)據(jù)進(jìn)?過(guò)濾having后?可以使?聚合函數(shù)where后?不可以使?聚合函數(shù)limit語(yǔ)句LIMIT是限制的意思,所以LIMIT的作?就是限制查詢(xún)記錄的條數(shù)。SELECT*|字段列表[as別名]FROM表名[WHERE?句][GROUPBY?句][HAVING?句][ORDERBY?句][LIMIT?句];思考:limit?句為什么排在最后?因?yàn)榍?所有的限制條件都處理完了,只剩下顯?多少條記錄的問(wèn)題了!LIMIT語(yǔ)法格式:LIMIToffset,length;或者limitlength;offset是指偏移量,可以認(rèn)為是跳過(guò)的記錄數(shù)量,默認(rèn)為0length是指需要顯?的總記錄數(shù)具體步驟:查詢(xún)hero表中數(shù)據(jù),從第三條開(kāi)始顯?,顯?6條我們可以認(rèn)為跳過(guò)前?2條,取6條數(shù)據(jù)SELECT*FROMstudent3LIMIT2,6;LIMIT的使?場(chǎng)景:分頁(yè)?如我們登錄京東,淘寶,返回的商品信息可能有?萬(wàn)條,不是?次全部顯?出來(lái)。是?頁(yè)顯?固定的條數(shù)。假設(shè)我們?每頁(yè)顯?5條記錄的?式來(lái)分頁(yè),SQL語(yǔ)句如下:--每頁(yè)顯?5條--第?頁(yè):LIMIT0,5;跳過(guò)0條,顯?5條--第?頁(yè):LIMIT5,5;跳過(guò)5條,顯?5條--第三頁(yè):LIMIT10,5;跳過(guò)10條,顯?5條SELECT*FROMheroLIMIT0,5;SELECT*FROMheroLIMIT5,5;SELECT*FROMheroLIMIT10,5;注意:如果第?個(gè)參數(shù)是0可以簡(jiǎn)寫(xiě):SELECT*FROMstudent3LIMIT0,5;SELECT*FROMstudent3LIMIT5;LIMIT10,5;–不夠5條,有多少顯?多少第4章數(shù)據(jù)庫(kù)約束對(duì)表中的數(shù)據(jù)進(jìn)?進(jìn)?步的限制,保證數(shù)據(jù)的正確性、有效性和完整性。約束種類(lèi):PRIMARYKEY:主鍵UNIQUE:唯?NOTNULL:?空DEFAULT:默認(rèn)FOREIGNKEY:外鍵4.1主鍵4.1.1主鍵的作??來(lái)唯?標(biāo)識(shí)?條記錄,每個(gè)表都應(yīng)該有?個(gè)主鍵,并且每個(gè)表只能有?個(gè)主鍵。有些記錄的name,age,sex字段的值都?樣時(shí),那么就沒(méi)法區(qū)分這些數(shù)據(jù),造成數(shù)據(jù)庫(kù)的記錄不唯?,這樣就不?便管理數(shù)據(jù)哪個(gè)字段應(yīng)該作為表的主鍵?通常不?業(yè)務(wù)字段作為主鍵,單獨(dú)給每張表設(shè)計(jì)?個(gè)id的字段,把id作為主鍵。主鍵是給數(shù)據(jù)庫(kù)和程序使?的,不是給最終的客戶使?的。所以主鍵有沒(méi)有含義沒(méi)有關(guān)系,只要不重復(fù),?空就?。4.1.2創(chuàng)建主鍵主鍵:PRIMARYKEY主鍵的特點(diǎn):主鍵必須包含唯?的值主鍵列不能包含NULL值創(chuàng)建主鍵?式:在創(chuàng)建表的時(shí)候給字段添加主鍵字段名字段類(lèi)型PRIMARYKEY具體操作:創(chuàng)建英雄表hero1,包含字段(id,name,age)將id做為主鍵CREATETABLEhero1(idintPRIMARYKey,namevarchar(20),ageint);添加數(shù)據(jù)INSERTINTOhero1(id,NAME)VALUES(1,'盾?');INSERTINTOhero1(id,NAME)VALUES(2,'夢(mèng)琪');INSERTINTOhero1(id,NAME)VALUES(3,'魯班');INSERTINTOhero1(id,NAME)VALUES(4,'?起');插?重復(fù)的主鍵值--主鍵是唯?的不能重復(fù):Duplicateentry'1'forkey'PRIMARY'INSERTINTOhero1(id,NAME)VALUES(1,'盾?');插?NULL的主鍵值--主鍵是不能為空的:Column'id'cannotbenullINSERTINTOhero1(id,NAME)VALUES(NULL,'蔡?姬');4.1.3刪除主鍵ALTERTABLE表名DROPPRIMARYKEY;具體操作:刪除hero1表的主鍵ALTERTABLEhero1DROPPRIMARYKEY;4.1.4主鍵?增主鍵如果讓我們??添加很有可能重復(fù),我們通常希望在每次插?新記錄時(shí),數(shù)據(jù)庫(kù)?動(dòng)?成主鍵字段的值A(chǔ)UTO_INCREMENT表??動(dòng)增長(zhǎng)(字段類(lèi)型必須是整數(shù)類(lèi)型)具體操作:創(chuàng)建英雄表hero2,包含字段(id,name,age)將id做

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論