一个小面试题sql

一、            问答题

1简要说明分页是如何实现的.

A:sqlserver:

Select top(pagesize)  * from  student where id not in(select top(pagesize*pageCode-1) id from student);

B:mysql:

Select * from student limit(pagesize*(pageCode-1),pagesize*pageCode);

C:oracle:

Select * from student where rownum>pagesize*(pageCode-1) and rownum<pagesize*pageCode;

2 sql语句的分组用什么来实现?  group by

3 sql语句如何去连接数据库?  DriverManager.connect(url,name,password);

4 写一段Jdbc连Oracle的程序.

Class.forName(“Oracle.jdbc.driver.OracleDriver”);

DriverManagger.getConnection(“jdbc:oracle:thin:@localhost:1521:Yule”,”scott”,”tiger”);

5 什么是事务? 数据库同时成功或同时失败的操作集合。

事务仅与数据库有关,服从ACID原则。A:原子性:事务执行过程中的任何失败都会导致事务所做的任何修改失效。C:一致性:事务执行失败,所有被事务影响的数据回到事务执行前的状态。I:隔离性:事务完成前的修改在提交之前对其他事务都不可见。D:持久性:已经提交成功的数据就回不去之前的状态了。

6 ORM的全称是什么?对象关系映射。 类-->表 对象-->记录 属性--->字段

7关系型数据操作对象是什么 :sql,操作类型主要有哪些?各是什么意思?

Ddl :数据定义语言.create xxxx

Dml:upad.drop ,truncate.

Dcl:grant revoke deny

8 取出数据库中不重复记录的方法,不用distinct用什么方法?多级分组

select id,name1,name2 from test3 group by id,name1,name2;

9建了数据库表,你用什么措施去优化:索引,存储过程,缓存,视图,多用关联代替子查询。。。。

10你们用PowerDesigner主要用来做什么: e-r图-->导出sql语句。

步骤:概念模型-->物理模型(e-r图)-->导出数据库。

11 关系型数据模式采用什么来描述实体•实体间的关系:E-R图。

12 关系型数据操作对象是什么,操作类型主要有哪些?Ddl,dml,dcl。

13 请描述第一范式(原子性)•第二范式(唯一性)•第三范式(非主键无依赖)的含义

14 sqlserver中取得当前时间的SQL语句?及将取得的当前时间转化为YYYYMMDD格式的字符串的SQL语句。 Selecct  conver(110,now());

15 SQL SERVER中count(1)和count(*)的区别? Count(1) 取表的第一个字段的不重复个数,对于第1个字段为主键的表,count(1)=count(*),速度更快。

Count(*)所有记录数,包含重复。

16 说说Truncate、Delete、Drop他们之间的区别?

Truncate:清空(截断)表,会删除日志,对于sql server 和mysql,自增回到起点。不删除约束。

Delete:删除记录,不删除其他。

Drop:删除表及日志及约束。

17 用列子实现一下左外、右和内连接的结果集?

Student  :

1 吕斌 1

2 玉露 2

3 徐林 3

Sex:

1 男

2 女

4 变态

左外:

1  吕斌 男

2  玉露 女

3 徐林 null

右外

1  吕斌 男

2  玉露 女

Null null 变态

全外

1  吕斌 男

2  玉露 女

3 徐林 null

Null null 变态

内联

1  吕斌 男

2  玉露 女

二、            设计题

1 有三表。人员表(id,name,部门id,入职日期,等级)

部门表(id,公司id,名称)

公司表(id,名称)

(1)联合查询,得到“部门是财务部 公司是XX   的用户名”

Select emp.name from emp inner join dept on emp.部门id=dept.id inner join company on dept.comid=company.id

Where dept.name=’财务部’ and company.name=’XX’

(2)  对表进行更新,将部门是IT部的所有员工等级普升一级.

Update emp set level=level+1 where deptid in (select id from dept where name=’it’);

2 有表A,结构如下:

YHID YHXM YHNN GZDW

001 张三 22 01

002 李四 23 02

003 王五 24 03

表B,结构如下:

YHID GL  JTCY ZZMM

001  2年  3人 党员

002  3年  3人 团员

003  4年  3人 团员

表C,结构如下:

DWID DWMC

01 人事局

02 工商局

03 教育局

其中A`B表以YHID关联;A`C表以GZDW和DWID关联。现需要建立视图如下:

