一千行MySQL學(xué)習(xí)筆記_第1頁
一千行MySQL學(xué)習(xí)筆記_第2頁
一千行MySQL學(xué)習(xí)筆記_第3頁
一千行MySQL學(xué)習(xí)筆記_第4頁
一千行MySQL學(xué)習(xí)筆記_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余24頁可下載查看

下載本文檔

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

文檔簡介

1、/* 啟動 MySQL */net start mysql/*連接與斷開服務(wù)器*/mysql -h地址-P端口 -u用戶名-p密碼/*跳過權(quán)限驗(yàn)證登錄 MySQL */mysqld -sk ip-gra nt-tables-修改root密碼密碼加密函數(shù)passwordOup date mysql、user set p assword= password(root);SHOW PROCESSLIST -顯示哪些線程正在運(yùn)行SHOW VARIABLES -/*數(shù)據(jù)庫操作*/ -查瞧當(dāng)前數(shù)據(jù)庫select database);-顯示當(dāng)前時間、用戶名、數(shù)據(jù)庫版本select now(), user()

2、, version();-創(chuàng)建庫create database if not exists數(shù)據(jù)庫名 數(shù)據(jù)庫選項數(shù)據(jù)庫選項:CHARACTER SET charset_nameCOLLATE collation_name-查瞧已有庫show databases like pattern-查瞧當(dāng)前庫信息show create database 數(shù)據(jù)庫名-修改庫得選項信息alter database庫名選項信息-刪除庫drop database if exists數(shù)據(jù)庫名同時刪除該數(shù)據(jù)庫相關(guān)得目錄及其目錄內(nèi)容/*表得操作*/ -創(chuàng)建表create temporary table if not exi

3、sts庫名、表名(表得結(jié)構(gòu)定義)表 選項飲匱賒鏃賺黽讀。每個字段必須有數(shù)據(jù)類型最后一個字段后不能有逗號temporary臨時表,會話結(jié)束時表自動消失 對于字段得定義:字段名 數(shù)據(jù)類型NOT NULL | NULL DEFAULT default_val ue AUTO_INCREMENT UNIQUE KEY | PRIMARY KEY COMMEN T string驥頒蘇吶現(xiàn)貿(mào)邇。-表選項-字符集CHARSET = charset_name如果表沒有設(shè)定,則使用數(shù)據(jù)庫字符集-存儲引擎ENGINE = engin e_name表在管理數(shù)據(jù)時采用得不同得數(shù)據(jù)結(jié)構(gòu),結(jié)構(gòu)不同會導(dǎo)致處理方式、提 供得

4、特性操作等不同常見得引擎:InnoDB MyISAM Memory/Heap BDB Merge Example C SV MaxDB Archive羨箏輻勻棗窪淒。不同得引擎在保存表得結(jié)構(gòu)與數(shù)據(jù)時采用不同得方式MyISAM表文件含義:、frm表定義,、MYD表數(shù)據(jù),、MYI表索引InnoDB表文件含義:、frm表定義,表空間數(shù)據(jù)與日志文件SHOW ENGINES -顯示存儲引擎得狀態(tài)信息SHOW ENGINE弓I擎名LOGS STATUS-顯示存儲弓I擎得日志或 狀態(tài)信息-數(shù)據(jù)文件目錄DATA DIRECTORY =目錄-索引文件目錄INDEX DIRECTORY =目錄-表注釋COMMEN

5、T = stri ng-分區(qū)選項(詳細(xì)見手冊)PARTITION BY、-查瞧所有表SHOW TABLES LIKE patternSHOW TABLES FROM 表名-查瞧表機(jī)構(gòu)SHOW CREATE TABLE表名(信息更詳細(xì))DESC 表名 / DESCRIBE 表名 / EXPLAIN 表名 / SHOW COLUMNS F ROM 表名LIKE PATTERN軸蝕賓賦轍踐癉。SHOW TABLE STATUS FROM db_name LIKE pattern-修改表-修改表本身得選項ALTER TABLE表名表得選項ENGINE =MYISAM;EG:ALTER TABLE 表名

6、對表進(jìn)行重命名新表名 庫名、表名RENAME TABLE 原表名 TO(可將表移動到另一個RENAME TABLE 原表名 TO數(shù)據(jù)庫)-RENAME可以交換兩個表名 -修改表得字段機(jī)構(gòu)ALTER TABLE表名操作名 -操作名-增加字段-表示增加在該字段名后面-表示增加在第一個ADD COLUMN字段名 AFTER字段名 FIRSTADDADDADDADDPRIMARY KEY (字段名)-創(chuàng)建主鍵UNIQUE 索引名(字段名)-創(chuàng)建唯一索引 INDEX 索引名(字段名)-創(chuàng)建普通索引DROP COLUMN字段名-刪除字段MODIFY COLUMN字段名 字段屬性-支持對字段屬性進(jìn)行修改,不

