版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
SQL(結(jié)構(gòu)化查詢語(yǔ)言)
入門講師:趙君IT資訊交流網(wǎng)WWW.IT315.ORGMySQL簡(jiǎn)介數(shù)據(jù)庫(kù)簡(jiǎn)介Oracle、SQLServer、DB2MySQL(Linux+Apache+Mysql+Php)SyBase、InformixMySQL數(shù)據(jù)庫(kù)的安裝和配置使用命令行窗口連接MYSQL數(shù)據(jù)庫(kù)mysql–u用戶名–p回車密碼數(shù)據(jù)庫(kù)服務(wù)器、數(shù)據(jù)庫(kù)和表的關(guān)系MySQL程序DB1DB2表1表3表2Client程序所謂安裝數(shù)據(jù)庫(kù)服務(wù)器,只是在機(jī)器上裝了一個(gè)數(shù)據(jù)庫(kù)管理程序,這個(gè)管理程序可以管理多個(gè)數(shù)據(jù)庫(kù),一般開發(fā)人員會(huì)針對(duì)每一個(gè)應(yīng)用創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。為保存應(yīng)用中的數(shù)據(jù),一般會(huì)在數(shù)據(jù)庫(kù)創(chuàng)建多個(gè)表,以保存程序中的數(shù)據(jù)。數(shù)據(jù)庫(kù)服務(wù)器、數(shù)據(jù)庫(kù)和表的關(guān)系如圖所示:IT資訊交流網(wǎng)WWW.IT315.ORG數(shù)據(jù)在數(shù)據(jù)庫(kù)中的存儲(chǔ)方式id=1name=“l(fā)isi”age=23User對(duì)象idnameage1lisi232wang24User表id=2name=“wang”age=24行(row)列(column)表的一行稱之為一條記錄表中一條記錄對(duì)應(yīng)一個(gè)java對(duì)象的數(shù)據(jù)User對(duì)象IT資訊交流網(wǎng)WWW.IT315.ORG創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASE[IFNOTEXISTS]db_name
[create_specification[,create_specification]...]
create_specification:
[DEFAULT]CHARACTERSETcharset_name
|[DEFAULT]COLLATEcollation_name
CHARACTERSET:指定數(shù)據(jù)庫(kù)采用的字符集COLLATE:指定數(shù)據(jù)庫(kù)字符集的比較方式、規(guī)則,比如排序練習(xí):創(chuàng)建一個(gè)名稱為mydb1的數(shù)據(jù)庫(kù)。創(chuàng)建一個(gè)使用utf8字符集的mydb2數(shù)據(jù)庫(kù)。創(chuàng)建一個(gè)使用utf8字符集,并帶校對(duì)規(guī)則的mydb3數(shù)據(jù)庫(kù)。查看、刪除數(shù)據(jù)庫(kù)顯示數(shù)據(jù)庫(kù)語(yǔ)句:SHOWDATABASES顯示數(shù)據(jù)庫(kù)創(chuàng)建語(yǔ)句:SHOWCREATEDATABASEdb_name使用數(shù)據(jù)庫(kù)USEdb_name數(shù)據(jù)庫(kù)刪除語(yǔ)句:DROPDATABASE[IFEXISTS]db_name
練習(xí):查看當(dāng)前數(shù)據(jù)庫(kù)服務(wù)器中的所有數(shù)據(jù)庫(kù)查看前面創(chuàng)建的mydb2數(shù)據(jù)庫(kù)的定義信息刪除前面創(chuàng)建的mydb1數(shù)據(jù)庫(kù)修改、備份、恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù)ALTERDATABASE[IFNOTEXISTS]db_name
[alter_specification[,alter_specification]...]
alter_specification:
[DEFAULT]CHARACTERSETcharset_name
|[DEFAULT]COLLATEcollation_name備份數(shù)據(jù)庫(kù)表中的數(shù)據(jù)(退到window命令行窗口) mysqldump-u用戶名-p數(shù)據(jù)庫(kù)名>D:\文件名.sql恢復(fù)數(shù)據(jù)庫(kù)(進(jìn)入mysql控制臺(tái))
source
D:\文件名.sql練習(xí)查看服務(wù)器中的數(shù)據(jù)庫(kù),并把其中mydb3庫(kù)的字符集修改為utf8。
備份mydb3庫(kù)中的數(shù)據(jù),并恢復(fù)。創(chuàng)建表(基本語(yǔ)句)CREATETABLEtable_name(
field1datatype, field2datatype, field3datatype,)characterset字符集collate校對(duì)規(guī)則field:指定列名datatype:指定列類型注意:創(chuàng)建表時(shí),要根據(jù)需保存的數(shù)據(jù)創(chuàng)建相應(yīng)的列,并根據(jù)數(shù)據(jù)的類型定義相應(yīng)的列類型。例:user對(duì)象
idint
namestring passwordstring birthdaydateIdNamePasswordbirthday注意:創(chuàng)建表前,要先使用usedbname語(yǔ)句使用庫(kù)。MySQL常用數(shù)據(jù)類型VARCHAR、BLOB和TEXT類是變長(zhǎng)類型。每個(gè)類型的存儲(chǔ)需求取決于列值的實(shí)際長(zhǎng)度。
分類數(shù)據(jù)類型說明數(shù)值類型BIT(M)TINYINT[UNSIGNED][ZEROFILL]BOOL,BOOLEANSMALLINT[UNSIGNED][ZEROFILL]INT[UNSIGNED][ZEROFILL]BIGINT[UNSIGNED][ZEROFILL]FLOAT[(M,D)][UNSIGNED][ZEROFILL]DOUBLE[(M,D)][UNSIGNED][ZEROFILL]位類型。M指定位數(shù),默認(rèn)值1,范圍1-64帶符號(hào)的范圍是-128到127。無(wú)符號(hào)0到255。使用0或1表示真或假2的16次方2的32次方2的64次方M指定顯示長(zhǎng)度,d指定小數(shù)位數(shù)表示比f(wàn)loat精度更大的小數(shù)文本、二進(jìn)制類型CHAR(size)char(20)VARCHAR(size)varchar(20)BLOBLONGBLOBTEXT(clob)LONGTEXT(longclob)固定長(zhǎng)度字符串可變長(zhǎng)度字符串二進(jìn)制數(shù)據(jù)大文本時(shí)間日期DATE/DATETIME/TimeStamp(登錄時(shí)間)日期類型(YYYY-MM-DD)(YYYY-MM-DDHH:MM:SS),TimeStamp表示時(shí)間戳,它可用于自動(dòng)記錄insert、update操作的時(shí)間創(chuàng)建表練習(xí)創(chuàng)建/查看一個(gè)員工表(并指明字符集為UTF8)字段屬性Id整形name字符型sex字符型brithday日期型entry_date日期型Job字符型salary小數(shù)型resume大文本型修改表使用ALTERTABLE語(yǔ)句追加,修改,或刪除列的語(yǔ)法.ALTERTABLEtableADD
(columndatatype[DEFAULTexpr] [,columndatatype]...);ALTERTABLEtableMODIFY
(columndatatype[DEFAULTexpr] [,columndatatype]...);ALTERTABLEtableDROP
(column);修改表的名稱:Renametable
原表名
to
新表名修改表的字符集:altertablestudentcharactersetutf8;修改表練習(xí)在上面員工表的基本上增加一個(gè)image列。修改job列,使其長(zhǎng)度為60。刪除sex列。表名改為user。修改表的字符集為utf8。列名name修改為username。altertableuserchangecolumnnameusernamevarchar(20);IT資訊交流網(wǎng)WWW.IT315.ORG數(shù)據(jù)庫(kù)CRUD語(yǔ)句Insert語(yǔ)句(增加數(shù)據(jù))Update語(yǔ)句(更新數(shù)據(jù))Delete語(yǔ)句(刪除數(shù)據(jù))Select語(yǔ)句(查找數(shù)據(jù))IT資訊交流網(wǎng)WWW.IT315.ORGInsert語(yǔ)句[employee.sql]INSERTINTO table[(column[,column...])]VALUES (value[,value...]);使用INSERT語(yǔ)句向表中插入數(shù)據(jù)。插入的數(shù)據(jù)應(yīng)與字段的數(shù)據(jù)類型相同。數(shù)據(jù)的大小應(yīng)在列的規(guī)定范圍內(nèi),例如:不能將一個(gè)長(zhǎng)度為80的字符串加入到長(zhǎng)度為40的列中。在values中列出的數(shù)據(jù)位置必須與被加入的列的排列位置相對(duì)應(yīng)。字符和日期型數(shù)據(jù)應(yīng)包含在單引號(hào)中。插入空值,不指定或insertintotablevalue(null)IT資訊交流網(wǎng)WWW.IT315.ORGInsert語(yǔ)句練習(xí)練習(xí):使用insert語(yǔ)句向表中插入三個(gè)員工的信息(英中文)。注意:字符和日期要包含在單引號(hào)中。showvariableslike'character%';setcharacter_set_results=gbk;IT資訊交流網(wǎng)WWW.IT315.ORGUpdate語(yǔ)句UPDATE tbl_name
SETcol_name1=expr1[,col_name2=expr2...]
[WHEREwhere_definition]
使用update語(yǔ)句修改表中數(shù)據(jù)。UPDATE語(yǔ)法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要給予哪些值。WHERE子句指定應(yīng)更新哪些行。如沒有WHERE子句,則更新所有的行。IT資訊交流網(wǎng)WWW.IT315.ORGUpdate語(yǔ)句練習(xí)練習(xí):創(chuàng)建的employee表中修改表中的紀(jì)錄。要求將所有員工薪水修改為3000元。將姓名為’張小明’的員工薪水修改為4000元。將’張小明’的薪水在原有基礎(chǔ)上增加1000元。 IT資訊交流網(wǎng)WWW.IT315.ORGDelete語(yǔ)句deletefromtbl_name
[WHEREwhere_definition]
使用delete語(yǔ)句刪除表中數(shù)據(jù)。如果不使用where子句,將刪除表中所有數(shù)據(jù)。Delete語(yǔ)句不能刪除某一列的值(可使用update)使用delete語(yǔ)句僅刪除記錄,不刪除表本身。如要?jiǎng)h除表,使用droptable語(yǔ)句。同insert和update一樣,從一個(gè)表中刪除記錄將引起其它表的參照完整性問題,在修改數(shù)據(jù)庫(kù)數(shù)據(jù)時(shí),頭腦中應(yīng)該始終不要忘記這個(gè)潛在的問題。刪除表中數(shù)據(jù)也可使用TRUNCATETABLE語(yǔ)句,它和delete有所不同。TRUNCATE(復(fù)制表結(jié)構(gòu)->銷毀表->重建表結(jié)構(gòu))DELETE(逐行刪除記錄)IT資訊交流網(wǎng)WWW.IT315.ORGDelete語(yǔ)句練習(xí)刪除表中名稱為’zs’的記錄。刪除表中所有記錄。使用truncate刪除表中記錄。IT資訊交流網(wǎng)WWW.IT315.ORGSelect語(yǔ)句(1)[student.sql]SELECT[DISTINCT]*|{column1,column2.column3..}
FROM table;Select指定查詢哪些列的數(shù)據(jù)。column指定列名。*號(hào)代表查詢所有列(開發(fā)中建議不要使用)。From指定查詢哪張表。DISTINCT可選,指顯示結(jié)果時(shí),是否剔除重復(fù)數(shù)據(jù)基本select語(yǔ)句IT資訊交流網(wǎng)WWW.IT315.ORGSelect語(yǔ)句(1)練習(xí):查詢表中所有學(xué)生的信息。查詢表中所有學(xué)生的姓名和對(duì)應(yīng)的英語(yǔ)成績(jī)。過濾表中重復(fù)數(shù)據(jù)。IT資訊交流網(wǎng)WWW.IT315.ORGSelect語(yǔ)句(2)SELECT
*|{column1|expression,column2|expression,..}
FROM table;在select語(yǔ)句中可使用表達(dá)式對(duì)查詢的列進(jìn)行運(yùn)算在select語(yǔ)句中可使用as語(yǔ)句SELECTcolumnas別名from表名;IT資訊交流網(wǎng)WWW.IT315.ORGSelect語(yǔ)句(2)練習(xí)在所有學(xué)生分?jǐn)?shù)上加10分特長(zhǎng)分。統(tǒng)計(jì)每個(gè)學(xué)生的總分。使用別名表示學(xué)生分?jǐn)?shù)。IT資訊交流網(wǎng)WWW.IT315.ORGSelect語(yǔ)句(3)使用where子句,進(jìn)行過濾查詢。查詢姓名為’張小明’的學(xué)生成績(jī)查詢英語(yǔ)成績(jī)大于90分的同學(xué)查詢總分大于200分的所有同學(xué)IT資訊交流網(wǎng)WWW.IT315.ORGSelect語(yǔ)句(4)在where子句中經(jīng)常使用的運(yùn)算符比較運(yùn)算符><<=>==<>大于、小于、大于(小于)等于、不等于BETWEEN
...AND...顯示在某一區(qū)間的值IN(set)顯示在in列表中的值,例:in(100,200)LIKE‘張pattern’模糊查詢ISNULL/ISNOTNULL判斷是否為空邏輯運(yùn)算符and多個(gè)條件同時(shí)成立or多個(gè)條件任一成立not不成立,例:wherenot(salary>100);Like語(yǔ)句中,%代表零個(gè)或多個(gè)任意字符,_代表一個(gè)字符,例first_namelike‘_a%’;IT資訊交流網(wǎng)WWW.IT315.ORGSelect語(yǔ)句(4)查詢英語(yǔ)分?jǐn)?shù)在80-90之間的同學(xué)。查詢數(shù)學(xué)分?jǐn)?shù)為89,90,91的同學(xué)。查詢所有姓’李’的學(xué)生成績(jī)。查詢數(shù)學(xué)分>80且語(yǔ)文分>80的同學(xué)。IT資訊交流網(wǎng)WWW.IT315.ORGSelect語(yǔ)句(5)SELECT
column1,column2.column3..
FROM table; orderbycolumnasc|descOrderby指定排序的列,排序的列即可是表中的列名,也可以是select語(yǔ)句后指定的列名。Asc
升序、Desc
降序ORDERBY子句應(yīng)位于SELECT語(yǔ)句的結(jié)尾。練習(xí):對(duì)數(shù)學(xué)成績(jī)排序后輸出。對(duì)總分排序后輸出。對(duì)姓’李’的學(xué)生總分排序輸出。使用orderby子句排序查詢結(jié)果。IT資訊交流網(wǎng)WWW.IT315.ORG合計(jì)函數(shù)-count()Selectcount(*)|count(列名)fromtablename [WHEREwhere_definition]
練習(xí):統(tǒng)計(jì)一個(gè)班級(jí)共有多少學(xué)生?統(tǒng)計(jì)數(shù)學(xué)成績(jī)大于80的學(xué)生有多少個(gè)?統(tǒng)計(jì)總分大于250的人數(shù)有多少?Count(列名)返回某一列,行的總數(shù),除null外IT資訊交流網(wǎng)WWW.IT315.ORG合計(jì)函數(shù)-sum()Selectsum(列名){,sum(列名)…}fromtablename [WHEREwhere_definition]
練習(xí):統(tǒng)計(jì)一個(gè)班級(jí)數(shù)學(xué)總成績(jī)。統(tǒng)計(jì)一個(gè)班級(jí)語(yǔ)文、英語(yǔ)、數(shù)學(xué)各科的總成績(jī)。統(tǒng)計(jì)一個(gè)班級(jí)語(yǔ)文、英語(yǔ)、數(shù)學(xué)的成績(jī)總和。統(tǒng)計(jì)一個(gè)班級(jí)語(yǔ)文成績(jī)平均分。注意:sum僅對(duì)數(shù)值起作用,否則會(huì)報(bào)錯(cuò)。注意:對(duì)多列求和,“,”號(hào)不能少。Sum函數(shù)返回滿足where條件的行的和IT資訊交流網(wǎng)WWW.IT315.ORG平均函數(shù)-avg()Selectsum(列名){,sum(列名)…}fromtablename [WHEREwhere_definition]
練習(xí):求一個(gè)班級(jí)數(shù)學(xué)平均分。求一個(gè)班級(jí)總分平均分。AVG函數(shù)返回滿足where條件的一列的平均值IT資訊交流網(wǎng)WWW.IT315.ORG最大最小值函數(shù)-max()/min()Selectmax(列名)
fromtablename [WHEREwhere_definition]
練習(xí):求班級(jí)最高分和最低分。(數(shù)值范圍在統(tǒng)計(jì)中特別有用)Max/min函數(shù)返回滿足where條件的一列的最大/最小值IT資訊交流網(wǎng)WWW.IT315.ORGSelect語(yǔ)句(6)[orders.sql]SELECT
column1,column2.column3..FROM table; groupbycolumn練習(xí):對(duì)訂單表中商品歸類后,顯示每一類商品的總價(jià)使用groupby子句對(duì)列進(jìn)行分組SELECT
column1,column2.column3..
FROM table; groupbycolumnhaving...使用having子句組過濾練習(xí):查詢購(gòu)買了幾類商品,并且每類總價(jià)大于100的商品Having和where均可實(shí)現(xiàn)過濾,但在having可以使用合計(jì)函數(shù),having通常跟在groupby后,它作用于組。IT資訊交流網(wǎng)WWW.IT315.ORG定義表的約束(數(shù)據(jù)安全的保證)定義主鍵約束
primarykey:不允許為空,不允許重復(fù)刪除主鍵:altertabletablenamedropprimarykey;定義主鍵自動(dòng)增長(zhǎng)
auto_increment(MySQL特有/UUID類生成)定義唯一約束
unique定義非空約束
notnull定義外鍵約束constraintordersid_FKforeignkey(ordersid)referencesorders(id),表的關(guān)聯(lián)設(shè)計(jì)(實(shí)體關(guān)系的體現(xiàn))一對(duì)一人和身份證(外鍵唯一非空/主鍵外鍵合二唯一)一對(duì)多/多對(duì)一部門和員工多對(duì)多(中間表)老師和學(xué)生1號(hào)老師所對(duì)應(yīng)的學(xué)員1號(hào)學(xué)員所對(duì)應(yīng)的老師Tip:mysql中文亂碼mysql有六處使用了字符集,分別為:client、connection、database、results、server、system。client是客戶端使用的字符集。connection是連接數(shù)據(jù)庫(kù)的字符集設(shè)置類型,如果程序沒有指明連接數(shù)據(jù)庫(kù)使用的字符集類型就按照服務(wù)器端默認(rèn)的字符集設(shè)置。database是數(shù)據(jù)庫(kù)服務(wù)器中某個(gè)庫(kù)使用的字符集設(shè)定,如果建庫(kù)時(shí)沒有指明,將使用服務(wù)器安裝時(shí)指定的字符集設(shè)置。results是數(shù)據(jù)庫(kù)給客戶端返回時(shí)使用的字符集設(shè)定,如果沒有指明,使用服務(wù)器默認(rèn)的字符集。server是服務(wù)器安裝時(shí)指定的默認(rèn)字符集設(shè)定/utf8。system是數(shù)據(jù)庫(kù)系統(tǒng)使用的字符集設(shè)定。IT資訊交流網(wǎng)WWW.IT315.ORG附錄:時(shí)間日期相關(guān)函數(shù)參考ADDTIME(date2,time_interval)將time_interval加到date2CURRENT_DATE(
)當(dāng)前日期CURRENT_TIME(
)當(dāng)前時(shí)間CURRENT_TIMESTAMP()當(dāng)前時(shí)間戳DATE(datetime)返回datetime的日期部分DATE_ADD(date2,INTERVALd_valued_type)在date2中加上日期或時(shí)間DATE_SUB(date2,INTERVALd_valued_type)在date2上減去一個(gè)時(shí)間DATEDIFF(date1,date2)兩個(gè)日期差NOW(
)當(dāng)前時(shí)間YEAR|Month|DAY(datetime)年月日示例:selectaddtime(‘02:30:30’,‘01:01:01’);注意:字符串、時(shí)間日期的引號(hào)問題
selectdate_add(entry_date,INTERVAL2year)fromstudent;//增加兩年
selectaddtime(time,‘11-110:09:09’)fromstudent;//時(shí)間戳上增加,注意年后沒有-IT資訊交流網(wǎng)WWW.IT315.ORG附錄:字符串相關(guān)函數(shù)參考CHARSET(str)返回字串字符集CONCAT(string2
[,...])連接字串INSTR(string,substring)返回substring在string中出現(xiàn)的位置,沒有返回0UCASE(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個(gè)人倉(cāng)儲(chǔ)租賃合同(冷鏈物流專用)4篇
- 廈門市茶葉買賣合同
- 車輛租用協(xié)議
- 字畫贈(zèng)與合同
- 2025-2030全球平行雙主軸車銑中心行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)膠片掃描儀行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 二零二四年環(huán)保設(shè)備上門清潔與性能優(yōu)化合同3篇
- 二零二五年度電商客服團(tuán)隊(duì)協(xié)作與溝通協(xié)議
- 二零二五版酒店窗簾更換與節(jié)能減排服務(wù)合同3篇
- 文化場(chǎng)館裝修保密協(xié)議
- 2024年鄉(xiāng)村振興(產(chǎn)業(yè)、文化、生態(tài))等實(shí)施戰(zhàn)略知識(shí)考試題庫(kù)與答案
- 現(xiàn)代科學(xué)技術(shù)概論智慧樹知到期末考試答案章節(jié)答案2024年成都師范學(xué)院
- 軟件模塊化設(shè)計(jì)與開發(fā)標(biāo)準(zhǔn)與規(guī)范
- 網(wǎng)絡(luò)安全基礎(chǔ)知識(shí)入門教程
- AI智慧物流園區(qū)整體建設(shè)方案
- 2024年遼寧鐵道職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 無(wú)痛人工流產(chǎn)術(shù)課件
- 有機(jī)農(nóng)業(yè)種植模式
- 勞務(wù)派遣招標(biāo)文件
- 法醫(yī)病理學(xué)課件
- 采空區(qū)穩(wěn)定性可靠度分析
評(píng)論
0/150
提交評(píng)論