1、28.数据库:抽出部门,平均工资,要求按部门的字符串顺序排序,不能含有“human resource“部门,employee 结构如下:employee_id, employee_name,depart_id,depart_name,wage答:select depart_name, avg(wage)from employee where depart_name 90 group by ameselect ame,count(*) from c join sc on o=o and sc.grade90 group by ame数据库笔试题 *建表:dept:deptno(primary k
2、ey),dname,locemp:empno(primary key),ename,job,mgr,sal,deptno*/ 1 列出 emp 表中各部门的部门号,最高工资,最低工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno from emp group by deptno;2 列出 emp 表中各部门 job 为CLERK的员工的最低工资,最高工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号 from emp where job = CLERK group by deptno;
3、3 对于 emp 中最低工资小于 1000 的部门,列出 job 为CLERK的员工的部门号,最低工资,最高工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号 from emp as bwhere job=CLERK and 1000(select min(sal) from emp as a where a.deptno=b.deptno) group by b.deptno4 根据部门号由高而低,工资有低而高列出每个员工的姓名,部门号,工资select deptno as 部门号,ename as 姓名,sal as 工资 fr
4、om emp order by deptno desc,sal asc5 写出对上题的另一解决方法(请补充)6 列出 张三 所在部门中每个员工的姓名与部门号select ename,deptno from emp where deptno = (select deptno from emp where ename = 张三)7 列出每个员工的姓名,工作,部门号,部门名select ename,job,emp.deptno,dept.dname from emp,dept where emp.deptno=dept.deptno8 列出 emp 中工作为CLERK的员工的姓名,工作,部门号,部门
5、名select ename,job,dept.deptno,dname from emp,dept where dept.deptno=emp.deptno and job=CLERK9 对于 emp 中有管理者的员工,列出姓名,管理者姓名(管理者外键为 mgr)select a.ename as 姓名,b.ename as 管理者 from emp as a,emp as b where a.mgr is not null and a.mgr=b.empno10 对于 dept 表中,列出所有部门名,部门号,同时列出各部门工作为CLERK的员工名与工作select dname as 部门名,
6、dept.deptno as 部门号,ename as 员工名,job as 工作 from dept,emp where dept.deptno *= emp.deptno and job = CLERK11 对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序select a.deptno as 部门号,a.ename as 姓名,a.sal as 工资 from emp as awhere a.sal(select avg(sal) from emp as b where a.deptno=b.deptno) order by a.deptno12 对于 emp,列出各
7、个部门中平均工资高于本部门平均水平的员工数和部门号,按部门号排序select count(a.sal) as 员工数,a.deptno as 部门号 from emp as awhere a.sal(select avg(sal) from emp as b where a.deptno=b.deptno) group by a.deptno order by a.deptno13 对于 emp 中工资高于本部门平均水平,人数多与 1 人的,列出部门号,人数,按部门号排序select count(a.empno) as 员工数,a.deptno as 部门号,avg(sal) as 平均工资
8、from emp as awhere (select count(c.empno) from emp as c where c.deptno=a.deptno and c.sal(select avg(sal) from emp as b where c.deptno=b.deptno)1group by a.deptno order by a.deptno14 对于 emp 中低于自己工资至少 5 人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数select a.deptno,a.ename,a.sal,(select count(b.ename) from emp as b wh
9、ere b.sal5数据库笔试题及答案第一套一. 选择题1. 下面叙述正确的是 CCBAD _。A、算法的执行效率与数据的存储结构无关B、算法的空间复杂度是指算法程序中指令( 或语句)的条数C 、算法的有穷性是指算法必须能在执行有限个步骤之后终止D 、以上三种描述都不对2. 以下数据结构中不属于线性数据结构的是_。A、队列 B、线性表 C、二叉树 D、栈3. 在一棵二叉树上第 5 层的结点数最多是_。A、8 B、16 C、32 D、154. 下面描述中,符合结构化程序设计风格的是_。A、使用顺序、选择和重复( 循环)三种基本控制结构表示程序的控制逻辑B、模块只有一个入口,可以有多个出口C 、注
10、重提高程序的执行效率 D、不使用 goto 语句5. 下面概念中,不属于面向对象方法的是_。A、对象 B、继承 C、类 D、过程调用6. 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是_ BDBCA _。A、可行性分析 B、需求分析 C、详细设计 D、程序编码7. 在软件开发中,下面任务不属于设计阶段的是_。A、数据结构设计 B、给出系统模块结构 C、定义模块算法 D、定义需求并建立系统模型8. 数据库系统的核心是_。A、数据模型 B、数据库管理系统 C、软件工具 D、数据库9. 下列叙述中正确的是_。A、数据库是一个独立的系统,不需要操作系统的支持B、数据库设计是指设计数
11、据库管理系统C 、数据库技术的根本目标是要解决数据共享的问题D 、数据库系统中,数据的物理结构必须与逻辑结构一致10. 下列模式中,能够给出数据库物理存储结构与物理存取方法的是_。A、内模式 B、外模式 C、概念模式 D、逻辑模式11. Visual FoxPro 数据库文件是_ DCBAA _。A、存放用户数据的文件 B、管理数据库对象的系统文件C、存放用户数据和系统的文件 D、前三种说法都对12. SQL 语句中修改表结构的命令是_。A、MODIFY TABLE B、MODIFY STRUCTURE C、ALTER TABLE D、ALTER STRUCTURE13. 如果要创建一个数据组
12、分组报表,第一个分组表达式是“ 部门“,第二个分组表达式是“性别 “,第三个分组表达式是 “基本工资“ ,当前索引的索引表达式应当是_。A、部门+性别+基本工资 B、部门+ 性别+STR(基本工资)C 、STR( 基本工资)+性别+ 部门 D、性别+部门+STR(基本工资)14. 把一个项目编译成一个应用程序时,下面的叙述正确的是_。A、所有的项目文件将组合为一个单一的应用程序文件B、所有项目的包含文件将组合为一个单一的应用程序文件C 、所有项目排除的文件将组合为一个单一的应用程序文件D 、由用户选定的项目文件将组合为一个单一的应用程序文件15. 数据库 DB、数据库系统 DBS、数据库管理系
13、统 DBMS 三者之间的关系是_。A、DBS 包括 DB 和 DBMS B、DBMS 包括 DB 和 DBSC 、DB 包括 DBS 和 DBMS D、DBS 就是 DB,也就是 DBMS16. 在“ 选项“对话框的“文件位置“选项卡中可以设置_ BAABA _。A、表单的默认大小 B、默认目录C 、日期和时间的显示格式 D、程序代码的颜色17. 要控制两个表中数据的完整性和一致性可以设置“ 参照完整性“,要求这两个表_。A、是同一个数据库中的两个表 B、不同数据库中的两个表C 、两个自由表 D、一个是数据库表另一个是自由表18. 定位第一条记录上的命令是_。A、GO TOP B、GO BOT
14、TOM C、GO 6 D、SKIP19. 在关系模型中,实现“关系中不允许出现相同的元组 “的约束是通过_。A、候选键 B、主键 C、外键 D、超键20. 设当前数据库有 10 条记录(记录未进行任何索引 ),在下列三种情况下,当前记录号为 1 时;EOF()为真时;BOF()为真时,命令 ?RECN()的结果分别是_。A、1,11,1 B、1,10,1 C、1,11,0 D、1,10,021. 下列表达式中结果不是日期型的是_ CCBBA _。A、CTOD(“2000/10/01“) B、99/10/01+365 C、VAL(“2000/10/01“) D、DATE()22. 只有满足联接条
15、件的记录才包含在查询结果中,这种联接为_。A、左联接 B、右联接 C、内部联接 D、完全联接23. 索引字段值不唯一,应该选择的索引类型为_。A、主索引 B、普通索引 C、候选索引 D、唯一索引24. 执行 SELECT 0 选择工作区的结果是_。A、选择了 0 号工作区 B、选择了空闲的最小号工作区C 、关闭选择的工作区 D、选择已打开的工作区25. 从数据库中删除表的命令是_。A、DROP TABLE B、ALTER TABLE C、DELETE TABLE D、USE26. DELETE FROM S WHERE 年龄60 语句的功能是_ BBCCB _。A、从 S 表中彻底删除年龄大于
16、 60 岁的记录 B、S 表中年龄大于 60 岁的记录被加上删除标记C 、删除 S 表 D、删除 S 表的年龄列27. SELECT-SQL 语句是 _。A、选择工作区语句 B、数据查询语句 C、选择标准语句 D、数据修改语句28. SQL 语言是_语言。A、层次数据库 B、网络数据库 C、关系数据库 D、非数据库29. 在 SQL 中,删除视图用 _。A、DROP SCHEMA 命令 B、CREATE TABLE 命令 C、DROP VIEW 命令 D、DROP INDEX 命令30. 以下属于非容器类控件的是_。A、Form B、Label C、page D、Container31. 将查
17、询结果放在数组中应使用_d_短语。A、INTO CURSOR B、TO ARRAY C、INTO TABLE D、INTO ARRAY32. 在命令窗口执行 SQL 命令时,若命令要占用多行,续行符是_d_。A、冒号(:) B、分号 (;) C、逗号(,) D、连字符(-)33. 设有图书管理数据库:图书(总编号 C(6),分类号 C(8),书名 C(16),作者 C(6),出版单位 C(20),单价N(6,2)读者(借书证号 C(4),单位 C(8),姓名 C(6),性别 C(2),职称 C(6),地址 C(20)借阅(借书证号 C(4),总编号 C(6),借书日期 D(8)对于图书管理数据
18、库,查询 0001 号借书证的读者姓名和所借图书的书名。SQL 语句正确的是_。SELECT 姓名,书名 FROM 借阅, 图书,读者 WHERE;借阅. 借书证号 =“0001“ AND;_a_A、图书.总编号=借阅.总编号 AND;读者. 借书证号 =借阅.借书证号B、图书 .分类号=借阅. 分类号 AND;读者. 借书证号 =借阅.借书证号C 、读者. 总编号=借阅.总编号 AND;读者. 借书证号 =借阅.借书证号D 、图书.总编号=借阅.总编号 AND;读者. 书名 =借阅. 书名34. 设有图书管理数据库:图书(总编号 C(6),分类号 C(8),书名 C(16),作者 C(6),
19、出版单位 C(20),单价N(6,2)读者(借书证号 C(4),单位 C(8),姓名 C(6),性别 C(2),职称 C(6),地址 C(20)借阅(借书证号 C(4),总编号 C(6),借书日期 D(8)对于图书管理数据库,分别求出各个单位当前借阅图书的读者人次。下面的 SQL语句正确的是_ 。SELECT 单位,_ FROM 借阅,读者 WHERE;借阅. 借书证号 =读者.借书证号 a_A、COUNT(借阅. 借书证号) GROUP BY 单位 B、SUM(借阅.借书证号) GROUP BY 单位C 、COUNT( 借阅.借书证号) ORDER BY 单位 D、COUNT( 借阅. 借书
20、证号) HAVING 单位35. 设有图书管理数据库:图书(总编号 C(6),分类号 C(8),书名 C(16),作者 C(6),出版单位 C(20),单价N(6,2)读者(借书证号 C(4),单位 C(8),姓名 C(6),性别 C(2),职称 C(6),地址 C(20)借阅(借书证号 C(4),总编号 C(6),借书日期 D(8)对于图书管理数据库,检索借阅了现代网络技术基础一书的借书证号。下面SQL 语句正确的是_。SELECT 借书证号 FROM 借阅 WHERE 总编号 =;_bA、(SELECT 借书证号 FROM 图书 WHERE 书名=“现代网络技术基础“)B、(SELECT
21、总编号 FROM 图书 WHERE 书名=“ 现代网络技术基础“)C 、(SELECT 借书证号 FROM 借阅 WHERE 书名=“现代网络技术基础“)D 、(SELECT 总编号 FROM 借阅 WHERE 书名=“现代网络技术基础“)二、填空题36. 算法的复杂度主要包括_复杂度和空间复杂度。37. 数据的逻辑结构在计算机存储空间中的存放形式称为数据的_。38. 若按功能划分,软件测试的方法通常分为白盒测试方法和_测试方法。39. 如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体“ 工人“与实体“设备“之间存在_联系。40. 关系数据库管理系统能实现的专门关系运算包括选择、
22、连接和_。41. 命令?LEN(“THIS IS MY BOOK“)的结果是_。42.SQL SELECT 语句为了将查询结果存放到临时表中应该使用_ 短语。43. 多栏报表的栏目数可以通过_来设置。44. 在打开项目管理器之后再打开“应用程序生成器 “,可以通过按 ALT+F2 键,快捷菜单和“工具 “菜单中的 _。45. 数据库系统的核心是_。46. 查询设计器中的“联接“ 选项卡,可以控制_ 选择。47. 设有图书管理数据库:图书(总编号 C(6),分类号 C(8),书名 C(16),作者 C(6),出版单位 C(20),单价N(6,2)读者(借书证号 C(4),单位 C(8),姓名 C
23、(6),性别 C(2),职称 C(6),地址 C(20)借阅(借书证号 C(4),总编号 C(6),借书日期 D(8)用 SQL 的 CREATE 命令建立借阅表( 字段顺序要相同) ,请对下面的 SQL 语句填空:_48. 设有图书管理数据库:图书(总编号 C(6),分类号 C(8),书名 C(16),作者 C(6),出版单位 C(20),单价N(6,2)读者(借书证号 C(4),单位 C(8),姓名 C(6),性别 C(2),职称 C(6),地址 C(20)借阅(借书证号 C(4),总编号 C(6),借书日期 D(8)对图书管理数据库,查询由“清华大学出版社“或“电子工业出版社“ 出版,并
24、且单价不超出 20 元的书名。请对下面的 SQL 语句填空:SELECT 书名,出版单位 ,单价 FROM 图书;WHERE_ AND;_49. 设有图书管理数据库:图书(总编号 C(6),分类号 C(8),书名 C(16),作者 C(6),出版单位 C(20),单价N(6,2)读者(借书证号 C(4),单位 C(8),姓名 C(6),性别 C(2),职称 C(6),地址 C(20)借阅(借书证号 C(4),总编号 C(6),借书日期 D(8)对图书管理数据库,求共借出多少种图书。请对下面的 SQL 语句填空:SELECT _ FROM 借阅第一套题答案选择题1-5 CCBAD 6-10 BD
25、BCA 11-15 DCBAA 16-20 BAABA 21-25 CCBBA 26-30 BBCCB 31-35 DDAAB填空题36.时间 37.模式或逻辑模式 38.黑盒 39. 一对多 或 1 对多 或 一对 n 或 1:N 或 1:n 或 1:n 或 1:N 或 一对 m 或 1:M 或 1:m 或 1:m 或 1:N 40. 投影 41.15 42. Into cursor 或 Into cursor cursorname 43. 页面设置 或 列数 44. 应用程序生成器 45. 数据库管理系统 或 DBMS 46. 联接类型 或 联接条件 47. CREATE TABLE 借阅
26、 (借书证号 C(4),总编号 C(6),借书日期 D(8) 或 CREA TABL 借阅 (借书证号 C(4),总编号 C(6),借书日期 D(8) 或 CREATE TABLE 借阅 (借书证号 C(4),总编号 C(6),借书日期 D) 或 CREA TABL 借阅 (借书证号 C(4),总编号 C(6),借书日期 D) 48. 单价=;ALL (SELECT 工资 FROM 教师 WHERE 系号=“02“)与如上语句等价的 SQL 语句是_。A、SELECT DISTINCT 系号 FROM 教师 WHERE 工资=;(SELECT MAX(工资) FROM 教师 WHERE 系号=
27、“02“)B、SELECT DISTINCT 系号 FROM 教师 WHERE 工资=;(SELECT MIN(工资) FROM 教师 WHERE 系号=“02“)C 、SELECT DISTINCT 系号 FROM 教师 WHERE 工资=;ANY(SELECT 工资 FROM 教师 WHERE 系号=“02“)D 、SELECT DISTINCT 系号 FROM 教师 WHERE 工资=;SOME (SELECT 工资 FROM 教师 WHERE 系号=“02“)二、填空题36. 若按功能划分,软件测试的方法通常分为白盒测试方法和_测试方法。37. 数据库系统的三级模式分别为_模式、内部级
28、模式与外部级模式。38. 在最坏情况下,冒泡排序的时间复杂度为_。39. 在面向对象方法中,信息隐蔽是通过对象的_性来实现的。40. 关系模型的数据操纵即是建立在关系上的数据操纵,一般有_、增加、删除和修改四种操作。41.要把帮助文件设置为复制到硬盘上的 Foxhelp.chm 文件,需要在“选项“对话框的_ 选项卡上设置。42. TIME( )的返回值的数据类型是_类型。43. 在定义字段有效性规则中,在规则框中输入的表达式中类型是_。44. 设计报表通常包括两部分内容:_和布局。45. _是指只有满足联接条件的记录才包含在查询结果中。46. 设有图书管理数据库:图书(总编号 C(6),分类
29、号 C(8),书名 C(16),作者 C(6),出版单位 C(20),单价N(6,2)读者(借书证号 C(4),单位 C(8),姓名 C(6),性别 C(2),职称 C(6),地址 C(20)借阅(借书证号 C(4),总编号 C(6),借书日期 D(8)检索书价在 15 元至 25 元( 含 15 元和 25 元 )之间的图书的书名、作者、书价和分类号,结果按分类号升序排序。SELECT 书名,作者 ,单价,分类号 FROM 图书;WHERE_;ORDER BY_;47. 设有如下关系表 R、S 和 T:R(BH,XM,XB,DWH)S(SWH,DWM)T(BH,XM,XB,DWH)实现 RT
30、 的 SQL 语句是_。48. 设有如下关系表 R:R(NO,NAME,SEX,AGE,CLASS)主关键字是 NO其中 NO 为学号,NAME 为姓名,SEX 为性别,AGE 为年龄,CLASS 为班号。写出实现下列功能的 SQL 语句。插入“95031“班学号为 30,姓名为“郑和“ 的学生记录 ;_。49. 设有如下关系表 R:R(NO,NAME,SEX,AGE,CLASS)主关键字是 NO其中 NO 为学号( 数值型),NAME 为姓名,SEX 为性别,AGE 为年龄,CLASS为班号。写出实现下列功能的 SQL 语句。删除学号为 20 的学生记录;_ 。第二套题答案1-5 CBBDD
31、 6-10 CBBCC 11-15 DDCCA 16-20 DCBCA 21-25 BBDAC 26-30 CDCBD 31-35 ACBBA36.黑盒 37.概念或概念级 38.n(n-1)/2 39.封装 40.查询 41.文件位置 42.字符 或 C 43.逻辑表达式44.数据源 45.内部联接46. 单价 BETWEEN 15 AND 25 或 单价 BETW 15 AND 25 或 单价 BETWE 15 AND 25 或 单价=15 and 单价=15 and 单价=15 and 单价15 and 单价= 1 AND ID 1)SELECT * FROM 工资表 WHERE 员工编
32、号 IN (SELECT 员工编号 FROM 工资表 GROUP BY 员工编号 HAVING COUNT(*)1)2.删除 id 重复记录,只保留第一条( 说明,不需要考虑表中存在完全相同纪录的情况)SQL 语句如下:CREATE TABLE SALARY(ID INT NOT NULL,SALARY MONEY NOT NULL)INSERT INTO SALARYSELECT 1,1000UNION ALL SELECT 1,800UNION ALL SELECT 2,1200UNION ALL SELECT 3,1100UNION ALL SELECT 3,1200UNION ALL
33、SELECT 3,1300SELECT * FROM SALARY- 1SELECT * FROM SALARY WHERE ID IN (SELECT ID FROM SALARY GROUP BY ID HAVING COUNT(*)1)- 2DELETE T FROM SALARY TWHERE EXISTS(SELECT 1 FROM SALARY WHERE T.ID=ID AND SALARYT.SALARY)四、设计题(本大题共 2 小题,每小题 10 分,共 20 分)2、学生表:Student 学生表 (学号,姓名,性别,年龄,组织部门)Course 课程表 (编号,课程名称
34、)Sc 选课表 (学号,课程编号,成绩)表结构如下:(1).写一个 SQL 语句,查询选修了 计算机原理的学生学号和姓名(2).写一个 SQL 语句,查询 周星驰同学选修了的课程名字(3).写一个 SQL 语句,查询选修了 5 门课程的学生学号和姓名(1)select sno,sname from student where sno in (select sno from sc where cno = (select cno from course where cname=计算机原理) (2)select cname from course where cno in (select cno f
35、rom sc where sno =(select sno from student where sname=周星驰)(3)select sno,sname From student Where sno in (select sno from sc group by sno having count(sno)=5) (1) 一道凊华同方的 SQL 面试题已知一个表的结构为: 姓名 科目 成绩 张三 语文 20 张三 数学 30 张三 英语 50 李四 语文 70 李四 数学 60 李四 英语 90 怎样通过 select 语句把他变成以下结构: 姓名 语文 数学 英语 张三 20 30 50
36、李四 70 60 90在 Mysql 上测试通过:use test;drop table if exists studentscore;create table studentscore (id int auto_increment primary key,姓名 varchar (20),科目 varchar (20),成绩 varchar (20) ) default charset=utf8; create view teststudent as select A.姓名,A.成绩 as 语文,B.成绩 as 数学,C.成绩 as 英语 from studentscore A,student
37、score B,studentscore C where A.姓名=B. 姓名 and B.姓名=C.姓名 and A.科目= 语文 and B.科目=数学 and C.科目= 英语; (2)金蝶的一道 SQL 笔试题,上个周六的时候去金蝶面试,出了这样一道 SQL 题,共享之给下面这样的一个表记录:-购物人 商品名称 数量A 甲 2B 乙 4C 丙 1A 丁 2B 丙 5给出所有购入商品为两种或两种以上的购物人记录use test;drop table if exists product;create table product ( id int auto_increment primary
38、 key, 购物人 varchar (20), 商品名称 varchar (20), 数量 varchar (20) );insert into product (id, 购物人, 商品名称, 数量) values (1, A,甲,2);insert into product (id, 购物人, 商品名称, 数量) values (2, B,乙,4);insert into product (id, 购物人, 商品名称, 数量) values (3, C,丙,1);insert into product (id, 购物人, 商品名称, 数量) values (4, A,丁,2);insert
39、into product (id, 购物人, 商品名称, 数量) values (5, B,丙,5);select * from product group by 购物人 having count(商品名称)=2;错误,因为结果是这样的:A 甲 2B 乙 4select * from product where 购物人 in (select 购物人 from product group by 购物人 having count(商品名称)=2) 正确A 甲 2B 乙 4A 丁 2B 丙 5sql 语言实现查找成绩排名 10 到 20 的学生 sql 语句实现:查询成绩表中 10 名至 20 名的
40、学生方法select top 11 * from score where sno not in (select top 9 sno from score order by sc desc)order by sc desc 补充说明:score, sc, sno 分别为成绩表,成绩和学号。这道冥思苦想了 N 久的题目原来只用一个 top 就搞定了,真是狂汗,看来还要看书。用一句 SQL 取出第 m 条到第 n 条记录的方法 从 Table 表中取出第 m 条到第 n 条的记录:(Not In 版本)SELECT TOP n-m+1 * FROM Table WHERE (id NOT IN (S
41、ELECT TOP m-1 id FROM Table ) -从 TABLE 表中取出第 m 到 n 条记录 (Exists 版本)SELECT TOP n-m+1 * FROM TABLE AS a WHERE Not Exists(Select * From (Select Top m-1 * From TABLE order by id) b Where b.id=a.id ) Order by id-m 为上标,n 为下标,例如取出第 8 到 12 条记录,m=8,n=12,Table 为表名Select Top n-m+1 * From Table Where Id(Select M
42、ax(Id) From (Select Top m-1 Id From Table Order By Id Asc) Temp) Order By Id Asc 直接取得数据库中的分页记录 前提是表中必须有主键 取得第 M 条记录之后的 N 条记录: SELECT TOP N * FROM TABLE WHERE (ID NOT IN (SELECT TOP M id FROM TABLE ORDER BY ORDER) ORDER BY ORDER Oracle 中的实现 ,取得第 M 到 N 条记录: SELECT * FROM (SELECT * , ROWNUM AS CON FROM
43、 (SELECT * FROM TABLE ORDER BY ORDER ) WHERE ROWNUM = M; 查询表中连续的某几条记录 不要传任何列的条件参数,查询表中连续的某几条记录 如:表 A,id 列为主键 id name sex age - 1 luoyi male 21 2 yaya female 20 3 lili female 22 4 wuyong male 25 . 这个表的记录还有很多,如果我想取第二、第三条记录,不为别的,我就想要这两条,这不仅在编程中会用到,而且在一些公司面试时也有类似考题(呵呵,我没有遇到过),在 oracle 和 mssqlserver 中 SQ
44、L 代码分别为: 二、ms sql server 在 server 中没有 minus,只能用类似于 oracle 的第二种方法 select * from (select top 3 * from A) as b where b.id not in(select top 1 id from A) 三、绘制出来的结果为: id name sex age - 2 yaya female 20 3 lili female 22 特点:一次查询,数据库只返回一页的数据。而不是取出所有的数据。 说明: pagesize: 每页显示记录数 cureentpage:当前页数 select * from (
45、 select TOP pagesize * FROM ( SELECT TOP pagesize*cureentpage * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC 例子说明: 假如数据库表如下: user_table: id:主键,自增 username:字符 password:字符 假设有 80 条记录,每页显示 10 条记录,id 从 1 到 80 现在按照 id 升序排列取出第三页的数据应该为:所取得记录的 id 应该为 21 到 30
46、。这时该语句应该为: select * from ( select TOP 10 * FROM ( SELECT TOP 30 * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC 原理如下: 先按照 id 从小到大升序取出 30 条记录(3*10),也就是:id 在 1-30 之间的记录 (SELECT TOP 30 * from user_table ORDER BY id ASC) 然后按照 ID 降序排列这 30 条记录,得到记录为 id 在:从
47、30 到 1 然后在这些 30 条记录中取出前10 条记录:取得的记录为:id 在 30-21 之间。这就是我们需要的数据,但这时是按照降序排列的,不符合要求。 最后在重新排序得到最终我们需要的数据。id 在21-30 之间。 随机取出若干条记录的 SQL 语句 Sql server: select top 20 * from 表 order by newid() A、B 两个表拥有一样的表结构,都以 id 为主键,如何将 A 表中存在而 B 表中不存在的记录插入到 B 表中。表结构如下:create table A(id int primary key,name varchar(20),password varchar(20)A 表记录:ID NAME PASSWORD-1 Tom 12342 Mary 12343 Lucy 12344 Billy 12345 Henry 1234B 表记录:ID NAME PASSWORD-1 Tom 12342 Mary 12343 Lucy 1234SQL