7、能修改字段名(所有原有屬性也需寫上)闐廢摯沒薌摻餾。CHANGE COLUMN原字段名新字段名字段屬性-支持對字段名修改DROP PRIMARY KEY -刪除主鍵(刪除主鍵前需刪除其 AU屬性)綁繒鑌臏苧鵂燾。INDEX索引名 -刪除索引FOREIGN KEY外鍵 -刪除外鍵TO_INCREMENTDROPDROP-刪除表IF EXISTS表名、DROP TABLE -清空表數(shù)據(jù)TRUNCATE TABLE表名-復(fù)制表結(jié)構(gòu)CREATE TABLE 表名LIKE要復(fù)制得表名-復(fù)制表結(jié)構(gòu)與數(shù)據(jù)CREATE TABLE 表名AS SELECT * FROM 要復(fù)制得表名-檢查表就是否有錯誤CHEC

8、K TABLE tbl_name , tbl_name、 option、-優(yōu)化表_OPTIMIZE LOCAL | NO_WRITE_TO_BINLOG TABLE tbl_name , tbl _name、闔錆寶瀠鰱殯縱。-修復(fù)表REP AIR LOCAL | NO_WRITE_TO_BINLOG TABLE tbl_name , tbl_name、 QUICK EXTENDED USE_FRM堊綬鏤薌誠舊撣。-分析表ANALYZE LOCAL | NO_WRITE_TO_BINLOG TABLE tbl_name , tbl _name、鰭損鮞鐔倉覦俠。/*數(shù)據(jù)操作*/ -增INSERT

9、INTO表名(字段列表)VALUES (值列表),(值列表),、 樅礦罰驢攬紲間。-如果要插入得值列表包含所有字段并且順序一致,則可以省略字段 列表。-可同時插入多條數(shù)據(jù)記錄!REPLACE與INSERT完全一樣,可互換。INSERT INTO表名SET字段名二值,字段名二值,、-查SELECT字段列表FROM表名其她子句-可來自多個表得多個字段-其她子句可以不使用-字段列表可以用*代替,表示所有字段-刪DELETE FROM表名刪除條件子句 沒有條件子句,則會刪除全部-改UP DATE表名SET字段名=新值,字段名=新值更新條件/*字符集編碼*/ -MySQL、數(shù)據(jù)庫、表、字段均可設(shè)置編碼c

10、haracter_set_%-查瞧所有字符集編碼項脅倆嗇-數(shù)據(jù)編碼與客戶端編碼不需一致SHOW VARIABLES LIKE瀅悅畝鶉??蛻舳讼蚍?wù)器發(fā)送數(shù)據(jù)時使用得編碼服務(wù)器端將結(jié)果返回給客戶端所使用得編碼 連接層編碼character_set_clie nt character_set_results character_set_c onnectionSET變量名=變量值gbk;set character_set_client =set character_set_results= gbk;set character_set_connection= gbk;SET NAMES GBK; -相

