2014 天正科技 SQL面试题

振乾 2014-06-19 12:56:47



最近面试遇到的题目,
虽然看似简单,但是在日常工作中其实用到的也很多。
提供给大家。

 IF OBJECT_ID('card') IS NOT NULL 
DROP TABLE card
CREATE TABLE card
(
cardNO VARCHAR(8),
cardDate date,
cardState CHAR(1),--卡片状态 1正常 2注销
cardType VARCHAR(1)--卡片状态 1身份证 2居住证
)
IF OBJECT_ID('cardDetail') IS NOT NULL
DROP TABLE cardDetail
CREATE TABLE cardDetail
(
id INT IDENTITY(1,1) PRIMARY KEY,
cardNO VARCHAR(8),
NAME VARCHAR(30),
idCard VARCHAR(18),
cardState CHAR(1)--卡片状态 1正常 2注销
)

INSERT card(cardNO,cardDate,cardState,cardType)
VALUES
('001','2014-06-18',1,1),
('005','2014-06-18',1,2),
('002','2014-06-18',1,1),
('003','2014-06-18',1,1),
('004','2014-06-18',1,1),
('006','2014-06-18',1,1),
('007','2014-06-18',1,1),
('008','2014-06-18',1,2)

INSERT cardDetail(cardNO,NAME,idCard,cardState)
VALUES
('001','张三','31010',1),
('005','张三','31010',1),
('002','李四','31011',1),
('003','王五','31012',1),
('006','张三','31010',0),
('003','王五','31012',1),
('007','欧阳','31013',1),
('008','欧阳','31013',1)


SELECT * FROM card AS c
SELECT * FROM cardDetail AS cd


--1.
SELECT carddate FROM card c
INNER JOIN cardDetail AS cd ON c.cardNO=cd.cardNO
WHERE cd.idCard='31010'

--2.
SELECT idcard,COUNT(1) FROM cardDetail GROUP BY idCard HAVING COUNT(1)>2

--3.
UPDATE cardDetail SET cardState =0 WHERE idCard='31010'
UPDATE card SET cardState =0
FROM card AS c
INNER JOIN cardDetail AS cd ON c.cardNO=cd.cardNO
WHERE cd.idCard='31010'

--4.
DELETE FROM cardDetail
WHERE NAME='欧阳'
and EXISTS(SELECT 1 FROM card WHERE cardno=cardDetail.cardNO AND cardType=2
)

--5.
--单个字段 idcard
DELETE FROM cardDetail
WHERE idcard IN(SELECT idcard FROM cardDetail GROUP BY idCard HAVING COUNT(1)>1)
AND id NOT IN (SELECT MIN(id) FROM cardDetail GROUP BY idCard HAVING COUNT(1)>1)
...全文
623 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
振乾 2014-11-20
  • 打赏
  • 举报
回复
引用 5 楼 wmxcn2000 的回复:
建议 LZ 把题抄一遍再发上来,这样直接发图片,拍照的人,就暴露了。
就是我自己拍的。
越过越咸 2014-06-30
  • 打赏
  • 举报
回复

5.
DELETE tA FROM cardDetail as tA inner join
(SELECT ROW_NUMBER()over(partition by idCard order by id) as A,id FROM cardDetail )
as tB on tA.id=tB.id
 where tB.A > 1
水族杰纶 2014-06-25
  • 打赏
  • 举报
回复
引用 6 楼 c_sdn_shang_bu_qi 的回复:
这是应届 的题吧,好简单
这个不一定的 有的公司招dba的笔试题目也很简单 主要考核你的基础知识是否扎实 有深度的题目一般不会让你去写 只会在面试的时候问你
c_sdn_shang_bu_qi 2014-06-25
  • 打赏
  • 举报
回复
这是应届 的题吧,好简单
振乾 2014-06-25
  • 打赏
  • 举报
回复
引用 7 楼 wufeng4552 的回复:
[quote=引用 6 楼 c_sdn_shang_bu_qi 的回复:] 这是应届 的题吧,好简单
这个不一定的 有的公司招dba的笔试题目也很简单 主要考核你的基础知识是否扎实 有深度的题目一般不会让你去写 只会在面试的时候问你[/quote] 没错,这是正对中高级.net软件工程师。
卖水果的net 2014-06-24
  • 打赏
  • 举报
回复
建议 LZ 把题抄一遍再发上来,这样直接发图片,拍照的人,就暴露了。
chen357313771 2014-06-19
  • 打赏
  • 举报
回复
感谢分享啊,看了下,勉强会做,嘿
唐诗三百首 2014-06-19
  • 打赏
  • 举报
回复
感谢分享.
發糞塗牆 2014-06-19
  • 打赏
  • 举报
回复
感谢,不过建议别写公司名了,有种打广告的感觉
uu3131313131 2014-06-19
  • 打赏
  • 举报
回复
感谢分享~~ 艾玛,竟然全都会,有点小激动啊~

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