本篇文章給大家主要講的是關(guān)于什么是MySQL的基礎(chǔ)語句的內(nèi)容,感興趣的話就一起來看看這篇文章吧,相信看完什么是MySQL的基礎(chǔ)語句對(duì)大家多少有點(diǎn)參考價(jià)值吧。
- 查看當(dāng)前MYSQL支持的存儲(chǔ)引擎
show engines; - 查看某一用戶的權(quán)限
show grants for UserName; - 如何得知當(dāng)前Binary Log文件和Position值
show master status; - 用什么命令切換Binary Log
flush logs; - 用什么命令修復(fù)MyISAM表
repaire table TabName; - 用什么命令整理表數(shù)據(jù)文件的碎片
optimize table TabName; - 如何得到TabA表的建表語句
show create table TabA; - 創(chuàng)建TabB表,完整拷貝TabA表的結(jié)構(gòu)和索引,不要數(shù)據(jù)
create table TabB like TabA; - 為TabA表新增字段ColA,精度無偏差的小數(shù)型,10位整數(shù),2位小數(shù),加索引
alter table TabA add ColA decimal(12,2), add key (ColA); - 如何清空TabB表的數(shù)據(jù)
truncate table TabB; - 如何不進(jìn)入mysql客戶端,執(zhí)行一條SQL命令,帳號(hào)User,密碼Passwd,庫(kù)名DBName,SQL為"select sysdate();"
mysql -uUser -pPasswd -D DBName -e "select sysdate();" - 如何從slow log中分析出所有的select語句,按次數(shù)以倒序輸出前20條,日志名為slow_log.file
mysqldumpslow -g 'select' -s c -r slow_log.file - 如何從BinLog中分析出時(shí)間從"2017-10-27 13:00:00"到"2017-10-27 18:00:00"的anjuke庫(kù)的SQL語句,日志名為bin_log.file
mysqlbinlog -d anjuke --start-datetime='2017-10-27 13:00:00' --stop-datetime='2017-10-27 18:00:00' bin_log.file - 創(chuàng)建用戶,用戶名為iamdba,密碼為mypasswd,訪問來源10.11.8.X,即8段IP都允許,對(duì)anjuke庫(kù)所有表擁有“增刪改查”權(quán)限
grant insert,delete,update,select on anjuke.* to iamdba@'10.10.8.%' identified by 'mypasswd'; - 如何執(zhí)行一個(gè)SQL文件,帳號(hào)User,密碼Passwd,庫(kù)名DBName,SQL文件名為sql.file
mysql -uUser -pPasswd -D DBName - 用select方式導(dǎo)出TabA的所有數(shù)據(jù)到/tmp/TabA.txt文件
select * from TabA into outfile '/tmp/TabA.txt'; - 導(dǎo)入TabA.txt數(shù)據(jù)到TabB表,如主鍵或唯一鍵沖突,覆蓋tabB表中的數(shù)據(jù)
load data [local] infile '/tmp/TabA.txt' replace into table TabB; - 用mysqldump命令導(dǎo)出anjuke庫(kù)里的TabB表中滿足“ColA > 100”的數(shù)據(jù)到TabB.sql文件,不要導(dǎo)出建表語句,帳號(hào)User,密碼Passwd
mysqldump -uUser -pPasswd --no-create-info anjuke TabB -w "ColA > 100" >TabB.sql
PS: --no-create-info 也可以寫為 -t - 切換同步到master 10.11.8.11,端口為3307,用戶名repl,密碼為passwd,起點(diǎn)BinLog為db-master.000001,位置123456
change master to master_host='10.11.8.11', master_port=3307, master_user='repl', master_password='passwd', master_log_file='db-master.000001', master_log_pos=123456; - 啟動(dòng)slave的sql進(jìn)程,并在同步到master的db-master.000003文件123456位置上停止
start slave sql_thread util master_log_file='db-master.000003', master_log_pos=123456; - 建一個(gè)滿足以下五種條件的最優(yōu)索引
where a=? and b=? and c=?
where a=? and b>? and c=?
where a=? and b in (?) and c=?
where a=? and c=? order by b
where a=? order by c,b
創(chuàng)建順序?yàn)?a,c,b)的復(fù)合索引 - 有二個(gè)復(fù)合索引(a,b)和(c,d),以下語句會(huì)怎樣使用索引?可以做怎樣的優(yōu)化?
select from Tab where (a=? and b=?) or (c=? and d=?)
根據(jù)MYSQL的機(jī)制,只會(huì)使用到一個(gè)篩選效果好的復(fù)合索引,可以做如下優(yōu)化
select from Tab where a=? and b=?
union
select * from Tab where c=? and d=? - 如何統(tǒng)計(jì)文件a.txt有多少非空行?
grep -c '^..*$' a.txt
或
grep -v '^$' a.txt | wc -l - 文件b.txt,每行以“:”符分成5列,如“1:apple:3:2017-10-25:very good”,如何得到所有行第三列的總合值
awk 'BEGIN {FS=":"; s=0} {s+=$3} END {print s}' b.txt - 截取文件c.txt的第60至480行記錄,忽略大小寫,統(tǒng)計(jì)出重復(fù)次數(shù)最多的那條記錄,及重復(fù)次數(shù)
sed -n '60,480'p c.txt | sort | uniq -i -c | sort -rn | head -n 1
二、簡(jiǎn)答題 5x5 - MyISAM和InnoDB各有哪些特性?分別適用在怎樣的場(chǎng)景下?
MyISAM,表鎖,不支持事務(wù),表損壞率較高,分為MYD數(shù)據(jù)文件和MYI索引二個(gè)文件,讀寫并發(fā)不如InnoDB,適用于insert較多的場(chǎng)景,且支持直接復(fù)制文件,用以備份數(shù)據(jù)
InnoDB,行鎖,支持事務(wù),crash后具有recove機(jī)制,只有ibd文件,分為數(shù)據(jù)區(qū)和索引區(qū),有較好的讀寫并發(fā)能力,但做count()運(yùn)算時(shí)相當(dāng)消耗CPU - MySQL原生支持的備份方式有哪些,并說出其優(yōu)缺點(diǎn)?
(1) 直接拷貝數(shù)據(jù)文件,必須是MyISAM表,且使用flush tables with read lock;語句,優(yōu)點(diǎn)是簡(jiǎn)單方便,缺點(diǎn)是須要鎖寫,且只能在同版本的MySQL上恢復(fù)使用
(2) mysqldump,導(dǎo)出的是SQL語句,所以可以跨版本恢復(fù),但是需要導(dǎo)入數(shù)據(jù)和重建索引,恢復(fù)用時(shí)會(huì)較長(zhǎng),如果是MyISAM表,同樣需要鎖表,如果是InnoDB表,可以使用--single-transaction參數(shù)避免此問題 - 在創(chuàng)建和使用索引時(shí),有哪些要注意的地方,有什么規(guī)則?
避免索引過多,會(huì)影響寫性能
給篩選效果低的字段加索引,幾乎無效,如性別、狀態(tài)標(biāo)志等
每條查詢執(zhí)行時(shí),只會(huì)使用一個(gè)索引,有需要時(shí)應(yīng)該創(chuàng)建復(fù)合索引
復(fù)合索引使用時(shí)遵守“從左到右”原則,嚴(yán)禁左百分號(hào)
不要在索引字段上有運(yùn)算操作和使用函數(shù),將無法使用索引 - 如何分析一條SQL語句的執(zhí)行性能,關(guān)注哪些信息?
不論性能如何,不要有子查詢和嵌套SQL,盡量不要有join查詢
使用explain命令,觀察type列,可以知道是否是全表掃描,和索引的使用形式,觀察key可以知道使用了哪個(gè)索引,觀察key_len可以知道索引是否使用完成,觀察rows可以知道掃描的行數(shù)是否過多,觀察extra可以知道是否使用了臨時(shí)表和進(jìn)行了額外的排序操作 - MySQL通過什么機(jī)制來控制訪問權(quán)限?
mysql庫(kù)中,從user表到host表和db表,再到tables_priv表和colums_priv表
以上關(guān)于什么是MySQL的基礎(chǔ)語句詳細(xì)內(nèi)容,對(duì)大家有幫助嗎?如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。
創(chuàng)新互聯(lián)建站專注于成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點(diǎn)出發(fā),讓客戶在網(wǎng)絡(luò)營(yíng)銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴(yán)謹(jǐn)?shù)膽B(tài)度對(duì)待客戶,用專業(yè)的服務(wù)創(chuàng)造價(jià)值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。
當(dāng)前文章:什么是MySQL的基礎(chǔ)語句
轉(zhuǎn)載源于:
http://weahome.cn/article/jpjoph.html