11、當(dāng)于完成以上三個設(shè)置-校對集校對集用以排序SHOW CHARACTER SET LIKE pattern/SHOW CHARSET LIKE patt ern查瞧所有字符集頑鉸癩巹錙瓔軍。查瞧所有校對集 設(shè)置字符集編碼 設(shè)置校對集編碼SHOW COLLATION LIKE pattern charset字符集編碼 collate校對集編碼*/*數(shù)據(jù)類型(列類型)1、數(shù)值類型-a、整型-字節(jié)1字節(jié)范圍(有符號位)-128 - 127無符號位:0 - 255稈賒謗嚇轟類型tin yi ntsmalli nt mediumi nt int bigi nt in t(M)鐨蹣。2 字節(jié) -32768

12、- 327673字節(jié) -4字節(jié)8字節(jié)M表示總位數(shù)-默認(rèn)存在符號位,un sig ned屬性修改-顯示寬度,如果某個數(shù)不夠定義字段時設(shè)置得位數(shù),則前面以0補(bǔ)填,zerofill屬性修改例:int(5)插入一個數(shù)123,補(bǔ)填后為00123-在滿足要求得情況下,越小越好。-1表示bool值真,0表示bool值假。MySQL沒有布爾類型,通過整型 0 與1表示。常用tinyint( 1)表示布爾型。鋟劉犖囀韉紆勝。-b、 浮點(diǎn)型范圍類型字節(jié)float(單精度)4字節(jié)double(雙精度)8字節(jié)浮點(diǎn)型既支持符號位unsigned屬性,也支持顯示寬度 zerofill屬性。 不同于整型,前后均會補(bǔ)填0、定

13、義浮點(diǎn)型時,需指定總位數(shù)與小數(shù)位數(shù)。float(M, D)double(M, D)M表示總位數(shù),D表示小數(shù)位數(shù)。M與D得大小會決定浮點(diǎn)數(shù)得范圍。不同于整型得固定范圍。M既表示總位數(shù)(不包括小數(shù)點(diǎn)與正負(fù)號),也表示顯示寬度(所有 顯示符號均包括)。支持科學(xué)計數(shù)法表示。 浮點(diǎn)數(shù)表示近似值。c、定點(diǎn)數(shù)decimal -可變長度decimal(M, D) M也表示總位數(shù),D表示小數(shù)位數(shù)。保存一個精確得數(shù)值,不會發(fā)生數(shù)據(jù)得改變,不同于浮點(diǎn)數(shù)得四舍五入。 將浮點(diǎn)數(shù)轉(zhuǎn)換為字符串來保存,每 9位數(shù)字保存為4個字節(jié)。2、字符串類型-a、 char, varcharchar定長字符串,速度快,但浪費(fèi)空間varch

14、ar變長字符串,速度慢,但節(jié)省空間M表示能存儲得最大長度,此長度就是字符數(shù),非字節(jié)數(shù)。不同得編碼,所占用得空間不同。char,最多255個字符,與編碼無關(guān)。varchar最多65535字符,與編碼有關(guān)。 一條有效記錄最大不能超過65535個字節(jié)。utf8最大為21844個字符,gbk最大為32766個字符,latin1最大為6 5532個字符鰍雙誚鐳閑驟敗。varchar就是變長得,需要利用存儲空間保存varchar得長度,如果數(shù)據(jù)小于255個字節(jié),則采用一個字節(jié)來保存長度,反之需要兩個字節(jié)來保存。歷鴆搏綬鈔嘰壯。varchar得最大有效長度由最大行大小與使用得字符集確定。最大有效長度就是65

15、532字節(jié),因?yàn)樵趘archar存字符串時,第一個字節(jié)就 是空得,不存在任何數(shù)據(jù),然后還需兩個字節(jié)來存放字符串得長度,所以有效長度就是64432-1-2=65532字節(jié)。詰榪艦賣謎統(tǒng)專。例:若一個表定義為 CREATE TABLE tb(c1 int, c2 char(30), c3 varchar (N) charset=utf8;問N得最大值就是多少? 答:(6553&1-2-4-30*3)/3鄲欏儻掄縲輯 蛻。-b、 blob, text blob二進(jìn)制字符串(字節(jié)字符串)texttexttexttinyblob, blob, mediumblob, Iongbiob非二進(jìn)制字符串(字符

16、字符串)tiny text, text, mediumtext, l on gtext在定義時,不需要定義長度,也不會計算總長度。 類型在定義時,不可給default值-C、 bi nary, varbi nary 類似于char與varchar,用于保存二進(jìn)制字符串,也就就是保存字節(jié)字符串 而非字符字符串。char; varchar, text 對應(yīng) bin ary, varb in ary, blob、3、日期時間類型一般用整型保存時間戳,因?yàn)?PHP可以很方便得將時間戳進(jìn)行格式化。datetime 8字節(jié)日期及時間12-31 23:59:59鎦籜殫滬撓議問。date嚦鏷釤。timesta

17、 mp擬吳鯊饅。time瑣濾。3字節(jié)日期4字節(jié) 時間戳3字節(jié) 時間1000-01-01 00:00:00 至U 9999-1000-01-01 至U 9999-12-31 嘩盜磣組197 至U 2038-01-19 03:14:07 陜鋪蕢-838:59:59 至U 838:59:59 銼窺輊棧琺year datetime timesta mp1字節(jié) 年份 “YYYYMM-DD hh:mm:ss ”“YYMM-DD hh:mm:ss ”“ YYYYMMDDhhmmss“ YYMMDDhhmmss YYYYMMDDhhmmss YYMMDDhhmmss “YYYYMM -DD“ YYMM -DD

18、“ YYYYMMDD“ YYMMDD YYYYMMDD YYMMDD“ hh:mm:ss ”“ hhmmsshhmmss“ yyyy“ YYYYYYYY4、枚舉與集合-枚舉(enum)enum(val1, val2, val3、)在已知得值中進(jìn)行單選。最大數(shù)量為1901 - 2155datetimeyear65535、2、枚舉值在保存時,以2個字節(jié)得整型(smallint)保存。每個枚舉值,按保存得 位置順序,從1開始逐一遞增。鯔癢順紹煢傳驍。表現(xiàn)為字符串類型,存儲卻就是整型。NULL值得索引就是NULL。 空字符串錯誤值得索引值就是0。-集合(set)set(val1, val2, val3

19、、)create table tab ( gender set(男,女,無);insert into tab values (男,女);最多可以有64個不同得成員。以bigint存儲,共8個字節(jié)。采取位運(yùn)算得 形式。當(dāng)創(chuàng)建表時,SET成員值得尾部空格將自動被刪除。/*選擇類型*/ -PHP角度1、2、3、功能滿足存儲空間盡量小,處理效率更高考慮兼容問題IP存儲1、2、只需存儲,可用字符串1)如果需計算,查找等,可存儲為 4個字節(jié)得無符號int,即unsigned PHP函數(shù)轉(zhuǎn)換ip2long可轉(zhuǎn)換為整型,但會出現(xiàn)攜帶符號問題。需格式化為無符號得整型。利用sprintf函數(shù)格式化字符串sprin

