1. 程式人生 > 其它 >計算機二級mysql資料庫

計算機二級mysql資料庫

計算機二級mysql資料庫 I、基礎知識 一)、資料庫的建立與使用 1.建立資料庫:createdatabase資料庫名字; 2.選擇資料庫:use資料庫名字; 3.修改資料庫:alterdatabase資料庫名字defaultcharacterset字符集名字defaultcollate校對規則名字; -----設定預設字符集和預設校對規則 4.刪除資料庫:dropdatabase ifexists資料庫名字;----ifexists判斷資料庫在不在 5.檢視所有資料庫:showdatabaseslike “模糊查詢”;---可以用like進行模糊查詢 二)建立和操作表 1.建立表:createtable表1(欄位1資料型別auto_increment primarykey ,欄位2資料型別 not null default預設值 ,constraint 外來鍵起名字 foreignkey (表1外來鍵名) references表2(表2主鍵名)ondeleterestrictonupdatecascade)engine=innodb;----格式:(欄位名 資料型別可選引數)----temporary:建立臨時表----float浮點型----engine=innodb為選用引擎-----限制策略:restrict、cascade ------check(屬性in (select....))約束放在建立表括號內最後,前面沒有逗號,檢查取值範圍----constraint命名完整性約束 2.更新表:altertable 2.1)新增欄位字句ADD子句:altertable資料表名addcolumn新增的列名資料型別notnull可選引數 after列名,addcolumn......修改多列;----after是放到什麼名之後 2.2)同時修改列名和資料型別:altertable資料表changecolumn原列名新列名資料型別null 可選引數,changecolumn....; 2.3)修改或刪除表中放入指定列預設值:altertable資料表altercolumn列名setdefault預設值; 2.4)只修改資料表的資料型別:altertable資料表modifycolumn修改的列名資料型別first;-----first為放在第一列 2.5)刪除列:altertable資料表名dropcolumn刪除的列名; 2.6)重命名錶名:altertable原表名renameto新表名;第二種方式:或者:renametable原表名to新表名; 3.複製表:createtable新表名like複製的原表名;---只複製表結構,不復制資料 ;用as複製資料內容 4.刪除表:droptableifexists表名; 5.檢視所有表:showtables; 5.1)查看錶結構:showcolumnfrom表名;或者desc表名; 6.刪除完整性約束:alter table表名dropconstraint約束名字; 三)插入、刪除、修改資料的方法 1.插入資料:insertinto表名(屬性1,屬性2,...)values(屬性1的值,屬性2的值.....),......插入多行直接加逗號隔開; 1.1)insertinto表名 values (該列的所有值用逗號隔開) 1.2) insertinto表名set屬性1=值,屬性2=值,.....; 1.3)資料合併到表中:insertinto表名 (屬性1,屬性2....)select屬性1,屬性2......from複製的表; 1.4)插入的值跟主鍵有衝突的:replaceinto表名 (屬性1,屬性2,....)values(值1,值2,.......);-----原理是做替換 2.刪除資料:deletefrom表名where條件; 2.1)刪除多個表:delete表1,表2from表1,表2,表3fromwhere ;-----delete後面是刪除了那幾張表的資料----from後面是跟那些表有關係 3.修改資料:update表名set屬性1=值,屬性2=值where條件; 3.1)修改多個表:update表1,表2set表1.屬性1=值,表二.屬性2=值 where條件; 4.查詢資料:select查詢的屬性from表名where屬性=屬性值groupby需要分組的欄位having分組進行篩選order by排序limit選行----distinct去除重複 4.1)替換查詢結果集中的資料:select屬性1,屬性2casewhen屬性2=值then值的別名1 else值的別名2endas屬性的別名from表名; ----when...then可一直疊加判斷 4.2)常用的函式:count:計數 max:最大值 min:最小值sum:求和avg:平均值 ---- #為轉義字元 escape為宣告轉義字元 4.3)like為字串匹配 regexp為文字匹配後者不需要用%;文字匹配可以用管道符,意思為滿足任意一個條件即可選出 ; 4.4)判斷範圍:between...and 、in 判定空值:isnull 4.5)巢狀查詢多表:select屬性值1,屬性值2 from表1where屬性3in(select屬性3from表2where屬性4=屬性值) 4.6)分組:select欄位from表名groupby需要分組的屬性;----題目涉及彙總的題目直接加withrollup 4.7)having子句:必須與groupby一起使用用於過濾分組可以跟函式 4.8)orderby子句:排序asc升序 desc降序 4.9)limit子句:limit (從哪裡開始選,返回的多少行) 四)索引 1.建立索引:createindex索引的名字可選using用什麼方式on表名(列名asc);
1.1)建立表時建立索引createtable表名(欄位型別限制,...... ,primarykey(欄位),index索引名字(欄位) ); 1.2)修改表的時候建立索引:altertable表名addindex索引名字(列名);---唯一索引uniqueidnex 2.檢視索引:showindexfrom表名 3.刪除索引:dropindex刪除的索引名on表名 3.1)altertable表名drop index 索引名 五)檢視 1.建立檢視:createview檢視名字asselect 選的列from表 withcheckoption ; ---withcheckoption保證今後對檢視的修改滿足條件 2.刪除檢視:dropview檢視名字; 3.修改檢視:alterview檢視名asselect..... 4.檢視檢視:showcreateview檢視名; 六)表維護語句 1.更新、修復索引的雜湊程度:analyzetable表名; 2.檢查多個表或者一個表是否有錯誤:checktable表名; 3.保證資料一致:checksumtable表名; 4.重新利用未使用的空間,整理資料檔案的碎片:optimizetable表名; 5.修復多個或者一個損壞的表:repairtable表名; 七)觸發器 1.建立觸發器:createtrigger觸發器的名字觸發器的時間觸發器的事件 on表名foreachrow set @str=‘值的內容’;----時間分:before、after ---觸發事件有update、insert、delete ----foreachrow每一行都啟用觸發器 ----動作主體:包括賦值set、如執行多個語句可以跟begin...end等 2.通過相應的動作觸發,用select看結果;如select @str 3.刪除觸發器:droptrigger觸發器的名字;--觸發器不能更新,只能先刪除再重建;刪除表的時候同時刪除觸發器 4.insert觸發器:引用名為new的虛擬表 5.delete觸發器:可以引用old的虛擬表,old的值只能檢視不能更新 6.update觸發器:既可以用old虛擬表,也可以用new虛擬表;對錶自身的更新用before更新, 八)事件 1.檢視事件排程器是否開啟:select@@event_scheduler;開啟:setglobalevent_scheduler=1; 2.建立事件:createevent建立事件的名字on schedule 時間排程 starts 開始時間 結束時間 do動作begin.if.....then.....endif;end$$-----時間排程:每月一次:every 1month -----開始時間:starts後面跟curdate()+interval 1month意思是下個月開始 結束時間:ends直接跟具體時間‘’
3.修改事件:alterevent事件的名字renameto新事件名字 3.1)關閉臨時事件:alterevent事件名字disable; 3.2)開始臨時事件:alterevent事件名字enable; 3.3)更改名字:alterevent事件名字renameto新的事件名字;、 4.刪除事件:dropevent事件名字; 5.具體例項: 九)儲存過程 1.建立儲存過程:createprocedure儲存過程名字(in引數名資料型別,in引數名資料型別)begin....end$$ delimiter---更改結束符 、 2.檢視儲存過程:showprocedurestatus; 2.1)檢視儲存過程具體資訊:showcreateprocedure儲存過程名字; 3.儲存過程體(區域性變數):declare變數名字資料型別 ;只能在begin..end中;在開頭宣告 3.1)set語句:setcid=910; 3.2)select ....into語句:set檢索出來的資料into存放到變數裡; ---檢索出來的只能是一行資料 3.3)流程控制語句(條件判斷語句):if ...then...else....endif;或者(case when... then.... else...endcase) 3.4)迴圈語句:迴圈的名字 while錢<100 do動作end while; 3.5)遊標:declare 遊標名字cursorfor檢索的語句;-----------用於儲存過程或儲存函式,在begin..end遊標名字唯一,----開啟遊標名:open遊標名字;----讀取資料:fetch遊標名字into變數名字;---關閉遊標:close遊標名; 3.6)continuehandler:遊標用於控制迴圈語句,實現遊標下移;---declare順序:區域性變數、遊標、控制代碼 4.呼叫儲存過程:call儲存過程(引數); 5.修改儲存過程:alterprocedure 儲存過程名字 6.刪除儲存過程:dropprocedure儲存過程名字; 十)儲存函式 1.建立儲存函式:createfunction函式名字(引數只有名稱和型別)returns型別()主體用begin...end;---return返回包含select時,結果只能時一行且有一列值 2.檢視資料庫中有哪些儲存函式:showfunctionstatus 2.1)檢視具體的儲存函式:showcreatefunction儲存的名字; 3.呼叫儲存函式:select儲存函式的名字引數; 4.刪除儲存函式:dropfunction儲存函式名; 5.修改儲存函式:alterfunction儲存函式名();只能修改儲存函式的特徵 十一)使用者賬號管理:檢視所有使用者:selectuserfrommysql.user; 1.建立使用者賬號:createuser ‘使用者名稱’@‘主機名’identifiedby ‘密碼’,‘使用者名稱’@‘主機名’identifiedbypassword‘雜湊值密碼’; 2.刪除使用者:dropuser ‘使用者名稱’@‘主機名’; 3.修改使用者賬號:renameuser原來使用者名稱@主機名 to新使用者名稱@主機名; 4.修改使用者口令:setpasswordfor使用者名稱@主機名 =新密碼; 十二)賬戶許可權管理 1.檢視許可權:showgrantsfor ‘使用者名稱’@‘主機名’; 2.許可權授予:grant賦予的許可權(具體列) on表、類等物件to使用者@主機名identifiedby‘密碼’;----同時可建立使用者、密碼 3.許可權轉移:grant賦予的許可權(具體列) on表、類等物件to使用者@主機名identifiedby‘密碼’withgrantoption ; 4.許可權的撤銷:revoke許可權名on表from使用者名稱@主機名; 十三)備份與恢復 1.全部匯出:select *from表名 intooutfile ‘全路徑檔名’ ;---like可以複製沒有資料的表 2.匯入:loaddatainfile檔名intotable表; 3.資料一致性的備份:讀鎖定:locktables表名read;寫鎖定:locktables表名write ;解鎖:unlocktables; 4.備份表結構的sql語句及資料:mysqldump -h主機名 -u使用者名稱 -p密碼 資料庫名字.表名字>全路徑檔名; 5.恢復資料庫:mysql-h主機名 -u使用者名稱 -p密碼資料庫<全路徑檔名; 5.1)恢復表:source 全路徑檔案; 十四)二進位制日誌檔案的使用 1.在my.ini檔案裡下的mysqld下面新增:log-bin=檔案全路徑; 2.通過二進位制恢復:mysqlbinloglog_檔名 |mysql-h主機名 -u使用者名稱 -p密碼 3.清除所有的日誌檔案:resetmaster; 3.1)刪除部分日誌檔案:purgelogsto日誌檔案 十五)PHP的mysql資料庫程式設計 1.連線資料庫:<?php $con=mysql_connect(本機名,使用者名稱,密碼); if(!$con) {echo''連線失敗<br>'' echo''錯誤編號:‘’.mysql_errno() echo''錯誤資訊:‘’.mysql_error() die()} echo“連線成功<br>”; ?> 2.資料的刪除:mysql_query("setnames ‘gbk’") 3.資料的查詢:讀取結果集:mysql_fetch_array II、考試大綱
一)、第一大題考試內容 1.新增(插入一行資料):insertinto表名 (列的所有名字)values (該列的所有值); 1.1)insertinto表名 values (該列的所有值用逗號隔開) 1.2)更改資料(某個欄位的值):update表名set欄位名=欄位新值where屬性=屬性值; 2.巢狀查詢多表:select屬性值1,屬性值2 from表1where屬性3in(select屬性3from表2where屬性4=屬性值);求平均--ang()統計--count()等 與groupby連用 3.更改表結構(預設值):altertable表名alter column列名set default預設值; 4.建立檢視:createview檢視名asselect檢視需要的列名from表名 ; 5.建立資料庫使用者:createuser “使用者名稱字”@“主機名字(預設是localhost)”identifiedby “建立的密碼”; --題中沒密碼紅色可省略 6.刪除欄位(列):altertable表名drop欄位名; 6.1)新增欄位(列):altertable表名add欄位名型別 default預設值; 7.授予許可權:grant授予許可權的動作(許可權的名字,名字2)on授予許可權的表to “使用者名稱@主機名”withgrant option;-----授予動作包括insert、select等等 8.建立索引:altertable表名add unique index索引名字(建立索引欄位);---- unique為唯一索引 9.建立表:createtable表1(欄位1資料型別primarykey ,欄位2資料型別 not null autoincrement/default預設值 ,constrain外來鍵名 foreignkey (外來鍵關鍵字) references其他表名(其他表關鍵字)); III、考試高頻單詞 1.給列賦予預設值:altercolumn子句、default賦予預設值、 2.建立使用者:identifiedby後面跟密碼、可在grant..on..to直接新增、with grant option允許分享給其他人 3.建立表:primary(主鍵)key、constraint 外來鍵名 foreign key(本表外來鍵關鍵字) references其他表(其他表主鍵)、 4.刪除列:直接用altertable表名 drop 列名 5.建立索引:uniqueindex唯一索引 6.觸發器:trigger、foreachrow、 before針對insert和update操作,其餘用after 7.儲存過程:procedure、declare宣告、 cursor遊標、fetch...into:讀取資料 8.PHP程式:mysql_connect建立非持久連線、mysql_pconnect()建立持久連線、mysql_select_db(資料庫名,連線變數名)連線資料庫、 mysql_query()提交執行SQL語句、mysql_fetch_array()讀取結果中的記錄、mysql_sum_row()讀取行數、mysql_data_seek(指標,行數) 9.事件:event、onschedule(獨有的單詞)、starts、select...into