版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
MySQL數(shù)據(jù)庫與SQL語言云南中煙培訓中心云南中煙YNTobacco基礎概念01數(shù)據(jù)庫基礎概念1、什么是數(shù)據(jù)庫?數(shù)據(jù)庫是長期存放在計算機內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫是存放數(shù)據(jù)的倉庫……數(shù)據(jù)是數(shù)據(jù)庫中存儲的基本對象,是一個信息的集合,以某種數(shù)據(jù)類型保存在數(shù)據(jù)庫中。2、數(shù)據(jù)庫有哪些特點?永久存儲有組織可共享數(shù)據(jù)庫基礎概念3、什么是數(shù)據(jù)庫管理系統(tǒng)?數(shù)據(jù)庫管理系統(tǒng)(DBMS):一個專門用于實現(xiàn)對數(shù)據(jù)進行管理和維護的系統(tǒng)軟件。4、什么是數(shù)據(jù)庫系統(tǒng)(DBS)?是指在計算機中引入數(shù)據(jù)庫后的系統(tǒng),一般由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應用程序、數(shù)據(jù)庫管理員組成。數(shù)據(jù)庫基礎概念1、關系模型的數(shù)據(jù)結構二維數(shù)據(jù)結構2、關系模型的組成:(1)關系數(shù)據(jù)結構(2)關系操作(3)關系完整性約束3、關系必須是規(guī)范化(規(guī)格化)的,滿足一定的規(guī)范條件4、關系數(shù)據(jù)庫必須滿足1NF范式,即一張表中不包含子表。(關系的每一個分量必須是一個不可分的數(shù)據(jù)項,不允許表中還有表)數(shù)據(jù)庫基礎概念?第一范式1NF(原子性)表中的每一列都是不可分解的基本數(shù)據(jù)項,每一個屬性不可擁有多個值。是關系數(shù)據(jù)庫的基本要求。需要滿足原子性。?范式:是符合某一種級別的關系模式的集合。表中的每一列都是不可分解的基本數(shù)據(jù)項,每一個屬性不可擁有多個值。是關系數(shù)據(jù)庫的基本要求。需要滿足原子性。數(shù)據(jù)庫基礎概念?第二范式2NF在第一范式(1NF)的基礎上,實體的屬性完全函數(shù)依賴于關鍵字,不能存在部分依賴函數(shù)于主關鍵字。數(shù)據(jù)庫基礎概念Y這一列的貨物名稱就完全依賴于主屬性X的取值共同決定,但是Z這一列只由主屬性貨物的類型這一列決定,是部分依賴,就不滿足第二范式,如果要滿足第二范式,就需要將這個表拆分為兩個表。數(shù)據(jù)庫基礎概念?第三范式3NF(消除傳遞依賴)前提是滿足2NF,此外:任意一個非主屬性都不可傳遞依賴于主鍵。(消除非主屬性對主鍵的傳遞依賴)數(shù)據(jù)庫基礎概念?數(shù)據(jù)庫對象的概念定義:數(shù)據(jù)庫對象是數(shù)據(jù)庫中定義的用于存儲或引用數(shù)據(jù)的對象。表(table):數(shù)據(jù)的集合視圖(view):一種虛擬表,建立在已有的表的基礎上,視圖賴以建立的這些表稱為基表。刪除視圖不會影響基表的數(shù)據(jù)。索引(index):索引是根據(jù)指定是數(shù)據(jù)庫表列建立起來的順序。在創(chuàng)建主鍵時或唯一性約束時自動創(chuàng)建默認值、規(guī)則、觸發(fā)器、用戶、序列、……圖表(Diagram):
圖表其實就是數(shù)據(jù)庫之間的關系示意圖,利用圖表可以編輯表與表之間的關系。存儲過程:存儲過程是為了完成特定功能而匯聚在一起的一組SQL程序語句,經(jīng)編譯后存儲在數(shù)據(jù)庫中的SQL程序。SQL語句02數(shù)據(jù)庫的創(chuàng)建1、查看MySQL服務是否啟動,開始→services.msc2、手動啟動服務命令:netstartmysql(netstartmysql80)
3、手動停止服務命令:netstopmysql80(命令執(zhí)行不了時,需要以管理員身份運行CMD命令)4、登錄mysql數(shù)據(jù)庫命令:mysql–uroot–p(想要不進入mysql安裝目錄執(zhí)行,需配置環(huán)境變量)密碼:Aa123456SQL語句分類1、DDL語句(DataDefinitionLanguage)數(shù)據(jù)定義語句:主要用于數(shù)據(jù)庫和表的管理。2、DML語句(DataManipulationLanguage)數(shù)據(jù)操作語句:主要用于數(shù)據(jù)的操作,包含增INSERT、刪DELETE、改UPDATE三種。3、DQL語句(DataQueryLanguage)數(shù)據(jù)查詢語句:主要用于數(shù)據(jù)的查詢,SELECT4、DCL語句(DataControlLanguage)
數(shù)據(jù)控制語句:
主要用于控制數(shù)據(jù)庫、表、字段、用戶的訪問權限和安全級別。數(shù)據(jù)庫基礎概念?數(shù)據(jù)庫中的表:數(shù)據(jù)的主要存儲方式(1)、表的構成:列(字段)、行(記錄)(2)、表是用于存儲數(shù)據(jù)最常見和最簡單的形式。(3)、主鍵是一個列,可以在一個關系型數(shù)據(jù)庫中唯一的標示表中的每一行數(shù)據(jù)。(4)、創(chuàng)建表及表中列的約束條件。MySQL中的SQL語句通用語法規(guī)則4、注釋:
(1)“#”
:
#
開頭到行尾的都為注釋,只能注釋一行。
(2)“--
”
(2個減號
一個空格)
:
--
開頭到行尾都為注釋
,
只能注釋一行。
(3)“/*
xxx
*/”
:
可以注釋多行,但是一定要閉合,不然出錯。1、MySQL中語句可以單行或多行書寫,以分號結尾,沒有SQLServer中的GO語句。2、MySQL中常用空格、縮進來增強語句的可讀性。3、MySQL、SQLServer中不區(qū)分大小寫,但關鍵詞建議使用大寫。SQL語句——DDL(數(shù)據(jù)定義語句)DDL語句——數(shù)據(jù)庫操作1、創(chuàng)建數(shù)據(jù)庫CREATEDATABASE[IFNOTEXISTS]<數(shù)據(jù)庫名>[DEFAULTCHARSET字符集][COLLATE排序規(guī)則];5、選擇(使用)某一個數(shù)據(jù)庫:
2、刪除數(shù)據(jù)庫:DROPDATABASE[IFEXISTS]<數(shù)據(jù)庫名>;3、查看所有數(shù)據(jù)庫:SHOWDATABASES;4、查詢當前在用的數(shù)據(jù)庫:SELECTDATABASE();USE數(shù)據(jù)庫名;SQL語句——DDL(數(shù)據(jù)定義語句)DDL語句——表操作1、創(chuàng)建表:CREATETABLE[IFNOTEXISTS]<表名>(字段名1數(shù)據(jù)類型[列級別約束條件][默認值],字段名2數(shù)據(jù)類型[列級別約束條件][默認值],……[表級別的約束條件]);2、查看當前數(shù)據(jù)庫中所有的表:SHOWTABLES;3、查詢表結構:DESC表名;4、查詢指定表的建表語句:SHOWCREATETABLE表名;5、刪除表:DROPTABLE表名;TRUNCATETABLE表名;(區(qū)別?)SQL語句——DDL(數(shù)據(jù)定義語句)DDL語句——表的約束1、概念:約束是作用于表中字段上的規(guī)則,用于限制存儲在表中的數(shù)據(jù)。2、目的:保證數(shù)據(jù)庫中數(shù)據(jù)的正確、有效性和完整性。約束描述關鍵字非空約束限制該字段數(shù)據(jù)不能為NULLNOTNULL主鍵約束主鍵是一行數(shù)據(jù)唯一的標識,要求非空且唯一PRIMARYKEY默認約束保存數(shù)據(jù)時,未指定值則使用默認值DEFAULT唯一約束保證該字段的值唯一,不能重復UNIQUE檢查約束保證該字段的值滿足某一條件CHECK外鍵約束用來讓兩張表之間建立連接,保證數(shù)據(jù)的一致性和完整性FORGEIGNKEY3、注意:檢查約束是從MySQL8.0.16版本之后才有的
。SQL語句——DDL(數(shù)據(jù)定義語句)DDL語句——表的約束詳解1、非空約束字段名數(shù)據(jù)類型NOTNULL2、主鍵約束
主鍵又稱為主碼,由表中的一個或多個字段組成,用來確保記錄的唯一性,不允許為空。(1)定義列時指定主鍵的語法規(guī)則字段名數(shù)據(jù)類型PRIMARYKEY[其它規(guī)則](2)定義完所有列后,再指定主鍵的語法規(guī)則[CONSTRAINT<約束名>]PRIMARYKEY(字段)[CONSTRAINT<約束名>]PRIMARYKEY(字段1,字段2,…,字段n)SQL語句——DDL(數(shù)據(jù)定義語句)DDL語句——表的約束詳解3、默認約束字段名數(shù)據(jù)類型DEFAULT默認值4、唯一性約束
字段名數(shù)據(jù)類型UNIQUE[CONSTRAINT<約束名>]UNIQUE(<字段名>)注意:唯一性約束和主鍵約束的區(qū)別:一個表中只能聲明一次主鍵,可以聲明多個UNIQUE;PRIMARYKEY列不允許有空值,聲明為UNIQUE的字段允許空值存在。
5、檢查約束字段名數(shù)據(jù)類型CHECK(約束條件)[CONSTRAINT<約束名>]CHECK(約束條件)SQL語句——DDL(數(shù)據(jù)定義語句)DDL語句——表的約束詳解6、外鍵約束(1)外鍵用來在兩個表的數(shù)據(jù)之間建立連接,可以是一列或者多列。一個表可以有一個或多個外鍵。(2)外鍵可以不是本表的主鍵,但要對應另外一個表的主鍵,其主要作用的保證數(shù)據(jù)引用的一致性、完整性。(3)主表(父表):相關字段中主鍵所在的那個表即是主表。(4)從表(子表):相關字段中,外鍵所在的那個表即是從表。[CONSTRAINT<外鍵約束名>]FOREIGNKEY<子表名>(字段名1[,字段名2,……])REFERENCES<主表名>(主鍵列1[主鍵列2,……])7、設置自增長列字段名數(shù)據(jù)類型AUTO_INCREMENT注意:設置自增長列,一個表只能有一個字段使用AUTO_INCREMENT約束,且該字段必須為主鍵的一部分。
MySQL中的數(shù)據(jù)類型——數(shù)值類型大類型類型名稱存儲需求有符號范圍無符號整型類型TINYINT1字節(jié)-128-1270-255SMALLINT2字節(jié)-32768-327670-65535MEDIUMINT3字節(jié)-8388608-83886070-16777215INT4字節(jié)-2147483648-21474836470-4294967295BIGINT8字節(jié)-9223372036854775808-92233720368547758070-18446744073709551615浮點數(shù)類型FLOAT(單精度浮點數(shù))4字節(jié)3.40282346E+38—-1.175494351E-380和1.175494351E-38——3.40282346E+38DOUBLE(雙精度浮點數(shù))8字節(jié)1.7976E+308—-2.225E-3080和2.225E-308—1.7976E+308DECIMAL(M,D)M:精度,總共的位數(shù)D:標度,小數(shù)的位數(shù)不指定精度默認為(10,0)
定點小數(shù)M+2字節(jié)可取的最大值范圍和DOUBLE類型一樣浮點數(shù)和定點數(shù)相比的優(yōu)勢:在長度一定的情況下,浮點數(shù)能夠表示更大的數(shù)據(jù)范圍。由于浮點數(shù)容易產(chǎn)生誤差,因此對精度要求較高時,建議使用DECIMAL來存儲。MySQL中的數(shù)據(jù)類型——日期和時間類型大類型類型名稱存儲需求日期范圍備注日期和時間類型YEAR1字節(jié)1901-2155YYYYDATE3字節(jié)1000-01-01——9999-12-3YYYY-MM-DDTIME3字節(jié)-838:59:59——838:59:59HH:MM:SSDATETIME8字節(jié)1000-01-0100:00:00——9999-12-323:59:59YYYY-MM-DDHH:MM:SSTIMESTAMP4字節(jié)1970-01-0100:00:01UTC——2038-01-1903:14:07UTCYYYY-MM-DDHH:MM:SS1、YEAR(1)以四位字符串或者4位數(shù)字格式表示的YEAR,范圍為:‘1901’~‘2155’。輸入格式為‘YYYY’或者YYYY均一致。Eg:‘2012’或者2010(2)以兩位字符串格式表示的YEAR,范圍為‘00’到‘99’。其中‘00’~‘69’和‘70’~‘99’范圍的值分別被轉換為2000~2069和1970~1999范圍的YEAR。‘00’和‘0’的作用相同,插入的值超過取值范圍時,將被轉換成2000(3)以兩位數(shù)字表示的YEAR,范圍為1~99,其中,1~69和70~99的范圍值分別被轉換為2001~2069和1970~1999范圍的YEAR。0被轉換為0000。MySQL中的數(shù)據(jù)類型——日期和時間類型大類型類型名稱存儲需求日期范圍備注日期和時間類型YEAR1字節(jié)1901-2155YYYYDATE3字節(jié)1000-01-01——9999-12-3YYYY-MM-DDTIME3字節(jié)-838:59:59——838:59:59HH:MM:SSDATETIME8字節(jié)1000-01-0100:00:00——9999-12-323:59:59YYYY-MM-DDHH:MM:SSTIMESTAMP4字節(jié)1970-01-0100:00:01UTC——2038-01-1903:14:07UTCYYYY-MM-DDHH:MM:SS2、DATE類型(1)以‘YYYY-MM-DD’或者‘YYYYMMDD’字符串格式表示的日期,取值范圍為:1000-01-01——9999-12-3(2)以‘YY-MM-DD’或者‘YYMMDD’字符串格式表示的日期,其中YY的取值在‘00’~‘69’和‘70’~‘99’范圍的值分別被轉換為2000~2069和1970~1999的年。(3)以YY-MM-DD或者YYMMDD數(shù)字格式表示的日期,其中YY的取值在‘00’~‘69’和‘70’~‘99’范圍的值分別被轉換為2000~2069和1970~1999的年。(4)使用CURRENT_DATE或者NOW(),插入當前系統(tǒng)日期。MySQL中的數(shù)據(jù)類型——日期和時間類型大類型類型名稱存儲需求日期范圍備注日期和時間類型YEAR1字節(jié)1901-2155YYYYDATE3字節(jié)1000-01-01——9999-12-3YYYY-MM-DDTIME3字節(jié)-838:59:59——838:59:59HH:MM:SSDATETIME8字節(jié)1000-01-0100:00:00——9999-12-323:59:59YYYY-MM-DDHH:MM:SSTIMESTAMP4字節(jié)1970-01-0100:00:01UTC——2038-01-1903:14:07UTCYYYY-MM-DDHH:MM:SS3、TIME類型(1)可使用‘DHH:MM:SS’格式的字符串形式表示,也可以使用“非嚴格”的語法形式表示:‘HH:MM:SS’、‘HH:MM’、‘DHH:MM’、‘DHH’、‘SS’,其中,D的取值范圍為0~34,插入數(shù)據(jù)庫之后,D被轉化成小時保存。(2)使用沒有間隔的‘HHMMSS’或者HHMMSS格式的數(shù)值形式表示,注意,以這種形式表示時,非法的數(shù)值或字符將被存儲為00:00:00;(3)有無“:”
兩種表示形式的差別:‘1112’或1112將被存儲為00:11:12;“11:12”將被存儲為11:12:00。MySQL中的數(shù)據(jù)類型——日期和時間類型大類型類型名稱存儲需求日期范圍備注日期和時間類型YEAR1字節(jié)1901-2155YYYYDATE3字節(jié)1000-01-01——9999-12-3YYYY-MM-DDTIME3字節(jié)-838:59:59——838:59:59HH:MM:SSDATETIME8字節(jié)1000-01-0100:00:00——9999-12-323:59:59YYYY-MM-DDHH:MM:SSTIMESTAMP4字節(jié)1970-01-0100:00:01UTC——2038-01-1903:14:07UTCYYYY-MM-DDHH:MM:SS4、DATETIME(1)可以使用字符串類型或者數(shù)字類型的數(shù)據(jù)插入,只要符合DATETIME的日期格式即可。(2)‘YYYY-MM-DDHH:MM:SS’或者‘YYYYMMDDHHMMSS’(3)‘YY-MM-DDHH:MM:SS’或者‘YYMMDDHHMMSS’和DATE類型一致。(4)YYYYMMDDHHMMSS和YYMMDDHHMMSS格式和DATE類型一致。(5)任何標點符號都可以作為日期部分或者時間部分之間的間隔符。MySQL中的數(shù)據(jù)類型——日期和時間類型大類型類型名稱存儲需求日期范圍備注日期和時間類型YEAR1字節(jié)1901-2155YYYYDATE3字節(jié)1000-01-01——9999-12-3YYYY-MM-DDTIME3字節(jié)-838:59:59——838:59:59HH:MM:SSDATETIME8字節(jié)1000-01-0100:00:00——9999-12-323:59:59YYYY-MM-DDHH:MM:SSTIMESTAMP4字節(jié)1970-01-0100:00:01UTC——2038-01-1903:14:07UTCYYYY-MM-DDHH:MM:SS5、TIMESTAMP類型(1)顯示格式與DATETIME類型相同,顯示寬度固定在19個字符,在存儲時需要4個字節(jié),取值范圍比DATETIME類型小。(2)在默認情況下,當插入一條記錄但并沒有指定TIMESTAMP這個列的值時,MySQL會把TIMESTAMP列設為當前的時間。MySQL中的數(shù)據(jù)類型——文本字符串與二進制字符串類型大類型類型名稱存儲需求描述備注文本字符串類型CHAR(M)M字節(jié),1<=M<=255固定長度非二進制字符串
VARCHAR(M)L+1字節(jié),L<=M,1<=M<=255變長非二進制字符串
TINYTEXTL+1字節(jié),L<2^8非常小的非二進制字符串
TEXTL+2字節(jié),L<2^16小的非二進制字符串
MEDIUMTEXTL+3字節(jié),L<2^24中等大小的非二進制字符串
LONGTEXTL+4字節(jié),L<2^32大的非二進制字符串
ENUM1或2字節(jié),取決于枚舉值的數(shù)目(最大值為65535)枚舉類型,只能有一個枚舉字符串值。
SET1、2、3、4或8個字節(jié),取決于集合成員的數(shù)量(最多為64個成員)1970-01-0100:00:01UTC——2038-01-1903:14:07UTC
CHAR是固定長度的,所以其處理速度比VARCHAR要快,檢索到CHAR的值時,會自動刪除插入數(shù)據(jù)的尾部空格,VARCHAR不會刪除尾部空格。
Eg:插入值“ab”,CHAR類型存儲占4個字節(jié),VARCHAR類型存儲占3個字節(jié)。枚舉類型定義語法格式:字段名ENUM(‘值1’,‘值2’,……,‘值n’),應用場景:從多個值中選取一個值時,比如性別、民族等等。
SET的用法,如果插入SET字段中的值有重復,MySQL會自動刪除重復的值,如果插入了不正確的值,默認情況下MySQL會忽視這些值,并給出警告。Eg:CREATETABLETMP11(sSET(‘a(chǎn)’,’b’,’c’,’d’));Insertintotmp11values(‘a(chǎn)’),(‘a(chǎn),b,c’),(‘c,a,d’);Insertintotmp11values(‘a(chǎn),x,c,y’);執(zhí)行時會警告,并且態(tài)插入值。MySQL中的數(shù)據(jù)類型——文本字符串與二進制字符串類型大類型類型名稱存儲需求描述備注二進制字符串類型BIT(M)大約(M+7)/8字節(jié),1<=M<=64位字段類型
BINARY(M)M字節(jié),1<=M<=255固定長度的二進制字符串
VARBINARY(M)L+1字節(jié),L<=M,1<=M<=255可變長度的二進制字符串
TINYBLOBL+1字節(jié),L<2^8;最大長度(2^8-1)B非常小的BLOB二進制大對象;相比TEXT類型,BLOB列沒有字符集。BLOBL+2字節(jié),L<2^16小的BLOBMEDIUMBLOBL+3字節(jié),L<2^24中等大小的BLOBLONGBLOBL+4字節(jié),L<2^32大的BLOB1.BINARY類型指定長度后,不足最大長度時,將在他們右邊填充‘\0’補齊以達到指定的長度。2.在Windows平臺下,MySQL中是不區(qū)分大小寫的,如果要區(qū)分,需要在字符串前面添加BINARY關鍵字。Eg:BINARY’a’SQL語句——DDL(數(shù)據(jù)定義語句)DDL語句——表的修改語句
修改表是指,修改數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù)表的結構。1、修改表名ALTERTABLE表名RENAME[TO]新表名;2、修改字段的數(shù)據(jù)類型ALTERTABLE表名MODIFY字段名
數(shù)據(jù)類型;3、修改字段名ALTERTABLE表名CHANGE舊字段名
新字段名
新數(shù)據(jù)類型;注意:如果不需要修改數(shù)據(jù)類型,與原來一樣即可,但數(shù)據(jù)類型不能為空。4、在表中添加字段ALTERTABLE表名ADD新字段名
數(shù)據(jù)類型[約束條件][FIRST|AFTER已存在的字段名];SQL語句——DDL(數(shù)據(jù)定義語句)DDL語句——表的修改語句
5、刪除字段ALTERTABLE表名DROP字段名;6、修改字段的排列位置ALTERTABLE表名MODIFY字段1數(shù)據(jù)類型FRIST|AFTER字段2;#first后面不跟字段名7、添加表的約束ALTERTABLE表名ADDCONSTRAINT約束名約束條件;8、刪除表的約束ALTERTABLE表名DROPCONSTRAINT約束名;SQL語句——DDL語句小節(jié)1、DDL語句——數(shù)據(jù)庫操作SHOWDATABASES;CREATEDATABASE數(shù)據(jù)庫名;USE
數(shù)據(jù)庫名;SELECTDATABASE();DROPDATABASE數(shù)據(jù)庫名;2、DDL語句——表操作SHOWTABLES;CREATETABLE表名(字段字段類型[約束條件],字段字段類型[約束條件]);DESC
表名;SHOWCREATETABLE表名;ALTERTABLE表名ADD/MODIFY/CHANGE/DROP/RENAMETO….;DROPTABLE表名;TRUNCATETABLE表名;數(shù)據(jù)庫中表的創(chuàng)建與修改——小節(jié)注釋快捷鍵:CTRL+/
SQLServer多行代碼注釋快捷鍵:Ctrl+K+C,取消多行代碼注釋快捷鍵:Ctrl+K+U。注釋符號:--或者/**/1、創(chuàng)建表CREATETABLE[ifnotexists]<表名>(字段名1,數(shù)據(jù)類型[列級別約束條件][默認值],字段名2,數(shù)據(jù)類型[列級別約束條件][默認值],……
[表級別的約束條件]);2、刪除表DROPTABLE<表名>;TRUNCATETABLE表名;3、主鍵約束(1)單字段主鍵:字段名數(shù)據(jù)類型PRIMARYKEY(2)多字段聯(lián)合主鍵:PRIMARYKEY(字段1,字段2,……,字段n)自動增長,設為主鍵后,AUTO_INCREMENT。4、外鍵約束[CONSTRAINT<外鍵約束名>]FOREIGNKEY(字段名1[,字段名2,……])REFERENCES<主表名>(主鍵列1[主鍵列2,……])5、唯一性約束UNIQUE6、檢查約束[CONSTRAINT<檢查約束名>]CHECK(約束條件)7.修改表ALTERTABLE<表名>[RENAME[TO]<新表名>](修改表名)[MODIFY<字段名><數(shù)據(jù)類型>](修改字段的數(shù)據(jù)類型)[CHANGE<舊字段名><新字段名><類型(長度)>](修改字段名)[ADD<新字段名><數(shù)據(jù)類型>[約束]](添加字段)[DROP<字段名>](刪除字段)[MODIFY<字段1><數(shù)據(jù)類型>FIRST|AFTER<字段2>](修改字段排列)[DROPCONSTRAINT<約束名>](刪除約束)[ADDCONSTRAINT約束名約束類型約束條件]8.DESC表名;查詢表結構。DML——數(shù)據(jù)庫操作語句1、向表中插入數(shù)據(jù)的語句:INSERT語句向表中插入數(shù)據(jù):INSERTINTO<表名>[(列1,列2,列3,……)]values(值1,值2,值3,……);INSERTINTO<表名>[(列1,列2,列3,……)]values(值1,值2,值3,……),……,(值1,值2,值3,……);注意:(1)使用插入語句時,字段列和數(shù)值列的數(shù)量必須一致。(2)允許字段列為空,此時,值列表中需要為所有字段都指定值。(3)字符串、日期數(shù)據(jù)類型應該使用引號。將查詢結果插入到表中:INSERTINTO<表名>[(列1,列2)]SELECT
[*|列1,列2]FROM
<表名>[WHERECONDITION(S)];INSERTINTOtest_01.insts(inst_id,inst_name)selectinst_id,inst_namefromtest_01.insts_copy1;DML——數(shù)據(jù)庫操作語句2.更新現(xiàn)有數(shù)據(jù)語句UPDATE更新表中單個字段的值:UPDATE<表名>
SET字段=‘值’[WHERE條件];更新表中多個字段的值:UPDATE<表名>SET字段1=‘值1’,字段2=‘值2’,……[WHERE條件]注意:一般來說,需保證UPDATE以WHERE子句結束,如果忽略WHERE子句,MySQL將更新表中所有的行。3.從表中刪除數(shù)據(jù)語句DELETEDelete語句語法:DELETEFROM<表名>
[WHERE<條件>];注意:不能刪除數(shù)據(jù)表中的一列數(shù)據(jù)DQL——數(shù)據(jù)庫查詢語句1、Select語句是目前SQL中最強大的語句之一,使用最復雜,使用頻率最高。2、FROM必須與SELECT聯(lián)合使用3、關鍵字:SELECT,FROM,WHERE,ORDERBY4、本次培訓重點介紹,使用SELECT語句查詢表中的一列或多列、使用聚合函數(shù)顯示查詢結果、連接查詢、子查詢以及使用正則表達式進行查詢等內(nèi)容。1.基本查詢語句:SELECT
*|字段1,字段2,字段3,……FROM[表或視圖]WHERE[查詢條件]2.查詢語句語法:SELECT
<*或者列1,列2,列3,……>FROM<表名1>,…,<表名2>[WHERE<檢索條件表達式>][GROUPBY<分組依據(jù)列>][HAVING<組提取條件>][ORDERBY<排序依據(jù)列>]--(ASC)/(DESC)[LIMIT[<offset>,]<rowcout>]–告訴MySQL每次顯示查詢出來的數(shù)據(jù)條數(shù)。SQL語句——DQL(數(shù)據(jù)查詢語句)DQL語句——基本查詢1、查詢多個字段或者所有字段SELECT字段1,字段2,…,字段nFROM表名;SELECT*FROM表名;2、查詢字段設置別名SELECT字段1AS
別名1,字段2AS
別名2FROM表名;3、去除重復的查詢記錄SELECTDISTINCT
字段列表FROM表名;SQL語句——DQL(數(shù)據(jù)查詢語句)DQL語句——條件查詢1、語法SELECT字段列表FROM表名WHERE
條件;2、條件:比較運算符+邏輯運算符(1)比較:=,>,<,>=,<=,<>(!=)例:WHERE字段名>10(2)確定范圍:BETWEENAND,NOTBETWEENAND注意:BETWEEN10AND20中,包含10和20。(3)確定集合:IN,NOTIN例:WHERE字段名IN(‘值1’,‘值2')(4)涉及空值的查詢:例:WHERE字段名ISNULL(5)字符匹配:LIKE,NOTLIKE通配符:
_(下劃線);%(百分號),其中_,匹配任意一個字符;%匹配0個或多個字符Select*fromcigrate_01whereMACHINE_NAMELIKE‘%2#___’(注意:下劃線有3條)邏輯運算符:AND(&&);OR(||);NOT(!)注意,感嘆號是英文格式的SQL語句——DQL(數(shù)據(jù)查詢語句)DQL語句——條件查詢(6)字符匹配示例:新建數(shù)據(jù)表cigrate_02,字段為:c_id,weights,circles,lenghts,pd_pa,machine_name,manu_team,trademark。設定c_id為主鍵,其余數(shù)據(jù)類型根據(jù)實際情況而定,從數(shù)據(jù)表的‘sheet1’中導入前50條數(shù)據(jù),并使用通配符進行查詢。通配符:
_(下劃線);%(百分號),其中_,匹配任意一個字符;%匹配0個或多個字符SQL語句——DQL(數(shù)據(jù)查詢語句)DQL語句——聚合函數(shù)(集合函數(shù))1、概念聚合函數(shù)是SQL中的關鍵字,用于對字段中的值進行操作,其目的是處理數(shù)據(jù)并輸出結果。2、常見的聚合函數(shù)函數(shù)功能描述備注COUNT統(tǒng)計數(shù)量COUNT(*)與COUNT(字段名)的區(qū)別SUM求和忽略空值(NULL)的行AVG平均值MIN最小值MAX最大值3、語法SELECT聚合函數(shù)(字段列表)
FROM表名[WHERE
條件];SQL語句——DQL(數(shù)據(jù)查詢語句)DQL語句——分組查詢1、語法2、WHERE與HAVING的區(qū)別(1)WHERE在分組前進行過濾,不滿足WHERE條件,不參與分組;HAVING是分組之后對結果進行過濾。(2)WHERE不能對聚合函數(shù)進行判斷,HAVING可以使用聚合函數(shù)。SELECT字段列表
FROM表名[WHERE條件]GROUPBY分組字段名[HAVING分組后過濾條件];3、典型的分組函數(shù)聚合函數(shù)、GROUP_CONCAT()函數(shù)、GROUP_CONCAT()函數(shù)用來將分組中的各個字段值顯示出來。示例1:使用分組查詢查詢各班組煙支的數(shù)量。示例2:使用分組查詢查詢,各班組煙支重量、圓周的平均值、方差、標準差。示例3:演示GROUP_CONCAT()函數(shù)的作用。SQL語句——DQL(數(shù)據(jù)查詢語句)DQL語句——分組查詢1、語法2、WHERE與HAVING的區(qū)別(1)WHERE在分組前進行過濾,不滿足WHERE條件,不參與分組;HAVING是分組之后對結果進行過濾。(2)WHERE不能對聚合函數(shù)進行判斷,HAVING可以使用聚合函數(shù)。SELECT字段列表
FROM表名[WHERE條件]GROUPBY分組字段名[HAVING分組后過濾條件];3、典型的分組函數(shù)聚合函數(shù)、GROUP_CONCAT()函數(shù)、GROUP_CONCAT()函數(shù)用來將分組中的各個字段值顯示出來。4、WITHROLLUP關鍵字:在所有查詢出的分組記錄之后增加一條記錄,該記錄計算查詢出的所有記錄的總和。SELECT字段列表
FROM表名[WHERE條件]GROUPBY分組字段名WITHROLLUP;SQL語句——DQL(數(shù)據(jù)查詢語句)DQL語句——排序查詢1、語法SELECT字段列表
FROM表名ORDERBY字段1排序方式1,字段2排序方式2;3、多字段排序先按照第一個字段排序,第一個字段中必須有相同的值,才會對第二個字段進行排序。如果第一個字段的值都是唯一的,將不再對第二個字段進行排序。2、排序方式ASC:
升序排序(默認值);DESC:降序排序4、GROUPBY和ORDERBY一起使用selectCOUNT(*),machine_idFROMcigrate_01GROUPBYteam_idORDERBYmachine_id;注意:ORDERBY不能和ROLLUP一起使用。SQL語句——DQL(數(shù)據(jù)查詢語句)DQL語句——分頁查詢1、語法SELECT字段列表
FROM表名LIMIT起始索引,查詢記錄數(shù);(1)起始索引從0開始,起始索引=(查詢頁碼-1)*每頁顯示的記錄數(shù);(2)分頁查詢是數(shù)據(jù)庫的方言,不同的數(shù)據(jù)庫有不同的實現(xiàn)方式;(3)如果查詢的是第一頁數(shù)據(jù),起始索引可以省略。示例1:查詢cigrate_01表中,第五條記錄開始,后面的10條記錄。SELECT*FROMcigrate_01LIMIT5,10;思考1:查詢cigrate_01表中最后五條數(shù)據(jù)。SQL語句——DQL(數(shù)據(jù)查詢語句)DQL語句——語句的執(zhí)行順序SELECT
字段列表
FROM
表名列表WHERE
條件列表GROUPBY
分組字段列表HAVING
分組后條件列表ORDERBY
排序字段列表LIMIT
分頁參數(shù)123456FROM
表名列表WHERE
條件列表GROUPBY
分組字段列表HAVING
分組后條件列表SELECT
字段列表
ORDERBY
排序字段列表LIMIT
分頁參數(shù)DQL——數(shù)據(jù)庫查詢語句FROM→WHERE→GROUPBY→集合函數(shù)→HAVING→計算表達式→SELECT→ORDERBY→LIMITDQL語句——語句的執(zhí)行順序(結合案例理解)(1).SELECTemp_name,AgeFROMemployeesWHEREe.Age>32ORDERBYAge;(2).SELECTemp_name,AgeFROM
employeeseWHEREe.Age>32ORDERBYAge;--給表employees取別名e,使用別名進行條件判斷。(3).SELECTe.emp_name,e.AgeFROM
employeeseWHEREAge>32ORDERBYAge;--使用別名進行SELECT。(4).SELECT
e.emp_nameename,e.Ageeage
FROMemployeeseWHERE
eage>32
ORDERBYAge;--使用別名進行WHERE與SELECT順序驗證。(5).SELECT
e.emp_nameename,e.AgeeageFROMemployeeseWHERE
e.age>32ORDERBYeAge;--使用別名進行ORDERBY執(zhí)行順序驗證。SQL語句——DQL語句小節(jié)SELECT
字段列表
FROM
表名列表WHERE
條件列表GROUPBY
分組字段列表HAVING
分組后條件列表ORDERBY
排序字段列表LIMIT
分頁參數(shù)字段[AS]別名
比較條件:=,>,<,>=,<=,<>(!=),
BETWEEN…AND..,IN(值1,值2,…),LIKE,ISNULL邏輯條件:AND(&&);OR(||);NOT(!)分組前過濾分組后過濾升序:ASC(默認值),降序:DESCDCL——用戶與權限1、MySQL服務器通過權限表來控制用戶對數(shù)據(jù)庫的訪問,權限表存在MySQL數(shù)據(jù)庫中。存儲權限信息的表主要有:user、db表等。表記錄的信息及權限備注user允許連接到服務器的賬號信息,全局級權限Eg:一個用戶在UESR表中被授予了DELETE權限,則該用戶可以刪除MySQL服務器上所有數(shù)據(jù)庫中的任何記錄。db存儲了用戶對某個數(shù)據(jù)庫的操作權限決定用戶能從哪個主機存取哪個數(shù)據(jù)庫SQL語句——DCL(數(shù)據(jù)控制語句)1、主要功能(1)管理數(shù)據(jù)庫用戶;(2)控制數(shù)據(jù)庫的訪問權限。2、DCL——用戶管理SQL語句USEmysql;SELECT*FROMUSER;(1)、查詢用戶CREATEUSER‘用戶名’@’主機名’IDENTIFIEDBY‘密碼’;(2)、創(chuàng)建用戶DROPUSER‘用戶名’@’主機名’;(3)、刪除用戶ALTERUSER‘用戶名’@’主機名’IDENTIFIEDWITHmysql_native_passwordBY‘新密碼’;(4)、修改用戶密碼SQL語句——DCL(數(shù)據(jù)控制語句)3、權限控制
(1)MySQL中常用的權限有以下幾種:權限說明ALL,ALLPRIVILEGES所有權限SELECT查詢數(shù)據(jù)INSERT插入數(shù)據(jù)UPDATE修改(更新)數(shù)據(jù)DELETE刪除數(shù)據(jù)ALTER修改表DROP刪除數(shù)據(jù)庫、表、視圖CREATE創(chuàng)建數(shù)據(jù)庫、表SQL語句——DCL(數(shù)據(jù)控制語句)3、權限控制SHOWGRANTSFOR‘用戶名’@’主機名’;(2)、查詢用戶的權限GRANT權限列表
ON數(shù)據(jù)庫名.表名
TO‘用戶名’@’主機名’;注意:GRANT權限列表
ON名字
TO‘用戶名’@’主機名’;#當前使用的數(shù)據(jù)庫下面的表(名字)。(3)、授予用戶權限REVOKE權限列表ON數(shù)據(jù)庫名.表名
FROM‘用戶名’@’主機名’;(4)、撤銷權限MySQL8.0+的數(shù)據(jù)庫,用戶創(chuàng)建與授權是分開的,創(chuàng)建過程中要遠程授予權限需注意創(chuàng)建時,用戶的類型用戶授予權限是分層級的,一共分為:全局層級、數(shù)據(jù)庫層級、表層級、列層級、子程序層級SQL語句——DCL語句小節(jié)CREATEUSER‘用戶名’@’主機名’IDENTIFIEDBY‘密碼’;DROPUSER‘用戶名’@’主機名’;ALTERUSER‘用戶名’@’主機名’IDENTIFIEDWITHmysql_native_passwordBY‘新密碼’;GRANT權限列表
ON數(shù)據(jù)庫名.表名
TO‘用戶名’@’主機名’;REVOKE權限列表ON數(shù)據(jù)庫名.表名
FROM‘用戶名’@’主機名’;1、用戶管理2、權限控制數(shù)據(jù)庫操作——數(shù)據(jù)備份與恢復1.使用MySQLdump備份單個數(shù)據(jù)庫中的所有表:mysql2.使用MySQL命令恢復:mysql–u<備份文件時的用戶名>–p<數(shù)據(jù)庫名><D:/mysql_backup/<備份文件名>.sql3.注意事項:(1)執(zhí)行備份操作時,文件路徑的文件夾必須存在。(2)執(zhí)行恢復語句前,必須現(xiàn)在MySQL數(shù)據(jù)庫中創(chuàng)建名字一樣的數(shù)據(jù)庫,否則會出錯。數(shù)據(jù)庫操作——數(shù)據(jù)備份與恢復3.使用數(shù)據(jù)庫管理軟件(DataGrip)進行備份和恢復:4.直接復制到數(shù)據(jù)庫目錄注意:這種方式只對MyISAM引擎的數(shù)據(jù)表有效,對于InnoDB引擎的表不可用,MySQL8.0以后默認使用InnoDB引擎。5.數(shù)據(jù)庫的遷移(1)不同版本的MySQL數(shù)據(jù)庫進行遷移,需要修改默認字符集類型一致。(2)對于InnoDB引擎的表,一般只能使用MySQLdump進行導出,然后使用MySQL命令庫導入到目標服務器上。(3)不同數(shù)據(jù)庫之間的遷移使用專門的工具進行遷移,如:MyODBC實現(xiàn)MySQL和SQLServer之間的遷移,MySQLMigrationToolkit等。MySQL中的函數(shù)1.概念
函數(shù),是指一段可以直接被另一段程序調用的程序或代碼。字符串函數(shù)數(shù)學函數(shù)日期和時間函數(shù)條件判斷函數(shù)MySQL中的函數(shù)字符串函數(shù)字符串函數(shù)主要用來處理數(shù)據(jù)庫中的字符串數(shù)據(jù),MySQL中的常用字符串函數(shù)如下表所示:函數(shù)功能說明注意事項CONCAT(S1,S2,…,Sn)合并字符串函數(shù),將S1,S2,…,Sn拼接成一個字符串有任何一個參數(shù)為NULL,則返回NULLCONCAT_WS(x,s1,s2,…)以第一個參數(shù)作為其它參數(shù)的分隔符,拼接字符串連接時,自動忽略參數(shù)中的null值LOWER(str)/LCASE(str)將字符串str全部轉換成小寫字母UPPER(str)/UCASE(str)將字符串str全部轉換成大寫字母LENGTH(str)計算字符串的字節(jié)長度LEFT(S,n)、RIGHT(S,n)返回字符串S開始的最左邊、右邊n個字符。LPAD(S1,n,S2)、RPAD(S1,n,S2)字符串的左、右填充,用字符串S2對S1的左邊、右邊進行填充,達到n個字符串長度。TRIM(str)去掉字符串頭部和尾部的空格SUBSTRING(str,n,len)返回從字符串str從n位置起的len長度的字符串n為負數(shù)時,從結尾開始MySQL官方文檔下載地址/doc/
示例1:把員工表中員工id字段左邊填零,總位數(shù)是五位MySQL中的函數(shù)數(shù)學函數(shù)MySQL中的常用數(shù)學函數(shù)如下表所示:函數(shù)功能說明注意事項ABS(X)返回X的絕對值SQRT(X)平方根函數(shù)MOD(X,Y)求余函數(shù),返回X被Y除后的余數(shù)(X/Y的模)CEIL(X)/CEILING(X)向上取整FLOOR(X)向下取整RAND()返回0~1內(nèi)的隨機數(shù)ROUND(X,Y)求參數(shù)X的四舍五入的值,保留Y位小數(shù)。TRUNCATE(X,Y)返回被舍棄值小數(shù)點Y位的數(shù)字X通過數(shù)據(jù)庫的函數(shù)生成一個七位數(shù)的隨機驗證碼?MySQL中的函數(shù)日期時間函數(shù)MySQL中的常用的日期時間函數(shù)如下表所示:函數(shù)功能說明注意事項CURDATE()返回當前日期(返回日期格式:YYYY-MM-DD)CURDATE()+0,將當前日期值轉化成數(shù)值類型CURTIME()返回當前時間(返回時間格式:HH:MM:SS)CURTIME()+0,將當前時間值轉化成數(shù)值類型NOW()/LOCALTIME()/SYSDATE()/CURRENT_TIMESTAMP()獲取當前日期和時間(YYYY-MM-DDHH:MM:SS)有的函數(shù)可以不用()YEAR(date)返回指定date的年份MONTH(date)返回指定date的月份DAY(date)返回指定date的日期DAYNAME(date)返回對應工作日的英文名稱Eg:Sunday,Monday,…..DAYOFWEEK(date)返回對應日期對應的周索引,日期在一周中的位置周日為1,周一為2,……WEEKDAY(date)返回date對應的工作日索引0表示周一,1表示周二,……DATE_ADD(date,INTERVALexprtype)返回一個日期加上一個時間間隔之后的時間值DATEDIFF(date1,date2)求date1和date2兩個日期之間的天數(shù)天數(shù)值為,前面的日期減去后面的日期的天數(shù)MySQL中的函數(shù)條件判斷函數(shù)條件判斷函數(shù)也稱為流程控制函數(shù),MySQL中的常用的條件判斷函數(shù)如下表所示:函數(shù)功能說明IF(value,t,f)如果value的值或者表達式為true,則返回t,否則返回fIFNULL(value1,value2)如果value1不為NULL則返回value1,否則返回value2CASEWHEN
val1THENres1[WHEN
val2THENres2]…[ELSEdefault]END如果某個值valn為TRUE,則返回對應位置THEN后面的結果,如果所有的值都不為TRUE,則返回ELSE后面的DEFAULT值。CASE
exprWHENval1THENres1[WHENval2THENres2]…[ELSEdefault]END如果expr等于某一個值valn,返回對應位置THEN后面的結果,如果所有的值都不相等,則返回ELSE后面的DEFAULT值。示例1:查詢machines表中的機臺號、maching_type、機組類型數(shù)據(jù),當machine_id為1-6之間時,顯示機組類型為進口高速機,當machine_id為7-11時,顯示機組類型為進口中速機,當machine_id為12-18之間時,顯示機組類型為國產(chǎn)中速機,當machine_id為19-20之間時,顯示機組類型為國產(chǎn)高速機,當machine_id為21-23之間時,顯示機組類型為異型中速機。MySQL——DQL語句多表查詢1、多表關系與多表查詢
多表關系是指表與表之間的關系,一般來說,包括以下三種:
一對多、多對多、一對一(1)一對多(多對一)關系員工表(employees)與部門表(dpt)之間的關系,一個部門對應多個員工,一個員工對應一個部門。一對多關系如何來實現(xiàn)呢?在多的一方的表中建立外鍵,指向一的一方的表中的主鍵。MySQL——DQL語句多表查詢(2)多對多關系設備表(machines)與牌號表(markes)之間的關系,一臺設備可以生產(chǎn)多個牌號的卷煙,一個牌號的卷煙可以對應多臺設備生產(chǎn)。多對多關系如何來實現(xiàn)呢?建立第三張中間表,中間表至少包含兩個外鍵,分別關聯(lián)兩個表的主鍵。MySQL——DQL語句多表查詢(3)一對一關系當一個表中包含的信息太多時,用于對表進行拆分,以提升工作效率。例如:員工表一對一關系如何來實現(xiàn)呢?在拆分開的表中,任意一方加入外鍵,并設置外鍵的值為唯一的。MySQL——DQL語句多表查詢(4)多表查詢從多個表中進行查詢,獲取數(shù)據(jù)。SELECT字段1,字段2,…,字段nFROM表名1,表名2;如果從兩個或多個表中沒有連接進行查詢,輸出結果就是兩個表中數(shù)據(jù)集合的組合。笛卡爾積:笛卡爾積是笛卡爾連接或“無連接”的結果,笛卡爾積通常也被稱為交叉連接。AB12╳AABB1212MySQL——DQL語句多表查詢(5)內(nèi)連接查詢內(nèi)連接:內(nèi)連接也被稱為等值連接,內(nèi)連接利用通用字段連接兩個表,而且這個字段通常是每個表中的主鍵。連接查詢與單表查詢最大的區(qū)別:SELECT語句后面指定的列分別屬于兩個或多個不同的表,同時FROM子句列出了兩個或多個表,WHERE子句作為過濾條件,指明查詢條件。示例1:查詢顯示3#機組生產(chǎn)的所有煙支的ID,圓周,長度,重量,吸阻,機臺名稱。示例2:查詢顯示一工班、3#機組生產(chǎn)的所有煙支的ID,圓周,長度,重量,吸阻,機臺名稱,班組名稱。SELECT表1.字段1,表1.字段2,……表2.字段1FROM表1,表2[,表3]WHERE表1.字段名=表2.字段名[AND表1.字段名=表3.字段名]MySQL——DQL語句多表查詢(6)內(nèi)連接查詢內(nèi)連接寫法2:使用JOIN操作符來提高SQL語句的可讀性SELECT表1.字段1,表1.字段2,…,表2.字段1,…FROM表1INNERJOIN表2ON
條件1INNERJOIN表3ON條件2WHERE條件3;示例1:查詢顯示3#機組生產(chǎn)的所有煙支的ID,圓周,長度,重量,吸阻,機臺名稱。SELECTC.C_ID,C.CIRCLE,C.LENGTHS,C.WEIGHTS,C.PD_PA,M.machine_name,T.manu_teamFROMcigrate_01CINNERJOINmachinesMONC.machine_id=M.machine_idINNERJOINteamsTONC.team_id=T.team_idWHEREC.machine_id=3ANDT.team_id=1;示例2:查詢顯示一工班、3#機組生產(chǎn)的所有煙支的ID,圓周,長度,重量,吸阻,機臺名稱,班組名稱。示例3:使用內(nèi)連接查詢查詢emp表的所有數(shù)據(jù)及部門名稱。MySQL——DQL語句多表查詢(7)外連接查詢——左連接、右連接查詢左連接查詢:使用LEFTJOIN操作符實現(xiàn)SELECT表1.字段1,表1.字段2,…,表2.字段1,…FROM表1LEFT[OUTER]JOIN表2ON
條件1WHERE條件2;左連接查詢:使用RIGHTJOIN操作符實現(xiàn)SELECT表1.字段1,表1.字段2,…,表2.字段1,…FROM表1RIGHT[OUTER]JOIN表2ON
條件1WHERE條件2;示例2:使用內(nèi)連接查詢、左外連接查詢、右外連接查詢分別查詢顯示機組生產(chǎn)的所有煙支的ID,圓周,長度,重量,吸阻,測試臺名稱。左連接查詢(LEFTJOIN):返回包括左表中的所有記錄,和右表中連接字段相等的記錄。右連接查詢(RIGHTJOIN):返回包括右表中的所有記錄,和左表中連接字段相等的記錄。示例1:使用左外連接查詢查詢emp表的所有數(shù)據(jù)及部門名稱。MySQL——DQL語句多表查詢(7)自連接查詢SELECT字段列表FROM表1別名1JOIN
表2別名2ON
條件1……;示例:使用內(nèi)連接查詢、左外連接查詢方式,自連接查詢員工表中,所有員工的姓名及領導姓名。員工的領導ID連接到哪里?自連接查詢使用表的別名對SQL語句中的表進行重命名,像處理兩個表一樣將表連接到自身,自連接查詢可以是內(nèi)連接查詢,也可以是外連接查詢。MySQL——DQL語句多表查詢(7)自連接查詢表1表2DQL語句——連接查詢小節(jié)(1)SELECT字段列表FROM表1,表2[,表3]WHERE表1.字段名=表2.字段名
[AND表1.字段名=表3.字段名];(2)SELECT字段列表FROM表1INNERJOIN表2ON
條件1INNERJOIN表3ON
條件2WHERE條件3;(3)SELECT字段列表FROM表1LEFT[OUTER]JOIN表2ON
條件1WHERE條件2;(4)SELECT字段列表FROM表1RIGHT[OUTER]JOIN表2ON
條件1WHERE條件2;(5)SELECT字段列表FROM表1別名1JOIN
表1別名2ON
條件1……;(1)內(nèi)部連接可以根據(jù)相等或不相等的條件連接多個表中的數(shù)據(jù)。(2)外部連接即使在被連接的表沒有匹配數(shù)據(jù)時,也能從中獲取數(shù)據(jù)。(3)自連接用于把表與自身相連接,自連接查詢可以是內(nèi)連接查詢,也可以是外連接查詢。(4)對于交叉連接,也就是笛卡爾積,它是多個表沒有進行任何連接的結果,經(jīng)常會產(chǎn)生大量無必要的輸出結果。1、概念2、語法MySQL——DQL語句子查詢1、子查詢概念(1)子查詢可以用于SELECT、INSERT、UPDATE和DELETE語句;(2)當使用子查詢時,首先執(zhí)行子查詢,然后再根據(jù)子查詢返回的結果執(zhí)行主查詢;(3)子查詢必須位于圓括號中,子查詢常用的操作符有ANY(SOME)、ALL、IN、EXISTS。(4)子查詢中不能使用ORDERBY子句,可使用GROUPBY子句實現(xiàn)相同的功能。(5)返回多條記錄的子查詢只能與多值操作符配合使用。(6)子查詢不能被包含在SET函數(shù)中,操作符BETWEEN不能用于子查詢,但子查詢內(nèi)部可以使用它。子查詢也被稱為嵌套查詢,是位于另一個查詢的WHERE子句中的查詢,用來對查詢返回的數(shù)據(jù)進行進一步的限制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025河南建筑安全員《B證》考試題庫及答案
- 貴陽人文科技學院《先進制造與特種加工》2023-2024學年第一學期期末試卷
- 廣州珠江職業(yè)技術學院《動物分子生物學C》2023-2024學年第一學期期末試卷
- 廣州應用科技學院《日本近現(xiàn)代文學作品選讀》2023-2024學年第一學期期末試卷
- 廣州新華學院《東西方設計元素》2023-2024學年第一學期期末試卷
- 廣州鐵路職業(yè)技術學院《電子商務》2023-2024學年第一學期期末試卷
- 2025海南省建筑安全員-B證考試題庫附答案
- 《固定收入證券》課件
- 一年級語文《借生日》
- 單位人力資源管理制度集錦匯編十篇
- 藝術漆培訓課件
- 建德海螺二期施工組織設計
- 山東省菏澤市2023-2024學年高一上學期期末測試物理試題(解析版)
- 2024年學校后勤日用品采購合同范本2篇
- 中建中建機電工程聯(lián)動調試實施方案范本
- 新《安全生產(chǎn)法》安全培訓
- 山東省濟南市2023-2024學年高一上學期1月期末考試 物理 含答案
- 中華人民共和國安全生產(chǎn)法知識培訓
- 上海教育出版社 藝術 八年級上冊第三單元 鄉(xiāng)音鄉(xiāng)韻 京腔京韻系鄉(xiāng)情 教學設計
- 人教版(2024新教材)七年級上冊數(shù)學第一章《有理數(shù)》單元測試卷(含答案)
- 《色彩基礎知識》PPT課件(詳解)
評論
0/150
提交評論