博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL 面试题目:数据导入(原创)

Posted on 2007-10-07 23:49  Hon Young  阅读(689)  评论(0)    收藏  举报

今天在做数据导入,从Excel文件中导入到SQL Server 2000 数据库,用到的SQL语句,突发奇想,把它整理成一道面试题目,供以后面试之用。

题目:

现在数据库(假定为SQL Server 2000)中有三张表TB_ITEMS、TB_CAT和TB_NEW_ITEMS,表的详细如下

TB_ITEMS:

IM_ID,INT,主键

IM_NAME,NVARCHAR(32)

IM_SN,NVARCHAR(5)

注:IM_SN是编号,由5位组成,前两位是CAT_ID对应表TB_CAT中记录CAT_CODE字段值;后三位是流水号,新流水号是相同CAT_ID下目前最大流水号值加一。

IM_CAT, INT,外键,指向TB_CAT之CAT_ID字段

TB_CAT:

CAT_ID,INT ,主键

CAT_NAME,NVARCHAR(16)

CAT_CODE,NVARCHAR(2)

TB_NEW_ITEMS:

IM_NAME,NVARCHAR(32)

IM_CAT, INT,外键,指向TB_CAT之CAT_ID字段

目前这两张表中的数据如下,

IB_ITEMS:

IM_ID IM_NAME IM_SN IM_CAT
11 IM_AA 01001 1
12 IM_AB 01002 1
13 IM_AC 01003 1
14 IM_BA 02001 2
15 IM_BC 02002 2
16 IM_BB 02003 2
17 IM_BD 02004 2
18 IM_CA 03002 3
19 IM_CB 03005 3
20 IM_CD 03006 3
21 IM_CC 03003 3

IB_CAT:

CAT_ID CAT_NAME CAT_CODE
1 CAT_A 01
2 CAT_B 02
3 CAT_C 03

IB_NEW_ITEMS:

IM_NAME IM_CAT
IM_NAF 1
IM_NAG 1
IM_NBD 2
IM_NBF 2
IM_NBG 2
IM_NCS 3
IM_NCP 3

要求:

1. 将IB_NEW_ITEMS中的数据插入到IB_ITEMS表中。

2. 生成新的IM_ID值,在原有基础上加一。

3. 按照编码规则生成新的IM_SN,不允许为空(NULL值)。

4. 要求利用一两句基本SQL语句完成,不允许使用T-SQL等。

5. 生成的数据列表应该如下表所示

IM_ID IM_NAME IM_SN IM_CAT
11 IM_AA 01001 1
12 IM_AB 01002 1
13 IM_AC 01003 1
14 IM_BA 02001 2
15 IM_BC 02002 2
16 IM_BB 02003 2
17 IM_BD 02004 2
18 IM_CA 03002 3
19 IM_CB 03005 3
20 IM_CD 03006 3
21 IM_CC 03003 3
22 IM_NAF 01004 1
23 IM_NAG 01005 1
24 IM_NBD 02004 2
25 IM_NBF 02005 2
26 IM_NBG 02006 2
27 IM_NCS 03008 3
28 IM_NCP 03009 3