- 浏览: 520275 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (422)
- 重要 (12)
- BUG解决备忘录 (32)
- 环境搭建 (17)
- 开源组件 (4)
- 数据库 (16)
- 设计模式 (4)
- 测试 (3)
- javascript (5)
- Android (14)
- jdk相关 (9)
- struts2 (10)
- freemark (3)
- 自定义扩展及工具类 (5)
- jdk5新特性及java基础 (13)
- ssh及其他框架 (15)
- linux (32)
- tcp-ip http协议 (8)
- 服务器集群与负载均衡 (34)
- 项目管理相关 (11)
- 实用小技术 (10)
- 架构相关 (14)
- firefox组件 (11)
- spider (6)
- 产品设计 (11)
- PHP (1)
- ws (4)
- lucene (10)
- 其他 (2)
- BI (1)
- NoSQL (3)
- gzip (1)
- ext (4)
- db (6)
- socket (1)
- 源码阅读 (2)
- NIO (2)
- 图片处理 (1)
- java 环境 (2)
- 项目管理 (4)
- 从程序员到项目经理(一):没有捷径 (1)
- bug (1)
- JAVA BASE (8)
- 技术原理 (0)
- 新框架新技术 (1)
- 量化与python (1)
- 系统编程 (0)
- C语言 (0)
- 汇编 (0)
- 算法 (0)
最新评论
-
hyspace:
别逗了,最后一个算法根本不是最优的,sort(function ...
数组去重——一道前端校招试题 -
washingtin:
楼主能把策略和路由的类代码贴出来吗
Spring + iBatis 的多库横向切分简易解决思路 -
sdyjmc:
初略看了一下,没有闹明白啊,均衡负载使用Nginx,sessi ...
J2EE集群原理 I -
shandeai520:
谢谢大神!请教大神一个问题:假如我有三台服务器,连接池的上限是 ...
集群和数据库负载均衡的研究 -
hekuilove:
给lz推荐一下apache commonsStringUtil ...
request 获取 ip
SQL面试题(1)
create table testtable1
(
id int IDENTITY,
department
varchar(12)
)
select * from testtable1
insert into testtable1 values('设计')
insert
into testtable1 values('市场')
insert into testtable1 values('售后')
/*
结
果
id department
1 设计
2 市场
3 售后
*/
create table
testtable2
(
id int IDENTITY,
dptID int,
name varchar(12)
)
insert
into testtable2 values(1,'张三')
insert into testtable2 values(1,'李四')
insert
into testtable2 values(2,'王五')
insert into testtable2 values(3,'彭六')
insert
into testtable2 values(4,'陈七')
/*
用一条SQL语句,怎么显示如下结果
id dptID
department name
1 1 设计 张三
2 1 设计 李四
3
2 市场 王五
4 3 售后 彭六
5 4 黑人
陈七
*/
答案:
SELECT testtable2.* , ISNULL(department,'黑人')
FROM testtable1
right join testtable2 on testtable2.dptID = testtable1.ID
也做出来了可比这方法稍复杂。
sql面试题(2)
有表A,结构如下:
A: p_ID p_Num s_id
1 10 01
1 12 02
2 8 01
3
11 01
3 8 03
其中:p_ID为产品ID,p_Num为产品库存量,s_id为仓库ID。请用SQL语句实现将上表中的数
据合并,合并后的数据为:
p_ID s1_id s2_id s3_id
1 10 12 0
2 8 0 0
3
11 0 8
其中:s1_id为仓库1的库存量,s2_id为仓库2的库存量,s3_id为仓库3的库存量。如果该产品在某仓库中无库存量,那
么就是0代替。
结果:
select p_id ,
sum(case when s_id=1 then p_num else 0 end) as s1_id
,sum(case
when s_id=2 then p_num else 0 end) as s2_id
,sum(case when s_id=3
then p_num else 0 end) as s3_id
from myPro group by p_id
SQL面试题(3)
1 .触发器的作用?
答:触发器是一中特殊的存储过程,主要是通过事件来触 发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器 上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
2 。什么是存储过程?用什么来调用?
答:存储过程是一个预编译的 SQL 语句,优点是允许模块化 的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次 SQL ,使用存储过程比单纯 SQL 语句执行要快。可以用 一个命令对象来调用存储过程。
3 。索引的作用?和它的优点缺点是什么?
答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检 索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了 数据录入的速度,同时也增加了数据库的尺寸大小。
3 。什么是内存泄漏?
答:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其 分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字 new 等创建对象时,就从堆中为它分配一块内存,使用完后程序调用 free 或者 delete 释放该内存,否 则就说该内存就不能被使用,我们就说该内存被泄漏了。
4 。维护数据库的完整性和一致 性,你喜欢用触发器还是自写业务逻辑?为什么?
答:我是这样做的,尽可能使 用约束,如 check, 主 键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致 性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。
5 。什么是事务?什么是锁?
答:事务就是被绑定在一起作 为一个逻辑工作单元的 SQL 语 句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事 务。要将有组语句作为事务考虑,就需要通过 ACID 测试,即原子性,一致性,隔离性和持久性。
锁:在所以 的 DBMS 中, 锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁 还分级别的。
6 。什么叫视图?游标是什么?
答:视图是一种虚拟的表,具 有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更 容易,相比多表查询。
游标:是对 查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游 标,但是需要逐条处理数据的时候,游标显得十分重要。
7。为管理业务培训信息,建 立3个表:
S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位,学员年龄
C(C#,CN)C#,CN分别代表课程编号,课程名称
SC(S#,C#,G) S#,C#,G分别代表学号,所选的课程编号,学习成绩
(1)使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名?
答案:select s# ,sn from s where S# in(select S# from c,sc where c.c#=sc.c# and cn=’税收基础’)
(2) 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位?
答:select sn,sd from s,sc where s.s#=sc.s# and sc.c#=’c2’
(3) 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位?
答:select sn,sd from s where s# not in(select s# from sc where c#=’c5’)
(4)查询选修了课程的学员人数
答:select 学员人数=count(distinct s#) from sc
(5) 查询选修课程超过5门的学员学号和所属单位?
答:select sn,sd from s where s# in(select s# from sc group by s# having count(distinct c#)>5)
SQL面试题(4)
1.查询A(ID,Name)表中第31至40条记录,ID作为主键可能是不是连续增长的列,完整的查询语句如下:
select
top 10 * from A where ID >(select max(ID) from (select top 30 ID from
A order by A ) T) order by A
2.查询表A中存在ID重复三次以上的记录,完整的查询语句如下:
select
* from(select count(ID) as count from table group by ID)T where
T.count>3
SQL面试题(5)
在面试应聘的SQL Server数据库开发人员时,我运用了一套标准的基准技术问题。下面这些问题是我觉得能够真正有助于淘汰不合格应聘者的问题。它们按照从易到难的顺序排 列。当你问到关于主键和外键的问题时,后面的问题都十分有难度,因为答案可能会更难解释和说明,尤其是在面试的情形下。
你能向我简要叙述一下SQL Server 2000中使用的一些数据库对象吗?
你希望听到的答案包括这样一些对象:表格、视图、用户定义的函数,以及存储过程;如果他们还能够提到像触发器这样的对象就更好了。如果应聘者不能回 答这个基本的问题,那么这不是一个好兆头。
NULL是什么意思?
NULL(空)这个值是数据库世界里一个非常难缠的东西,所以有不少应聘者会在这个问题上跌跟头您也不要觉得意外。
NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。假设您的SQL Server数据库里有ANSI_NULLS,当然在默认情况下会有,对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 UNKNOWN值进行比较,并在逻辑上希望获得一个答案。您必须使用IS NULL操作符。
什么是索引?SQL Server 2000里有什么类型的索引?
任何有经验的数据库开发人员都应该能够很轻易地回答这个问题。一些经验不太多的开发人员能够回答这个问题,但是有些地方会说不清楚。
简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在SQL Server里,它们有两种形式:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(或哪些)字段,这些字段都 会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的 指针。它允许每个表格有多个非聚集索引。
什么是主键?什么是外键?
主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及 一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。
什么是触发器?SQL Server 2000有什么不同类型的触发器?
让未来的数据库开发人员知道可用的触发器类型以及如何实现它们是非常有益的。
触发器是一种专用类型的存储过程,它被捆绑到SQL Server 2000的表格或者视图上。在SQL Server 2000里,有INSTEAD-OF和AFTER两种触发器。INSTEAD-OF触发器是替代数据操控语言(Data Manipulation Language,DML)语句对表格执行语句的存储过程。例如,如果我有一个用于TableA的INSTEAD-OF-UPDATE触发器,同时对这个 表格执行一个更新语句,那么INSTEAD-OF-UPDATE触发器里的代码会执行,而不是我执行的更新语句则不会执行操作。
AFTER触发器要在DML语句在数据库里使用之后才执行。这些类型的触发器对于监视发生在数据库表格里的数据变化十分好用。
您如何确一个带有名为Fld1字段的TableB表格里只具有Fld1字段里的那些值,而这些值同时在名为TableA的表格的 Fld1字段里?
这个与关系相关的问题有两个可能的答案。第一个答案(而且是您希望听到的答案)是使用外键限制。外键限制用来维护引用的完整性。它被用来确保表格里 的字段只保存有已经在不同的(或者相同的)表格里的另一个字段里定义了的值。这个字段就是候选键(通常是另外一个表格的主键)。
另外一种答案是触发器。触发器可以被用来保证以另外一种方式实现与限制相同的作用,但是它非常难设置与维护,而且性能一般都很糟糕。由于这个原因, 微软建议开发人员使用外键限制而不是触发器来维护引用的完整性。
对一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑?
你正在寻找进行与数据操控有关的应聘人员。对一个表格的索引越多,数据库引擎用来更新、插入或者删除数据所需要的时间就越多,因为在数据操控发生的 时候索引也必须要维护。
你可以用什么来确保表格里的字段只接受特定范围里的值?
这个问题可以用多种方式来回答,但是只有一个答案是“好”答案。您希望听到的回答是Check限制,它在数据库表格里被定义,用来限制输入该列的 值。
触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。因此,微软建议 使用Check限制而不是其他的方式来限制域的完整性。
如果应聘者能够正确地回答这个问题,那么他的机会就非常大了,因为这表明他们具有使用存储过程的经验。
返回参数总是由存储过程返回,它用来表示存储过程是成功还是失败。返回参数总是INT数据类型。
OUTPUT参数明确要求由开发人员来指定,它可以返回其他类型的数据,例如字符型和数值型的值。(可以用作输出参数的数据类型是有一些限制的。) 您可以在一个存储过程里使用多个OUTPUT参数,而您只能够使用一个返回参数。
什么是相关子查询?如何使用这些查询?
经验更加丰富的开发人员将能够准确地描述这种类型的查询。
相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会真正请求外部查询的值,从而形成一个类似于循环的状况。
SQL面试题(6)
原表:
courseid coursename score
-------------------------------------
1 java 70
2 oracle 90
3 xml 40
4 jsp 30
5 servlet
80
-------------------------------------
为了便于阅读,查询此表后的结果显式如下(及格分
数为60):
courseid coursename score mark
---------------------------------------------------
1 java 70 pass
2 oracle 90 pass
3 xml 40 fail
4 jsp 30
fail
5 servlet 80 pass
---------------------------------------------------
写出此查询语句
ORACLE : select courseid, coursename ,score
,decode(sign(score-60),-1,'fail','pass') as mark from course
(DECODE函数是ORACLE
PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数)
(SQL: select courseid, coursename ,score ,(case when score<60 then 'fail' else 'pass' end) as mark from course )
http://qiutian110119.blog.163.com/blog/?class=class&clsId=fks_084067082081081065087080085095081082087066083085087066#m=0&t=1&c=fks_084067082081081065087080085095081082087066083085087066
1.什么是存储过程?
存储过程是一个预编译的sql语句。创建一次,以后在程序中可以多次反复调用。比执行sql语句要快。
存储过程通常会被高速缓存;除了第1次执行需要语法检查,以后执行无需检查。
2.触发器的作用?
触发器是一种特殊的存储过程,主要是通过事件来触发而被执行。
3.索引的作用?它的优缺点?
索引就是一种特殊的查询表,数据库可以利用它加速数据的检索,类似书的目录。
优点就是加速检索
缺点就是减慢了数据录入速度,同时增加了数据库的容量
4.什么是事务?什么是锁?
事务:逻辑单元。要么全部执行成功;要么全部执行失败。原子性,一致性,隔离性和持久性。
锁:保证事务的完整性和并发性。
5.什么是视图?
虚表。简化查询。
7.什么是游标?
逐条检索数据。
8.叙述一下SQL Server2000中的数据库对象
表,视图,索引,函数,存储过程,触发器,自定义类型
9.null是什么意思?
null表示未知的值,通过is null来判断。
10.SQL Server中有什么类型的索引?
聚集索引:1个表只能有1个。
非聚集的索引
11.SQL Server2000中有几种不同类型的触发器?
INSTEAD-OF
AFTER
12.DECODE函数
select decode(sign(score - 60), -1, 'fail', 'pass') as mark from course
case when
select (case when score <60 then 'fail' else 'pass') as mark from course
delete和truncate的区别
truncate 执行速度快,不记录日志
delete 对每条记录的删除均记录日志
13.用一条sql语句,查询出每门课都大于80分的学生姓名
姓名 课程 分数
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
select distinct t.姓名 from table t where t.姓名 not in (select tt.姓名 from table tt where tt.分数 <= 80)
过滤掉只要有1门小于等于80的学生。
select 姓名 from table group by name having min(分数) > 80
14.学生表
自动编号 学号 姓名
1 2005001 张三
2 2005002 李四
3 2005001 张三
删除除了自动编号不同,其他都相同的冗余学生信息。使用1条语句。
保留最小的值(自动编码)
delete from table a where a.自动编号 not in (select min(b.自动编号) from table b group by b.学号, b.姓名)
15.depart表里只有1个字段name,共4条记录:a, b, c, d,现在4个球进行比赛,用1条sql语句显示所有可能的比赛组合
分主客场:select a.name + ":" + b.name from department a, department b where a.name <> b.name
不分主客场:select a.name + ":" + b.name from department a, department b where a.name > b.name
16.怎样表1转变为表2
表1
--------------------------------
year month amount
1991 1 1.1
1991 2 1.2
1991 3 1.3
1991 4 1.4
1992 1 2.1
1992 2 2.2
1992 3 2.3
1992 4 2.4
----------------------------------
表2
----------------------------------
year m1 m2 m3 m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4
结果:
select t.year, (select m1.amount from table m1 where m1.year = t.year and m1.month = t.month) m1,
(select m2.amount from table m2 where m2.year = t.year and m2.month = t.month) m2,
(select m3.amount from table m3 where m3.year = t.year and m3.month = t.month) m3,
(select m4.amount from table m4 where m4.year = t.year and m4.month = t.month) m4
from table t order by t.year
17.2张关联表,删除主表中已经在副表中没有的记录
主表为A
副表为B(B.bid)
delete from A where A.bid not in (select B.bid from B)
18.2个表A,B,均有key和value2个字段,如果B的key在A中也存在,就把B的value替换为A的value。
update B set B.value = A.value
from A
where A.key = B.key
19.业务培训模块
S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN ) C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩
1)使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
select SN, SD from s where s.[s#] in (select b.[S#] from (select count(C.[C#]) num from C) a, (select SC.[S#], count(SC.[C#]) num from SC group by SC.[S#]) b where a.num = b.num)
2)查询选修课程超过5门的学员学号和所属单位
select S.SN, S.SD from S where S.[S#] in (select SC.[S#] from SC group by SC.[S#] having count(distinct SC.C#) > 5)
20.关系如下:
S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名
C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩
1)列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
select a.SNO, S.SNAME, a.AVG from S
(select SC.SNO, avg(SC.SCGRADE) AVG from SC group by SC.SNO)a,
(select SC.SNO from SC where SC.SCGRADE < 60 group by SC.SNO having count(distinct SC.CNO) >= 2) b
where a.SNO = b.SNO and S.SNO = a.SNO
2)列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
select sno
from
(
select S.SNO as sno, (select C.CNO from C, SC where C.CNO=SC.CNO and
S.SNO=SC.SNO and C.CNO='1') c1, (select C.CNO from C, SC where
C.CNO=SC.CNO and S.SNO=SC.SNO and C.CNO='2') c2 from S
) where c1 is not null and c2 is not null
或者
SELECT S.SNO,S.SNAME
FROM S,
(
SELECT SC.SNO FROM SC,CWHERE SC.CNO=C.CNO AND C.CNAME IN('1','2') GROUP BY SNO HAVING COUNT(DISTINCT CNO)=2
)SC WHERE S.SNO=SC.SNO
3)列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号
select S.SNO from S, C, SC where S.SNO=SC.SNO and C.CNO=SC.CNO and S.SNO=SC.SNO and C.CNO = '1' and SC.SCGRADE > (select SC.SCGRADE from S, C, SC where S.SNO=SC.SNO and C.CNO=SC.CNO and S.SNO=SC.SNO and C.CNO = '1' and S.SNO = '2')
或者
SELECT S.SNO,S.SNAME
FROM S,
(
SELECT SC1.SNO FROM SC SC1,C C1,SC SC2,C C2
WHERE SC1.CNO=C1.CNO AND C1.NAME='1' AND SC2.CNO=C2.CNO AND C2.NAME='2' AND SC1.SCGRADE>SC2.SCGRADE
)SC WHERE S.SNO=SC.SNO
4)列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
select sno, num1, num2
from
(
select S.SNO as sno, (select SC.SCGRADE from SC,C where SC.CNO=C.CNO and
S.SNO=C.SNO and SC.SNO=S.SNO and C.CNO='1') as num1, (select SC.SCGRADE
from SC,C where SC.CNO=C.CNO and S.SNO=C.SNO and SC.SNO=S.SNO and
C.CNO='2') as num2 from S
) where num1 > num2
或者
SELECT S.SNO,S.SNAME,SC.[1号课成绩],SC.[2号课成绩]
FROM S,
(
SELECT SC1.SNO,[1号课成绩]=SC1.SCGRADE,[2号课成绩]=SC2.SCGRADE
FROM SC SC1,C C1,SC SC2,C C2 WHERE SC1.CNO=C1.CNO AND C1.NAME='1' AND
SC2.CNO=C2.CNO AND C2.NAME='2' AND SC1.SCGRADE>SC2.SCGRADE
)SC WHERE S.SNO=SC.SNO
1.一道SQL语句面试题,关于group by
表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负
如果要生成下列结果, 该如何写sql语句?
胜 负
2005-05-09 2 2
2005-05-10 1 2
------------------------------------------
create table #tmp(rq varchar(10),shengfu nchar(1))
insert into #tmp values('2005-05-09','胜')
insert into #tmp values('2005-05-09','胜')
insert into #tmp values('2005-05-09','负')
insert into #tmp values('2005-05-09','负')
insert into #tmp values('2005-05-10','胜')
insert into #tmp values('2005-05-10','负')
insert into #tmp values('2005-05-10','负')
1)select rq, sum(case when shengfu='胜' then
1 else 0 end)'胜',sum(case when shengfu='负' then 1 else 0 end)'负' from
#tmp group by rq
2) select N.rq,N.勝,M.負 from (
select rq,勝=count(*) from #tmp where shengfu='胜'group by rq)N inner join
(select rq,負=count(*) from #tmp where shengfu='负'group by rq)M on N.rq=M.rq
3)select a.col001,a.a1 胜,b.b1 负 from
(select col001,count(col001) a1 from temp1 where col002='胜' group by col001) a,
(select col001,count(col001) b1 from temp1 where col002='负' group by col001) b
where a.col001=b.col001
2.请教一个面试中遇到的SQL语句的查询问题
表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
------------------------------------------
select (case when a>b then a else b end ),
(case when b>c then b esle c end)
from table_name
3.面试题:一个日期判断的sql语句?
请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)
------------------------------------------
select * from tb where datediff(dd,SendTime,getdate())=0
4.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。
显示格式:
语文 数学 英语
及格 优秀 不及格
------------------------------------------
select
(case when 语文>=80 then '优秀'
when 语文>=60 then '及格'
else '不及格') as 语文,
(case when 数学>=80 then '优秀'
when 数学>=60 then '及格'
else '不及格') as 数学,
(case when 英语>=80 then '优秀'
when 英语>=60 then '及格'
else '不及格') as 英语,
from table
5.在sqlserver2000中请用sql创建一张用户临时表和系统临时表,里面包含两个字段ID和IDValues,类型都是int型,并解释下两者的区别?
------------------------------------------
用户临时表:create table #xx(ID int, IDValues int)
系统临时表:create table ##xx(ID int, IDValues int)
区别:
用户临时表只对创建这个表的用户的Session可见,对其他进程是不可见的.
当创建它的进程消失时这个临时表就自动删除.
全局临时表对整个SQL Server实例都可见,但是所有访问它的Session都消失的时候,它也自动删除.
6.sqlserver2000是一种大型数据库,他的存储容量只受存储介质的限制,请问它是通过什么方式实现这种无限容量机制的。
------------------------------------------
它的所有数据都存储在数据文件中(*.dbf),所以只要文件够大,SQL Server的存储容量是可以扩大的.
SQL Server 2000 数据库有三种类型的文件:
主要数据文件
主要数据文件是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是 .mdf。
次要数据文件
次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的推荐文件扩展名是 .ndf。
日志文件
日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。
7.请用一个sql语句得出结果
从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。
如使用存储过程也可以。
table1
月份mon 部门dep 业绩yj
-------------------------------
一月份 01 10
一月份 02 10
一月份 03 5
二月份 02 8
二月份 04 9
三月份 03 8
table2
部门dep 部门名称dname
--------------------------------
01 国内业务一部
02 国内业务二部
03 国内业务三部
04 国际业务部
table3 (result)
部门dep 一月份 二月份 三月份
--------------------------------------
01 10 null null
02 10 8 null
03 null 5 8
04 null null 9
------------------------------------------
1)
select a.部门名称dname,b.业绩yj as '一月份',c.业绩yj as '二月份',d.业绩yj as '三月份'
from table1 a,table2 b,table2 c,table2 d
where a.部门dep = b.部门dep and b.月份mon = '一月份' and
a.部门dep = c.部门dep and c.月份mon = '二月份' and
a.部门dep = d.部门dep and d.月份mon = '三月份' and
2)
select a.dep,
sum(case when b.mon=1 then b.yj else 0 end) as '一月份',
sum(case when b.mon=2 then b.yj else 0 end) as '二月份',
sum(case when b.mon=3 then b.yj else 0 end) as '三月份',
sum(case when b.mon=4 then b.yj else 0 end) as '四月份',
sum(case when b.mon=5 then b.yj else 0 end) as '五月份',
sum(case when b.mon=6 then b.yj else 0 end) as '六月份',
sum(case when b.mon=7 then b.yj else 0 end) as '七月份',
sum(case when b.mon=8 then b.yj else 0 end) as '八月份',
sum(case when b.mon=9 then b.yj else 0 end) as '九月份',
sum(case when b.mon=10 then b.yj else 0 end) as '十月份',
sum(case when b.mon=11 then b.yj else 0 end) as '十一月份',
sum(case when b.mon=12 then b.yj else 0 end) as '十二月份',
from table2 a left join table1 b on a.dep=b.dep
8.华为一道面试题
一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数。
------------------------------------------
select id, Count(*) from tb group by id having count(*)>1
select * from(select count(ID) as count from table group by ID)T where T.count>1
发表评论
-
存储过程
2013-02-15 18:44 768CREATE DEFINER=`root`@`loca ... -
oracle连接池配置 oci
2012-02-27 00:48 2327这些细节包括: 1、导 ... -
(转)PowerDesigner 连接oracle表与数据库中的表导入到PowerDesigner中
2011-10-11 09:55 1330PowerDesigner 连接oracle直接生成数据库中的 ... -
Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
2011-09-27 14:51 866Oracle数据导入导出imp/e ... -
MySql性能的检查和调优方法
2011-03-06 04:30 837转自:http://www.sudone.com/ ... -
关系数据库还是NoSQL数据库
2011-02-12 22:24 1029上一篇 简单的说明了 ... -
NoSQL开篇——为什么要使用NoSQL
2011-02-12 22:22 929非常荣幸能受邀在Inf ... -
两个库数据对copy
2010-12-08 10:10 850insert into lxx2.t_info_interfa ... -
Mysql 数据库缓存cache功能总结[转]
2010-12-01 21:28 3039mysql cache功能分析: 1 mysql的ca ... -
MySQL集群简介与配置详解
2010-12-01 21:05 10911. 先了解一下你是否应该用MySQL集群。 减少数据中 ... -
MySQL集群在Ubuntu 9.0上的配置方法
2010-12-01 21:03 1159大家在网上都能找到都是RedHat系统等等,对Ubuntu系统 ... -
Oracle集群的概念
2010-12-01 20:50 1411大多数情况下,Oracle集群实质上就是使多个服务器访问同一个 ... -
比较经典的sql
2010-11-17 17:26 1098学生成绩表(stuscore): ... -
SQL基础实例(学生课程系统)
2010-11-17 16:52 1201drop table student,course ... -
Oracle执行外部文件:
2010-11-03 10:19 1103Oracle 执行外部文件: c:>sqlplu ...
相关推荐
从给定的文件信息中,我们可以提取出一系列与SQL相关的知识点,这些知识点涵盖了SQL的基本操作、数据处理、查询优化以及数据库事务管理等重要领域。下面将详细解释这些知识点: ### SQL基本操作 #### 创建表...
本资源共收录了十道 SQL 数据库面试题,涵盖了数据库基本操作、数据查询、数据分析等方面的知识点。下面是对每道题的详细解释: 1. 查询“001”课程比“002”课程成绩高的所有学生的学号: 该题考察了子查询的使用...
城市软件企业面试题收录是一个包含了北京、上海、杭州和深圳四大城市.NET和Java技术方向的面试题库。这个资源对于正在求职或者希望提升自身技术能力的程序员来说,是一份宝贵的参考资料。下面,我们将深入探讨这些...
本压缩包文件"各软件公司笔试面试题整理"收录了多家知名企业的笔试题目,为准备应聘者提供了宝贵的参考资料。以下是基于这个主题的详细知识点讲解: 1. **Java基础**: - 数据类型:Java有八种基本数据类型,包括...
在原来的基础上我加了点我做过的题,题不可能面面俱到,收录的只是以前常见常做的,不同的公司有不同的题,而且时刻在变更,不可能一成不变吧。 解压后有六个部分: C++笔试题.rar; Java笔试题.rar; 软件测试.rar ...
Java和.NET都是广泛使用的开发平台,其面试题通常会涵盖语法、数据结构、算法、设计模式、框架、并发编程等多个方面,对于求职者来说,熟悉这些题目有助于提升面试成功率。 压缩包内的文件名称列表包括“笔试题答案...
优势:去掉样式后页面呈现清晰的结构、盲人使用读屏器更好地阅读、搜索引擎更好地理解页面,有利于收录、便于团队项目的可持续运作及维护。 二、SEO 1. 合理的 title、description、keywords:title 值强调重点...
本书收录了大量来自实际招聘过程中的经典题目,并提供了详尽的解答和解析,旨在帮助读者全面掌握Java编程的核心技能,提高解决问题的能力。 #### 二、Java基础知识 1. **Java语言特性** - 面向对象:封装、继承、...
本文档收录了 PHP 开发工程师的一些笔试题和答案,涵盖了 PHP 的基础知识、函数编程、数据库优化、排序算法、文件操作等方面的知识点。 1、echo count(“abc”); 输出什么? 答案:输出 3,因为 count() 函数返回...
Java简答题总结pdf文档是面试题的总结,涵盖了Java、数据库、框架、Redis、Linux等方面的知识点,包含题目讲解和考点提示,收录了公司常考笔试题,建议收藏。 第1题:数据库范式 数据库范式是设计表结构的规则,...
本章常见技术面试题 76 常见面试技巧之面试前的准备 76 本章小结 77 第2章 细节决定成败 79 2.1 Equals()和运算符==的区别 80 2.2 const和readonly的区别 82 2.3 private、protected、public和internal的区别 86 2.4...
本章常见技术面试题 76 常见面试技巧之面试前的准备 76 本章小结 77 第2章 细节决定成败 79 2.1 Equals()和运算符==的区别 80 2.2 const和readonly的区别 82 2.3 private、protected、public和internal的区别 86 2.4...
为了进一步提升读者的面试能力,《JAVA程序员面试宝典 第4版》还特别收录了一些资深程序员的成功面试经验。这些经验涵盖了从简历准备到面试技巧、再到谈薪策略等多个方面,对于即将步入职场或想要跳槽的JAVA程序员来...
2. **编程题解**:书中可能收录了大量的经典面试题目,包括算法题、逻辑思维题,通过实例解析帮助读者提高解决问题的能力。 3. **系统设计**:讨论大型系统架构、负载均衡、容错机制等,这些是高级程序员面试中常见...
- **附加题**:涵盖Unix防僵死算法、SQL查询等较深入的技术知识点。 5. **C++进阶知识点** - **程序执行压栈机制**:理解栈帧的工作原理。 - **容器和迭代器**:熟悉STL容器的特性和迭代器的使用。 - **虚拟...
- **Leetcode题解**:Leetcode是一个知名的在线编程平台,收录了大量的算法题。针对不同的题型,总结了解题思路。 - 数组和字符串 - 树和图遍历 - 回溯法与递归 #### 面向对象 - **《HeadFirst设计模式》**:...
- **面试题目汇总**:收录了大量的面试题目,涵盖了数据结构、算法等多个方面。 #### 四、详细章节解读 1. **数组和字符串**:介绍了一系列与数组和字符串相关的题目,例如反转字符串、检查字符串是否为回文等。 2...