sql面试必考题

下面的所有例子取自我以前大学的教科书,数据库系统概论。

里面是使用关系代数运算解答的,而我转换成常用T-SQL

其中例子6和一家朋友面试的大公司的题目差不多,值得新手和

准备面试的人员学习一下。说实话,其实很多大公司的面试题目

难度大多不会超过大学期末考的难度,就看你有没有认真学习了,

对于没有关系的大众来说,努力才是王道的说!

为方便阅读,字段名我使用了中文命名的方式哦。

现在只有6个例题,有空时我再写,谢谢你的阅读!

--建表的sql语句

CREATE TABLE [dbo].[Student] (

       [学号] [char] (5) COLLATE Chinese_PRC_CI_AS NOT NULL ,

       [姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,

       [性别] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,

       [年龄] [int] NULL ,

       [所在系] [char] (4) COLLATE Chinese_PRC_CI_AS NULL

) ON [PRIMARY]

 

CREATE TABLE [dbo].[Course] (

       [课程号] [char] (3) COLLATE Chinese_PRC_CI_AS NOT NULL ,

       [课程名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

       [先行课] [char] (3) COLLATE Chinese_PRC_CI_AS NULL ,

       [学分] [tinyint] NULL

) ON [PRIMARY]

 

CREATE TABLE [dbo].[SC] (

       [学号] [char] (5) COLLATE Chinese_PRC_CI_AS NOT NULL ,

       [课程号] [char] (3) COLLATE Chinese_PRC_CI_AS NOT NULL ,

       [成绩] [tinyint] NULL

) ON [PRIMARY]

 

下面是插入表数据的sql语句:

Insert  into sc   (学号,课程号,成绩)      Values   (   '95001','1',92)

Insert  into sc   (学号,课程号,成绩)      Values   (   '95001','2',85)

Insert  into sc   (学号,课程号,成绩)      Values   (   '95001','3',88)

Insert  into sc   (学号,课程号,成绩)      Values   (   '95001','4',23)

Insert  into sc   (学号,课程号,成绩)      Values   (   '95001','5',34)

Insert  into sc   (学号,课程号,成绩)      Values   (   '95001','6',56)

Insert  into sc   (学号,课程号,成绩)      Values   (   '95001','7',86)

Insert  into sc   (学号,课程号,成绩)      Values   (   '95002','2',90)

Insert  into sc   (学号,课程号,成绩)      Values   (   '95002','3',80)

Insert  into sc   (学号,课程号,成绩)      Values   (   '95003','1',50)

Insert  into sc   (学号,课程号,成绩)      Values   (   '95003','3',98)

 

Insert  into student   (学号,姓名,性别,年龄,所在系)      Values   (   '95001','李勇','',20,'CS')

Insert  into student   (学号,姓名,性别,年龄,所在系)      Values   (   '95002','刘晨','',19,'IS')

Insert  into student   (学号,姓名,性别,年龄,所在系)      Values   (   '95003','王敏','',18,'MA')

Insert  into student   (学号,姓名,性别,年龄,所在系)      Values   (   '95004','张立','',21,'IS')

Insert  into student   (学号,姓名,性别,年龄,所在系)      Values   (   '95005','林燕芳','',18,'IS')

Insert  into student   (学号,姓名,性别,年龄,所在系)      Values   (   '95006','林燕虹','',17,'IS')

 

Insert  into course   (课程号,课程名,先行课,学分)      Values   (   '1','数据库','5',4)

Insert  into course   (课程号,课程名,先行课,学分)      Values   (   '2','数学',NULL,2)

Insert  into course   (课程号,课程名,先行课,学分)      Values   (   '3','信息系统','1',4)

Insert  into course   (课程号,课程名,先行课,学分)      Values   (   '4','操作系统','6',3)

Insert  into course   (课程号,课程名,先行课,学分)      Values   (   '5','数据结构','6',3)

Insert  into course   (课程号,课程名,先行课,学分)      Values   (   '6','数据处理',NULL,2)

Insert  into course   (课程号,课程名,先行课,学分)      Values   (   '7','PASCAL语言','6',4)

 

1-3都包含关系运算的除Division

1:查询至少选秀1号课程和3号课程号的学生号码。

答案

select  a.学号  from sc a,sc b where a.学号=b.学号 and a.课程号='1' and b.课程号='3'

 

2:查询至少选修了一门直接先行课为5号课程的学生姓名。

答案:

select 姓名 from student where 学号 in( SELECT [学号] FROM [test].[dbo].[SC] where 课程号 in(SELECT 课程号 from Course where 先行课='5'))

 

例子3:查询选修了全部课程的学生号码和姓名。

declare @t1 int

declare @t2 int

select @t2=count(*) from Course

select @t1=学号   from SC  group by 学号 having count(学号)=@t2

--print '@t1='+cast(@t1 as varchar)

Select 学号,姓名 from student where  学号=@t1

 

例子4:查询信息系年龄最大的三个学生的学号及其年龄,结果按年龄降序排列。

select top 3  学号,年龄  from Student where 所在系='IS' order by 年龄 desc

 

例子5:查询选修了2号课程的学生名字

select 姓名 from student where 学号 in( select 学号 from sc where 课程号=2)

 

例子6:查询成绩为90分以上的学生名字和课程名字

select st.姓名,c.课程名 from student st left join sc s on st.学号=s.学号 left join Course c on s.课程号=c.课程号

where  st.学号 in (select st.学号 from sc where s.成绩>=90)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值