今天在做数据导入,从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 |
浙公网安备 33010602011771号