≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > SQL Server

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

人气:362 时间:2020-05-29

这篇文章主要为大家详细介绍了数据库表的查询操作(实验二),具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

 

【实验目的】:

了解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' )




 

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

本文来自:http://www.q1010.com/179/8808-0.html

注:关于数据库表的查询操作(实验二)的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:SQL SERVER

您可能感兴趣的文章

  • 数据库触发器DB2和SqlServer区别解析
  • 解决在Azure上部署Sqlserver网络访问不了示例
  • 在sqlserver中如何使用CTE解决复杂查询问题
  • SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(下)
  • SQLServer存储过程中事务的使用方法
  • 使用SqlServer CTE递归查询处理树、图和层次结构
  • SqlServer如何通过SQL语句获取处理器(CPU)、内存(Memory)、磁盘(Disk)以及操作系统相关信息
  • SQLServer中merge函数用法分析
  • SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(中)
  • SQLServer中Partition By及row_number 函数使用分析
上一篇:SQL优化经验总结
下一篇:解决:原因: 该帐户的密码必须更改
热门文章
  • SQL Server SQL获取第一条记录的方法
  • SQL Server出现System.OutOfMemoryException异常的解决方法
  • SQL Server的 update from 语句的简单示例
  • SQL Server 数据库备份方法菜鸟教程
  • SQL Server 多表关联时在where语句中慎用trim()方法
  • SQL Server数据类型及长度限制详细说明
  • mybaits非配置原因,导致SqlSession was not registered for synchronization异常解析
  • SQL Server 收缩后对数据库的使用有影响吗?
  • SQL Server 格式导致的Excel导入sql出现异常的解决方法
  • SQL Server 连接服务器出现错误 7391的解决方法
  • 最新文章
    • SQL Server存储过程基本语法的简单示例
    • sql查询时增加自动编号和分页的简单示例
    • sql轻松应付百万数据的高效数据分页存储过程的简单示例
    • sql获取一条数据中所有字段的名称和值的实现方法
    • sql分割函数的简单示例
    • SQL Server异常捕获的简单示例
    • SQL SERVER回滚恢复误操作数据的实现方法
    • SQL Server函数或存储过程中抛出异常的实现方法
    • SQL Server创建数据库的完整代码
    • SQL Server创建数据库的命令用法示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。