【MySQL 02】數據庫總結

?

【MySQL 02】數據庫總結

/*?啟動MySQL?*/net?start?mysql/*?連接與斷開服務器?*/mysql?-h?地址?-P?端口?-u?用戶名?-p?密碼/*?跳過權限驗證登錄MySQL?*/mysqld?--skip-grant-tables  --?修改root密碼密碼加密函數password()  update?mysql.user?set?password=password('root');    SHOW?PROCESSLIST?--?顯示哪些線程正在運行  SHOW?VARIABLES?--?  /*?數據庫操作?*/?--------------------?查看當前數據庫????select?database();  --?顯示當前時間、用戶名、數據庫版本????select?now(),?user(),?version();  --?創建庫????create?database[?if?not?exists]?數據庫名?數據庫選項  ????數據庫選項:  ????????CHARACTER?SET?charset_name  ????????COLLATE?collation_name  --?查看已有庫????show?databases[?like?'pattern']  --?查看當前庫信息????show?create?database?數據庫名  --?修改庫的選項信息????alter?database?庫名?選項信息  --?刪除庫????drop?database[?if?exists]?數據庫名  ????????同時刪除該數據庫相關的目錄及其目錄內容/*?表的操作?*/?--------------------?創建表????create?[temporary]?table[?if?not?exists]?[庫名.]表名?(?表的結構定義?)[?表選項]  ????????每個字段必須有數據類型  ????????最后一個字段后不能有逗號  ????????temporary?臨時表,會話結束時表自動消失  ????????對于字段的定義:  ????????????字段名?數據類型?[NOT?NULL?|?NULL]?[DEFAULT?default_value]?[AUTO_INCREMENT]?[UNIQUE?[KEY]?|?[PRIMARY]?KEY]?[COMMENT?'string']  --?表選項????--?字符集????????CHARSET?=?charset_name  ????????如果表沒有設定,則使用數據庫字符集  ????--?存儲引擎????????ENGINE?=?engine_name????  ????????表在管理數據時采用的不同的數據結構,結構不同會導致處理方式、提供的特性操作等不同  ????????常見的引擎:InnoDB?MyISAM?Memory/Heap?BDB?Merge?Example?CSV?MaxDB?Archive  ????????不同的引擎在保存表的結構和數據時采用不同的方式  ????????MyISAM表文件含義:.frm表定義,.MYD表數據,.MYI表索引  ????????InnoDB表文件含義:.frm表定義,表空間數據和日志文件  ????????SHOW?ENGINES?--?顯示存儲引擎的狀態信息  ????????SHOW?ENGINE?引擎名?{LOGS|STATUS}?--?顯示存儲引擎的日志或狀態信息  ????--?數據文件目錄????????DATA?DIRECTORY?=?'目錄'  ????--?索引文件目錄????????INDEX?DIRECTORY?=?'目錄'  ????--?表注釋????????COMMENT?=?'string'  ????--?分區選項????????PARTITION?BY?...?(詳細見手冊)  --?查看所有表????SHOW?TABLES[?LIKE?'pattern']  ????SHOW?TABLES?FROM?表名  --?查看表機構????SHOW?CREATE?TABLE?表名????(信息更詳細)  ????DESC?表名?/?DESCRIBE?表名?/?EXPLAIN?表名?/?SHOW?COLUMNS?FROM?表名?[LIKE?'PATTERN']  ????SHOW?TABLE?STATUS?[FROM?db_name]?[LIKE?'pattern']  --?修改表????--?修改表本身的選項????????ALTER?TABLE?表名?表的選項  ????????EG:????ALTER?TABLE?表名?ENGINE=MYISAM;  ????--?對表進行重命名????????RENAME?TABLE?原表名?TO?新表名  ????????RENAME?TABLE?原表名?TO?庫名.表名????(可將表移動到另一個數據庫)  ????????--?RENAME可以交換兩個表名????--?修改表的字段機構????????ALTER?TABLE?表名?操作名  ????????--?操作名????????????ADD[?COLUMN]?字段名????????--?增加字段  ????????????????AFTER?字段名????????????--?表示增加在該字段名后面  ????????????????FIRST????????????????--?表示增加在第一個  ????????????ADD?PRIMARY?KEY(字段名)????--?創建主鍵  ????????????ADD?UNIQUE?[索引名]?(字段名)--?創建唯一索引  ????????????ADD?INDEX?[索引名]?(字段名)????--?創建普通索引  ????????????ADD?  ????????????DROP[?COLUMN]?字段名????????--?刪除字段  ????????????MODIFY[?COLUMN]?字段名?字段屬性????????--?支持對字段屬性進行修改,不能修改字段名(所有原有屬性也需寫上)  ????????????CHANGE[?COLUMN]?原字段名?新字段名?字段屬性????????--?支持對字段名修改  ????????????DROP?PRIMARY?KEY????--?刪除主鍵(刪除主鍵前需刪除其AUTO_INCREMENT屬性)  ????????????DROP?INDEX?索引名????--?刪除索引  ????????????DROP?FOREIGN?KEY?外鍵????--?刪除外鍵    --?刪除表????DROP?TABLE[?IF?EXISTS]?表名?...  --?清空表數據????TRUNCATE?[TABLE]?表名  --?復制表結構????CREATE?TABLE?表名?LIKE?要復制的表名  --?復制表結構和數據????CREATE?TABLE?表名?[AS]?SELECT?*?FROM?要復制的表名  --?檢查表是否有錯誤????CHECK?TABLE?tbl_name?[,?tbl_name]?...?[option]?...  --?優化表????OPTIMIZE?[LOCAL?|?NO_WRITE_TO_BINLOG]?TABLE?tbl_name?[,?tbl_name]?...  --?修復表????REPAIR?[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]?.../*?數據操作?*/?--------------------?  增????INSERT?[INTO]?表名?[(字段列表)]?VALUES?(值列表)[,?(值列表),?...]  ????????--?如果要插入的值列表包含所有字段并且順序一致,則可以省略字段列表。????????--?可同時插入多條數據記錄!????????REPLACE?與?INSERT?完全一樣,可互換。  ????INSERT?[INTO]?表名?SET?字段名=值[,?字段名=值,?...]  --?查????SELECT?字段列表?FROM?表名[?其他子句]  ????????--?可來自多個表的多個字段????????--?其他子句可以不使用????????--?字段列表可以用*代替,表示所有字段--?刪????DELETE?FROM?表名[?刪除條件子句]  ????????沒有條件子句,則會刪除全部  --?改????UPDATE?表名?SET?字段名=新值[,?字段名=新值]?[更新條件]/*?字符集編碼?*/?--------------------?MySQL、數據庫、表、字段均可設置編碼--?  數據編碼與客戶端編碼不需一致SHOW?VARIABLES?LIKE?'character_set_%'????--?查看所有字符集編碼項  ????character_set_client????????客戶端向服務器發送數據時使用的編碼  ????character_set_results????????服務器端將結果返回給客戶端所使用的編碼  ????character_set_connection????連接層編碼  SET?變量名?=?變量值  ????set?character_set_client?=?gbk;  ????set?character_set_results?=?gbk;  ????set?character_set_connection?=?gbk;  SET?NAMES?GBK;????--?相當于完成以上三個設置  --?校對集????校對集用以排序  ????SHOW?CHARACTER?SET?[LIKE?'pattern']/SHOW?CHARSET?[LIKE?'pattern']????查看所有字符集  ????SHOW?COLLATION?[LIKE?'pattern']????????查看所有校對集  ????charset?字符集編碼????????設置字符集編碼  ????collate?校對集編碼????????設置校對集編碼/*?數據類型(列類型)?*/?------------------1.?數值類型  --?a.?整型?----------????類型????????????字節????????范圍(有符號位)  ????tinyint????????1字節????-128?~?127????????無符號位:0?~?255  ????smallint????2字節????-32768?~?32767  ????mediumint????3字節????-8388608?~?8388607  ????int????????????4字節  ????bigint????????8字節    ????int(M)????M表示總位數  ????-?默認存在符號位,unsigned?屬性修改????-?顯示寬度,如果某個數不夠定義字段時設置的位數,則前面以0補填,zerofill?屬性修改????????  例:int(5)????插入一個數'123',補填后為'00123'  ????-?在滿足要求的情況下,越小越好。????-?1表示bool值真,0表示bool值假。MySQL沒有布爾類型,通過整型0和1表示。  常用tinyint(1)表示布爾型。--?b.?浮點型?----------????類型????????????????字節????????范圍  ????float(單精度)????????4字節  ????double(雙精度)????8字節  ????浮點型既支持符號位?unsigned?屬性,也支持顯示寬度?zerofill?屬性。  ????????不同于整型,前后均會補填0.  ????定義浮點型時,需指定總位數和小數位數。  ????????float(M,?D)????????double(M,?D)  ????????M表示總位數,D表示小數位數。  ????????M和D的大小會決定浮點數的范圍。不同于整型的固定范圍。  ????????M既表示總位數(不包括小數點和正負號),也表示顯示寬度(所有顯示符號均包括)。  ????????支持科學計數法表示。  ????????浮點數表示近似值。    --?c.?定點數?----------????decimal????--?可變長度  ????decimal(M,?D)????M也表示總位數,D表示小數位數。  ????保存一個精確的數值,不會發生數據的改變,不同于浮點數的四舍五入。  ????將浮點數轉換為字符串來保存,每9位數字保存為4個字節。    2.?字符串類型  --?a.?char,?varchar?----------????char????定長字符串,速度快,但浪費空間  ????varchar????變長字符串,速度慢,但節省空間  ????M表示能存儲的最大長度,此長度是字符數,非字節數。  ????不同的編碼,所占用的空間不同。  ????char,最多255個字符,與編碼無關。  ????varchar,最多65535字符,與編碼有關。  ????一條有效記錄最大不能超過65535個字節。  ????????utf8?最大為21844個字符,gbk?最大為32766個字符,latin1?最大為65532個字符  ????varchar?是變長的,需要利用存儲空間保存?varchar?的長度,如果數據小于255個字節,則采用一個字節來保存長度,反之需要兩個字節來保存。  ????varchar?的最大有效長度由最大行大小和使用的字符集確定。  ????最大有效長度是65532字節,因為在varchar存字符串時,第一個字節是空的,不存在任何數據,然后還需兩個字節來存放字符串的長度,所以有效長度是64432-1-2=65532字節。  ????例:若一個表定義為?CREATE?TABLE?tb(c1?int,?c2?char(30),?c3?varchar(N))?charset=utf8;?問N的最大值是多少??答:(65535-1-2-4-30*3)/3    --?b.?blob,?text?----------????blob?二進制字符串(字節字符串)  ????????tinyblob,?blob,?mediumblob,?longblob  ????text?非二進制字符串(字符字符串)  ????????tinytext,?text,?mediumtext,?longtext  ????text?在定義時,不需要定義長度,也不會計算總長度。  ????text?類型在定義時,不可給default值    --?c.?binary,?varbinary?----------????類似于char和varchar,用于保存二進制字符串,也就是保存字節字符串而非字符字符串。  ????char,?varchar,?text?對應?binary,?varbinary,?blob.    3.?日期時間類型  ????一般用整型保存時間戳,因為PHP可以很方便的將時間戳進行格式化。  ????datetime????8字節????日期及時間????????1000-01-01?00:00:00?到?9999-12-31?23:59:59  ????date????????3字節????日期????????????1000-01-01?到?9999-12-31  ????timestamp????4字節????時間戳????????19700101000000?到?2038-01-19?03:14:07  ????time????????3字節????時間????????????-838:59:59?到?838:59:59  ????year????????1字節????年份????????????1901?-?2155    datetime????“YYYY-MM-DD?hh:mm:ss”  timestamp????“YY-MM-DD?hh:mm:ss”  ????????????“YYYYMMDDhhmmss”  ????????????“YYMMDDhhmmss”  ????????????YYYYMMDDhhmmss  ????????????YYMMDDhhmmss  date????????“YYYY-MM-DD”  ????????????“YY-MM-DD”  ????????????“YYYYMMDD”  ????????????“YYMMDD”  ????????????YYYYMMDD  ????????????YYMMDD  time????????“hh:mm:ss”  ????????????“hhmmss”  ????????????hhmmss  year????????“YYYY”  ????????????“YY”  ????????????YYYY  ????????????YY    4.?枚舉和集合  --?枚舉(enum)?----------enum(val1,?val2,?val3...)  ????在已知的值中進行單選。最大數量為65535.  ????枚舉值在保存時,以2個字節的整型(smallint)保存。每個枚舉值,按保存的位置順序,從1開始逐一遞增。  ????表現為字符串類型,存儲卻是整型。  ????NULL值的索引是NULL。  ????空字符串錯誤值的索引值是0。    --?集合(set)?----------set(val1,?val2,?val3...)  ????create?table?tab?(?gender?set('男',?'女',?'無')?);  ????insert?into?tab?values?('男,?女');  ????最多可以有64個不同的成員。以bigint存儲,共8個字節。采取位運算的形式。  ????當創建表時,SET成員值的尾部空格將自動被刪除。/*?選擇類型?*/--?PHP角度1.?功能滿足  2.?存儲空間盡量小,處理效率更高  3.?考慮兼容問題    --?IP存儲?----------1.?只需存儲,可用字符串  2.?如果需計算,查找等,可存儲為4個字節的無符號int,即unsigned  ????1)?PHP函數轉換  ????????ip2long可轉換為整型,但會出現攜帶符號問題。需格式化為無符號的整型。  ????????利用sprintf函數格式化字符串  ????????sprintf("%u",?ip2long('192.168.3.134'));  ????????然后用long2ip將整型轉回IP字符串  ????2)?MySQL函數轉換(無符號整型,UNSIGNED)  ????????INET_ATON('127.0.0.1')?將IP轉為整型  ????????INET_NTOA(2130706433)?將整型轉為IP/*?列屬性(列約束)?*/?------------------1.?主鍵  ????-?能唯一標識記錄的字段,可以作為主鍵。????-?一個表只能有一個主鍵。????-?主鍵具有唯一性。????-?聲明字段時,用?primary?key?標識。????????  也可以在字段列表之后聲明  ????????????例:create?table?tab?(?id?int,?stu?varchar(10),?primary?key?(id));  ????-?主鍵字段的值不能為null。????-?主鍵可以由多個字段共同組成。此時需要在字段列表后聲明的方法。????????  例:create?table?tab?(?id?int,?stu?varchar(10),?age?int,?primary?key?(stu,?age));    2.?unique?唯一索引(唯一約束)  ????使得某字段的值也不能重復。    3.?null?約束  ????null不是數據類型,是列的一個屬性。  ????表示當前列是否可以為null,表示什么都沒有。  ????null,?允許為空。默認。  ????not?null,?不允許為空。  ????insert?into?tab?values?(null,?'val');  ????????--?此時表示將第一個字段的值設為null,?取決于該字段是否允許為null4.?default?默認值屬性  ????當前字段的默認值。  ????insert?into?tab?values?(default,?'val');????--?此時表示強制使用默認值。  ????create?table?tab?(?add_time?timestamp?default?current_timestamp?);  ????????--?表示將當前時間的時間戳設為默認值。????????current_date,?current_time    5.?auto_increment?自動增長約束  ????自動增長必須為索引(主鍵或unique)  ????只能存在一個字段為自動增長。  ????默認為1開始自動增長??梢酝ㄟ^表屬性?auto_increment?=?x進行設置,或?alter?table?tbl?auto_increment?=?x;    6.?comment?注釋  ????例:create?table?tab?(?id?int?)?comment?'注釋內容';    7.?foreign?key?外鍵約束  ????用于限制主表與從表數據完整性。  ????alter?table?t1?add?constraint?`t1_t2_fk`?foreign?key?(t1_id)?references?t2(id);  ????????--?將表t1的t1_id外鍵關聯到表t2的id字段。????????--?每個外鍵都有一個名字,可以通過?constraint?指定  ????存在外鍵的表,稱之為從表(子表),外鍵指向的表,稱之為主表(父表)。    ????作用:保持數據一致性,完整性,主要目的是控制存儲在外鍵表(從表)中的數據。    ????MySQL中,可以對InnoDB引擎使用外鍵約束:  ????語法:  ????foreign?key?(外鍵字段)?references?主表名?(關聯字段)?[主表記錄刪除時的動作]?[主表記錄更新時的動作]  ????此時需要檢測一個從表的外鍵需要約束為主表的已存在的值。外鍵在沒有關聯的情況下,可以設置為null.前提是該外鍵列,沒有not?null。    ????可以不指定主表記錄更改或更新時的動作,那么此時主表的操作被拒絕。  ????如果指定了?on?update?或?on?delete:在刪除或更新時,有如下幾個操作可以選擇:  ????1.?cascade,級聯操作。主表數據被更新(主鍵值更新),從表也被更新(外鍵值更新)。主表記錄被刪除,從表相關記錄也被刪除。  ????2.?set?null,設置為null。主表數據被更新(主鍵值更新),從表的外鍵被設置為null。主表記錄被刪除,從表相關記錄外鍵被設置成null。  但注意,要求該外鍵列,沒有not?null屬性約束。  ????3.?restrict,拒絕父表刪除和更新。    ????注意,外鍵只被InnoDB存儲引擎所支持。其他引擎是不支持的。/*?建表規范?*/?------------------  ????--?Normal?Format,?NF????????-?每個表保存一個實體信息????????-?每個具有一個ID字段作為主鍵????????-?ID主鍵?+?原子表???--?1NF,?第一范式?  字段不能再分,就滿足第一范式。  ????--?2NF,?第二范式????????滿足第一范式的前提下,不能出現部分依賴。  ????????消除符合主鍵就可以避免部分依賴。增加單列關鍵字。  ????--?3NF,?第三范式????????滿足第二范式的前提下,不能出現傳遞依賴。  ????????某個字段依賴于主鍵,而有其他字段依賴于該字段。這就是傳遞依賴。  ????????將一個實體信息的數據放在一個表內實現。/*?select?*/?------------------select?[all|distinct]?select_expr?from?-&gt;?where?-&gt;?group?by?[合計函數]?  -&gt;?having?-&gt;?order?by?-&gt;?limit    a.?select_expr  ????--?可以用?*?表示所有字段。????????select?*?from?tb;  ????--?可以使用表達式(計算公式、函數調用、字段也是個表達式)????????select?stu,?29+25,?now()?from?tb;  ????--?可以為每個列使用別名。適用于簡化列標識,避免多個列標識符重復。????????-?使用?as?關鍵字,也可省略?as.????????select?stu+10?as?add10?from?tb;    b.?from?子句  ????用于標識查詢來源。  ????--?可以為表起別名。使用as關鍵字。????????select?*?from?tb1?as?tt,?tb2?as?bb;  ????--?from子句后,可以同時出現多個表。????????--?多個表會橫向疊加到一起,而數據會形成一個笛卡爾積。????????select?*?from?tb1,?tb2;    c.?where?子句  ????--?從from獲得的數據源中進行篩選。????--?整型1表示真,0表示假。????--?表達式由運算符和運算數組成。????????--?運算數:變量(字段)、值、函數返回值????????  --?運算符:????????????=,?,?,?!=,?=,?&gt;,?!,?&amp;&amp;,?||,?  ????????????in?(not)?null,?(not)?like,?(not)?in,?(not)?between?and,?is?(not),?and,?or,?not,?xor  ????????????is/is?not?加上ture/false/unknown,檢驗某個值的真假  ????????????與功能相同,可用于null比較    d.?group?by?子句,?分組子句  ????group?by?字段/別名?[排序方式]  ????分組后會進行排序。升序:ASC,降序:DESC    ????以下[合計函數]需配合?group?by?使用:  ????count?返回不同的非NULL值數目????count(*)、count(字段)  ????sum?求和  ????max?求最大值  ????min?求最小值  ????avg?求平均值  ????group_concat?返回帶有來自一個組的連接的非NULL值的字符串結果。組內字符串連接。    e.?having?子句,條件子句  ????與?where?功能、用法相同,執行時機不同。  ????where?在開始時執行檢測數據,對原數據進行過濾。  ????having?對篩選出的結果再次進行過濾。  ????having?字段必須是查詢出來的,where?字段必須是數據表存在的。  ????where?不可以使用字段的別名,having?可以。因為執行WHERE代碼時,可能尚未確定列值。  ????where?不可以使用合計函數。一般需用合計函數才會用?having  ????SQL標準要求HAVING必須引用GROUP?BY子句中的列或用于合計函數中的列。    f.?order?by?子句,排序子句  ????order?by?排序字段/別名?排序方式?[,排序字段/別名?排序方式]...  ????升序:ASC,降序:DESC  ????支持多個字段的排序。    g.?limit?子句,限制結果數量子句  ????僅對處理好的結果進行數量限制。將處理好的結果的看作是一個集合,按照記錄出現的順序,索引從0開始。  ????limit?起始位置,?獲取條數  ????省略第一個參數,表示從索引0開始。limit?獲取條數    h.?distinct,?all?選項  ????distinct?去除重復記錄  ????默認為?all,?全部記錄/*?UNION?*/?------------------  ????將多個select查詢的結果組合成一個結果集合。  ????SELECT?...?UNION?[ALL|DISTINCT]?SELECT?...  ????默認?DISTINCT?方式,即所有返回的行都是唯一的  ????建議,對每個SELECT查詢加上小括號包裹。  ????ORDER?BY?排序時,需加上?LIMIT?進行結合。  ????需要各select查詢的字段數量一樣。  ????每個select查詢的字段列表(數量、類型)應一致,因為結果中的字段名以第一條select語句為準。/*?子查詢?*/?------------------  ????-?子查詢需用括號包裹。--?from型????from后要求是一個表,必須給子查詢結果取個別名。  ????-?簡化每個查詢內的條件。????-?from型需將結果生成一個臨時表格,可用以原表的鎖定的釋放。????-?子查詢返回一個表,表型子查詢。????  select?*?from?(select?*?from?tb?where?id&gt;0)?as?subfrom?where?id&gt;1;  --?where型????-?子查詢返回一個值,標量子查詢。????-?不需要給子查詢取別名。????-?where子查詢內的表,不能直接用以更新。????  select?*?from?tb?where?money?=?(select?max(money)?from?tb);  ????--?列子查詢????????如果子查詢結果返回的是一列。  ????????使用?in?或?not?in?完成查詢  ????????exists?和?not?exists?條件  ????????????如果子查詢返回數據,則返回1或0。常用于判斷條件。  ????????????select?column1?from?t1?where?exists?(select?*?from?t2);  ????--?行子查詢????????查詢條件是一個行。  ????????select?*?from?t1?where?(id,?gender)?in?(select?id,?gender?from?t2);  ????????行構造符:(col1,?col2,?...)?或?ROW(col1,?col2,?...)  ????????行構造符通常用于與對能返回兩個或兩個以上列的子查詢進行比較。    ????--?特殊運算符????!=?all()????相當于?not?in????=?some()????相當于?in。any?是?some?的別名????!=?some()????不等同于?not?in,不等于其中某一個。????  all,?some?可以配合其他運算符一起使用。/*?連接查詢(join)?*/?------------------  ????將多個表的字段進行連接,可以指定連接條件。  --?內連接(inner?join)????-?默認就是內連接,可省略inner。????-?只有數據存在時才能發送連接。即連接結果不能出現空行。????  on?表示連接條件。其條件表達式與where類似。也可以省略條件(表示條件永遠為真)  ????也可用where表示連接條件。  ????還有?using,?但需字段名相同。?using(字段名)    ????--?交叉連接?cross?join????????即,沒有條件的內連接。  ????????select?*?from?tb1?cross?join?tb2;  --?外連接(outer?join)????-?如果數據不存在,也會出現在連接結果中。????--?左外連接?left?join????????如果數據不存在,左表記錄會出現,而右表為null填充  ????--?右外連接?right?join????????如果數據不存在,右表記錄會出現,而左表為null填充  --?自然連接(natural?join)????自動判斷連接條件完成連接。  ????相當于省略了using,會自動查找相同字段名。  ????natural?join  ????natural?left?join  ????natural?right?join    select?info.id,?info.name,?info.stu_num,?extra_info.hobby,?extra_info.sex?from?info,?extra_info?where?info.stu_num?=?extra_info.stu_id;/*?導入導出?*/  ?------------------select?*?into?outfile?文件地址?[控制格式]?from?表名;????--?導出表數據  load?data?[local]?infile?文件地址?[replace|ignore]?into?table?表名?[控制格式];????--?導入數據  ????生成的數據默認的分隔符是制表符  ????local未指定,則數據文件必須在服務器上  ????replace?和?ignore?關鍵詞控制對現有的唯一鍵記錄的重復的處理  --?控制格式fields????控制字段格式  默認:fields?terminated?by?'	'?enclosed?by?''?escaped?by?''  ????terminated?by?'string'????--?終止  ????enclosed?by?'char'????????--?包裹  ????escaped?by?'char'????????--?轉義  ????--?示例:????????SELECT?a,b,a+b?INTO?OUTFILE?'/tmp/result.text'  ????????FIELDS?TERMINATED?BY?','?OPTIONALLY?ENCLOSED?BY?'"'  ????????LINES?TERMINATED?BY?' '  ????????FROM?test_table;  lines????控制行格式  默認:lines?terminated?by?' '  ????terminated?by?'string'????--?終止/*?insert?*/?------------------select語句獲得的數據可以用insert插入。    可以省略對列的指定,要求?values?()?括號內,提供給了按照列順序出現的所有字段的值。  ????或者使用set語法。  ????insert?into?tbl_name?set?field=value,...;    可以一次性使用多個值,采用(),?(),?();的形式。  ????insert?into?tbl_name?values?(),?(),?();    可以在列值指定時,使用表達式。  ????insert?into?tbl_name?values?(field_value,?10+10,?now());  可以使用一個特殊值?default,表示該列使用默認值。  ????insert?into?tbl_name?values?(field_value,?default);    可以通過一個查詢的結果,作為需要插入的值。  ????insert?into?tbl_name?select?...;    可以指定在插入的值出現主鍵(或唯一索引)沖突時,更新其他非主鍵列的信息。  ????insert?into?tbl_name?values/set/select?on?duplicate?key?update?字段=值,?…;/*?delete?*/?------------------DELETE?FROM?tbl_name?[WHERE?where_definition]?  [ORDER?BY?...]?[LIMIT?row_count]    按照條件刪除    指定刪除的最多記錄數。Limit    可以通過排序條件刪除。order?by?+?limit    支持多表刪除,使用類似連接語法。  delete?from?需要刪除數據多表1,表2?using?表連接操作?條件。/*?truncate?*/?------------------TRUNCATE?[TABLE]?tbl_name  清空數據  刪除重建表    區別:  1,truncate?是刪除表再創建,delete?是逐條刪除  2,truncate?重置auto_increment的值。而delete不會  3,truncate?不知道刪除了幾條,而delete知道。  4,當被用于帶分區的表時,truncate?會保留分區/*?備份與還原?*/?------------------備份,將數據的結構與表內數據保存起來。  利用?mysqldump?指令完成。    --?導出1.?導出一張表    mysqldump?-u用戶名?-p密碼?庫名?表名?&gt;?文件名(D:/a.sql)  2.?導出多張表    mysqldump?-u用戶名?-p密碼?庫名?表1?表2?表3?&gt;?文件名(D:/a.sql)  3.?導出所有表    mysqldump?-u用戶名?-p密碼?庫名?&gt;?文件名(D:/a.sql)  4.?導出一個庫?    mysqldump?-u用戶名?-p密碼?-B?庫名?&gt;?文件名(D:/a.sql)    可以-w攜帶備份條件    --?導入1.?在登錄mysql的情況下:    source??備份文件  2.?在不登錄的情況下    mysql?-u用戶名?-p密碼?庫名?<p>以上就是?【MySQL 02】數據庫總結的內容,更多相關內容請關注PHP中文網(www.php.cn)!</p>
? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享