您当前的位置:首页 > 淘宝百科

sql语句面试题(求sql常考面试题)

时间:2023-01-30 18:20:12

本文目录

  • 求sql常考面试题
  • SQL语句面试题
  • 这几个SQL语句面试题该怎么写
  • SQL语句问题 面试题
  • 面试题目(sql)
  • sql语句 面试题
  • sql面试题
  • SQL数据库面试题 急急急

求sql常考面试题

排序顺序会影响系统性能吗?问:一些资料介绍说,在SQL Server 6.5中,排序方式会对系统性能造成影响,但是我并没有发现有针对SQL Server 2000或SQL Server 7.0的类似说法。我想知道二分法检索对SQL Server 2000程序到底有何意义。SQL Server 2000所支持的各种排序方式之间在执行性能上存在哪些差异呢?答:请记住:各类排序方式间的性能差异受制于SQL Server在数据排序和数据比较上所花费的CPU周期数量。排序速度快并不代表性能就一定会得到改善。事实上,选择较为“快速”的排序方法(例如二分法)可能会导致应用程序在其它方面的性能降低。例如,假设您有一个查询,该查询通过last_name字段进行搜索。二分法排序的规则规定:Smith 并不等于smith。您的应用程序开发人员可以通过要求所有数菥笮葱问交蛐⌒葱问嚼词迪终飧鲆滴衤呒5牵导实慕饩霭旆ㄊ嵌运阉鞅碇械乃惺菔褂肬PPER() 或者 LOWER() 函数。但不幸的是, 如果类似UPPER()这样的函数对一个经过索引的列进行了操作,SQL Server将不再能够使用索引搜索数据。在这种情况下,通过使用二分法所获得的所有性能提升都将被花费在全表扫描上的巨大性能降低所抵消。所以,您无需考虑不同排序方法间可能存在的微小性能差异,您也无需费神考虑何种排序方法最能满足程序开发人员和最终用户的需要。— SQL Server MVPs--------------------------------------------------------------------------日志文件的增长和DBCC DBREINDEX问:我有一个30GB的数据库,我使用完全恢复模式。无论什么时候,只要我使用数据库一致性检查程序(DBCC)语句DBCC DBREINDEX对特定的大型数据表进行重新索引,我都要将恢复模式改为Bulk_Logged,在重新索引过程完成后再改回完全模式。我希望这样做能够避免事务日志文件急剧增长,但是随后的日志文件备份工作量却非常大--有大约15GB。从逻辑上说,数据库中的数据在重新索引后同原先并没有什么不同,只是索引重新进行了组织,那么为什么日志文件还是那样大呢?我怎样才能避免日志文件出现这样的急剧增长呢?答:是的,在重新索引前后的数据是完全一样的,但是索引却全面进行了更新。当您执行DBCC DBREINDEX命令的时候,SQL Server的日志仅仅记录了扩展盘区的分配情况(8页面单位),而不是记录了每一行或者每一页所发生的变化。这种类型的日志记录方式避免了物理文件由于系统故障而遭到破坏,并且将更详细的日志记录对系统吞吐量产生的影响降低到最小。当您备份日志文件的时候,SQL Server必须对分配在扩展盘区中的页面进行备份,以便保持数据库备份和日志备份的一致性。如果SQL Server不备份这些页面,您将不能够切换回完全恢复模式,除非你进行一次完整的数据库备份。您必须能够从最近一次的完全备份、任何差异备份以及任何更新的事务日志备份中对数据库进行恢复。——————————————————————————————————————————再者,看你面试什么方面的啦!要是DBA的话,层次更高一些!

SQL语句面试题

-- 查询所有同学的学号、姓名、选课数、总成绩;select S.Sid,Sname,选课数=COUNT(Cid),总成绩=SUM(Score)   from Student S join Sc on S.Sid=sc.Sid  group by S.Sid,Sname-- 查询学过“叶萍”老师所教的所有课程的同学学号、姓名;select S.Sid,Snamefrom Student S join Sc on S.Sid=Sc.Sid    join Course C on C.Cid=Sc.Cidjoin teacher T on T.Tid=C.Tidwhere Tname=’叶萍’  group by S.Sid,Sname      having COUNT(distinct C.Cid)=(select COUNT(Cid) from Course join teacher on Course.Tid=teacher.Tid where Tname=’叶萍’)-- 查询课程编号“002“的成绩比课程编号“001”课程低的所有同学的学号、姓名select Sid,Snamefrom Studentwhere Sid in(select A.Sidfrom Sc A join Sc B on A.Sid=B.Sidwhere A.Cid=1 AND B.Cid=2 AND A.Score》B.Score)-- 按平均成绩高到低显示所有学生的 “数学“、“物理“两门课程的成绩,以下形式显示:学生ID,数学,物理,平均分select Sid,数学=max(case when Cname=’数学’ then Score end),物理=max(case when Cname=’物理’ then Score end),平均分=(max(case when Cname=’数学’ then Score end)+max(case when Cname=’物理’ then Score end))/2from Sc join Course C on Sc.Cid=C.Cid  where Cname in(’数学’,’物理’)group by Sid

