- 浏览: 421775 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (318)
- js (20)
- JQuery (2)
- Java (46)
- Oracle (4)
- mysql (21)
- ExtJs (17)
- Excel (2)
- Linux (8)
- Sql (8)
- Jsp (2)
- hibernate (12)
- jbpm (17)
- eclipse (8)
- 名博收藏 (1)
- Junit (2)
- 应用集成 (3)
- web (10)
- jboss (3)
- Rest (3)
- 其它 (7)
- 磁盘分区管理 (1)
- spring (18)
- SSO (4)
- tomcat (4)
- CSS (7)
- MemCached (6)
- EhCache (4)
- weblogic (1)
- apache (6)
- Exception design (1)
- db (1)
- 分析模式 (1)
- jstl (1)
- jsf (0)
- firefox (2)
- MongoDB (4)
- androidpn (1)
- hadoop (1)
- cvs (1)
- 微信公众号 (2)
- 高并发 (4)
- 技术论坛 (1)
- CDN (1)
- JVM (16)
- 加密 (4)
- maven (2)
- jenkins (1)
- hessian (1)
- 大数据处理 (2)
- NIO (0)
- netty (1)
- redis (1)
- git (1)
- Elastic Job (0)
最新评论
-
zgw06629:
或者<pre>aaaabbbbcccc</p ...
javaDoc注释换行 -
ddnzero:
...
StringBuffer换行 -
maosijun:
。。。。
EXT CExt.form.ComboBox选择一次后只剩一个选项 -
ysa198584:
你这有问题,当我的代码出现User.class的时候,反编绎的 ...
java的class文件批量反编译 -
dongj0325:
看到您的博客,很受启发,但还有关于jbpm4.4 timer使 ...
JBPM定时器(Timer)之Repeat属性不能使用变量
SQL经典面试题集(一)
第一题:
为管理业务培训信息,建立3个表:
S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位,学员年龄
C(C#,CN)C#,CN分别代表课程编号,课程名称
SC(S#,C#,G) S#,C#,G分别代表学号,所选的课程编号,学习成绩
(1)使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名?
(2) 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位?
(3) 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位?
(4) 查询选修了课程的学员人数?
(5) 查询选修课程超过5门的学员学号和所属单位?
drop table S;
drop table C;
drop table SC;
create table S
(
S# varchar(10),
SN varchar (25),
SD varchar (25),
SA int
)
create table C
(
C# varchar(10),
CN varchar (25)
)
create table SC
(
S# varchar(10),
C# varchar(10),
G int
Primary Key(S#, C#)
)
insert into S values ('10001','Students1','department1',23)
insert into S values ('10002','Students2','department1',24)
insert into S values ('10003','Students3','department2',25)
insert into S values ('10004','Students4','department2',26)
insert into S values ('10005','Students5','department3',23)
insert into S values ('10006','Students6','department3',24)
insert into S values ('10007','Students7','department3',25)
insert into S values ('10008','Students8','department4',25)
insert into C values ('C1','数学')
insert into C values ('C2','物理')
insert into C values ('C3','化学')
insert into C values ('C4','英语')
insert into C values ('C5','中文')
insert into C values ('C6','税收基础')
insert into C values ('C7','传媒')
insert into C values ('C8','日语')
insert into SC values ('10001','C1',67)
insert into SC values ('10001','C2',77)
insert into SC values ('10001','C3',87)
insert into SC values ('10001','C4',97)
insert into SC values ('10001','C5',57)
insert into SC values ('10001','C6',47)
insert into SC values ('10002','C1',62)
insert into SC values ('10002','C2',72)
insert into SC values ('10002','C3',82)
insert into SC values ('10002','C4',92)
insert into SC values ('10002','C5',52)
insert into SC values ('10002','C6',42)
insert into SC values ('10004','C2',74)
insert into SC values ('10004','C5',54)
insert into SC values ('10004','C6',44)
--(1)使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名?
--解法一:
select S#,SN from S where S# in (select S# from C, SC where C.C#=SC.C# and C.CN='税收基础')
--解法二:
select S.S#,S.SN from S inner join (select S# from C left join SC on C.C#=SC.C# where C.CN='税收基础') T on T.S#=S.S#
--(2) 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位?
--解答:
select S.SN,S.SD from S,SC where S.S#=SC.S# and SC.C#='C2'
--(3) 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位?
--解答:
select distinct S.SN,S.SD from S where S.S# not in (select S.S# from S,SC where S.S#=SC.S# and SC.C#='C5')
--(4) 查询选修了课程的学员人数?
--解法一:
select 学员人数=count(distinct s#) from sc
--解法二:
select count(*) as 学员人数 from (select distinct SC.S# from SC) t
--(5) 查询选修课程超过5门的学员学号和所属单位?
--解法一:
select S#,SD from S where S.S# in (select SC.S# from SC group by SC.S# having count(*)>5)
--解法二:
select S#,SD from S where S# in(select S# from SC group by S# having count(distinct C#)>5)
第二题:
create table testtable1
(
id int IDENTITY,
department varchar(12)
)
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,'陈七')
insert into testtable2 values(5,'陈七')
select t2.id,t2.dptID,t1.department,t2.name from testtable2 t2 left join testtable1 t1 on t1.id=t2.dptID
select * from testtable2
用一条SQL语句,怎么显示如下结果
id dptID department name
1 1 设计 张三
2 1 设计 李四
3 2 市场 王五
4 3 售后 彭六
5 4 黑人 陈七
--解答:
--解法一:
select t2.id,t2.dptID,t1.department,t2.name from testtable2 t2 left join testtable1 t1 on t1.id=t2.dptID
--解法二:
SELECT t2.id , t2.dptID, ISNULL(t1.department,'黑人') dptName,t2.name FROM testtable1 t1 right join testtable2 t2 on t2.dptID = t1.ID
--注意下面两个语句查询结果与上面答案的区别
select t2.id,t2.dptID,t1.department,t2.name from testtable1 t1,testtable2 t2 where t1.id=t2.dptID
select t2.id,t2.dptID,t1.department,t2.name from testtable2 t2 inner join testtable1 t1 on t1.id=t2.dptID
第三题:
有表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代替。
create table A
(
p_ID int,
p_Num int,
s_id int
)
insert into A values(1,10,01)
insert into A values(1,12,02)
insert into A values(2,8,01)
insert into A values(3,11,01)
insert into A values(3,8,03)
--解答:
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 A group by p_id
第四题:
--1.查询A(ID,Name)表中第31至40条记录,ID作为主键可能是不是连续增长的列?
create table A
(
id int IDENTITY,
Name varchar (25)
)
--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 id ) T) order by id
第五题:
--查询A(ID,Name)表中存在ID重复三次以上的记
drop table A
create table A
(
id int,
Name varchar (25)
)
insert into A values(1,'a')
insert into A values(2,'a')
insert into A values(3,'a')
insert into A values(1,'a')
insert into A values(2,'a')
insert into A values(3,'a')
insert into A values(4,'a')
insert into A values(1,'a')
--解答:
select id,name from A where id in (select id from A group by id having count(id)>3)order by id
第六题:
原表Course:
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
---------------------------------------------------
写出此查询语句。
create table Course(
courseid int IDENTITY,
coursename varchar (25),
score int
)
insert into Course values ( 'java',70)
insert into Course values ( 'oracle',90)
insert into Course values ( 'xml',40)
insert into Course values ( 'jsp',30)
insert into Course values ( 'servlet',80)
--解答:
--oracle:
select courseid, coursename ,score ,decode(sign(score-60),-1,'fail','pass') as mark from course
--SQL Server:
select *, (case when score<60 then 'failed' else 'pass' end) as mark from Course
第七题:
有表:emp(id, name, age)
要求:列出所有名字重复的人的记录?
create table emp(
id int IDENTITY,
name varchar (25),
age int
)
insert into emp values('Zhang1',26)
insert into emp values('Zhang2',27)
insert into emp values('Zhang3',28)
insert into emp values('Zhang1',26)
insert into emp values('Zhang2',27)
insert into emp values('Zhang3',29)
insert into emp values('Zhang1',26)
insert into emp values('Zhang2',27)
insert into emp values('Zhang3',28)
insert into emp values('Zhang1',26)
insert into emp values('Zhang4',22)
insert into emp values('Wang1',27)
insert into emp values('wang2',28)
insert into emp values('Wang2',26)
insert into emp values('Wang1',22)
--列出所有名字重复的人的记录?
--解法一:要知道所有名字有重复人资料,首先必须知道哪个名字重复了:
select id,name,age from emp where name in (select name from emp group by name having count(*)>1)
--解法二:如果对每个名字都和原表进行比较,大于2个人名字与这条记录相同的就是合格的 ,就有:
select * from emp where (select count(*) from emp e where e.name=emp.name)>1
--解法三:如果有另外一个名字相同的人工号不与她他相同那么这条记录符合要求:
select * from emp where exists (select * from emp e where e.name=emp.name and e.id<>emp.id)
--或:
select distinct emp.* from emp inner join emp e on emp.name=e.name and emp.id<>e.id
第八题:
有例表:emp(name,age)
Tom 16
Sun 14
Tom 16
Tom 16
要求:过滤掉所有多余的重复记录
create table emp(
name varchar(20),
age int
)
insert into emp values('Tom',16)
insert into emp values('Sun',14)
insert into emp values('Tom',16)
insert into emp values('Tom',16)
--解法一:通过distinct、group by过滤重复:
select distinct * from emp
或
select name,age from emp group by name,age
--获得需要的数据,如果可以使用临时表就有解法:
select distinct * into #tmp from emp
delete from emp
insert into emp select * from #tmp
--但是如果不可以使用临时表,那该怎么办?
alter table emp add chk int identity(1,1)
--重复记录可以表示为:
select * from emp where (select count(*) from emp e where e.name=emp.name)>1
--要删除的是:
delete from emp where (select count(*) from emp e where e.name=emp.name and e.chk>=emp.chk)>1
--再把添加的列删掉,出现结果。
alter table emp drop column chk
--)另一个思路:视图
select min(chk) from emp group by name having count(*) >1
--获得有重复的记录chk最小的值,于是可以
delete from emp where chk not in (select min(chk) from emp group by name)
第九题:
有列表:emp(emp_no, name,age)
001 Tom 17
002 Sun 14
003 Tom 15
004 Tom 16
要求生成序列号
create table emp(
emp_no int,
name varchar(20),
age int
)
insert into emp values(001,'Tom',17)
insert into emp values(002,'Sun',14)
insert into emp values(003,'Tom',15)
insert into emp values(004,'Tom',16)
--(1)最简单的方法:
alter table emp add chk int identity(1,1)
--或
select *,identity(int,1,1) chk into #tmp from emp
select * from emp
alter table emp drop column chk
--如果需要控制顺序怎么办?
select *,identity(int,1,1) chk into #tmp from emp order by age
delete from emp
alter table emp add chk int
insert into emp select * from #tmp
select * from #tmp
drop table #tmp
--(2)假如不可以更改表结构,怎么办?
如果不可以唯一区分每条记录是没有办法的,
select emp.*,(select count(*) from emp e where e.emp_no<=emp.emp_no) from emp order by (select count(*) from emp e where e.emp_no<=emp.emp_no)
第十题:
学科表:
姓名 选课
---------------------
张三 数学
张三 物理
张三 语文
张三 化学
李四 数学
李四 化学
李四 语文
王五 数学
王五 物理
王五 语文
赵六 数学
赵六 物理
赵六 语文
周七 数学
周七 物理
问题一:只选数学,物理,语文的学生, 查询结果如下,写出相应SQL语句
姓名 选课
---------------------
王五 数学
王五 物理
王五 语文
赵六 数学
赵六 物理
赵六 语文
问题二:同时选了数学,物理,语文的学生, 查询结果如下,写出相应SQL语句
姓名 选课
---------------------
张三 数学
张三 物理
张三 语文
王五 数学
王五 物理
王五 语文
赵六 数学
赵六 物理
赵六 语文
create table course(
Name varchar(25),
CName varchar(25)
)
insert into course values ('张三','数学')
insert into course values ('张三','物理')
insert into course values ('张三','语文')
insert into course values ('张三','化学')
insert into course values ('李四','数学')
insert into course values ('李四','语文')
insert into course values ('李四','化学')
insert into course values ('王五','数学')
insert into course values ('王五','物理')
insert into course values ('王五','语文')
insert into course values ('赵四','数学')
insert into course values ('赵四','物理')
insert into course values ('赵四','语文')
insert into course values ('周七','数学')
insert into course values ('周七','物理')
select * from course
--问题一:只选数学,物理,语文的学生, 查询结果如下,写出相应SQL语句------
--解法一:
select A.Name,B.CName from
(select T.Name from (select Name,CName from Course where CName in('数学','物理','语文'))T group by Name having count(*)=3 )A,
(select Name,CName from Course where CName in('数学','物理','语文'))B
where A.Name=B.Name
and A.Name not in (select Name from Course group by Name having count(*)>3 )
--解法二:
select * from course
where name in (select name from course where CName in('数学','物理','语文') group by name having count(*)=3)
and name not in(select name from course group by name having count(*)>3)
--问题二:同时选了数学,物理,语文的学生, 查询结果如下,写出相应SQL语句---
--解法一:
select A.Name,B.CName from
(select T.Name from (select Name,CName from Course where CName in('数学','物理','语文'))T group by Name having count(*)=3 )A,
(select Name,CName from Course where CName in('数学','物理','语文'))B
where A.Name=B.Name
--解法二:
select * from course
where name in (select name from course where CName in('数学','物理','语文') group by name having count(*)=3)
发表评论
-
Mysql/postgreSQL
2013-11-04 10:12 733分类: Mysql/postgreSQL ... -
MySQL 两个经纬度之间的距离由近及远排序
2013-06-18 19:52 3710select *,(2 * 6378.137* ASIN( ... -
SQL连接
2010-06-10 13:45 678SQL中大概有这么几种JOIN: cross join i ... -
sql性能优化
2010-02-04 11:21 733http://www.cnblogs.com/zhangzh/ ... -
简洁、明晰!数据库设计三大范式应用实例剖析
2009-12-05 19:20 872简洁、明晰!数据库设 ... -
union和union all 的区别
2009-12-05 19:18 3437Union和Union all 的区别 在数据库中 ... -
SQL经典面试题集(二)
2009-12-05 19:12 1882...
相关推荐
本资源“经典sql语句”聚焦于SQL的经典面试题及其解答,旨在帮助求职者特别是针对SQL Server岗位的应聘者准备面试。以下将详细解析SQL的一些核心知识点,并结合可能的面试问题进行阐述。 1. **选择查询(SELECT)**...
【SQL经典面试题集共13页.pdf】 这个压缩包文件包含了有关SQL(Structured Query Language,结构化查询语言)的经典面试题目,适用于那些在IT行业,尤其是数据库管理和数据分析领域求职的人员。SQL是用于管理关系...
根据给定文件的信息,我们可以提炼出以下几个重要的SQL知识...以上内容总结了SQL面试题中的一些经典知识点,包括数据汇总、条件判断、日期处理、事务处理以及数据导入导出等方面,这些技能都是在实际工作中非常有用的。
这里我们分析并解答给定的几个经典面试题,这些题目都是基于一个典型的学员、课程和选课关系数据库。 首先,我们回顾一下数据库的结构: - S表:存储学员信息,包括学号S#、姓名SN、所属单位SD和年龄SA。 - C表:...
- 步骤:可以使用两次`INNER JOIN`,一次针对1号课程,一次针对2号课程,然后将结果集合并,以找出同时选修了这两门课程的学生。 5. **列出1号课程成绩比2号课程成绩高的所有学生的学号** - 步骤:这需要两个`...
这个压缩包中的"SQL面试题"集合,无疑是一个全面且经典的SQL知识复习资源,适用于准备面试的求职者或希望提升SQL技能的从业者。 首先,我们要理解SQL的基本概念。SQL主要包括数据查询、数据更新、数据插入和数据...
### SQL经典面试题解析 #### 一、Group By 示例题 **题目背景**: 题目提供了一个具体的示例场景,需要对一个简单的比赛结果表进行分组统计,计算每天的胜场次数和负场次数。 **数据表结构**: - `rq`: 日期 ...
在SQL的世界里,面试题是...通过深入理解和实践这些SQL经典面试题,你可以逐步提升在数据库管理、数据查询和分析方面的能力,为你的职业生涯奠定坚实的基础。在面试中,能够灵活运用这些知识,无疑会增加你的竞争力。
### SQL经典面试题解析 #### 一、GROUP BY 练习题 **题目解析:** 在给定的数据中,我们有日期(`rq`)和胜负情况(`shengfu`)。目标是统计每个日期的胜和负的次数。这里涉及到了SQL中的`GROUP BY`语句以及`CASE ...
这里,我们根据"IT行业经典面试题集"这个主题,来深入探讨一下这些领域的关键知识点。 首先,编程是IT行业的基础,面试中常涉及到的编程语言有Java、C++、Python等。面试官可能会要求你编写一段代码来解决特定问题...
"SQL经典面试题---不错哦"这个主题涵盖了多个SQL知识点,旨在帮助求职者准备SQL相关的面试。让我们详细探讨一下这些可能的面试题目和相关概念。 1. **选择查询(SELECT)**: SQL的基础是选择查询,用于从表中获取...
SQL 和 ORACLE 面试题知识点总结 在本节中,我们将从数据库基础、SQL 语言、视图、完整性约束、第三范式、ER 模型、索引、事务、锁、死锁、存储过程、触发器 等方面总结 SQL 和 ORACLE 面试题的知识点。 数据库...
因此,在招聘过程中,很多企业会通过SQL相关的面试题目来评估求职者的技能水平。以下是从给定文件标题、描述及部分内容中提炼出的几个关键知识点,这些知识点不仅对准备SQL面试的人大有裨益,同时也是所有数据库从业...
### SQL经典面试题解析 #### 一、使用`GROUP BY`和`CASE`进行数据聚合 **题目背景:** 给出了一张临时表`#tmp`,表中存储了日期(`rq`)和比赛结果(`shengfu`)。目标是计算每个日期的胜、负次数。 **解决方案:** ...
根据给定的文件信息,我们将深入探讨其中包含的七个经典的SQL面试题目,...通过实践这些经典面试题目,不仅可以加深对SQL语法的理解,还能提高解决实际问题的能力,这对于提升个人技能和职业发展都有着不可估量的价值。
根据给定的SQL题目及其答案,我们可以总结出一系列重要的SQL知识点和技巧,这些知识点对于学习SQL及准备面试都非常有帮助。 ### 1. 比较两个不同表中的记录 **知识点**: 子查询和连接操作是解决此类问题的关键技术...
标题中的“经典面试题及答案sql server .net 等”揭示了这个压缩包内容的焦点,主要涉及SQL Server数据库管理系统、.NET框架以及C#编程语言相关的面试问题和解答。这些是IT行业尤其是软件开发领域中常见的技术栈,...
【PHP经典面试题全集】是一份集合了多个大型企业PHP招聘面试中常见的问题和解答的资源,旨在帮助应聘者全面准备PHP相关的技术面试。这份资料涵盖了PHP的基础知识到高级应用,是提升PHP技能和应对面试的理想参考资料...
### 经典T-SQL面试题解析 #### 题目一:创建空表与条件筛选 **原题描述**:"使用`SELECT INTO`语句从`tb_amount`表中选择所有列到新表`tb_temp`,但在选择时加入一个永远不成立的条件(`1<>1`),确保`tb_temp`为空...
"java经典面试题集"提供了丰富的资源,帮助准备面试的朋友们深入理解Java的核心概念和技术。以下是一些可能出现在这些面试题集中的话题,以及相关的重要知识点: 1. **Java基础**: - 类与对象:了解面向对象的...