Sql 常用面试题

1. 用一条SQL 语句 查询出每门课都大于80 分的学生姓名

姓名     课程      分数 
张三     语文       81
张三     数学       75
李四     语文       76
李四     数学       90
王五     语文       81
王五     数学       100
王五     英语       90

select 姓名 from student group by  姓名 having count(课程)>2 and min(分数)>80

2.删除除了自动编号不同, 其他都相同的学生冗余信息

自动编号       学号        姓名    课程编号     课程名称     分数
1             2005001     张三      0001         数学         69
2             2005002     李四      0001         数学         89
3             2005001     张三      0001         数学         69

delete tablename where 自动编号 not in(select min( 自动编号) from tablename group by 学号, 姓名, 课程编号, 课程名称, 分数)

5. 面试题:怎么把这样一个表儿
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
查成这样一个结果
year m1   m2   m3   m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4

select year, 
(select amount from   aaa m where month=1   and m.year=aaa.year) as m1,
(select amount from   aaa m where month=2   and m.year=aaa.year) as m2,
(select amount from   aaa m where month=3   and m.year=aaa.year) as m3,
(select amount from   aaa m where month=4   and m.year=aaa.year) as m4
from aaa   group by year

6. 复制表( 只复制结构, 源表名:a 新表名:b) 
SQL: select * into b from a where 1<>1       (where1=1,拷贝表结构和数据内容)
ORACLE:create table b

As

Select * from a where 1=2

[<>(不等于)(SQL Server Compact)

比较两个表达式。 当使用此运算符比较非空表达式时,如果左操作数不等于右操作数,则结果为 TRUE。 否则,结果为 FALSE。]

7. 拷贝表( 拷贝数据, 源表名:a 目标表名:b)

SQL: insert into b(a, b, c) select d,e,f from a;

8. 说明:日程安排提前五分钟提醒 
SQL: select * from 日程安排 where datediff(‘minute‘,f 开始时间,getdate())>5

9. 两张关联表,删除主表中已经在副表中没有的信息 
SQL: 
Delete from info where not exists (select * from infobz where info.infid=infobz.infid )

时间: 2024-08-26 13:02:41

Sql 常用面试题的相关文章

sql 常用语法汇总

Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份数据的

一道SQL的面试题之联想

一道SQL的面试题之联想 本人工作在一家小型的民营企业,主要从事业务系统的日常维护,二次开发,菜鸟一枚.周五经理准备面试两个开发人员,据简历,都还比较不错,让经理产生了想法,于是准备了一套面试题目,给我们亮了一道SQL题目,非他之手,据出此题者说,如果面试者只能写出一种方法,基本可以pass.请读者仔细看题: 题目:如下表,用一条select语句求出所有课程在80分(含80分)以上的学生姓名,请写出所有可行方案.(注意:表名为sc,字段为name,kc,score) 这道题目并不陌生吧,相信大家

SQL常用语法大全

一.基础1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack 4.说明:创建新表create

SQL 常用语句

–-表现最差的前10名使用查询 SELECT TOP 10 ProcedureName = t.text, ExecutionCount = s.execution_count, AvgExecutionTime = isnull ( s.total_elapsed_time / s.execution_count, 0 ), AvgWorkerTime = s.total_worker_time / s.execution_count, TotalWorkerTime = s.total_wo

SQL常用语句积累

SQL 常用语句积累: 一. SQL 基本语句 SQL 分类: DDL -数据定义语言 (Create , Alter , Drop , DECLARE) DML -数据操纵语言 (Select , Delete , Update , Insert) DCL -数据控制语言 (GRANT , REVOKE , COMMIT , ROLLBACK) 首先 , 简要介绍基础语句: 1 .说明:创建数据库 Create DATABASE database-name 2 .说明:删除数据库 drop d

数据库基本查询语句(SQL常用增删改查语句 简单复习 mark)

SQL常用增删改查语句 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values ('开心朋朋','男','1980/6/15') 1.2[将现有表数据添加到一个已有表]insert into <已有的新表> (列名) select <原表列名> from <原表名>例:insert into tongxunlu ('姓名','地址','

SQL经典面试题及答案

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 22005-05-10 1 2------------------------------------------create table #tmp(rq varchar(10),shengfu nc

SQL Server面试题

前几天在博客园上看到一道SQL面试题,sc是表名.老师拿来与同学分享,让大家试做,要求是:查出每科成绩都>=80分的名字,看能写出几种方法.没有主外键,没有关联,脑袋一下子就蒙了.经老师讲解指导的两种方式: 第一种:select name from sc group by name having MIN(score)>=80 第二种:select distinct(name) from sc where name not in(select name from sc where score&l

sql常用的星期方法

sql常用的星期方法: SELECT convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,getdate()), 0),120) --本周开始周一SELECT convert(varchar(10),DATEADD(wk, DATEDIFF(wk,5,getdate()), 6),120) --本周结束周五select datename(week,getdate()) --本年的第几周 可以不用convert,这边是为了做比较数字,取时间段,所以都转化为字