爱德数智运维面试题
一、下面有A和B两个表,写出SQL的结果。
表A
|
id
|
Name
|
|
1
|
ken
|
|
2
|
min
|
|
3
|
steven
|
表B
|
id
|
Age
|
|
1
|
20
|
|
3
|
21
|
|
4
|
30
|
(1) select
A.Name,B.Age from A join B on A.id = B.id
(2)
select A.Name,B.Age from A left join B on A.id = B.id
(3)
select A.Name,B.Age from A right join B on A.id = B.id
参考答案:
(1)
|
Name
|
Age
|
|
ken
|
20
|
|
steven
|
21
|
(2)
|
Name
|
Age
|
|
ken
|
20
|
|
steven
|
21
|
|
min
|
|
(3)
|
Name
|
Age
|
|
ken
|
20
|
|
steven
|
21
|
|
|
30
|
二、怎么把日期2013-08-15 11:46:21.000 转为2013-08-15?
三、union和union all的区别是什么?
参考答案:
都相当于求并集,union all为union的一种形式。
union在使用时,重复的行被自动取消;union
all在使用时,不取消重复的行。
四、有一表T1如下:
|
id
|
Name
|
|
1
|
ken
|
|
2
|
min
|
|
3
|
steven
|
用游标更新表中的每一个Name字段。
参考答案:
CREATE
PROCEDURE update_name()
BEGIN
-- Declare local VARIABLES
DECLARE done BOOLEAN DEFAULT 0;
DECLARE o INT;
-- Declare the cursor
DECLARE T1id CURSOR
FOR
SELECT id FROM T1;
-- Declare continue handler
DECLARE CONTINUE HANDLER FOR SQLSTATE
'02000' SET done=1;
-- Open the CURSOR
OPEN T1id;
REPEAT
-- Get id
FETCH T1id INTO o;
UPDATE T1 SET `Name` = 'ben' WHERE id =
o;
-- End of LOOP
UNTIL done END REPEAT;
-- Close the CURSOR
CLOSE T1id;
END;
五、有一表T2,如下:
|
title
|
state
|
|
流程1
|
1
|
|
流程2
|
2
|
|
流程3
|
5
|
state表示title的审批状态:1表示审批中,2表示审批取消,5表示审批完成。
请用case写出每个title对应的审批状态。
参考答案:
select
title,(case state when 1 then '审批中' when 2 then '审批取消' when 5 then '审批完成' end) as '审批状态' from T2
评论
发表评论