20、tf(%u, ip2long(192、168、3、134); 然后用Iong2ip將整型轉(zhuǎn)回IP字符串MySQL函數(shù)轉(zhuǎn)換(無符號整型,UNSIGNED) INET_ATON(127、0、0、1)將 IP 轉(zhuǎn)為整型 INET_NTOA( 2130706433 將整型轉(zhuǎn)為 IP/*列屬性(列約束)*/ 1、主鍵-能唯一標(biāo)識記錄得字段,可以作為主鍵。-一個表只能有一個主鍵。-主鍵具有唯一性。-聲明字段時,用 primary key 也可以在字段列表之后聲明例: create table tab (2)標(biāo)識。id int, Stu varchaRIO), primary key (id);鶩剮躓問憮喲

21、誘。此時需要在字段列表后聲明得方法。-主鍵字段得值不能為null。 -主鍵可以由多個字段共同組成。例:create table tab ( id int, stu varchar(10), age int, primary key (st u, age)塒邐鶼犢瑤調(diào)撫。unique唯一索引(唯一約束) 使得某字段得值也不能重復(fù)。3、null約束null不就是數(shù)據(jù)類型,就是列得一個屬性。 表示當(dāng)前列就是否可以為null,表示什么都沒有。 null,允許為空。默認(rèn)。not null,不允許為空。insert into tab values (null, vaI);ull4、-此時表示將第一個字段得

22、值設(shè)為null,取決于該字段就是否允許為ndefault默認(rèn)值屬性當(dāng)前字段得默認(rèn)值。insert into tab values (default, val);-此時表示強(qiáng)制使用默認(rèn)值。騶槨綰馭嘯軾韶。create table tab ( add_time timestamp default current_timestamp );瀟鄺鈄懶終 鰓臟。-表示將當(dāng)前時間得時間戳設(shè)為默認(rèn)值。current_date current_time5、auto_i ncreme nt自動增長約束自動增長必須為索引(主鍵或un ique)只能存在一個字段為自動增長。默認(rèn)為1開始自動增長??梢酝ㄟ^表屬性auto

23、_increment = x進(jìn)行設(shè)置,或 alter table tbl auto_increment = x;鈉轟礎(chǔ)頤殘銹尋。6、comme nt 注釋例:create table tab ( id int ) comment 注釋內(nèi)容;7、foreign key外鍵約束用于限制主表與從表數(shù)據(jù)完整性。alter table t1 add constraint t1_t2_fk foreign key (t1_id) references t2(id); 艷腎漬漚駕斃氽。-將表t1得t1_id外鍵關(guān)聯(lián)到表t2得id字段。-每個外鍵都有一個名字,可以通過con strai nt指定存在外鍵得表,

24、稱之為從表(子表),外鍵指向得表,稱之為主表(父表)。作用:保持?jǐn)?shù)據(jù)一致性,完整性,主要目得就是控制存儲在外鍵表(從表) 中得數(shù)據(jù)。MySQL中,可以對InnoDB引擎使用外鍵約束:語法:foreign key (外鍵字段)references主表名(關(guān)聯(lián)字段)主表記錄刪除時得 動作主表記錄更新時得動作餡賾譎懷覺機(jī)鮭。此時需要檢測一個從表得外鍵需要約束為主表得已存在得值。外鍵在沒有關(guān)聯(lián)得情況下,可以設(shè)置為null、前提就是該外鍵列,沒有 not null。辭尋韞貓蓽詞韻。可以不指定主表記錄更改或更新時得動作,那么此時主表得操作被拒絕。有如下幾個操作可如果指定了 on up date或on de

25、lete:在刪除或更新時, 以選擇:,從表也被更新閭綜玀證孌毿聲。1、cascade級聯(lián)操作。主表數(shù)據(jù)被更新(主鍵值更新) (外鍵值更新)。主表記錄被刪除,從表相關(guān)記錄也被刪除。2、 set null,設(shè)置為null。主表數(shù)據(jù)被更新(主鍵值更新),從表得外鍵被 設(shè)置為null。主表記錄被刪除,從表相關(guān)記錄外鍵被設(shè)置成null。但注意,要求 該外鍵列,沒有not null屬性約束。躦綈針蠟濼嘔轢。3、restrict,拒絕父表刪除與更新。注意,外鍵只被InnoDB存儲引擎所支持。其她引擎就是不支持得。/*建表規(guī)范*/ -Normal Format, NF-每個表保存一個實(shí)體信息-每個具有一個ID

26、字段作為主鍵-ID主鍵+原子表-1NF,第一范式字段不能再分,就滿足第一范式。-2NF,第二范式滿足第一范式得前提下,不能出現(xiàn)部分依賴。 消除符合主鍵就可以避免部分依賴。增加單列關(guān)鍵字。-3NF,第三范式滿足第二范式得前提下,不能出現(xiàn)傳遞依賴。某個字段依賴于主鍵,而有其她字段依賴于該字段。這就就是傳遞依賴。 將一個實(shí)體信息得數(shù)據(jù)放在一個表內(nèi)實(shí)現(xiàn)。/* select */ order by - limit發(fā)燒誅鷗鰥濟(jì)腎。 select_ex pr-可以用*表示所有字段。select * from tb;-可以使用表達(dá)式(計算公式、函數(shù)調(diào)用、字段也就是個表達(dá)式)select stu, 29+25,

