`
zhongzhihua
  • 浏览: 312441 次
  • 来自: ...
社区版块
存档分类
最新评论

SQL面试题[经典收录]

    博客分类:
  • java
阅读更多

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 )

分享到:
评论

相关推荐

    SQL面试题[经典收录].txt

    从给定的文件信息中,我们可以提取出一系列与SQL相关的知识点,这些知识点涵盖了SQL的基本操作、数据处理、查询优化以及数据库事务管理等重要领域。下面将详细解释这些知识点: ### SQL基本操作 #### 创建表...

    sql数据库面试题以及答案

    本资源共收录了十道 SQL 数据库面试题,涵盖了数据库基本操作、数据查询、数据分析等方面的知识点。下面是对每道题的详细解释: 1. 查询“001”课程比“002”课程成绩高的所有学生的学号: 该题考察了子查询的使用...

    城市软件企业面试题收录.rar

    城市软件企业面试题收录是一个包含了北京、上海、杭州和深圳四大城市.NET和Java技术方向的面试题库。这个资源对于正在求职或者希望提升自身技术能力的程序员来说,是一份宝贵的参考资料。下面,我们将深入探讨这些...

    各软件公司笔试面试题整理

    本压缩包文件"各软件公司笔试面试题整理"收录了多家知名企业的笔试题目,为准备应聘者提供了宝贵的参考资料。以下是基于这个主题的详细知识点讲解: 1. **Java基础**: - 数据类型:Java有八种基本数据类型,包括...

    C、C 、Java、软件测试的笔试、面试题集合Version3

    在原来的基础上我加了点我做过的题,题不可能面面俱到,收录的只是以前常见常做的,不同的公司有不同的题,而且时刻在变更,不可能一成不变吧。 解压后有六个部分: C++笔试题.rar; Java笔试题.rar; 软件测试.rar ...

    笔试题java&.net全集收录

    Java和.NET都是广泛使用的开发平台,其面试题通常会涵盖语法、数据结构、算法、设计模式、框架、并发编程等多个方面,对于求职者来说,熟悉这些题目有助于提升面试成功率。 压缩包内的文件名称列表包括“笔试题答案...

    前端面试题整理—性能优化及安全篇.docx

    优势:去掉样式后页面呈现清晰的结构、盲人使用读屏器更好地阅读、搜索引擎更好地理解页面,有利于收录、便于团队项目的可持续运作及维护。 二、SEO 1. 合理的 title、description、keywords:title 值强调重点...

    《Java程序员面试笔试真题库》猿媛之家编著

    本书收录了大量来自实际招聘过程中的经典题目,并提供了详尽的解答和解析,旨在帮助读者全面掌握Java编程的核心技能,提高解决问题的能力。 #### 二、Java基础知识 1. **Java语言特性** - 面向对象:封装、继承、...

    PHP工程师笔试题及答案

    本文档收录了 PHP 开发工程师的一些笔试题和答案,涵盖了 PHP 的基础知识、函数编程、数据库优化、排序算法、文件操作等方面的知识点。 1、echo count(“abc”); 输出什么? 答案:输出 3,因为 count() 函数返回...

    java简答题总结pdf文档

    Java简答题总结pdf文档是面试题的总结,涵盖了Java、数据库、框架、Redis、Linux等方面的知识点,包含题目讲解和考点提示,收录了公司常考笔试题,建议收藏。 第1题:数据库范式 数据库范式是设计表结构的规则,...

    亮剑.NET深入体验与实战精要2

    本章常见技术面试题 76 常见面试技巧之面试前的准备 76 本章小结 77 第2章 细节决定成败 79 2.1 Equals()和运算符==的区别 80 2.2 const和readonly的区别 82 2.3 private、protected、public和internal的区别 86 2.4...

    亮剑.NET深入体验与实战精要3

    本章常见技术面试题 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程序员面试宝典 第4版》还特别收录了一些资深程序员的成功面试经验。这些经验涵盖了从简历准备到面试技巧、再到谈薪策略等多个方面,对于即将步入职场或想要跳槽的JAVA程序员来...

    IT 学生解惑 、程序员面试宝典

    2. **编程题解**:书中可能收录了大量的经典面试题目,包括算法题、逻辑思维题,通过实例解析帮助读者提高解决问题的能力。 3. **系统设计**:讨论大型系统架构、负载均衡、容错机制等,这些是高级程序员面试中常见...

    程序员必读书单

    - **Leetcode题解**:Leetcode是一个知名的在线编程平台,收录了大量的算法题。针对不同的题型,总结了解题思路。 - 数组和字符串 - 树和图遍历 - 回溯法与递归 #### 面向对象 - **《HeadFirst设计模式》**:...

    Cracking the Coding Interview

    - **面试题目汇总**:收录了大量的面试题目,涵盖了数据结构、算法等多个方面。 #### 四、详细章节解读 1. **数组和字符串**:介绍了一系列与数组和字符串相关的题目,例如反转字符串、检查字符串是否为回文等。 2...

Global site tag (gtag.js) - Google Analytics