【資料庫】【Linux】金Z外派廣州Y行大資料部資料開發崗筆試題
1.SELECT語句的完整語法比較複雜,但至少包括的部分:(B)
A.SELECT INTO
B.SELECT FROM
C.SELECT GROUP
D.僅SELECT
2.SELECT語句的完整語法比較複雜,使用關鍵字(A)可以把重複行遮蔽。
A.DISTINCT
B.UNION
C.ALL
D.TOP
3.將多個查詢結果返回一個結果集合的運算時,使用:B
A.JOIN
B.UNION
C.INTO
D.LIKE
4.如果在SELECT語句中使用聚合函式時,一定在後面使用:(A)
A.GROUP BY
B.COMPUTE BY
C.HAVING
5.若用如下的SQL語句建立表SC:
CREATE TABLE SC(S CHAR(6) NOT NULL,C CHAR(3) NOT NULL,SCORE INTEGER,NOTE VARCHAR(20)),
向SC表插入如下行時,(B)行可以被插入。
A.('201009','111',60,必修)
B.('200823','101',NULL,NULL)
C.(NULL,'103',80,'選修')
D.('201132',NULL,86,'')
6.分析以下的SQL語句,執行的返回結果是(C):
SELECT MANU_ID FROM INVENTORY WHERE MANU_ID LIKE '%N\%P\%O%' ESCAPE '\';'
A.所有包含'NPO'記錄
B.所有包含'N\P\O'記錄
C.所有包含'N%P%O'記錄
D.所有包含'%N\P\O%'記錄
7.以下SQL哪行有錯誤:(C)
SELECT DEPT_NO
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(DEPT_NO)=
(SELECT MAX(COUNT(DEPT_NO))
FROM EMP
GROUP BY DEPT_NO
);
A.3
B.4
C.5
D.7
E.都沒錯
8.Oracle以下(A)語句從表TABLE_NAME中按欄位COUNT_CNT倒序提取前10條記錄。
A.SELECT * FROM (SELECT * FROM TABLE_NAME ORDER BY COUNT_CNT DESC NULLS LAST) T WHERE ROWNUM<=10;
B.SELECT * FROM TABLE_NAME WHERE ROWNUM<=10;-- 未排序,直接提取原表邏輯結構前10條記錄
C.SELECT * FROM TABLE_NAME WHERE ROWNUM<=10 ORDER BY COUNT_CNT DESC NULLS LAST;-- 先按原表邏輯結構提取前10條記錄再倒序排序
D.SELECT TOP 10 FROM TABLE_NAME ORDER BY COUNT_CNT DESC;-- Oracle不支援select top語句
9.有關係S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE)。
其中S#是學號,SNAME是學生姓名,SEX是性別,C#是課程號,CNAME是課程名稱。
要查詢選修“資料庫”課程的全體男生姓名的SQL語句是:SELECT SNAME FROM S,C,SC WHERE(A):
A.S.S#=SC.S# AND C.C#=SC.C# AND S.SEX='男' AND C.CNAME='資料庫';
B.S.S#=SC.S# AND C.C#=SC.C# AND S.SEX IN '男' AND C.CNAME IN '資料庫';
C.S.SEX='男' AND C.CNAME='資料庫';
D.S.SEX IN '男' AND C.CNAME IN '資料庫';
10.HAVING和WHERE子句以及GROUP BY可以在同一SELECT語句中使用,其正確的先後順序是(A)
A.WHERE,GROUP BY,HAVING
B.WHERE,HAVING,GROUP BY
C.HAVING,GROUP BY,WHERE
D.GROUP BY,WHERE,HAVING
11.以下SQL返回的執行結果(C)
SELECT CASE WHEN NULL=NULL THEN 'Yup' ELSE 'Nope' END AS RESULT FROM DUAL;
A.NULL
B.Yup
C.Nope
12.在Oracle資料庫的邏輯結構中有以下元件:
A.表空間 B.資料塊 C.區 D.段
這些元件從大到小的順序依次是:(B)
A.A->B->C->D
B.A->D->C->B
C.A->D->B->C
D.D->A->C->B
13.在發出啟動資料庫的命令,例項和資料庫經過怎樣的過程最終開啟?(B)
A.OPEN,NOMOUNT,MOUNT
B.NOMOUNT,MOUNT,OPEN
C.MOUNT,OPEN,NOMOUNT
D.NOMOUNT,OPEN,MOUNT
14.UNIX環境下顯示程序相關的命令是(A)
A.ps
B.su
C.ln
D.kill
15.UNIX環境下改變文件和目錄屬性的命令是(A)
A.chown
B.chmod
C.chgrp
D.touch
16.UNIX環境下分頁方式檢視檔案內容的命令是(C)
A.ls
B.cat
C.more
D.touch
17.假如需要找出/etc/my.conf檔案屬於哪個包,可以執行:(C)
A.rpm -q /etc/my.conf
B.rpm -requires /etc/my.conf
C.rpm -qf /etc/my.conf
D.rpm -q|grep /etc/my.conf
18.在bash中,export命令的作用是(C)
A.在子shell中執行命令
B.使在子shell中可以使用命令歷史記錄
C.為其他應用程式設定環境變數
D.提供NFS分割槽給網路中的其他系統使用
19.如果你的umask設定為022,預設建立新檔案許可權為(C)
A.-rw-r--r--
B.-rwxr--r--
C.-rwxr-xr-x
D.-rw-r--r-x
20.哪個命令用來顯示系統各個分割槽中inode的使用情況(A)
A.df -i
B.df -H
C.free -b
D.du -a -c /
21.如何刪除一個非空子目錄/tmp/20190501(B)
A.del /tmp/20190501/*
B.rm -rf /tmp/20190501
C.rm -rf /tmp/20190501/*
D.rm -ra /tmp/20190501/*
22.對所有使用者的變數設定,應該放在哪個檔案下(A)
A./etc/profile
B./etc/bashrc
C.~/.bash_profile
D./etc/skel/.bashrc
23.在vi中退出不儲存的命令是(D)
A.:q
B.:w
C.:wq
D.:q!
24.Oracle資料庫,有哪幾類索引,分別有什麼特點?
B-Tree索引;點陣圖索引;特定於該列只有幾個列舉值的情況;函式的索引:經常對某個欄位的查詢帶有函式操作;
分割槽索引和全域性索引:適用於分割槽表
25.Union與Union All的區別?
Union對結果集去重,執行效率比Union all低;Union all不會去重,執行效率比Union高。
26.表tab中有100W行記錄,主鍵為欄位id,其中有100條重複記錄,請寫出快速刪除重複資料的指令碼。
delect from tab
where rowid in
(select max(rowid) from tab
group by id
having count(1)>=2);
27.假設有表Customers,資料如下:
Id | Name | ReferredBy |
1 | John Doe | NULL |
2 | Jane Smith | NULL |
3 | Anne Jenkins | 2 |
4 | Eric Branford | NULL |
5 | Pat Richards | 1 |
6 | Alice Barnes | 2 |
請查出ReferredBy<>1的記錄。
--ReferredBy為數字型別
select c.* from Customers c
minus
select c.* from Customers c
where c.ReferredBy=1;
--ReferredBy為字元型別
select c.* from Customers c
where c.ReferredBy<>'1';
28.假設有商品表goods,資料如下:
Good_type | goods_name | price | goods_flag |
手機 | 華為 | 2999 | |
手機 | 蘋果 | 7999 | |
手機 | 榮耀 | 2399 | |
水果 | 車釐子 | 79 | |
水果 | 葡萄 | 18 | |
水果 | 蘋果 | 12 | |
電腦 | 金士頓16G | 499 |
…………
根據商品大類Goods_type對商品金額price從小到大排序,
前20%為低檔,20%~85%為中檔,高於85%為高檔打上標籤。
-- 三個子查詢,一個表
select g.*,
case when rownum<=(select count(*) from goods)*0.2 then '低檔'
when rownum>=(select count(*) from goods)*0.85 then '高檔'
else '中檔' end as goods_flag
from (select * from goods order by price) g
-- 兩個子查詢,兩個表
select g.*,
case when rownum<=c.cnt*0.2 then '低檔'
when rownum>=c.cnt*0.85 then '高檔'
else '中檔' end as goods_flag
from (select * from goods order by price) g,(select count(*) as cnt from goods) c;
29.Linux檢查一個埠是否被佔用的命令是?一旦被佔用如何解決這個問題?
lsof -i:埠號
netstat -ntulp | grep 埠號
顯示該被佔用埠號對應的PID號,
使用kill -9 PID殺死程序。
30.Linux新建一個檔案有哪些命令可以實現?
cat>檔名
touch 檔名
31.Linux檢視程序和排程的命令分別是什麼?
檢視程序:ps -ef
排程:crontab -l
32.用shell指令碼實現:把一個目錄(/tmp)下的資料夾去出,並儲存到/tmp/dirlist.txt中。
ls -ltr /tmp/|grep ^d >/tmp/dirlist.txt
for file in 'ls /tmp/'do if [-d /tmp/$file ]then echo $file >>/tmp/dirlist.txt n done
33.檔案路徑/data/in/下有業務系統上傳的資料,檔案格式為“檔案型別_工號_上傳日期.zip”,檔案列表如下:
請使用shell指令碼列出日期20181215所有上傳人員的名單。
ls /data/in/shuju_*_20181215.zip|awk -F _'{print $2}'
注:客觀題(選擇題)答案全對,主觀題27、28已測試驗證,但28缺少用UPDATE的題解,如有錯誤和如需補充望指正。