27、 now() from tb;-可以為每個列使用別名。適用于簡化列標(biāo)識,避免多個列標(biāo)識符重復(fù)。 -使用as關(guān)鍵字,也可省略as、select stu+10 as add10 from tb;from子句用于標(biāo)識查詢來源。-可以為表起別名。使用as關(guān)鍵字。select * from tb1 as tt, tb2 as bb;-from子句后,可以同時出現(xiàn)多個表。-多個表會橫向疊加到一起,而數(shù)據(jù)會形成一個笛卡爾積。select * from tb1, tb2;where子句-從from獲得得數(shù)據(jù)源中進(jìn)行篩選。-整型1表示真,0表示假。-表達(dá)式由運(yùn)算符與運(yùn)算數(shù)組成。-運(yùn)算數(shù):變量(字段)、值、函數(shù)返

28、回值-運(yùn)算符:b、c、select all|distinet select_expr from - where - group by 合計函數(shù)- havin g - a、=, ,!=, =, =, , !, & ,11,in (not) null, (not) like, (not) in, (not) between and, is (not), and or, not, xor惲蟻賒穌鄒驅(qū)嚙。is/is not加上ture/false/unknown,檢驗(yàn)?zāi)硞€值得真假 =與v功能相同,=可用于null比較d、group by 子句,分組子句 group by字段/別名排序方式 分組后會進(jìn)行

29、排序。升序:ASC,降序:DESC 以下合計函數(shù)需配合group by使用: count返回不同得非NULL值數(shù)目count(*)、count(字段)sum求與 max求最大值 min求最小值 avg求平均值 group_coneat返回帶有來自一個組得連接得非 NULL值得字符串結(jié)果。組 內(nèi)字符串連接。e、having子句,條件子句 與where功能、用法相同,執(zhí)行時機(jī)不同。 where在開始時執(zhí)行檢測數(shù)據(jù),對原數(shù)據(jù)進(jìn)行過濾。 having對篩選出得結(jié)果再次進(jìn)行過濾。having字段必須就是查詢出來得,where字段必須就是數(shù)據(jù)表存在得。 where不可以使用字段得別名,having可以。因

30、為執(zhí)行 WHERE代碼時, 可能尚未確定列值。where不可以使用合計函數(shù)。一般需用合計函數(shù)才會用havingSQL標(biāo)準(zhǔn)要求HAVING必須引用GROUP BY子句中得列或用于合計函數(shù) 中得列。f、 order by子句,排序子句order by排序字段/別名排序方式,排序字段/別名排序方式卜、 升序:ASC,降序:DESC 支持多個字段得排序。g、limit子句,限制結(jié)果數(shù)量子句 僅對處理好得結(jié)果進(jìn)行數(shù)量限制。將處理好得結(jié)果得瞧作就是一個集合,按照記錄出現(xiàn)得順序,索引從0開始。h、limit起始位置,獲取條數(shù) 省略第一個參數(shù),表示從索引0開始。limit獲取條數(shù) distinet, all

31、選項distinct去除重復(fù)記錄默認(rèn)為all,全部記錄/* UNION */ 將多個select查詢得結(jié)果組合成一個結(jié)果集合。SELECT、 UNION ALL|DISTINCT SELECT、 默認(rèn)DISTINCT方式,即所有返回得行都就是唯一得 建議,對每個SELECT查詢加上小括號包裹。ORDER BY排序時,需加上 LIMIT 進(jìn)行結(jié)合。 需要各select查詢得字段數(shù)量一樣。每個select查詢得字段列表(數(shù)量、類型)應(yīng)一致,因?yàn)榻Y(jié)果中得字段名以第 一條select語句為準(zhǔn)。/*子查詢*/ -子查詢需用括號包裹。-from 型from后要求就是一個表,必須給子查詢結(jié)果取個別名。-簡化

32、每個查詢內(nèi)得條件。-from型需將結(jié)果生成一個臨時表格,可用以原表得鎖定得釋放。-子查詢返回一個表,表型子查詢。select * from (select * from tb where id0) as subfrom where id1;樹瀕竅殞 餾饌悅。-where 型-子查詢返回一個值,標(biāo)量子查詢。-不需要給子查詢?nèi)e名。-where子查詢內(nèi)得表,不能直接用以更新。select * from tb where money = (select max(money) from tb);賢媧態(tài)鑰腦檻飆。-列子查詢?nèi)绻硬樵兘Y(jié)果返回得就是一列。使用in或not in完成查詢exists 與 no

33、t exists 條件如果子查詢返回數(shù)據(jù),則返回1或0。常用于判斷條件。select column1 from t1 where exists (select * from t2);獲洶漸爛惱囂檔。-行子查詢查詢條件就是一個行。select * from t1 where (id, gender) in (select id, gender from t2);駝噲 鱺傷紂婦膩。行構(gòu)造符:(col1, col2,、)或 R0W(col1, col2,、)行構(gòu)造符通常用于與對能返回兩個或兩個以上列得子查詢進(jìn)行比較。-特殊運(yùn)算符相當(dāng)于not in相當(dāng)于in。any就是 some得別名不等同于not