YHID YHXM YHNN ZZMM JTCY GZDW GL

001 张三 22 党员 3人 人事局 2年

002 李四 23 团员 3人 工商局 3年

003 王五 24 团员 3人 教育局 4年

请写出建立视图V1的SQL语句。

Create view V1 as

Select a.yhid,a.yhxm,a.yhnn,b.zzmm,b.jtcy,c.dwmc,b.gl from a inner join b on a.yhid=b.yhid inner join c on a.yhid=c.dwid

3 .有表A,结构如下:

学生编号 选修课程编号

3 001

3 002

2 003

1 001

2 003

1 001

3 001

1 001

2 003

请以ID为查询条件,写出查询语句,得到选修2门以上(含2门)课程的学生编号。

Select distinct stuid from student where stuid in(select stuid from student having count(1)>=2)

4有表A,结构如下:

YHID YHZID YHMC

001 1 张三

002 1 李四

003 2 王五

004 2 陆六

表B,结构如下:

YHID YHQX FA

001 22222 ABC

002 22223 AB

003 22224 ABD

004 22222 ABC

现在想得到YHMC为张三的YHID` YHQX` FA 写出查询语句。

Select b.yhid,b.yhqx,b.fa from b inner join a on b.yhid=a.yhid where a.yhmc=’张三’

5请写出下表的建表SQL语句:

编号 字段名称 类型 长度 约束

1 IDCODE 整数 5 主键

2 NAME 变长字符 8 非空

3 AGE 整数 2 不能小于1,大于120

4 SEX 定长字符 1 学生编号

Create table test

(

Idcode int(5) primary key,

Name varchar(8) not null,

Age int(2) check(age>=1 and age<=120),

Sex char(1)

)

6有一张表TABLE,结构如下:

USERID CXFA

001 人口查询 1 sum

002 车辆查询

001 人口查询

002 车辆查询

001 物品查询

002 道路查询

001 人口查询

要查出结果如下:

USERID 人口查询个数 车辆查询个数

001 3 0

002 0 2

请问该SQL查询语句如何编写

Select userid,sum(case cxfa=’人口查询’ then 1 else 0 end)as 人口查询个数,sum(case cxfa=’车辆查询’ then 1 else 0  end) as 车辆查询个数from table group by userid;

Select userid,sum(decode(cxfa,’人口查询’ ,1 0) ) as 人口查询个数,sum(decode(cxfa,’车辆查询’ ,1 0)) as 车辆查询个数from table group by userid;

Mysql中

select userid,sum(case when cxfa=‘人口查询‘ then ‘1‘ else ‘0‘  end)

as 人口查询个数,sum(case when cxfa=‘车辆查询‘ then ‘1‘ else ‘0‘  end) as 车辆查询个数

from test4 group by userid;

7用一个语句,查找出表中第21-29的记录,表中的ID在SQL SERVER中自动生成,但是不连续。

Select top(10) * from student where id not in(select top(20) id from student);

8有三张表

S代表学生表,字段学生编号sno 、学生姓名sname ...

C代表课程表,字段课程编号cno、课程名称cname,

SC代表成绩表,字段学生编号sno、课程编号cno、成绩score

写出有两门课程以上(含有两门课程)学生的姓名、平均成绩

Select s.name,avg(sc.score) from s inner join sc on s.sno=sc.sno having count(sno)>=2

9 表名:考勤。列名:姓名,请假开始时间,请假结束时间。请查询8月份请假的人,起始时间。

Select name,begintime from 考勤 where   begintime  to_char(‘mm’,begintime)=’08’

时间: 2024-10-19 20:59:21

一个小面试题sql的相关文章

从一个小例子认识SQL游标

原文:从一个小例子认识SQL游标 1    什么是游标: 关系数据库中的操作会对整个行集起作用. 例如,由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行. 这种由语句返回的完整行集称为结果集. 应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理. 这些应用程序需要一种机制以便每次处理一行或一部分行. 游标就是提供这种机制的对结果集的一种扩展. 游标通过以下方式来扩展结果处理: 允许定位在结果集的特定行. 从结果集的当前位置检索一行或一

SQL Server 中关于 @@error 的一个小误区