这几个SQL语句面试题该怎么写

第一题:

select a.namefrom employee a left join (select t.dptid,avg(t.salary) avgsalfrom employee tgroup by t.dptid) b on a.dptid = b.dptidwhere a.salary 》 b.avgsal

第二题

select count(a.name),a.dptidfrom employee a left join (select t.dptid,avg(t.salary) avgsalfrom employee tgroup by t.dptid) b on a.dptid = b.dptidwhere a.salary 》 b.avgsalgroup by a.dptid

第三题:

select avg(t.salary)from employee twhere t.salary 》 6000

SQL语句问题 面试题

select d.科目代码 from(select c.科目代码,sum(c.flag) as num from (select b.科目代码,if(b.发生额》a.发生额 1,0) as flag from(select 科目代码,发生额 from voucher where 科目代码=’101’)a --12条记录(1)left join (select 科目代码,发生额 from voucher where 科目代码《》’101’)b --非101科目条数*12条记录(2)on a.发生月份=b.发生月份)c --设个标志,如果发生额》101的同月发生额,为1,否自为0(3)group by c.科目代码)d --对标志值分组累加(4)where d.num=12 --如果累加值为12,说明该代码12个月的发生额都大于101同月发生额。(5)记事本手写未经测试,有问题自己修改吧。

面试题目(sql)

1、忍不住想说一句,因为第一题中的字段类型是【日期型】,而各种数据库操作日期型数据有不同的方法,没有一种共通的方法,所以脱离了数据库而言没有一种共通的sql。2、selectID,NAME,ADDRESS,PHONE,LOGDATEfromTwhereIDin(selectIDfromTgroupbyNAMEhavingcount(*)》1)orderbyNAME;3、deletefromTwhereIDnotin(selectmin(id)fromTgroupbyname);4、updateTsetT.ADDRESS=(selectE.ADDRESSfromEwhereE.NAME=T.NAME),T.PHONE=(selectE.PHONEfromEwhereE.NAME=T.NAME);5、这个不同的数据库也有不同的处理方法,不能脱离数据库谈了。如:SqlServer或者access可以使用toporacle可以使用rownum等---以上,希望对你有所帮助。

sql语句 面试题

这个简单,看答案,采纳吧~第一题是,用双top结构就可以查出来1,select * from 学生表 where 学号 in(select top 5 学号 from 成绩表 where 学号 not in(select top 10 学号 from 成绩表 order by 分数) order by 分数)第二题是比较简单,用复合函数就行了,havingselect 姓名 from 成绩表 group by 姓名 having avg(分数)》80采纳吧~

sql面试题

1、忍不住想说一句,因为第一题中的字段类型是 【日期型】,而各种数据库操作日期型数据有不同的方法,没有一种共通的方法,所以脱离了数据库而言没有一种共通的sql。2、select ID,NAME,ADDRESS,PHONE,LOGDATE from T where ID in( select ID from T group by NAME having count(*)》1) order by NAME;3、delete from T where ID not in (select min(id) from T group by name);4、update T set T.ADDRESS=(select E.ADDRESS from E where E.NAME=T.NAME), T.PHONE=(select E.PHONE from E where E.NAME=T.NAME);5、这个不同的数据库也有不同的处理方法,不能脱离数据库谈了。 如:SqlServer或者access可以使用 top oracle可以使用 rownum 等---以上,希望对你有所帮助。

SQL数据库面试题 急急急

a)select pname as ’商品名’,avg(qty) as 平均销售量 from s,p,m where m.city=’上海’ and s.mno=m.mno and p.pno=s.pno,select p.Pno,p.pname,sum(s.qty)from s left join p on s.pno=p.pno left join m on p.Mno=m.Mnowhere m.city=’上海市’group by p.Pno,p.pname,p.city,p.colorb)、先删除Sale表的外键PNO,再删除gds表。c)联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系区别:1、视图是已经编译好的sql语句。而表不是 2、视图没有实际的物理记录。而表有。 3、表是内容,视图是窗口 4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改 5、表是内模式,视图是外模式 6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。 7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。 8、视图的建立和删除只影响视图本身,不影响对应的基本表。

视图

最新文章