34、in,不等于其中某一個。!= all()=some()!= some()all, some可以配合其她運(yùn)算符一起使用。/*連接查詢(join) */ 將多個表得字段進(jìn)行連接,可以指定連接條件。-內(nèi)連接(inner join)-默認(rèn)就就是內(nèi)連接,可省略inner。-只有數(shù)據(jù)存在時才能發(fā)送連接。即連接結(jié)果不能出現(xiàn)空行。on表示連接條件。其條件表達(dá)式與 where類似。也可以省略條件(表示條 件永遠(yuǎn)為真)也可用where表示連接條件。還有using,但需字段名相同。using(字段名)-交叉連接 cross join即,沒有條件得內(nèi)連接。select * from tb1 cross join tb

35、2;-外連接(outer join)-如果數(shù)據(jù)不存在,也會出現(xiàn)在連接結(jié)果中。-左外連接left join如果數(shù)據(jù)不存在,左表記錄會出現(xiàn),而右表為null填充-右外連接right join如果數(shù)據(jù)不存在,右表記錄會出現(xiàn),而左表為null填充-自然連接(natural join)自動判斷連接條件完成連接。 相當(dāng)于省略了 using,會自動查找相同字段名。n atural joi nnatural left joinnatural right joinselect info、id, info、name, info、stu_num, extranfo、hobby, extranfo、sex from

36、info, extra info where info、stu num = extra info、stu id;鏇墾擻紙欏鵯辮。/*導(dǎo)入導(dǎo)出 */ select * into outfile文件地址控制格式from 表名;-導(dǎo)出表數(shù)據(jù)覽擴(kuò)癤涼瀲煩烏。load data local in file 文件地址rep lace|ig nore into table 表名控制格式;-導(dǎo)入數(shù)據(jù)唄衛(wèi)轅轟縵閡諄。生成得數(shù)據(jù)默認(rèn)得分隔符就是制表符 local未指定,則數(shù)據(jù)文件必須在服務(wù)器上 rep lace與ignore關(guān)鍵詞控制對現(xiàn)有得唯一鍵記錄得重復(fù)得處理-控制格式fields 控制字段格式-終止-包裹-

37、轉(zhuǎn)義默認(rèn):fields terminated by t enclosed by ” escaped by 淥嶧綿漣輊驢氈。 term in ated by stri ng enclosed by char escaped by char-示例:INTOOUTFILE 7tmp/result、textBY , OPTIONALLY ENCLOSED BY 緒緗SELECT a,b,c+bFIELDS TERMINATED蟯節(jié)貓鰭單。BY nLINES TERMINATEDFROM test_table;lines控制行格式默認(rèn):lines terminated by n-終止term in at

38、ed by stri ng/* insert */ in sert插入。values ()括號內(nèi),提供給了按照列順序出現(xiàn)得所有select語句獲得得數(shù)據(jù)可以用 可以省略對列得指定,要求 字段得值?;蛘呤褂胹et語法。沖突時,更新其她非主鍵列得信息。 dup licate key up date 字段=值,;truncate就是刪除表再創(chuàng)建,delete就是逐條刪除 truncate 重置 auto_increment得值。而 delete不會 truncate不知道刪除了幾條,而delete知道。當(dāng)被用于帶分區(qū)得表時,truncate會保留分區(qū) 備份與還原*/ 備份,將數(shù)據(jù)得結(jié)構(gòu)與表內(nèi)數(shù)據(jù)保存

39、起來。 利用mysqldump指令完成。-導(dǎo)出導(dǎo)出一張表mysqldump -u 用戶名導(dǎo)出多張表mysqldump -u 用戶名導(dǎo)出所有表mysqldump -u 用戶名導(dǎo)出一個庫mysqldump -u 用戶名1、2、3、-p密碼-p密碼-p密碼-p密碼庫名庫名庫名表名 文件名(D:/a、sql)表1表2表3 文件名(D:/a、sql) 文件名(D:/a、sql)-B庫名 文件名(D:/a、sql)insert into tbl_name set field=value,、; 可以一次性使用多個值,采用(),(),();得形式。insert into tbl_name values (),

