計算機二級mysql資料庫
阿新 • • 發佈:2022-03-06
計算機二級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