数据库表的查询操作(实验二),数据库表查询实验

【实验目的】:了解SQL语言的使用,进一步理解关系运算,巩固数据库的基础知识。
【实验要求】:掌握利用Select语句进行各种查询操作:单表查询、多表连接及查询、嵌套查询、集合查询等。
【实验内容】
一、单表查询
1.简单查询
打开查询分析器,根建立teacher表,并加入数据。从teacher表中分别检索出教师的所有信息,以及仅查询教工号、姓名和职称。语句如下:

select * from teacher
select tno, tname from teacher

如要查询时改变列标题的显示,则从teacher表中分别检索出教师教工号、姓名、电子邮箱信息并分别加上‘教师姓名‘、‘教工号‘、‘电子邮箱‘等标题信息。

select tno 工号, tname 姓名, temail 电子邮箱 from teacher

使用TOP关键字:分别从teacher中检索出前2条及前面67%的教师的信息。

select top 2 * from teacher
select top 67 percent * from teacher

使用DISTINCT关键字:从teacher表中检索出教师的职称并且要求显示的职称不重复。select  distinct tposition   from  teacher

2.用计算列:将teacher表中各教师的姓名、教工号及工资按95%发放的信息,第2条语句将工资按95%发放后列名该为‘预发工资‘。语句如下:

select tno tname ,tsalary*0.95 from teacher
select tno工号, tname姓名, tsalary*0.95 AS 预发工资 from teacher

3.使用ORDER BY子句对查询的结果进行排序
使用ORDER BY语句可以对查询的结果进行排序,ASC、DESC分别是升序和降序排列的关键字,系统默认的是升序排列。从teacher表中查询工资大于2800的教师的教工号、姓名,并按升序排列,语句如下:

select tno, tname from teacher
WHERE tsalary>2800 order by tsalary ASC

4.条件查询
(1)使用关系运算符:从teacher表中查询出工作量大于288的教师资料,语句如下:

select * from teacherWHERE tamount>288 order by tamount DESC

(2)使用BETWEEN AND谓词:从teacher表中查询出工作量界于144和288之间的教师资料,语句如下:

select * from teacher WHERE tamount between 144 and 288

(3) 使用IN谓词:从teacher表中查询出职称为“教授”或“副教授”的教师的教工号、教师姓名、职称及家庭住址,语句如下:

select tno,tname,tposition, taddress from teacher
WHERE tposition in (‘教授‘,‘副教授‘)

(4)使用LIKE谓词:从teacher表中分别检索出姓‘王‘的教师的资料,或者姓名的第2个字是‘莉‘或‘轩‘的教师的资料,语句如下:

select * from teacher WHERE tname like ‘王%‘
select * from teacher WHERE tname like ‘_[莉,轩]%‘

二、多表查询
数据库各表中存放着不同的数据,用户经常需要用多个表中的数据来组合提炼出所需要的信息,如果一个查询需要对多个表进行操作,就称为关联查询,关联查询的结果集或结果表称为表之间的连接。关联查询实际上是通过各各表之间共同列的关联来查询数据的,它是关系数据库查询最基本的特征。
1.SQL 2000兼容2种连接形式:用于FROM子句的ANSI连接语法和用于WHERE子句的SQL SERVER连接语法形式。
从student、course和SC三张表中检索学生的学号、姓名、学习课程号、学习课程名及课程成绩,语句如下:

select student.sno, sname, cno, grade
from student inner join SC on student.sno=SC.sno

select student.sname,sc.grade
from student,sc
WHERE student.sno=sc.sno 

select student.sno,student.sname,sc.cno,course.cname,sc.grade
from student,sc,course
WHERE student.sno=sc.sno and sc.cno=course.cno

2.使用UNION子句进行查询
使用UNION子句可以将一个或者多个表的某些数据类型相同的列显示在同一列上。如从teacher表中列出教工号、姓名并从student表中列出学号及学生姓名,语句及查询结果如下:

select sno AS 学号或工号, sname AS 姓名 from student
union
select tno, tname from teacher

3.用GROUP子句进行查询 
如果要在数据检索时对表中数据按照一定条件进行分组汇总或求平均值,就要在SELECT语句中与GROUP BY子句一起使用集合函数。使用GROUP BY子句进行数据检索可得到数据分类的汇总统计、平均值或其他统计信息。
(1) 使用不带HAVING的GROUP BY子句。
使用不带HAVING 的GROUP BY子句汇总出SC表中的学生的学号及总成绩,语句如下:

select ‘学号‘=sno,‘总成绩‘=SUM(Grade)
from SC
group by Sno

(2)使用带HAVING 的GROUP BY子句。
使用带HAVING 的GROUP BY子句汇总出SC表中总分大于450分的学生的学号及总成绩,语句如下:

select ‘学号‘=sno,‘总成绩‘=SUM(Grade) from SC
group by Sno
Having SUM(Grade)>160

4.用COMPUTE和COMPUTE BY子句进行查询
使用COMPUTE和COMPUTE BY 既能浏览数据又能看到统计的结果。
(1) 用COMPUTE子句汇总出SC表中每个学生的学号及总成绩,语句如下:

select ‘学号‘=sno,‘成绩‘=Grade from SC
order by sno COMPUTE SUM(Grade)

(2)用COMPUTE BY 子句按学号汇总出SC表中每个学生的学号及总成绩,语句如下:

select ‘学号‘=sno,‘成绩‘=Grade from SC
ORDER BY Sno COMPUTE SUM(Grade) by sno