40、(),();可以在列值指定時,使用表達(dá)式。insert into tbl_name values (field_value, 10+10, now();鄔鐐涇齲遠(yuǎn)謬壘。 可以使用一個特殊值default,表示該列使用默認(rèn)值。default);鴟寧薔諢飛煒騮。insert into tbl_name values (field_value,可以通過一個查詢得結(jié)果,作為需要插入得值。insert into tbl_name select、; 可以指定在插入得值出現(xiàn)主鍵(或唯一索引)insert into tbl_name valuesfsetfselect on蠣騰蕩閎駱濺腦。/* delete

41、*/ DELETE FROM tbl_name WHERE where_definition ORDER BY、 LI MIT row_count毆誣閂瘞倫魚鋤。按照條件刪除指定刪除得最多記錄數(shù)。Limit 可以通過排序條件刪除。order by + limit 支持多表刪除,使用類似連接語法。delete from需要刪除數(shù)據(jù)多表1,表2 using表連接操作條件。/* truncate */ TRUNCATE TABLE tbl_name清空數(shù)據(jù)刪除重建表區(qū)別:1,2,3,4,/*4、可以-w攜帶備份條件-導(dǎo)入1、在登錄mysql得情況下:source備份文件2、在不登錄得情況下 mysq

42、l -u用戶名-p密碼 庫名 備份文件/*視圖*/ 什么就是視圖:視圖就是一個虛擬表,其內(nèi)容由查詢定義。同真實(shí)得表一樣,視圖包含一系 列帶有名稱得列與行數(shù)據(jù)。但就是,視圖并不在數(shù)據(jù)庫中以存儲得數(shù)據(jù)值集形式 存在。行與列數(shù)據(jù)來自由定義視圖得查詢所引用得表,并且在引用視圖時動態(tài)生 成。監(jiān)繾賴誡誑鎳圣。視圖具有表結(jié)構(gòu)文件,但不存在數(shù)據(jù)文件。對其中所引用得基礎(chǔ)表來說,視圖得作用類似于篩選。定義視圖得篩選可以 來自當(dāng)前或其它數(shù)據(jù)庫得一個或多個表, 或者其它視圖。通過視圖進(jìn)行查詢沒有 任何限制,通過它們進(jìn)行數(shù)據(jù)修改時得限制也很少。 鈺詵搗痹輕詢尋。視圖就是存儲在數(shù)據(jù)庫中得查詢得 sql語句,它主要出于兩種

43、原因:安全原 因,視圖可以隱藏一些數(shù)據(jù),如:社會保險基金表,可以用視圖只顯示姓名,地 址,而不顯示社會保險號與工資數(shù)等,另一原因就是可使復(fù)雜得查詢易于理解與 使用。磣軋獸視釃軫瓚。-創(chuàng)建視圖CREATE OR REP LACE ALGORITHM = UNDEFINED | MERGE | TEMP TABLE VIEW view_name (column_list) AS select_statemen詰艦鍾鱖當(dāng)繩浹。-視圖名必須唯一,同時不能與表重名。-視圖可以使用select語句查詢到得列名,也可以自己指定相應(yīng)得列名。-可以指定視圖執(zhí)行得算法,通過 ALGORITHM指定。-column

44、_list如果存在,則數(shù)目必須等于 SELECT語句檢索得列數(shù)-查瞧結(jié)構(gòu)SHOW CREATE VIEW view_name-刪除視圖-刪除視圖后,數(shù)據(jù)依然存在。-可同時刪除多個視圖。DROP VIEW IF EXISTS view_name、-修改視圖結(jié)構(gòu)-一般不修改視圖,因?yàn)椴痪褪撬械酶乱晥D都會映射到表上。ALTER VIEW view_name (column_list) AS select_statemen灄葒慘墉襲鯔鈦。-視圖作用1、簡化業(yè)務(wù)邏輯2、對客戶端隱藏真實(shí)得表結(jié)構(gòu)-視圖算法(ALGORITHM) MERGE合并將視圖得查詢語句,與外部查詢需要先合并再執(zhí)行!TEMP TA

45、BLE臨時表將視圖執(zhí)行完畢后,形成臨時表,再做外層查詢! UNDEFINED未定義(默認(rèn)),指得就是MySQL自主去選擇相應(yīng)得算法。/* 事務(wù)(transaction) */ 事務(wù)就是指邏輯上得一組操作,組成這組操作得各個單元,要不全成功要不全失 敗。-支持連續(xù)SQL得集體成功或集體撤銷。-事務(wù)就是數(shù)據(jù)庫在數(shù)據(jù)晚自習(xí)方面得一個功能。-需要利用InnoDB或BDB存儲引擎,對自動提交得特性支持完成。-InnoDB被稱為事務(wù)安全型引擎。-事務(wù)開啟START TRANSACTION ;或者 BEGIN;開啟事務(wù)后,所有被執(zhí)行得SQL語句均被認(rèn)作當(dāng)前事務(wù)內(nèi)得 SQL語句。 -事務(wù)提交COMMIT;-事

46、務(wù)回滾ROLLBACK ;如果部分操作發(fā)生問題,映射到事務(wù)開啟前。1、-事務(wù)得特性原子性(Atomicity)不發(fā)生。2、3、事務(wù)就是一個不可分割得工作單位,事務(wù)中得操作要么都發(fā)生,要么都一致性(Consistency)事務(wù)前后數(shù)據(jù)得完整性必須保持一致。-事務(wù)開始與結(jié)束時,外部數(shù)據(jù)一致-在整個事務(wù)過程中,操作就是連續(xù)得隔離性(Isolation)多個用戶并發(fā)訪問數(shù)據(jù)庫時,一個用戶得事務(wù)不能被其它用戶得事物所干擾,多個并發(fā)事務(wù)之間得數(shù)據(jù)要相互隔離。敘綈氈獲貳詫顴。4、持久性(Durability)一個事務(wù)一旦被提交,它對數(shù)據(jù)庫中得數(shù)據(jù)改變就就是永久性得。-事務(wù)得實(shí)現(xiàn)1、要求就是事務(wù)支持得表類型2

