一租副、簡答題
1.簡述你們公司使用的MySQL版本,并說明具體小版本及GA時間较性?
答:剛去上家公司不到兩年用僧,交接的時候已經(jīng)運行了2年多了,我接手的時候版本已經(jīng)是5.7.20赞咙,應當是做過小版本的升級责循。
2.請介紹你熟悉的數(shù)據(jù)庫關系系統(tǒng)的種類和代表產(chǎn)品名稱?
答:RDBMS: Oracle 攀操,MySQL 院仿,PG,MSSQL
NoSQL: MongoDB 崔赌,Redis 意蛀,ES
NEWSQL: TiDB耸别,Spanner 健芭,AliSQL ,OB 秀姐,PolarDB
3.請簡述MySQL二進制安裝重點步驟慈迈?
答:1下載并上傳軟件到指定目錄
2解壓軟件
3出始化環(huán)境
4設置環(huán)境變量
5創(chuàng)建路徑并授權
6初始化數(shù)據(jù)
7配置文件的準備
8上完就可以啟動數(shù)據(jù)庫
4.怎么確認數(shù)據(jù)庫啟動成功了?
答:1最直接就登錄數(shù)據(jù)庫mysql -uroot -p
2查看端口進程netstat -lntup|grep 3306、 netstat -lntup|grep mysql
5.簡述你了解的MySQL分支版本情況痒留?
答:5.6 : 5.6.34 5.6.36 5.6.38(2017913) 5.6.40
5.7 : 5.7.18 谴麦,20(2017913) ,24 伸头,26
8.0 : 8014匾效, 8015 ,8016
6.請簡述mysqld的程序結構(1條SQL語句的執(zhí)行過程)
答:先從連接層:1提供連接協(xié)議socket,tcp/ip 2驗證用戶名密碼合法性恤磷,進行匹配的授權表 3派生一個專用的連接線程(接收sql面哼,返回結果)
在sql層,1驗證語法 2驗證語義 3驗證權限 4解析器語句解析扫步,生成執(zhí)行計劃5優(yōu)化器算出最優(yōu)方案這里指代價最低的方案代價指cpu io mem 6執(zhí)行器按優(yōu)化給出的最優(yōu)方案 7查詢緩存 8 記錄日志
7.請簡述你了解的MySQL的啟動方式
答:1. sys-v :service mysqld restart? 2. Systemd
8.簡述MySQL配置文件默認讀取順序
答:命令行>配置文件>預編譯
9.mysqld_safe --default-files=/opt/my.cnf &是什么作用魔策?
答:維護模式:忘記密碼重置用
10.忘記管理員root的密碼處理過程,請對參數(shù)詳細說明
答:1. 掛維護頁 2. 關數(shù)據(jù)庫systemctl stop mysqld 3. 跳過授權啟mysqld_safe --skip-grant-tables --skip-networking &--skip-grant-tables : 連接層關閉驗證模塊河胎,所有驗證表不加載闯袒。--skip-networking :連接層關閉TCP/IP協(xié)議,禁止遠程訪問游岳。4. 改密碼mysql> alter user root@'localhost'identified by'123';
ERROR1290(HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statementmysql 報錯
mysql> flush privileges;
Query OK,0rows affected (0.00sec)
mysql> alter user root@'localhost'identified by'456';Query OK,0rows affected;
systemctl start mysqld5.正常開啟業(yè)務
11.請列舉SQL語句的常用種類
答: DDL:數(shù)據(jù)定義語言? ? data definition language
DCL:數(shù)據(jù)控制語言? ? data control language
DML:數(shù)據(jù)操作語言? ? data manipulation language
DQL:數(shù)據(jù)查詢語言? ? data query language
12.請說明聚集索引和輔助索引的區(qū)別
答: 1聚集索引只能有一個,非空唯一,一般時主鍵
2輔助索引,可以有多個,時配合聚集索引使用的
3聚集索引葉子節(jié)點,就是磁盤的數(shù)據(jù)行存儲的數(shù)據(jù)頁
4MySQL是根據(jù)聚集索引,組織存儲數(shù)據(jù),數(shù)據(jù)存儲時就是按照聚集索引的順序進行存儲數(shù)據(jù)
5輔助索引,只會提取索引鍵值,進行自動排序生成B樹結構
13.請簡述以下語句執(zhí)行計劃可能存在的問題
闡述以下語句可能存在的問題政敢,并提出合理解決方案
explain select * from city where countrycode='CHN' order by population;
簡述出現(xiàn)以下結果的可能原因
答:文件排序問題desc select count(distinct countrycode,population ) from world.city; 文件排序重復Using filesort
14. 請簡述,影響索引樹高度的因素吭历?
答: 1. 數(shù)據(jù)量級, 解決方法:分表:分庫,分布式
2. 索引列值過長 , 解決方法:前綴索引-->取前幾個
3. 數(shù)據(jù)類型:變長長度字符串,使用了char,解決方案:變長字符串使用varchar enum類型的使用enum('山東','河北','黑龍江','吉林','遼寧','陜西'......)123
15.請說明數(shù)據(jù)庫啟動失敗的處理思路堕仔?
答: 查看日志:在哪?
/data/mysql/data/主機名.err
[ERROR] 上下文
可能情況:/etc/my.cnf 路徑不對等
/tmp/mysql.sock文件修改過 或 刪除過
數(shù)據(jù)目錄權限不是mysql
參數(shù)改錯了
16. MySQL索引的種類都有哪些晌区?
答: B樹索引
Hash索引
R樹
Full text
GIS
17. 你了解的MySQL存儲引擎種類有哪些摩骨?
答: InnoDB MyISAM CSV MEMORY ARCHIVE
其他MySQL的引擎
PerconaDB:默認是XtraDB
MariaDB:默認是InnoDB
其他的存儲引擎支持:
TokuDB? ?
RocksDB
MyRocks
18.InnoDB存儲引擎核心特性
答:1、事務(Transaction)
2朗若、MVCC(Multi-Version Concurrency Control多版本并發(fā)控制)
3恼五、行級鎖(Row-level Lock)
4、ACSR(Auto Crash Safey Recovery)自動的故障安全恢復
5哭懈、支持熱備份(Hot Backup)
6灾馒、復制Replication: Group Commit , GTID (Global Transaction ID) ,多線程(MTS,Multi-Threads-SQL )
二、操作題
1.創(chuàng)建管理員用戶:oldboy能通過10.0.0.0/24網(wǎng)段任意地址登錄管理MySQL
答:grant all on oldboy.* to oldboy@’10.0.0.%’ identified by ‘123’
2.創(chuàng)建應用用戶:wordpress能通過172.16.1.0/24網(wǎng)段任意地址登錄操作wordpress庫下的所有表
答:grant all on wordpress.* to wordpress@'172.16.1.%' identified by '123';
3.請寫出/etc/my.cnf的基礎配置信息
答:[mysqld]
User=mysql
Basedir=/application/mysql
Datadir=/data/mysql/data
Socket=/tmp/mysql.sock
Server_id=6
Port=3306
Log_error=/data/mysql/data/mysql.log
Log_bin=/data/mysql/data/mysql-bin
[mysql]
Socket=/tmp/mysql.sock
4.請寫出使用oldboy用戶遠程登錄MySQL的具體語句
答:mysql -uoldboy -p -h10.0.0.51
5.查看當前數(shù)據(jù)庫的字符集
答:show create database oldboy;
6. 創(chuàng)建GBK字符集的數(shù)據(jù)庫oldboy遣总,并查看已建庫完整語句
答:create database oldboy chart GBK;
show create database oldboy;
7. 請分別介紹 NOT NULL default auto_increament 的作用
答:非空 默認值 自增
8. 創(chuàng)建用戶oldboy睬罗,使之可以管理數(shù)據(jù)庫oldboy
答:grant all on oldboy.* to oldboy@’%’ identified by ‘123’;
9. 收回oldboy用戶的drop權限
答:revoke drop on oldboy.* from oldboy@’%’;
10. 查看創(chuàng)建的用戶oldboy擁有哪些權限
答:show grant for odlboy@’%’;
11. 查看建表結構及表結構的SQL語句
答:show create table world.city
desc world.city;
12. 插入一條數(shù)據(jù)“1,oldboy”
答:insert into city(id,name) valuas(1,oldboy);
13.再批量插入2行數(shù)據(jù)“2,老男孩”,“3,oldboyedu”
答:insert into city(id,name) valuas(2,老男孩);(3,oldboyedu);
14.查詢名字為oldboy的記錄
答:use world? ? Select * from city where name=’oldboy’;
15. 查看數(shù)據(jù)庫中所有引擎的類型
答:show engines;
16.查看數(shù)據(jù)庫關于日志的參數(shù)配置
答:select @@general_log_file;
17.查看handler_read_key當前的狀態(tài)信息
答:show status like 'handler_read_key';
18. 列出刪除表中數(shù)據(jù)的方式
答:alter table city drop id;
alter table city drop id where ‘id=1’;
19.test表中,有id旭斥、 name容达、shouji列。把id列設置為主鍵垂券,在Name字段上創(chuàng)建普通索引
答:alter table test add primary key idx_id(id);
Alter table test add index idx_name(name);
20. 在手機字段上對前8個字符創(chuàng)建普通索引
答:alter table test add index idx_sj(shouji(8));
21.查看創(chuàng)建的索引及索引類型等信息
答:show index from test\G;
22.刪除Name花盐,shouji列的索引
答:alter table test drop index name;
Alter table test drop index shouji;
23.對Name列的前6個字符以及手機列的前8個字符組建聯(lián)合索引
答:alter table test add index idx_name_shouji(name(6),shouji(8));
24. 將shouji列索引替換為唯一鍵索
答:alter table test add uqique index idx_shouji(shouji);
25.如何查看world數(shù)據(jù)庫下city表中population列的重復值情況
答: select name,count(population) from city group by name limit 5;
26. 請列出explain命令中type中多種類型
答:
all :沒有使用索引
index:全索引掃描
range:索引范圍查找
ref:輔助索引的等值查詢
eq_ref:多表連接的表.on的條件是主鍵或者唯一鍵
system或const:主鍵或唯一鍵的等值查詢
null:沒有結果
27.Select查詢語句加強練習
統(tǒng)計世界上每個國家的總人口數(shù).
答:select countrycode,sum(population) from city group by countrycode;
統(tǒng)計中國各個省的總人口數(shù)量
答:select District,sum(population) from city where countrycode='CHN' group by District;
統(tǒng)計世界上每個國家的城市數(shù)量
答:select country.name,count(city.name) from city join country on country.code=city.CountryCode group by city.countrycode;
統(tǒng)計中國每個省的總人口數(shù),將總人口數(shù)小于100w進行從高到低排序顯示
select District,sum(population) from city where countrycode='chn' group by District? having sum(population)<1000000 order by sum(population) desc;
28.生成整個數(shù)據(jù)庫下的所有表的單獨備份語句
SELECT CONCAT("mysqldump -uroot -p",TABLE_SCHEMA," >/tmp/",TABLE_SCHEMA,"_",TABLE_NAME,".sql")
FROM TABLES INTO OUTFILE '/tmp/bak.sh’
29. SQL綜合練習
1. 查詢平均成績大于60分的同學的學號和平均成績;
2. 查詢所有同學的學號算芯、姓名柒昏、選課數(shù)、總成績熙揍;
3. 查詢各科成績最高和最低的分:以如下形式顯示:課程ID职祷,最高分,最低分
4. 統(tǒng)計各位老師,所教課程的及格率
5. 查詢每門課程被選修的學生數(shù)
6. 查詢出只選修了一門課程的全部學生的學號和姓名
7. 查詢選修課程門數(shù)超過1門的學生信息
8. 統(tǒng)計每門課程:優(yōu)秀(85分以上),良好(70-85),一般(60-70),不及格(小于60)的學生列表
9. 查詢平均成績大于85的所有學生的學號届囚、姓名和平均成