观察执行COMPUTE和COMPUTE BY子句的结果有什么不同?

5.嵌套查询
(1) 使用IN或NOT IN关键字
使用IN关键字查询出j10011班所有男生的学号、课程号及相应的成绩,语句如下:

select SC.sno , SC.cno,SC.grade
FROM SC
WHERE sno IN
 ( SELECT sno FROM student
 WHERE Sclass=‘j10011‘ AND Ssex=‘男‘)

使用IN关键字查询出与教师不同名的学生(学号,姓名),语句如下:

select sno 学号, sname 姓名
from student
where sname not in (select tname from teacher)

(2) 使用EXISTS 或NOT EXISTS关键字。

使用EXISTS关键字查询出‘j10011‘班的学生的学号、课程号及相应的成绩,语句如下:

SELECT SC.sno,SC.cno,SC.grade
FROM SC
WHERE EXISTS
( SELECT * FROM student
 WHERE SC.sno=student.sno AND student.sclass=‘j10011‘ )
时间: 2024-08-12 04:15:05

数据库表的查询操作(实验二),数据库表查询实验的相关文章

实验二 数据库和表的创建与管理

实验二 数据库和表的创建与管理  创建用于企业管理的员工管理数据库,数据库名为YGGL中,YGGL数据库中包括三个表:Employees(员工信息表).Departments(部门信息表).Salary(员工薪水情况表).各表的结构如下表: 表1   Employees表结构 列名 数据类型 长度 是否允许为空 说明 EmployeeID char 6 not null 员工编号,主键 Name char 10 not null 姓名 Education char 4 not null 学历 B

实验二 PHP基本语法实验

实验二 PHP基本语法实验 0 实验准备 0.1实验环境和相关工具软件 具体到的机房环境,请在Windowsxp环境下做本实验: l  操作系统:Windowsxp l  Web服务器:Apache 2.0.63  默认发布文档路径:c:\Apache\htdocs l  PHP:PHP5.2.11  安装路径:c:\php l  数据库:MySQL 5.1.39  使用默认路径 l  脚本编辑器: 记事本 或 EditPlus-v3.11.463H 或 Macromedia Dreamweav

操作系统(实验二、作业调度模拟程序实验)

实验二.作业调度模拟程序实验 专业 商业软件工程   姓名 丘惠敏 学号 201406114203 一.        实验目的   (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二.        实验内容和要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素. 三.        实验方法.步骤及结果测试   1.   

实验二、作业调度模拟程序实验 (已修改格式)

实验二.作业调度模拟程序实验 专业:计算机科学与技术网络工程   姓名:陈玉婷  学号201306114132 一.实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二.实验内容和要求 用高级语言编写一个或多个作业调度的模拟程序. 作业调度算法:1)采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业.2)短作业优先 (SJF) 调度算法,优先调度要求运行时间最短的作业.3)响应比高者优先(HRRN)调度算法,为每个作业

20145326《Java程序设计》实验二Java面向对象程序设计实验报告

20145326<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 一.单元测试 1. 三种代码·伪代码·产品代码·测试代码Example:需求:我们要在一个MyUtil类中解决一个百分制成绩转成“优.良.中.及格.不及格”五级制成绩的功能. 伪代码: 百分制转五分制: 如果成绩小于60,转成“不及格” 如果成绩在60与70之间,转成“

2018-2019-1 20165221 《信息安全系统设计》实验二:固件程序设计-实验报告

2018-2019-1 <信息安全系统设计基础>实验二:固件程序设计-实验报告 实验报告由5221同学完成: http://www.cnblogs.com/0630tx/p/9904111.html 原文地址:https://www.cnblogs.com/nmsl123/p/9906006.html

20172319 实验二《树》实验报告

20172319 2018.11.04-11.12 实验二<树> 实验报告 课程名称:<程序设计与数据结构> 学生班级:1723班 学生姓名:唐才铭 学生学号:20172319 实验教师:王志强老师 课程助教:张师瑜学姐.张之睿学长 实验时间:2018年11月04日--2018年11月12日 必修/选修:必修 目录 实验内容 实验要求 实验步骤 代码实现及解释 测试过程及遇到的问题 分析总结 代码托管 参考资料 实验内容 实验二-1-实现二叉树: 完成链树LinkedBinaryT

数据库实验二 数据库和数据表的创建

实验环境: SQL Service 2014 一.数据库的创建 有三种类型的文件用来存储数据库: 主文件包含数据库的启动信息.主文件还可以用来存储数据.每个数据库都包含一个主文件. 次要文件保存所有主要数据文件中容纳不下的数据.如果主文件大到足以容纳数据库中的所有数据,就不需要有次要数据文件.而另一些数据库可能非常大,需要多个次要数据文件,也可能使用多个独立磁盘驱动器上的次要文件,以将数据分布在多个磁盘上. 事务日志文件保存用来恢复数据库的日志信息.每个数据库必须至少有一个事务日志文件(尽管可以

[数据库事务与锁]详解二: 数据库的读现象浅析

注明: 本文转载自http://www.hollischuang.com/archives/900 “读现象”是多个事务并发执行时,在读取数据方面可能碰到的状况.先了解它们有助于理解各隔离级别的含义.其中包括脏读.不可重复读和幻读. 脏读 脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的. 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交(commit)到

实验二、作业调度模拟实验

13物联网  201306104112 徐剑锋 一. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二. 实验内容和要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素. 作业调度算法: 1) 采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业. 2) 短作业