最新数据库面试题

时间:2024-06-01 08:28:41 学人智库 我要投稿
  • 相关推荐

最新数据库面试题

  下面是CN人才网提供的2016年最新数据库面试题,欢迎阅读。

最新数据库面试题

  sql面试

  1,写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。

  答:

  → 解1: select top 10 * from A where id not in (select top 30 id from A)

  演变步骤:

  1)select top 30 id from T_FilterWords–取前条

  2)select * from T_FilterWords where id not in (select top 30 id from T_FilterWords)–取id不等于前三十条的–也就是把前条排除在外

  3)select top 10 * from T_FilterWords where id not in (select top 30 id from T_FilterWords)

  –取把前条排除在外的前条,也就是-40条

  → 解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)

  → 解3:用ROW_NUMBER实现

  /———————————————–+———————————————–\

  下面的SQL题是常考题中的常考题,必须重视!!!!!!!!

  2,横表、纵表转换(常考!!!)

  1)纵表结构 TableA

  Name Course Grade

  张三 语文 75

  张三 数学 80

  张三 英语 90

  李四 语文 95

  李四 数学 55

  横表结构 TableB

  Name 语文 数学 英语

  张三 75 80 90

  李四 95 55 0

  先理解:

  select Name,

  (case Course when ‘语文‘ then Grade else 0 end) as 语文,

  (case Course when ‘数学‘ then Grade else 0 end) as 数学,

  (case Course when ‘英语‘ then Grade else 0 end) as 英语

  from TableA

  然后理解标准答案:

  select Name,

  sum(case Course when ‘语文‘ then Grade else 0 end) as 语文,

  sum(case Course when ‘数学‘ then Grade else 0 end) as 数学,

  sum(case Course when ‘英语‘ then Grade else 0 end) as 英语

  from TableA

  group by Name

  2)、横表转纵表的”SQL”示例

  横表结构: TEST_H2Z

  ID 姓名 语文 数学 英语

  1 张三 80 90 70

  2 李四 90 85 95

  3 王五 88 75 90

  转换后的表结构:

  ID 姓名 科目 成绩

  1 张三 语文 80

  2 张三 数学 90

  3 张三 英语 70

  4 李四 语文 90

  5 李四 数学 80

  6 李四 英语 99

  7 王五 语文 85

  8 王五 数学 96

  9 王五 英语 88

  横表转纵表SQL示例:

  SELECT 姓名,’语文’ AS 科目,语文 AS 成绩 FROM TEST_H2Z UNION ALL

  SELECT 姓名,’数学’ AS 科目,数学 AS 成绩 FROM TEST_H2Z UNION ALL

  SELECT 姓名,’英语’ AS 科目,英语 AS 成绩 FROM TEST_H2Z

  ORDER BY 姓名,科目 DESC;

  3,删除姓名、年龄重复的记录(只保留Id最大的一条)(常考!!!)

  Id name age salary

  1 yzk 80 1000

  2 yzk 80 2000

  3 tom 20 20000

  4 tom 20 20000

  5 im 20 20000

  //取得不重复的数据

  select * from Persons

  where Id in

  (

  SELECT MAX(Id) AS Expr1

  FROM Persons

  GROUP BY Name, Age

  )

  → 根据姓名、年龄分组,取出每组的Id最大值,然后将Id最大值之外的排除。

  删除重复的数据:

  delete from Persons

  where Id not in

  (

  SELECT MAX(Id) AS Expr1

  FROM Persons

  GROUP BY Name, Age

  )

  4,下面是一个由*号组成的4行倒三角形图案。

  → 要求:1、输入倒三角形的行数,行数的取值3-21之间,对于非法的行数,要求抛出提示“非法行数!”;2、在屏幕上打印这个指定了行数的倒三角形。

  *******

  *****

  ***

  *

  5,一个文本文件含有如下内容:

  4580616022644994|3000|赵涛

  4580616022645017|6000|张屹

  4580616022645090|3200|郑欣夏

  → 上述文件每行为一个转账记录,第一列表示帐号,第二列表示金额,第三列表示开户人姓名。

  创建一张数据库表(MS SQLServer数据库,表名和字段名自拟),请将上述文件逐条插入此表中。

【最新数据库面试题】相关文章:

Microsoft面试题09-04

iOS面试题07-10

公司面试题09-12

hibernate面试题10-18

英语面试题精选06-13

小升初面试题06-10

PHP面试题10-14

小升初面试题型08-24

小升初面试题类型07-23

关于网管面试题07-27