2022年SQL经典面试题总结(带解析)
吐血整理了一周SQL面試題,包括了選擇題、問(wèn)答題、實(shí)戰(zhàn)題。每道題都給大家加了詳細(xì)的解析。幾乎每個(gè)知識(shí)點(diǎn)都涉及到了。
刷完這套題,關(guān)于SQL的面試妥妥的。
題目來(lái)源:各大廠面試題、牛客網(wǎng)
文章目錄
- 一、選擇題
- (1)基礎(chǔ)題
- (2)進(jìn)階題
- 二、問(wèn)答題
- 三、實(shí)戰(zhàn)題
一、選擇題
(1)基礎(chǔ)題
1、要求刪除商品表中價(jià)格大于3000的商品,下列SQL語(yǔ)句正確的是()
A、DELETE FROM 商品 WHERE 價(jià)格>3000
B、DELETE * FROM 商品 WHERE 價(jià)格>3000
C、DELETE FROM 商品
D、UPDATE 商品 SET * =NULL WHERE 價(jià)格>3000
正確答案: A
答案解析:這道題考察的是delete語(yǔ)法
DELETE FROM table_name
WHERE some_column=some_value;
2、在book表中,將工具書(shū)類(lèi)型(tool)的書(shū)的書(shū)架序號(hào)都減少2,下列語(yǔ)句正確的是()
A、UPDATE books SET shelf = shelf - 2 WHERE type IS ‘tool’;
B、INSERT books SET shelf = shelf - 2 WHERE type IS ‘tool’;
C、UPDATE books SET shelf = shelf - 2 WHERE type = ‘tool’;
D、UPDATE books INTO shelf = shelf - 2 WHERE type = ‘tool’;
正確答案: C
答案解析:這道題考察的是update語(yǔ)法。
UPDATE table_name
SET column1=value1,column2=value2,…
WHERE some_column=some_value;
where后面語(yǔ)句,查找NUll值的時(shí)候可以用 type IS NUll,否則要用等于=
3、為職員表添加列,列名為年末獎(jiǎng)金,允許為空值,數(shù)據(jù)類(lèi)型為貨幣數(shù)據(jù)類(lèi)型。下列SQL語(yǔ)句正確的是()
A、ATER TABLE 職員 ADD 年末獎(jiǎng)金 NULL
B、ALTER TABLE 職員 ADD 年末獎(jiǎng)金 Money NULL
C、ALTER TABLE 職員 ADD 年末獎(jiǎng)金 Money NOT NULL
D、ALTER TABLE 職員 ADD 年末獎(jiǎng)金 INT NULL
正確答案: B
答案解析:這道題考察的是alter語(yǔ)法。如果你想在已有的表中,添加、刪除或修改列,就需要用到alter語(yǔ)句。
添加列: ALTER TABLE table_name ADD column_name datatype
修改列:在SQL Server中與MySQL中修改列的語(yǔ)句有所差異,這里要注意~
My SQL / Oracle:ALTER TABLE table_name MODIFY COLUMN column_name datatype
SQL Server:ALTER TABLE table_name ALTER COLUMN column_name datatype
刪除列:ALTER TABLE table_name DROP COLUMN column_name
mysql沒(méi)有money類(lèi)型 sql server才有money類(lèi)型,所以在讀題的時(shí)候要注意是否提到在mysql中。
money其實(shí)跟float是同類(lèi)型數(shù)據(jù)。money類(lèi)型只是顯示在數(shù)據(jù)表的時(shí)候前面多加一個(gè)$樣式的符號(hào)。
4、小李在創(chuàng)建完一張數(shù)據(jù)表后,發(fā)現(xiàn)少創(chuàng)建了一列,此時(shí)需要修改表結(jié)構(gòu),應(yīng)該用哪個(gè)語(yǔ)句進(jìn)行操作?
A、MODIFY TABLE
B、INSERT TABLE
C、ALTER TABLE
D、UPDATE TABLE
正確答案: C
答案解析:鞏固一下上一題,修改已有的表,就用alter語(yǔ)句。
ALTER TABLE 表名 add 字段名
5、SQL語(yǔ)言可以分為多個(gè)類(lèi)別,那么不屬于數(shù)據(jù)操縱語(yǔ)言DML的是()
A、update
B、grant
C、delete
D、insert
正確答案: B
答案解析:grant語(yǔ)句是用來(lái)賦予用戶權(quán)限的,是數(shù)據(jù)控制語(yǔ)言(DCL)。其他3個(gè)都是數(shù)據(jù)操縱語(yǔ)言(DML)
數(shù)據(jù)查詢語(yǔ)言(DQL):是由SELECT子句,FROM子句,WHERE子句組成的查詢塊
數(shù)據(jù)操縱語(yǔ)言(DML): SELECT(查詢) INSERT(插入) UPDATE(更新) DELETE(刪除)
數(shù)據(jù)定義語(yǔ)言(DDL):CREATE(創(chuàng)建數(shù)據(jù)庫(kù)或表或索引)ALTER(修改表或者數(shù)據(jù)庫(kù))DROP(刪除表或索引)
數(shù)據(jù)控制語(yǔ)言(DCL):GRANT(賦予用戶權(quán)限) REVOKE(收回權(quán)限) DENY(禁止權(quán)限)
事務(wù)控制語(yǔ)言(TCL):SAVEPOINT (設(shè)置保存點(diǎn))ROLLBACK (回滾) COMMIT(提交)
6、下列選項(xiàng)中使用別名的方法不正確的是()
A、字段名稱(chēng)=別名
B、字段名稱(chēng) AS 別名
C、字段名稱(chēng) 別名
D、別名=字段名稱(chēng)
正確答案: D
答案解析:給字段名稱(chēng)起別名,B、C選項(xiàng)沒(méi)有疑義,as可以省略
A選項(xiàng),字段名稱(chēng)=別名,在SQL Server中可以這樣使用,MySQL中則不可以。
如果沒(méi)有特別指明是在mysql中,我們默認(rèn)就在SQL Server中。
(多選題)7、在MySql中進(jìn)行數(shù)據(jù)查詢時(shí),如果要對(duì)查詢結(jié)果的列名重新命名,將sno列重新命名為學(xué)號(hào),則下列語(yǔ)句正確的是( )
A、select sno as 學(xué)號(hào) from T
B、select 學(xué)號(hào)= sno from T
C、select sno 學(xué)號(hào) from T
D、select sno=學(xué)號(hào) from T
正確答案: A C
答案解析:鞏固一下上一題,在SQL Server 中可以使用’=’,MySQL中則不可以
8、在SQL中用條件表示價(jià)格在在30至40之間,應(yīng)該如何表達(dá)?
A、in (30,40)
B、BETWEEN 30 AND 40
C、BETWEEN 30 OR 40
D、BETWEEN 30 TO 40
正確答案: B
答案解析:這道題考察的是BETWEEN … AND …知識(shí)點(diǎn)
9、SQL語(yǔ)句中與Having子句同時(shí)使用的語(yǔ)句是?()
A、Group By
B、聯(lián)盟鏈
C、left Join
D、Where
正確答案: A
答案解析:having和where作用差不多,都是用來(lái)篩選數(shù)據(jù)的。
having作用在分組之后,也就是要放在group by的后面
10、已知數(shù)據(jù)表STU,現(xiàn)需創(chuàng)建視圖view_s,顯示所有男同學(xué)的信息。下列SQL語(yǔ)句正確的是()
A、CREATE VIEW AS SELECT * FROM STU
B、CREATE VIEW view_s AS SELECT * FROM STU WHERE 性別=‘男’
C、CREATE view_s SELECT * FROM STU WHERE 性別=‘男’
D、CREATE view_s AS SELECT * FROM STU
正確答案: B
答案解析:這道題考察的是VIEW 創(chuàng)建視圖知識(shí)點(diǎn)
將查詢語(yǔ)句放在create views view_name as 后面,這樣查詢語(yǔ)句的結(jié)果就會(huì)存儲(chǔ)在視圖中,后面可以繼續(xù)調(diào)用這個(gè)視圖數(shù)據(jù),或者直接在視圖中查詢。
視圖可以當(dāng)成表格來(lái)用。
CREATE VIEW view_name AS
SELECT column_name(s) FROM table_name
WHERE condition
CREATE后面要加上VIEW,不然數(shù)據(jù)庫(kù)怎么知道你要?jiǎng)?chuàng)建啥~
11、Mysql中表student_info(id,name,birth,sex),字段類(lèi)型都是varchar,插入如下記錄:(‘1014’ , ‘張三’ , ‘2002-01-06’ , ‘男’); 下面SQL錯(cuò)誤的是()?
A、insert into student_info values(‘1014’ , ‘張三’ , ‘2002-01-06’ , ‘男’);
B、insert into table student_info values(‘1014’ , ‘張三’ , ‘2002-01-06’ , ‘男’);
C、insert into student_info(id,name,birth,sex) values(‘1014’ , ‘張三’ , ‘2002-01-06’ , ‘男’);
D、insert into student_info(id,name,sex,birth,) values(‘1014’ , ‘張三’ , ‘男’,‘2002-01-06’ );
正確答案:B
答案解析:這道題比較簡(jiǎn)單,考察的知識(shí)點(diǎn)是:insert插入數(shù)據(jù)的語(yǔ)法。
insert into 后面直接跟表名。
insert into table,這種語(yǔ)法就不對(duì)。
有些同學(xué)可能會(huì)選擇D,覺(jué)得順序不對(duì)。但前面指明的列順序,與后面是對(duì)應(yīng)的(id,name,sex,birth,) values(‘1014’ , ‘張三’ , ‘男’,'2002-01-06’ )
12、將成績(jī)表(grade)按成績(jī)(point)升序排列,下列語(yǔ)句錯(cuò)誤的是()
A、SELECT * FROM grade ORDER BY point;
B、SELECT point FROM grade ORDER BY point;
C、SELECT * FROM grade ORDER BY point ASC;
D、SELECT * FROM grade ORDER BY point DESC;
正確答案: D
答案解析:這道題考察的是group by語(yǔ)句中是升序,降序
A、B選項(xiàng)沒(méi)有特意指定,默認(rèn)是升序。
ASC 表示升序,DESC 表示降序,所以D是錯(cuò)的
(2)進(jìn)階題
1、Mysql中表student_table(id,name,birth,sex),插入如下記錄:
(‘1001’ , ‘’ , ‘2000-01-01’ , ‘男’);
(‘1002’ , null , ‘2000-12-21’ , ‘男’);
(‘1003’ , NULL , ‘2000-05-20’ , ‘男’);
(‘1004’ , ‘張三’ , ‘2000-08-06’ , ‘男’);
(‘1005’ , ‘李四’ , ‘2001-12-01’ , ‘女’);
查詢2001年及之后出生的男生、女生總數(shù),正確的SQL是()?
A、select sex,count() from student_table group by sex where birth >=‘2001’ ;
B、select count() from student_table where birth >=‘2001’ group by sex ;
C、select sex,count() from student_table where birth >=‘2001’ group by sex ;
D、select sex,count() from student_table group by sex having birth >='2001’ ;
正確答案: C
答案解析:這道題考察的是select語(yǔ)句中g(shù)roup by分組知識(shí)點(diǎn)。
where應(yīng)該放在group by 的前面,排除A
group by后面的字段都要在select后面出現(xiàn),B選擇中的sex,沒(méi)有在select后面出現(xiàn),排除B
Having后面可以跟字段和聚合函數(shù),having后面的字段,也是只能使用在select后面出現(xiàn)的字段。排除D
2、某IT公司人事管理采用專(zhuān)門(mén)的人事管理系統(tǒng)來(lái)實(shí)現(xiàn)。后臺(tái)數(shù)據(jù)庫(kù)名為L(zhǎng)F。新來(lái)的人事部張經(jīng)理新官上任,第一件事是要對(duì)公司的員工做全面的了解。可是他在訪問(wèn)員工信息表EMPL里的工資和獎(jiǎng)金字段的時(shí)被拒絕,只能查看該表其他字段。作為L(zhǎng)F的開(kāi)發(fā)者你將如何解決這一問(wèn)題:( )
A、廢除張經(jīng)理的數(shù)據(jù)庫(kù)用戶帳戶對(duì)表EMPL里的工資列和獎(jiǎng)金列的SELECT權(quán)限
B、添加張經(jīng)理到db_datareader角色
C、添加張經(jīng)理到db_accessadmin角色
D、授予張經(jīng)理的數(shù)據(jù)庫(kù)用戶帳戶對(duì)表EMPL里的工資列和獎(jiǎng)金列的SELECT權(quán)限。
正確答案: D
db_accessadmin
可以添加、刪除用戶的用戶
db_datareader
可以從所有數(shù)據(jù)表中讀取所有數(shù)據(jù),人事經(jīng)理只是想訪問(wèn)員工信息表,不需要給這么大權(quán)限。
3、下列函數(shù)語(yǔ)句得不到相同數(shù)值結(jié)果的選項(xiàng)是()
A、SELECT ROUND(2.35)
B、SELECT ROUND(1.96,1)
C、SELECT TRUNCATE(1.99,1)
D、SELECT TRUNCATE(2.83,0)
正確答案: C
ROUND() 函數(shù)用于把數(shù)值字段舍入為指定的小數(shù)位數(shù),第二個(gè)參數(shù)表示保留幾位小數(shù)。ROUND(2.35)結(jié)果為2,ROUND(1.96,1)結(jié)果為2.0
TRUNCATE() 函數(shù)是按照小數(shù)位數(shù)進(jìn)行數(shù)值截取,沒(méi)有四舍五入。第二個(gè)參數(shù)表示保留幾位小數(shù)。TRUNCATE(1.99,1)結(jié)果為1.9,TRUNCATE(2.83,0)結(jié)果為2
4、在STUDENT表中按class_type統(tǒng)計(jì)數(shù)據(jù)行數(shù)分組情況后,篩選出數(shù)據(jù)行數(shù)為大于10行的組
A、SELECT class_type,COUNT() FROM STUDENT GROUP BY class_type HAVING COUNT()>10
B、SELECT class_type,COUNT() FROM STUDENT GROUP BY class_type WHERE COUNT()=10
C、SELECT class_type,COUNT() FROM STUDENT HAVING COUNT()>10 GROUP BY class_type
D、SELECT class_type,COUNT() FROM STUDENT WHERE COUNT()>10 GROUP BY class_type
正確答案:A
答案解析:這道題是根據(jù)class_type分組后,找出每組大于10行的數(shù)據(jù),考察的知識(shí)點(diǎn)是:where和having的區(qū)別。
where和having作用差不多,都是用來(lái)篩選數(shù)據(jù)的。
having作用在分組之后,也就是要放在group by的后面,where放在group by的前面。這樣就排除了B、C
count(*)是聚合函數(shù),意思是查詢每組有多少條數(shù)據(jù)記錄。having后面可以跟聚合函數(shù),where后面不能跟聚合函數(shù)。排除了D
5、查詢語(yǔ)句select stuff(‘lo ina’,3, 1, ‘ve ch’)結(jié)果為?
A、love
B、love china
C、china love
D、china
正確答案: B
答案解析:stuff(原字符, 開(kāi)始位置, 刪除長(zhǎng)度, 插入字符)
stuff函數(shù)是從指定的起點(diǎn)處開(kāi)始刪除指定長(zhǎng)度的字符,并在此處插入另一組字符
6、已知某期刊信息庫(kù)中有作家信息表author(作者編號(hào)aid,作者姓名aname,作者筆名ausername,作者郵箱aemail,備注remarks),稿件表manuscript(稿件編號(hào)mid,標(biāo)題mtitle,作者編號(hào)aid,交稿時(shí)間mtime)現(xiàn)需要設(shè)置外鍵作者編號(hào),下列語(yǔ)句正確的是()
A、ALTER TABLE manuscript
ADD CONSTRAINT FK_aid
FOREIGN KEY (aid) REFERENCES author (aid)
B、ALTER TABLE manuscript
ADD CONSTRAINT FK_aid
FOREIGN KEY (manuscript.aid) REFERENCES author (aid)
C、ALTER TABLE manuscript
ADD FOREIGN KEY (manuscript.aid)
REFERENCES author (aid)
D、ALTER TABLE manuscript
ADD FOREIGN KEY (aid)
REFERENCES author (aid)
正確答案: B
答案解析:這道題考察的是設(shè)置外鍵的語(yǔ)法。
alter table 表名 add constraint FK_ID foreign key(你的外鍵字段名) REFERENCES 外表表名(對(duì)應(yīng)的表的主鍵字段名);
(多選題)7、使用SQL語(yǔ)句建個(gè)存儲(chǔ)過(guò)程proc_stu,然后以student表中的學(xué)號(hào)Stu_ID為輸入?yún)?shù)@s_no,返回學(xué)生個(gè)人的指定信息。下面創(chuàng)建存儲(chǔ)過(guò)程語(yǔ)句正確的是:( )
A、CREATE PROCEDURE [stu].[proc_student]
@s_no AS int
AS
BEGIN
select * from stu.student where Stu_ID=@s_no
END
B、CREATE PROCEDURE [stu].[proc_student]
@s_no int
AS
BEGIN
select * from stu.student where Stu_ID=@s_no
END
C、CREATE PROCEDURE [stu].[proc_student]
@s_no int
AS
BEGIN
select * from stu.student where s_no=@s_no
END
D、CREATE PROCEDURE [stu].[proc_student]
@s_no AS int
AS
BEGIN
select * from stu.student where Stu_ID=@Stu_ID
END
正確答案: A B
答案解析:這道題主要考的是where后面跟的參數(shù)怎樣賦值。where 表字段=參數(shù)。Stu_ID是表格字段,@s_no是參數(shù)。
8、請(qǐng)取出 BORROW表中日期(RDATE字段)為當(dāng)天的所有記錄?(RDATE字段為datetime型,包含日期與時(shí)間)。SQL語(yǔ)句實(shí)現(xiàn)正確的是:( )
A、select * from BORROW where datediff(dd,RDATE,getdate())=0
B、select * from BORROW where RDATE=getdate()
C、select * from BORROW where RDATE-getdate()=0
D、select * from BORROW where RDATE > getdate()
正確答案:A
答案解析:這道題考察的是datediff() 函數(shù)。datediff() 函數(shù)的意思是返回兩個(gè)日期之間的時(shí)間差。
datediff(dd,RDDATE,getdate())==0是意思是表中日期(RDDATE)與當(dāng)前日期(getdate())這兩個(gè)日期相同,就為true。就會(huì)取出這天的記錄。
dd是日,ww是周,mm是月,hh小時(shí),mi分鐘,ss秒
9、Mysql中表student_table(id,name,birth,sex),插入如下記錄:
(‘1001’ , ‘’ , ‘2000-01-01’ , ‘男’);
(‘1004’ , ‘張三’ , ‘2000-08-06’ , ‘男’);
(‘1005’ , NULL , ‘2001-12-01’ , ‘女’);
(‘1006’ , ‘張三’ , ‘2001-12-02’ , ‘女’);
執(zhí)行
select t1.name from
(select * from student_table where sex = ‘女’)t1
left join
(select * from student_table where sex = ‘男’)t2
on t1.name = t2.name;
的結(jié)果行數(shù)是()?
A、4
B、3
C、2
D、1
正確答案:C
答案解析:這道題考察的是left join 左連接,
左連接就是不管有沒(méi)有符合條件的數(shù)據(jù),都會(huì)將左邊表的數(shù)據(jù)全部展示。
這里左邊的表是t1 ,查出了所有性別為女的數(shù)據(jù),就是兩條。后面不管跟上面查詢條件,這兩條數(shù)據(jù)都會(huì)顯示出來(lái)。
(多選題)10、下面有關(guān)sql 語(yǔ)句中 delete、truncate的說(shuō)法正確的是?()(多選題)
A、論清理表數(shù)據(jù)的速度,truncate一般比delete更快
B、truncate命令可以用來(lái)刪除部分?jǐn)?shù)據(jù)。
C、truncate只刪除表的數(shù)據(jù)不刪除表的結(jié)構(gòu)
D、delete能夠回收高水位(自增ID值)
正確答案:A、C
答案解析:這道題考察的是trustcate與delete的區(qū)別
在處理效率方面:drop>trustcate>delete
刪除記錄方面:drop刪除整個(gè)表、trustcate刪除全部記錄但不刪除表、delete刪除部分記錄高高水線方面delete不影響所用extent,高水線保持原位置不動(dòng);trustcate會(huì)將高水線復(fù)位。
11、檢索銷(xiāo)量表中銷(xiāo)量最好的商品id和銷(xiāo)量,下列SQL語(yǔ)句正確的是()
A、SELECT 商品id,銷(xiāo)量 FROM 銷(xiāo)量表 WHERE 銷(xiāo)量=MAX(銷(xiāo)量)
B、SELECT 商品id,MAX(銷(xiāo)量) FROM 銷(xiāo)量表 GROUP BY 銷(xiāo)量
C、SELECT 商品id,MAX(銷(xiāo)量) FROM 銷(xiāo)量表 GROUP BY 商品id
D、SELECT 商品id,銷(xiāo)量 FROM 銷(xiāo)量表 WHERE 銷(xiāo)量=(SELECT MAX(銷(xiāo)量) FROM 銷(xiāo)量表)
正確答案:D
答案解析:最后表格輸出的結(jié)果最好的商品id和銷(xiāo)量,
A選項(xiàng)語(yǔ)法錯(cuò)了,where后面不能跟聚合函數(shù),having后面可以跟
B選項(xiàng)語(yǔ)法錯(cuò)了,group by后面的字段,需要再select后面字段中提到
C選項(xiàng)把商品id字段分類(lèi),再對(duì)銷(xiāo)量取最大值,實(shí)際作用是將商品id去重+查詢商品id和對(duì)應(yīng)銷(xiāo)量,如果分類(lèi)字段沒(méi)有重復(fù)數(shù)據(jù),效果等同‘ select * from 銷(xiāo)量表 ’,不符合題意。
D選項(xiàng)是對(duì)的,先用子查詢找到最大的銷(xiāo)量的具體值,在找對(duì)應(yīng)具體值的商品名。
12、Mysql中表student_table(id,name,birth,sex),查詢不重復(fù)的姓名總數(shù),錯(cuò)誤的是()?
A、select count(distinct name) from student_table ;
B、select count(name) from (select distinct name from student_table) t1
C、select count(name) from (select name,count(*) as c1 from student_table group by name having c1 > 1)t1
D、select count(name) from (select name from student_table group by name) t1;
正確答案:C
答案解析:因?yàn)槲覀円樵儾恢貜?fù)的表名,having c1>1這里錯(cuò)了,c1 >1不就相當(dāng)于有多個(gè)姓名,這里應(yīng)該是c1 = 1。
(多選題)13、在SQL中語(yǔ)法規(guī)范中,having子句的使用下面描述正確的是:( )
A、having子句即可包含聚合函數(shù)作用的字段也可包括普通的標(biāo)量字段
使用having的同時(shí)不能使用where子句
B、having子句必須于group by 子句同時(shí)使用,不能單獨(dú)使用
使用having子句的作用是限定分組條件
C、having子句和where子句是等同的
D、having子句后面必須使用聚合函數(shù)
正確答案: A C
答案解析:
D選項(xiàng),group by的作用限定分組條件,不是having
E選項(xiàng):having子句和where子句作用差不多,但是也有區(qū)別,并不是等同的。
F選擇:沒(méi)有函數(shù),也可以使用having,但是要注意,having里面包含的字段,必須在select語(yǔ)句中提到。
14、假設(shè)創(chuàng)建新用戶nkw,現(xiàn)在想對(duì)于任何IP的連接,僅擁有user數(shù)據(jù)庫(kù)里面的select和insert權(quán)限,則列表語(yǔ)句中能夠?qū)崿F(xiàn)這一要求的語(yǔ)句是()
A、grant select ,insert on . to ‘nkw’@‘%’
B、grant select ,insert on user.* to ‘nkw’@‘%’
C、grant all privileges on . to ‘nkw’@‘%’
D、grant all privileges on user.* to ‘nkw’@‘%’
正確答案: B
答案解析:這道題考察知識(shí)點(diǎn)是數(shù)據(jù)庫(kù)授權(quán)命令:
GRANT<權(quán)限> on 表名(或列名) to 用戶
補(bǔ)充知識(shí)點(diǎn)-回收權(quán)限
REVOKE <權(quán)限> on 表名(或列名) FROM 用戶
15、下列關(guān)于數(shù)據(jù)庫(kù)系統(tǒng)三級(jí)模式結(jié)構(gòu)的表述正確的是()
A、內(nèi)模式是面向數(shù)據(jù)庫(kù)用戶或應(yīng)用程序的局部數(shù)據(jù)視圖
B、索引的組織方式是B+樹(shù)索引,還是Hash索引與數(shù)據(jù)庫(kù)的內(nèi)模式有關(guān)
C、邏輯模式是數(shù)據(jù)庫(kù)在邏輯級(jí)上的視圖,涉及數(shù)據(jù)的物理存儲(chǔ)細(xì)節(jié)
D、外模式/模式映像保證了數(shù)據(jù)庫(kù)具有較高的物理獨(dú)立性
正確答案: B
答案解析:這道題主要考察的是數(shù)據(jù)庫(kù)的設(shè)計(jì)步驟,以及對(duì)應(yīng)的內(nèi)模式、外模式、邏輯模式
數(shù)據(jù)庫(kù)設(shè)計(jì)步驟主要分為以下幾方面:
1)需求分析,需求分析是通過(guò)用戶需求,將數(shù)據(jù)流程圖、數(shù)據(jù)字典描述出來(lái)
2)數(shù)據(jù)庫(kù)設(shè)計(jì),這種設(shè)計(jì)和具體的數(shù)據(jù)庫(kù)管理系統(tǒng)沒(méi)有之間關(guān)聯(lián),而是抽象出各用戶所需要的數(shù)據(jù)視圖,對(duì)應(yīng)外模式概念
3)將用ER模型或?qū)ο竽P捅硎镜臄?shù)據(jù)視圖,轉(zhuǎn)換為關(guān)系模式,并對(duì)所得關(guān)系模式進(jìn)行優(yōu)化處理,這就是所謂的數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)(這一步仍然對(duì)應(yīng)于外模式和模式)
4)第四步,在邏輯設(shè)計(jì)的基礎(chǔ)上,將所得的數(shù)據(jù)模式組織存儲(chǔ)到物理介質(zhì)上,這就是數(shù)據(jù)庫(kù)的物理設(shè)計(jì)(這一步對(duì)應(yīng)于內(nèi)模式)
16、Mysql(版本8.0.25)中表student_table(id,name,birth,sex),插入如下記錄:
(‘1004’ , ‘張三’ , ‘2000-08-06’ , ‘男’);
(‘1005’ , NULL , ‘2001-12-01’ , ‘女’);
(‘1006’ , ‘張三’ , ‘2000-08-06’ , ‘女’);
(‘1007’ , ‘王五’ , ‘2001-12-01’ , ‘男’);
(‘1008’ , ‘李四’ , NULL, ‘女’);
(‘1009’ , ‘李四’ , NULL, ‘男’);
(‘1010’ , ‘李四’ , ‘2001-12-01’, ‘女’);
執(zhí)行
select count(t2.birth) as c1
from (
select * from student_table where sex = ‘男’ ) t1
full join
(select * from student_table where sex = ‘女’) t2
on t1.birth = t2.birth and t1.name = t2.name ;
的結(jié)果行數(shù)是()?
A、2
B、3
C、執(zhí)行報(bào)錯(cuò)
D、4
正確答案: C
答案解析:mysql不支持full join,應(yīng)該用outer join
17、積分result表中有A B C D四列,要求:
1)當(dāng)A列值大于等于B列時(shí),選擇A列否則選擇B列
2)當(dāng)C列值大于等于D列時(shí),選擇C列否則選擇D列
用SQL語(yǔ)句實(shí)現(xiàn)正確的是:( )
A、select ( when A>=B then A else B ) MAX_AB, ( when C>=D then C else D ) MAX_CD from result
B、select (case when A>=B then A else B ) MAX_AB, (case when C>=D then C else D ) MAX_CD from result
C、select (case when A>=B then A else B end) MAX_AB, (case when C>=D then C else D end) MAX_CD from result
D、select case when A>=B then A else B end MAX_AB, case when C>=D then C else D end MAX_CD from result
正確答案: C
答案解析:case when 判斷條件 then 成功結(jié)果 then 不成功結(jié)果 end
18、Mysql中表student_table(id,name,birth,sex),插入如下記錄:
(‘1001’ , ‘’ , ‘2000-01-01’ , ‘男’);
(‘1002’ , null , ‘2000-12-21’ , ‘男’);
(‘1003’ , NULL , ‘2000-05-20’ , ‘男’);
(‘1004’ , ‘張三’ , ‘2000-08-06’ , ‘男’);
(‘1005’ , ‘李四’ , ‘2001-12-01’ , ‘女’);
執(zhí)行 select * from student_table where length(name) >= 0 的結(jié)果行數(shù)是()?
A、1
B、2
C、3
D、4
正確答案:C
答案解析:1001和1002是不一樣的,一個(gè)是空字符串,一個(gè)是NULL。針對(duì)這兩種數(shù)據(jù)使用length()函數(shù)結(jié)果是不相同的。
針對(duì)1001 length(name)結(jié)果是0,針對(duì)1002、1003 length(name)結(jié)果是空值NULL
因此題干where length(name) >= 0 會(huì)篩選出 1001、1004、1005三條數(shù)據(jù)
19、有一張Person表包含如下信息:
Id Name Address Career
1 Bob China Town Chef
2 Carter Oxford Street Teacher
3 Anna Fourteen Avenue Dancer
現(xiàn)要選取居住地址Address不以’C’或’O’開(kāi)頭的人員信息,下列MySQL查詢語(yǔ)句正確的是:
A、SELECT * FROM Person Address REGEXP ‘[CO]’;
B、SELECT * FROM Person Address LIKE ‘[!CO]%’;
C、SELECT * FROM Person Address LIKE ‘[^CO]%’;
D、SELECT * FROM Person Address REGEXP ‘1’;
正確答案: A
答案解析:此題考的是SQL里的正則表達(dá)式查詢:
SELECT * FROM Person Address REGEXP ‘^[^CO]’;
[^]匹配不在括號(hào)中的任何字符,'[^CO]‘匹配任何不包含’C’或’O’的字符,其實(shí)就是匹配除了’C’或’O’之外的所有字符。
^匹配文本的開(kāi)始字符,’^[^CO]’ 匹配不以’C’或’O’之外開(kāi)頭的所有字符。
20、”確保事務(wù)可以多次從一個(gè)字段中讀取相同的值,在此事務(wù)持續(xù)期間,禁止其他事務(wù)對(duì)此字段的更新”是對(duì)下列選項(xiàng)哪一個(gè)事務(wù)隔離級(jí)別的描述()
A、Read uncommitted
B、Read committed
C、Repeatable Read
D、Serializable
正確答案:C
答案解析:這道題考察的是4個(gè)事務(wù)隔離級(jí)別,面試中經(jīng)常考。
確保事務(wù)可以多次從一個(gè)字段中讀取相同的值,就是要保證可重復(fù)讀取,可重復(fù)讀取的意思是,一端在讀取數(shù)據(jù)的同時(shí),另一端在修改數(shù)據(jù)。在高并發(fā)環(huán)境中,很容易出現(xiàn),讀取數(shù)據(jù)的一方,兩次讀取結(jié)果不一致的情況。
要防止這種情況,就是要在讀取數(shù)據(jù)事務(wù)存續(xù)時(shí),禁止寫(xiě)事務(wù),用人話說(shuō)就是“可讀,不可修改”。這樣保證重復(fù)讀取數(shù)據(jù)的結(jié)果是一樣的。
這一事務(wù)級(jí)別就是可重復(fù)讀取(Repeatable Read)。
具體的4個(gè)事務(wù)隔離級(jí)別,可以查看問(wèn)答題第12題
21、關(guān)于解決事務(wù)的臟讀的最簡(jiǎn)單的方法,下列選項(xiàng)正確的是()
A、修改時(shí)加排他鎖,直到事務(wù)提交后釋放,讀取時(shí)加共享鎖
B、讀取數(shù)據(jù)時(shí)加共享鎖,寫(xiě)數(shù)據(jù)時(shí)加排他鎖,都是事務(wù)提交才釋放鎖
C、修改時(shí)加共享鎖,直到事務(wù)提交后釋放,讀取時(shí)加排他鎖
D、讀取數(shù)據(jù)時(shí)加排他鎖,寫(xiě)數(shù)據(jù)時(shí)加共享鎖,都是事務(wù)提交才釋放鎖
正確答案: A
答案解析:共享鎖是立即釋放的。排除B、D
臟讀是意思是一個(gè)數(shù)據(jù)還沒(méi)有提交,就會(huì)出現(xiàn)在讀取結(jié)果中,萬(wàn)一數(shù)據(jù)因?yàn)楫惓T驔](méi)有成功提交,查詢結(jié)果中就會(huì)出現(xiàn)不存在的數(shù)據(jù)。可以通過(guò)在修改時(shí)加“排他寫(xiě)鎖”實(shí)現(xiàn)。
二、問(wèn)答題
1、如何優(yōu)化MySQL?
按照以下順序優(yōu)化:
優(yōu)化查詢語(yǔ)句
優(yōu)化索引、事務(wù)處理
優(yōu)化數(shù)據(jù)表結(jié)構(gòu)
優(yōu)化系統(tǒng)配置
優(yōu)化硬件
2、如何優(yōu)化SQL查詢語(yǔ)句?
(1)對(duì)查詢進(jìn)行優(yōu)化,首先應(yīng)盡量避免全表掃描,在比較頻繁使用的字段上面加上索引。
(2)盡量避免在 where 子句中對(duì)索引列使用計(jì)算或者進(jìn)行 null 值判斷,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描
(3)Where子句中:where表之間的連接必須寫(xiě)在其他 Where 條件之前,那些可以過(guò)濾掉最大數(shù)量
(4)用EXISTS替代IN,用NOT EXISTS替 NOT IN。
3、什么情況下設(shè)置了索引但無(wú)法使用?
(1)在 where 子句中使用 or 來(lái)連接沒(méi)有同時(shí)使用索引的條件,會(huì)使引擎放棄使用索引而進(jìn)行全表掃描
(2)在 where 子句中對(duì)索引列使用計(jì)算或者進(jìn)行 null 值判斷
(3)在 where 子句中,使用以“%”開(kāi)頭的 LIKE 語(yǔ)句,進(jìn)行模糊匹配
(4)數(shù)據(jù)類(lèi)型出現(xiàn)隱式轉(zhuǎn)化(如 varchar 不加單引號(hào)的話可能會(huì)自動(dòng)轉(zhuǎn)換為 int 型)
4、鎖的優(yōu)化策略?
(1)多個(gè)線程盡量以相同的順序去獲取資源。
(2)不能將鎖的粒度過(guò)于細(xì)化,不然可能會(huì)出現(xiàn)線程的加鎖和釋放次數(shù)過(guò)多,反而效率不如一次加一把大鎖。
(3)盡量減少鎖持有的時(shí)間
(4)分段加鎖
(5)讀寫(xiě)分離
5、索引對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的負(fù)面影響是什么?
索引需要占用物理空間,增加數(shù)據(jù)庫(kù)的大小,降低正常的運(yùn)行速度
當(dāng)對(duì)表進(jìn)行增、刪、改、的時(shí)候索引也要?jiǎng)討B(tài)維護(hù),這樣就降低了數(shù)據(jù)的維護(hù)速度。
6、什么情況下不適合建立索引?
(1)對(duì)于查詢中很少涉及的列或者重復(fù)值比較多的列,不宜建立索引。
(2)對(duì)于一些特殊的數(shù)據(jù)類(lèi)型,不宜建立索引,比如文本字段(text)等
7、為數(shù)據(jù)表建立索引的原則有哪些?
(1)在最頻繁使用的、用以縮小查詢范圍的字段上建立索引
(2)不應(yīng)該基于表來(lái)創(chuàng)建索引,應(yīng)該基于查詢來(lái)創(chuàng)建索引
8、索引的底層實(shí)現(xiàn)原理和優(yōu)化?
索引的底層實(shí)現(xiàn)原理是B+樹(shù),優(yōu)化是經(jīng)過(guò)優(yōu)化的 B+樹(shù)。主要是在所有的葉子結(jié)點(diǎn)中增加了指向下一個(gè)葉子節(jié)點(diǎn)的指針,因此 InnoDB 建議為大部分表使用默認(rèn)自增的主鍵作為主索引。
9、簡(jiǎn)單描述 MySQL 中索引、唯一索引、主鍵、聯(lián)合索引的區(qū)別,對(duì)數(shù)據(jù)庫(kù)的性能有什么影響(從讀寫(xiě)兩方面)?
索引可以極大的提高數(shù)據(jù)的查詢速度,但是會(huì)降低插入、刪除、更新表的速度,因?yàn)樵趫?zhí)行這些寫(xiě)操作時(shí),還要操作索引文件。
(1)普通索引的唯一任務(wù)是加快對(duì)數(shù)據(jù)的訪問(wèn)速度,允許被索引的數(shù)據(jù)列包含重復(fù)的值。
(2)唯一索引中,每條數(shù)據(jù)記錄都是唯一的,創(chuàng)建唯一索引用關(guān)鍵字 UNIQUE
(3)主鍵是一種特殊的唯一索引,在一張表中只能定義一個(gè)主鍵索引,主鍵用于唯一標(biāo)識(shí)一條記錄,使用關(guān)鍵字PRIMARY KEY來(lái)創(chuàng)建。
(4)聯(lián)合索引可以覆蓋多個(gè)數(shù)據(jù)列,如像INDEX(columnA, columnB)索引。
10、什么是事務(wù)
數(shù)據(jù)庫(kù)事務(wù)( transaction)是一個(gè)數(shù)據(jù)庫(kù)操作序列,這些操作要么全部成功,要么全部失敗,是一個(gè)不可分割的工作單位。
11、什么是數(shù)據(jù)庫(kù)的ACID原則
這個(gè)是數(shù)據(jù)庫(kù)事務(wù)標(biāo)準(zhǔn)、ACID,表示原子性(Atomicity) 、一致性(Consistency)、隔離性(Isolation)、持久化(Durability)。
(1)原子性是指在一個(gè)數(shù)據(jù)庫(kù)事務(wù)中所有的操作要么全部都做完,要么全部都不做。
(2)一致性是指在事務(wù)開(kāi)始之前和事務(wù)結(jié)束以后,數(shù)據(jù)庫(kù)的完整性約束沒(méi)有被破壞,比如小明有1500元,小紅有100元,小明給小紅轉(zhuǎn)賬100元,轉(zhuǎn)賬完成后,小明和小紅一共有1600元這個(gè)不能變。
(3)隔離性:各事務(wù)之間的操作不受影響
(4)持久化:事務(wù)一旦成功提交成功后,所有這個(gè)事務(wù)對(duì)數(shù)據(jù)庫(kù)的更改全部被保留下來(lái)
12、4個(gè)事務(wù)隔離級(jí)別,分別是什么?
隔離級(jí)別從低到高。
(1)未授權(quán)讀取(Read Uncommitted):允許臟讀,臟讀的意思是,一個(gè)數(shù)據(jù)還沒(méi)有提交,就會(huì)出現(xiàn)在讀取結(jié)果中,萬(wàn)一數(shù)據(jù)因?yàn)楫惓T驔](méi)有成功提交,查詢結(jié)果中就會(huì)出現(xiàn)不存在的數(shù)據(jù)。該隔離級(jí)別可以通過(guò)“排他寫(xiě)鎖”實(shí)現(xiàn)。
(2)授權(quán)讀取(Read Committed):允許不可重復(fù)讀取,但不允許臟讀。不可重復(fù)讀取的意思是,允許一端在讀取數(shù)據(jù)的同時(shí),另一端在修改數(shù)據(jù),讀取數(shù)據(jù)的一方重復(fù)讀取時(shí),數(shù)據(jù)結(jié)果不同是被允許的。可以通過(guò)“瞬間共享讀鎖”和“排他寫(xiě)鎖”實(shí)現(xiàn)。
(3)可重復(fù)讀取(Repeatable Read):禁止不可重復(fù)讀取和臟讀,但是有時(shí)可能出現(xiàn)幻讀。幻讀的意思是一個(gè)事務(wù)在前后兩次查詢同一個(gè)范圍的時(shí)候,后一次查詢看到了前一次查詢沒(méi)有看到的數(shù)據(jù)行。這可以通過(guò)“共享讀鎖”和“排他寫(xiě)鎖”實(shí)現(xiàn)。讀取數(shù)據(jù)的事務(wù)將會(huì)禁止寫(xiě)事務(wù)(但允許讀事務(wù)),寫(xiě)事務(wù)則禁止任何其他事務(wù)。
(4)序列化(Serializable):提供嚴(yán)格的事務(wù)隔離。它要求事務(wù)序列化執(zhí)行,事務(wù)只能一個(gè)接著一個(gè)地執(zhí)行,不能并發(fā)執(zhí)行。如果僅僅通過(guò)“行級(jí)鎖”是無(wú)法實(shí)現(xiàn)事務(wù)序列化的,必須通過(guò)其他機(jī)制保證新插入的數(shù)據(jù)不會(huì)被剛執(zhí)行查詢操作的事務(wù)訪問(wèn)到。
隔離級(jí)別越高,越能保證數(shù)據(jù)的完整性和一致性,但是對(duì)并發(fā)性能的影響也越大。對(duì)于多數(shù)應(yīng)用程序,可以優(yōu)先考慮把數(shù)據(jù)庫(kù)系統(tǒng)的隔離級(jí)別設(shè)為Read Committed,它能夠避免臟讀取,而且具有較好的并發(fā)性能。盡管它會(huì)導(dǎo)致不可重復(fù)讀、虛讀和第二類(lèi)丟失更新這些并發(fā)問(wèn)題,在可能出現(xiàn)這類(lèi)問(wèn)題的個(gè)別場(chǎng)合,可以由應(yīng)用程序采用悲觀鎖或樂(lè)觀鎖來(lái)控制。
13、SQL中的視圖是什么?
視圖可以當(dāng)成表格來(lái)用,可以將查詢結(jié)果存儲(chǔ)在視圖中,后面可以直接調(diào)用這個(gè)視圖數(shù)據(jù),或者繼續(xù)在視圖中查詢。
查詢語(yǔ)句放在create views 后面,就可以建立視圖
14、視圖的優(yōu)點(diǎn)有哪些?
(1)視圖可以限定訪問(wèn)表格的列。
(2)視圖可以訪問(wèn)多個(gè)表格。
15、什么是存儲(chǔ)過(guò)程?用什么來(lái)調(diào)用?
存儲(chǔ)過(guò)程是一組SQL語(yǔ)句,用作訪問(wèn)數(shù)據(jù)庫(kù)的函數(shù)。如果將sql代碼與Python代碼寫(xiě)在一起,或很混亂并且難以維護(hù),用存儲(chǔ)過(guò)程來(lái)代替,管理維護(hù)更加方便。
可以用一個(gè)命令對(duì)象來(lái)調(diào)用存儲(chǔ)過(guò)程。
16、什么是Trigger(觸發(fā)器)?
觸發(fā)器是在插入、更新、刪除語(yǔ)句前后自動(dòng)執(zhí)行的一堆SQL代碼,用于對(duì)表執(zhí)行特定操作。
比如在交易表中添加一條交易,在日志表中就自動(dòng)添加一條記錄,這樣就要用到觸發(fā)器。
17、什么是事件
事件是在特定時(shí)刻自動(dòng)執(zhí)行任務(wù),操作數(shù)據(jù)庫(kù)。
比如我們想在每天都執(zhí)行刪除過(guò)期日志,就可以創(chuàng)建一個(gè)事件,在每天特定時(shí)刻來(lái)自動(dòng)執(zhí)行這一操作。
18、怎樣創(chuàng)建事件?
用 create event 語(yǔ)句來(lái)創(chuàng)建事件。
create event 事件名稱(chēng)
on schedule
every 1 year
do begin
刪除語(yǔ)句
end
19、下面這條語(yǔ)句怎么優(yōu)化,MySQL 如何優(yōu)化 DISTINCT?比如優(yōu)化 SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
在數(shù)據(jù)量比較大的時(shí)候,使用distinct函數(shù)加索引列,會(huì)使索引失效,并掃描全表。
這個(gè)時(shí)候,應(yīng)該將 DISTINCT 在所有列,都轉(zhuǎn)換為 GROUP BY
SELECT t1.a FROM t1,t2 WHERE t1.a=t2.a GROUP BY t1.a;
20、char和varchar的區(qū)別
CHAR 和 VARCHAR 類(lèi)型在存儲(chǔ)和檢索方面有所不同
存儲(chǔ)方面:CHAR 列長(zhǎng)度固定,存儲(chǔ)為創(chuàng)建表時(shí)聲明的長(zhǎng)度,如果插入的長(zhǎng)度小于定義長(zhǎng)度,則可以用空格進(jìn)行填充。而varchar是一種可變長(zhǎng)度的類(lèi)型,當(dāng)插入的長(zhǎng)度小于定義長(zhǎng)度時(shí),插入多長(zhǎng)就存多長(zhǎng)。
查找效率:char查找效率會(huì)很高,varchar查找效率會(huì)更低
21、如何通俗地理解三個(gè)范式,說(shuō)說(shuō)范式化設(shè)計(jì)優(yōu)缺點(diǎn)?
第一范式(1NF):是對(duì)屬性的原子性約束,要求屬性具有原子性,不可再分解;
第二范式(2NF):是對(duì)記錄的惟一性約束,要求記錄有惟一標(biāo)識(shí),即實(shí)體的惟一性;
第三范式(3NF):是對(duì)字段冗余性的約束,即任何字段不能由其他字段派生出來(lái),它要求字段沒(méi)有冗余。
范式化的優(yōu)點(diǎn): 可以盡量得減少數(shù)據(jù)冗余,使得更新快,體積小。
缺點(diǎn):對(duì)于查詢需要多個(gè)表進(jìn)行關(guān)聯(lián),減少寫(xiě)操作的效率和增加讀操作的效率,更難進(jìn)行索引優(yōu)化
22、MySQL 數(shù)據(jù)庫(kù)作發(fā)布系統(tǒng)的存儲(chǔ),一天五萬(wàn)條以上的增量,預(yù)計(jì)運(yùn)維三年,怎么優(yōu)化?
(1)設(shè)計(jì)良好的數(shù)據(jù)庫(kù)結(jié)構(gòu),不要過(guò)度顆粒化,也不要使數(shù)據(jù)過(guò)渡冗余。
(2)選擇合適的表字段數(shù)據(jù)類(lèi)型和存儲(chǔ)引擎,適當(dāng)?shù)奶砑铀饕?br /> (3)MySQL 庫(kù)主從讀寫(xiě)分離。
(4)找規(guī)律分表,減少單表中的數(shù)據(jù)量提高查詢速度。
(5)添加緩存機(jī)制,比如 memcached,apc 等。
(6)不經(jīng)常改動(dòng)的頁(yè)面,生成靜態(tài)頁(yè)面。
23、窗口函數(shù)是什么?和普通聚合函數(shù)的區(qū)別有哪些?
窗口函數(shù),也叫OLAP(Online Anallytical Processing,聯(lián)機(jī)分析處理),可以對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行實(shí)時(shí)分析處理
窗口函數(shù)和普通聚合函數(shù)的區(qū)別:
(1)聚合函數(shù)是將多條記錄聚合為?條;窗?函數(shù)是每條記錄都會(huì)執(zhí)行,不會(huì)改變記錄的行數(shù)
(2)聚合函數(shù)也可以?于窗?函數(shù)。
24、專(zhuān)用窗口函數(shù)有哪些?說(shuō)一說(shuō)基本用法
專(zhuān)用窗口函數(shù)有:rank、dense_rank、row_number
基本語(yǔ)法:?窗口函數(shù)? over (partition by ?用于分組的列名? order by ?用于排序的列名?)
over關(guān)鍵字用來(lái)指定函數(shù)執(zhí)?的窗?范圍,若后?括號(hào)中什么都不寫(xiě),則意味著窗口包含滿足WHERE條件的所有行,窗口函數(shù)基于所有行進(jìn)行計(jì)算;如果不為空,則?持以下4種語(yǔ)法來(lái)設(shè)置窗?。
(1)partition by子句:窗口按照哪些字段進(jìn)?分組,窗?函數(shù)在不同的分組上分別執(zhí)?
(2)order by子句:按照哪些字段進(jìn)?排序,窗?函數(shù)將按照排序后的記錄順序進(jìn)?編號(hào)
(3)frame子句:frame是當(dāng)前分區(qū)的?個(gè)子集,子句?來(lái)定義子集的規(guī)則,通常?來(lái)作為滑動(dòng)窗?使?
(4)window_name:給窗口指定?個(gè)別名。如果SQL中涉及的窗口較多,采用別名可以看起來(lái)更清晰易讀
25、使用窗口函數(shù)需要注意什么
窗?函數(shù)的執(zhí)?順序是在FROM,JOIN,WHERE, GROUP BY,HAVING之后的
所以如果這些語(yǔ)句,需要用到窗口函數(shù)作為條件,需要在窗口函數(shù)外面套?層查詢
選擇題和問(wèn)答題都更新完了,有不完善的地方可以留言我們一起探討~
三、實(shí)戰(zhàn)題
實(shí)戰(zhàn)題包括次日留存率、列轉(zhuǎn)行、窗口函數(shù)等,這些大廠幾乎必考的問(wèn)題,我給大家整理了詳細(xì)的解析。
篇幅比較長(zhǎng),放在下面這篇里面了。
2022年SQL大廠高頻實(shí)戰(zhàn)面試題(詳細(xì)解析)
CO ??
總結(jié)
以上是生活随笔為你收集整理的2022年SQL经典面试题总结(带解析)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 经典SQL面试10题(附答案)
- 下一篇: 个人财务管理系统mysql_个人财务管理