SQL面试题小结
我想面试过软件开发的朋友都会碰到sql方面的面试题,这个可以说是面试必考的。这里拿几个例子开拓一下思路。
1.
有这样一张表
教师号
星期
是否有课
1
1
有
2
3
有
1
2
有
1
2
有
要得出这样的数据:
姓名
星期一
星期二
星期三
星期四
星期五
1
1
2
Null
Null
Null
2
Null
Null
1
Null
Null
不用管具体的表结构,我们看看如何得到这样的结果:
首先我们通过sql创建一张表,然后插入数据:
create table Course
(
TeacherId int,
Week int,
HasCourse varchar(2)
)
insert into Course values('1','1','有')
我们分析发现,在得到的数据中,星期一这样的字段在原表中是不存在的,所以如何产生这些字段是关键所在,估计这个很多初学者也比较少用,但是却很有用.另外一点就是对于没有课的要显示为空,而不是0.
好了,我们看一下如何统计查询:
select distinct TeacherId as 教师号,
星期一=(select case count(*) when 0 then null else count(*) end from Course where TeacherId=b.TeacherId and Week='1'),
星期二=(select case count(*) when 0 then null else count(*) end from Course where TeacherId=b.TeacherId and Week='2'),
星期三=(select case count(*) when 0 then null else count(*) end from Course where TeacherId=b.TeacherId and Week='3'),
星期四=(select case count(*) when 0 then null else count(*) end from Course where TeacherId=b.TeacherId and Week='4'),
星期五=(select case count(*) when 0 then null else count(*) end from Course where TeacherId=b.TeacherId and Week='5')
from Course b group by TeacherId
2. 查询表User的地30到40条数据,id主键并且不连续.
可以说这是老古董了,不过看两种方法吧:
select top 10 * from [User]
where id not in
(select top 30 id from [User])
select top 10 * from [User]
where id>(select max(id) from (select top 30 id from [User]) as T)
3.
查询SaleDetail表中GoodsName重复出现三次及以上的记录.
select * from (select goodsName, count(goodsName) as c from SaleDetail group
by goodsName)as t where t.c>=3
4
相关文档:
在程序中我们可能经常会遇到这种情况,比如要取一个listbox里面的选择项,得到的结果可能是string ID="id1,id2,id3,id4",然后我们要把这些ID插入到数据库中,同时每个id对应的是要插入一条记录。实现的方法有很多,但是如果我们通过下面这个函数(RecurrentSplit)就能简单的达到 ......
SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname ......
根据生日的xx月xx日查找在$checkDate计算,$before日后生日的客户:
$checkDate为YYYY-MM-DD
WHERE substring(ADDDATE( '$checkDate', $before ),6,10)=substring(DATE_FORMAT(birthday,'%Y-%m-%d'),6,10)
$dates 天内生日的客户未考虑到平年、闰年::
$sql.=" (dayofyear( birthday )-dayofyear( ......
@ECHO OFF
ECHO /////////////////////////////////////////////////
ECHO // Microsoft SQL Server 2005 整合、集成SP3
ECHO // Author : cxygoo
ECHO // Date : 2008-12-22
ECHO /////////////////////////////////////////////////
ECHO 运行此批处理前,得建目录:C:\SQL2005,C:\SQL200 ......