原文:SQL Server 中关于 @@error 的一个小误区 在SQL Server中,我常常会看到有些前辈这样写: if(@@error<>0) ROLLBACK TRANSACTION T else COMMIT TRANSACTION T 一开始,我看见别人这么写,我就想当然的以为它只是个计数器,每当检测到一处错误时,@@error的值+1,不过就因为这个理所当然,所以杯具了... 实际上,它并不是一个计数器,它是一个动态的值,动态的标识最后一条SQL命令执行的结果,如果成功则为0,

关于sql优化的一个小总结

1.数据量大的时候,可以分多次查询2.有些数据的存储可以分主次表,此表存一些不常用的数据3.union all 比union效率要高4.尽量不要用distinct5.不返回不需要的行和列6.根据条件加索引7.可以把like用法换成截取字符串作比较8.检索的时候可以把页数也当做条件(每次查询拿出最大的id),加载下一页的时候从最大的id开始9.尽量不要临时表,table变量,子查询.case等10.用profiler来跟踪查询,得出查询所需时间,找出sql问题所在11.视图尽量少用12.没必要时不

关于SQL Server镜像的一个小误区

昨天晚上突然接到客户的电话, 说在配置了镜像的生产环境数据库下修改 “已提交读快照” 选项的时候报错, 需要先取消镜像然后再重新搭建.悲催的是这是个近TB的数据库,问我有没有什么快速的方法.于是我就问客户为什么觉得时间长,他说重新搭建镜像的时候要先做完整备份然后再在镜像节点还原这个步骤会花费大量的时间.那么实际需要这么做吗? 在镜像数据库下修改 “已提交读快照” 选项 取消镜像后就会看到镜像节点的数据库的状态 从 “镜像,已同步/正在还原” 变成 “正在还原...”,不要删除它,它还有用. 修改

java连接mysql的一个小例子

想要用java 连接数据库,需要在classpath中加上jdbc的jar包路径 在eclipse中,Project的properties里面的java build path里面添加引用 连接成功的一个小例子数据库如下如 代码 package query; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; impor

电商总结(八)如何打造一个小而精的电商网站架构

前面写过一些电商网站相关的文章,这几天有时间,就把之前写得网站架构相关的文章,总结整理一下.把以前的一些内容就连贯起来,这样也能系统的知道,一个最小的电商平台是怎么一步步搭建起来的.对以前的文章感兴趣的朋友可以看这个,http://www.cnblogs.com/zhangweizhong/category/879056.html 本文大纲: 1. 小型电商网站的架构 2. 日志与监控系统的解决方案 3. 构建数据库的主从架构 4. 基于共享存储的图片服务器架构 5. 移动M站建设 6. 系统容

一个小企业招人的胡思乱想

标题有点凌乱,因为思路本身就有些凌乱.“夏日炎炎正好眠”,懒得整理,就想到哪写到哪,就当朋友聊聊天吧. 我们企业连小企业都算不上,准确的说应该叫做“微型企业”,目前员工一名——本人光杆司令一枚.带了一个小妹妹,暂时还在“见习期”,试用期都还没有进入,所以应该还不能算公司员工. 我现在也算是个程序员(对我的经历感兴趣的同学可以看看我的另一篇博客<程序员30过后>),本着提高技术,深入一线的指导思想,之前的代码都是自己一个人写的.也曾幻想过自己一个人做完整个项目,成就IT届一番孤胆英雄的佳话传说.

介绍一个小工具 Linqer

原文:介绍一个小工具 Linqer 这些天写Linq挺烦人的,就上网搜搜可有什么好的sql转Linq的工具,咦,马上就看上了Linqer. 哈哈,介绍一下使用方法吧: 官方下载网站:http://sqltolinq.com/download. 第一步:运行这个神马文件. 第二步:指定一个路径给它.他会生成一个Linqer.exe可运行的文件. 第三步:运行这个exe文件,点击Add按钮, 第四步:在弹出的Add界面中,给串串取个名字(如这里面的Demo),点右边的“省略号”按钮,会弹出你做梦都会

oracle 解锁表的一个小问题

最近开发的时候遇到一个小问题,执行一段sql之后发现 表被锁了 显示错误为:ora-00054:resource busy and acquire with nowait specified 百度之后发现是session进程卡住了,可以说是表的某些资源被锁定了 可以采用如下方法解锁: select t2.username,t2.sid,t2.serial#,t2.logon_timefrom v$locked_object t1,v$session t2where t1.session_id=t