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

【实验目的】:了解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' )

以上就是表的查询操作实验全部内容,希望对大家的学习有所帮助,大家亲自动手实践一下。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索sql查询
, 数据库查询操作
查询数据库的表
mssql数据库操作、数据库的视图操作实验、数据库操作实验报告、mssql数据库、mssql数据库管理工具,以便于您获取更多的相关知识。

时间: 2024-09-05 18:05:03

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

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

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

数据库表的查询操作实践演练(实验三)_MsSql

继前两次的实验,本次实验以熟练掌握利用select语句进行各种查询操作:单表查询.多表连接及查询.嵌套查询.集合查询等,巩固数据库查询操作. 下面就跟着小编一起练习吧! 在实验一创建并插入数据的表(Student, Course,SC,Teacher,TC)的基础上,完成以下操作. (1)将教师'罗莉'的名字改为'罗莉莉'. 复制代码 代码如下: update Teacher set tname='罗莉莉' where tname='罗莉' (2)将两个同学(数据自己临时设置,用后即删除)的两门

数据库表的查询操作实践演练(实验三)

继前两次的实验,本次实验以熟练掌握利用select语句进行各种查询操作:单表查询.多表连接及查询.嵌套查询.集合查询等,巩固数据库查询操作. 下面就跟着小编一起练习吧! 在实验一创建并插入数据的表(Student, Course,SC,Teacher,TC)的基础上,完成以下操作. (1)将教师'罗莉'的名字改为'罗莉莉'. 复制代码 代码如下:update Teacher set tname='罗莉莉' where tname='罗莉' (2)将两个同学(数据自己临时设置,用后即删除)的两门课

数据库表的创建、管理和数据操作(实验一)_MsSql

今天我们就以实验的形式对表的创建.管理和数据操作进行学习,上课吧. [实验目的]:了解SQL语言的使用,进一步理解关系运算,巩固数据库的基础知识.[实验要求]:利用SQL语言进行数据库表的各种操作: 1.数据库表的创建.修改和删除操作. 2.向表中进行数据的插入.删除和修改操作.[实验内容]1. 利用数据定义语句在实验一创建的stu_DB库中建立学生管理系统的三个表:Student.Course.SC. 2.利用INSERT.UPDATE和DELETE语句对上述三张表的数据进行插入.更新和删除操

sql 数据库表关联查询

问题描述 sql 数据库表关联查询 sql表关联查询出的结果想再次约束(where)取出结果如何做,如下图,图为已取出的结果,想将 publiction_set_id 的值为null的数据提出,怎么做? 解决方案 有两种可能,因为是左连接,可能左边的表有数据,右边的表没数据.另外一种,右边的表这个字段是null.所以最好的选择是在这个查询结果外层在加一个 select * from ( 你的上面SQL语句) ) a where publiction_set_id is null 解决方案二: a

link中内存表和数据库表联合查询怎么做?为什么提示invaild invoke?

问题描述 link中内存表和数据库表联合查询怎么做?为什么提示invaild invoke? link中内存表和数据库表联合查询怎么做?为什么提示invaild invoke? 解决方案 检查下是不是访问了null的对象?

在Java的Hibernate框架中对数据库数据进行查询操作_java

Hibernate查询语言(HQL)是一种面向对象的查询语言,类似于SQL,但不是对表和列操作,HQL适用于持久对象和它们的属性. HQL查询由Hibernate转换成传统的SQL查询,这在圈上的数据库执行操作. 虽然可以直接使用SQL语句和Hibernate使用原生SQL,但建议使用HQL尽可能避免数据库可移植性的麻烦,并采取Hibernate的SQL生成和缓存策略的优势. 都像SELECT,FROM和WHERE等关键字不区分大小写,但如表名和列名的属性是区分在HQL敏感. FROM 语句使用

Yii多表联合查询操作详解_php实例

本文针对Yii多表联查进行汇总描述,供大家参考,具体内容如下 1.多表联查实现方法 有两种方式一种使用DAO写SQL语句实现,这种实现理解起来相对轻松,只要保证SQL语句不写错就行了.缺点也很明显,比较零散,而且不符合YII的推荐框架,最重要的缺点在于容易写错. 还有一种便是下面要说的使用YII自带的CActiveRecord实现多表联查 2. 整体框架 我们需要找到一个用户的好友关系,用户的信息放在用户表中,用户之间的关系放在关系表中,而关系的内容则放在关系类型表中.明显的我们只需要以关系表为

mysql数据库表创建 查询 修改及删除命令

create创建数据库表 创建数据库表太常用了,只要用到数据库,我们就会用到创建数据库表,我们用create 语句来创建,看下面语法: create table tbl_name(create_definition,...) [type =table_type] create_definition:col_name type [not null | null][default default_value] [auto_increment][primary_key] create table是固定