47、、執(zhí)行一組相關(guān)得操作前開啟事務(wù)3、整組操作完成后,都成功,則提交;如果存在失敗,選擇回滾,則會回 到事務(wù)開始得備份點(diǎn)。-事務(wù)得原理利用InnoDB得自動提交(autocommit)特性完成。普通得MySQL執(zhí)行語句后,當(dāng)前得數(shù)據(jù)提交操作均可被其她客戶端可見。 而事務(wù)就是暫時關(guān)閉 自動提交”機(jī)制,需要commit提交持久化數(shù)據(jù)操作。-注意數(shù)據(jù)定義語言(DDL )語句不能被回滾,比如創(chuàng)建或取消數(shù)據(jù)庫得語句, 取消或更改表或存儲得子程序得語句。鏑鱉顰棖頇?quán)愸?。事?wù)不能被嵌套-保存點(diǎn)1、與創(chuàng)建、2、SAVE POINT保存點(diǎn)名稱-設(shè)置一個事務(wù)保存點(diǎn)ROLLBACK TO SAVEPOINT保存點(diǎn)名稱-

48、回滾到保存點(diǎn)RELEASE SAVEPOINT 保存點(diǎn)名稱-刪除保存點(diǎn)-InnoDB自動提交特性設(shè)置SET autocommit = 0|1;0表示關(guān)閉自動提交,1表示開啟自動提交。-如果關(guān)閉了,那普通操作得結(jié)果對其她客戶端也不可見,需要commit提交后才能持久化數(shù)據(jù)操作。-也可以關(guān)閉自動提交來開啟事務(wù)。但與START TRANSACTION不同得就 是,SET autocommit就是永久改變服務(wù)器得設(shè)置,直到下次再次修改該設(shè) 置。(針對當(dāng)前連接)而START TRANSACTION記錄開啟前得狀態(tài),而一旦事務(wù)提交或回 滾后就需要再次開啟事務(wù)。(針對當(dāng)前事務(wù))勱詳郟穌鵲則攙。/*鎖表*/表

49、鎖定只用于防止其它客戶端進(jìn)行不正當(dāng)?shù)刈x取與寫入MyISAM支持表鎖,InnoDB支持行鎖-鎖定LOCK TABLES tbl_name AS alias-解鎖UNLOCK TABLES/*觸發(fā)器*/ 觸發(fā)程序就是與表有關(guān)得命名數(shù)據(jù)庫對象,當(dāng)該表出現(xiàn)特定事件時,將激活該對象監(jiān)聽:記錄得增加、修改、刪除。-創(chuàng)建觸發(fā)器CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt賚綺絲開巹鵬膾。after,以指明參數(shù): trigger_time就是觸發(fā)程序得動作時間。它可以就是b

50、efore或 觸發(fā)程序就是在激活它得語句之前或之后觸發(fā)。緒蟶補(bǔ)紼莖谫諜。TEMPORAtrigger_eve nt指明了激活觸發(fā)程序得語句得類型 INSERT :將新行插入表時激活觸發(fā)程序 UP DATE :更改某一行時激活觸發(fā)程序 DELETE:從表中刪除某一行時激活觸發(fā)程序 tbl_name:監(jiān)聽得表,必須就是永久性得表,不能將觸發(fā)程序與 RY表或視圖關(guān)聯(lián)起來。N、trigger_stmt:當(dāng)觸發(fā)程序激活時執(zhí)行得語句。執(zhí)行多個語句,可使用 BEGI 、END復(fù)合語句結(jié)構(gòu) 嶗鋮鯫總軛賴奮。-刪除 DROP TRIGGER schema_name trigger_name更新前就是old,更新

51、后就是new、只有old、只有new、可以使用old與new代替I舊得與新得數(shù)據(jù) 更新操作, 刪除操作, 增加操作,-注意1、對于具有相同觸發(fā)程序動作時間與事件得給定表,不能有兩個觸發(fā)程序。-字符連接函數(shù)concat(stM, str2,、)-分支語句if條件then執(zhí)行語句elseif 條件 then執(zhí)行語句else執(zhí)行語句end if;-修改最外層語句結(jié)束符delimiter自定義結(jié)束符號SQL語句自定義結(jié)束符號delimiter ;-修改回原來得分號-語句塊包裹begi n語句塊end-特殊得執(zhí)行1、只要添加記錄,就會觸發(fā)程序。2、In sert in to on dup licate

52、key up date 語法會觸發(fā):如果沒有重復(fù)記錄,會觸發(fā) before insert, after insert;女口果有重復(fù)記錄并更新,會觸發(fā)before in sert, before up date after up date;錯埡騮襲駱讕縈。如果有重復(fù)記錄但就是沒有發(fā)生更新,則觸發(fā) before in sert, before up date 3、 Repl ace 語法 女口果有記錄,貝 U執(zhí)行 before in sert, before delete after delete after in sert嚦錘銼頑鄴獸鈦。/* SQL 編程 */ -/局部變量 -變量聲明declare var_namg,、 type default value這個語句被用來聲明局部變量。要給變量提供一個默認(rèn)值,請包含一個default子句。值可以被指定為一個表達(dá)式,不需要為一個常數(shù)。如果沒有default子句,初始值為null。虯嗆儈損輒篳驪。-賦值使用set與select into語句為變量賦值。-注意:在函數(shù)內(nèi)就是可以使用全局變量(用戶自定義得變量)-/全局變量-定義、賦值set語句可以定義并為變量賦值。set var = value;也可以使用select into語句為變量初始化并賦值。這樣要求 select語句只能返回 一行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論