第4章 SQL 查询
vf第四章关系数据库标准语言SQL
4.2.8 利用空值查询
SQL支持空值,当然也可以利用空值进 行查询。 假设在订购单关系中,一名职工正在准 备订购单,但尚未选定供应商,这样若把信 息存入数据库,则供应商号和订购日期两个 属性均为空值,在前面给出的订购单记录中 有3个这样的记录。
例4.23 找出尚未确定供应商的订购单。 SELE * FROM 订购单 WHER 供应商号IS NULL 结果是: E6 NUIL OR77 NULI E1 NULL OR80 NUIJL E3 NUIJL OR90 NUI„L 注意:查询空值时要使用IS NULL,而= NULL是无效的,因为空值不是一个确定的 值,所以不能用“=”这样的运算符进行比较。
例4.20 求在WH2仓库工作的职工的最高工资值。
SELECT MAX(工资) FROM 职工 WHERE 仓库号=”WH2”
4.2.7 分组与计算查询
利用GROUP BY子句进行分组计算查询。 GROUP BY短语的格式如下: Group by 字段名 having 条件 可以按一列或多列分组,还可以用HAVING 进一步限定分组的条件。 例4.21 求每个仓库的职工的平均工资。 SELECT 仓库号,AVG(工资) FROM 职工 GROUP BY 仓库号
可以看到,在这个命令中含有两个 SELECT—FROM—WHERE查询块,即内 层查询块和外层查询块,内层查询块检索 到的仓库号值是WHl和WH2,这样就可以 写出等价的命令: SELE 城市 FROM 仓库 WHERE 仓库号; IN(”WHl”,”WH2”) 这里IN相当于集合运算符∈。
例4.9查询所有职工的工资都多于1210元的仓 库的信息。 这个检索要求也可以描述为:没有一个职工的工 资少于或等于1210元的仓库的信息。 不在以下范围 这样可以有SQL命令: SELE * FROM 仓库 WHER 仓库号 NOT IN; (SELECT 仓库号 FROM 职工 WHERE ; 工资<=1210) 内层SELECT—FROM—WHERE查询块指出所 有职工的工资少于或等于1210元的仓库的仓库号值 的集合,然后从仓库关系中检索元组的仓库号属性 值不在该集合中的每个元组。
Access 数据库应用教程 第4章 查询
4.5 交叉表查询
交叉表查询通常以一个字段作为表的行标 题,以另一个字段的取值作为列标题,在行和 列的交叉点单元格处获得数据的汇总信息,以 达到数据统计的目的。
交叉表查询既可以通过交叉表查询向导来 创建,也可以在设计视图中创建。
【例4.7】在“学生管理”数据库中,查 询学号第6位是2或者5的学生的学号、姓名和 班级名称。
【例4.8】在“学生管理”数据库中,查 询分数在70-80之间的同学的姓名、课程名称 和分数,并按分数从高到低排列。
4.3.3 运行和修改查询
1. 运行查询
查询创建完成后,将保存在数据库中。运行 查询后才能看到查询结果,运行查询的方法:
在“设计视图”中打开要修改的查询。
(1)添加字段:从字段里表中选定一个或多个 字段,并将其拖曳到查询定义窗口的相应列中。
(2)删除字段:单击列选定器选定相应的字段, 然后按Delete键。
(3)移动字段:先选定要移动的列,可以单击 列选定器来选择一列,也可以通过相应的列选 定器来选定相邻的数列。将字段拖曳到新的位 置。移走的字段机器右侧的字段一起向右移动。
参数查询一般建立在选择查询基础上,在运 行查询时会出现一个或多个对话框,要求输入 查询条件。根据查询中参数个数的不同,参数 查询可以分为单参数查询和多参数查询。
4.4.1 在设计视图中创建单参数查询
【例4.11】在“学生管理”数据库中创建单参 数查询,按输入的学号查询学生的所有信息。
4.4.2 在设计视图中创建多参数查询
4.1 查询概述
查询是Access 数据库的主要对象,是Access 数据库的核 心操作之一。
第4章 关系数据库标准语言——SQL
4.2 SQL的数据定义
4.2.1 基本表的创建、修改和删除 4.2.2 索引的创建和删除
4.2 SQL的数据定义
SQL的数据定义功能包括:定义基本表、定义视图、定义索引。除此之外, 还有定义数据库、定义规则、定义存储过程等。SQL的数据定义语句如表 4-2所示。 表4-2 SQL的数据定义语句
操作方式 操作对象 创建 表 CREATE TABLE 删除 DROP TABLE 修改 ALTER TABLE
视图
CREATE VIEW
DROP VIEW
索引
CREATE INDEX
DROP INDEX
4.2.1 基本表的创建、修改和删除
1.
基本表的创建 一般格式如下:
CREATE TABLE<表名>(<列名><数据类型>[列级完整性 约束条件] [,<列名><数据类型>[列级完整性约束条件]]… [,<表级完整性约束条件>] );
4.2.1 基本表的创建、修改和删除
5. 基本表的删除 随着时间的变化,有些基本表无用了,可将其删除。删除基本表命 令的一般格式为: DROP TABLE<表名>[RESTRICT│CASCADE]; 说明: CASCADE(级联):表示在删除基本表时,不仅表中的数据和 此表的定义将被删除,而且此表上建立的索引、视图、触发器等 有关对象一般也都被删除。 RESTRICT(限制):表示在删除基本表时,只有在没有视图或 约束引用基本表 S 中的列时才能执行,否则拒绝删除。 如执行DROP TABLE S语句后,将基本表S的定义(表框架)连同它 的所有元组、索引以及由它导出的所有视图全部删除,并释放相 应的存储空间。
数据库语言SQL——数据查询1
( 4)基于LIKE的查询 LIKE用于测试一个字符串是否与给定的模式匹配。 所谓模式是一种特殊的字符串,其中可以包含普通字符 ,也可以包含特殊意义的字符,通常叫通配符。 LIKE运算符的一般形式为:列名 LIKE <模式串>
模式串中可包含如下四种通配符: (1)_:匹配任意一个字符。如 '_u_'表示第二个字符为u, 第一、第三个字符为任意字符的字符串。 (2)%:匹配多个字符。如‘S%’表示以S开头的字符串。 (3)[ ]:匹配[ ]中的任意一个字符,如[SDJ ] 。 (4)[^ ]:不匹配[ ]中的任意一个字符,如[^SDJ ]。
( 6 )基于多个条件的查询 可以使用AND、OR逻辑谓词来连接多个条件,构成一个 复杂的查询条件。 使用格式为:<条件1> AND<条件2> AND…<条件n> 或 <条件1> OR<条件2> OR…<条件n>
【例】查询计算机系年龄在18岁以上的学生学号、姓名 解: SELECT 学号,姓名 FROM 学生信息表 WHERE 系别=‘计算机’ AND 年龄>18
对查询结果排序
● 使用ORDER
BY子句
可以按一个或多个属性列排序 升序:ASC;
降序:DESC;
默认值为升序
注: DESC 是descend 降序意思 ; ASC 是ascend 升序的意思
对查询结果排序(续)按一个属性列 排序
查询选修了3号课程的学生的学号及其成
绩,查询结果按分数降序排列。 SELECT 学号,成绩 FROM 选修信息表 WHERE 课程号= ' 3 ' ORDER BY 成绩 DESC
数据库第4章 SQL语言基础及数据定义功能
第4章SQL语言基础及数据定义功能用户使用数据库时需要对数据库进行各种各样的操作,如查询数据,添加、删除和修改数据,定义、修改数据模式等。
DBMS必须为用户提供相应的命令或语言,这就构成了用户和数据库的接口。
接口的好坏会直接影响用户对数据库的接受程度。
数据库所提供的语言一般局限于对数据库的操作,它不是完备的程序设计语言,也不能独立地用来编写应用程序。
SQL(Structured Query Language,结构化查询语言)是用户操作关系数据库的通用语言。
虽然叫结构化查询语言,而且查询操作确实是数据库中的主要操作,但并不是说SQL只支持查询操作,它实际上包含数据定义、数据查询、数据操作和数据控制等与数据库有关的全部功能。
SQL已经成为关系数据库的标准语言,所以现在所有的关系数据库管理系统都支持SQL。
本章将主要介绍SQL语言支持的数据类型以及定义基本表和索引的功能。
4.1 SQL语言概述SQL语言是操作关系数据库的标准语言,本节介绍SQL语言的发展过程、特点以及主要功能。
4.1.1 SQL语言的发展最早的SQL原型是IBM的研究人员在20世纪70年代开发的,该原型被命名为SEQUEL (Structured English QUEry Language)。
现在许多人仍将在这个原型之后推出的SQL语言发音为“sequel”,但根据ANSI SQL委员会的规定,其正式发音应该是“ess cue ell”。
随着SQL语言的颁布,各数据库厂商纷纷在其产品中引入并支持SQL语言,尽管绝大多数产品对SQL语言的支持大部分是相似的,但它们之间还是存在一定的差异,这些差异不利于初学者的学习。
因此,我们在本章介绍SQL时主要介绍标准的SQL语言,我们将其称为基本SQL。
从20世纪80年代以来,SQL就一直是关系数据库管理系统(RDBMS)的标准语言。
最早的SQL标准是1986年10月由美国ANSI(American National Standards Institute)颁布的。
数据库应用第4章 SQL复杂查询
连接的分类
连接分为4种类型:内连接,外连接, 连接分为 种类型:内连接,外连接, 种类型 交叉连接,自然连接。 交叉连接,自然连接。 内连接:使用关键字inner,仅显示两个 内连接:使用关键字 , 连接表中匹配的行, 可以省略。 连接表中匹配的行,inner可以省略。 可以省略 外连接:使用关键字outer,有左外连接、 外连接:使用关键字 ,有左外连接、 右外连接和完全外连接三种。 右外连接和完全外连接三种。
左外连接:left outer,结果集中包含左 左外连接: , 表中所有行及右表中匹配的行。 表中所有行及右表中匹配的行。 右外连接: 右外连接:right outer,结果集中包含 , 右表中所有行及左表中匹配的行。 右表中所有行及左表中匹配的行。 完全外连接: 完全外连接:full outer,结果集中包括 , 连接表中的所有行,不管它们是否匹配。 连接表中的所有行,不管它们是否匹配。
use xscj 学号,姓名,专业名, select 学号,姓名,专业名,总学分 into communication_xs from xs 专业名='通信工程' ='通信工程 where 专业名='通信工程'
Exe3:在xscj数据库中, Exe3:在xscj数据库中,查询选修了 数据库中 101号课程 成绩大于等于80 号课程, 80分的计 101号课程,成绩大于等于80分的计 算机专业的学生情况, 算机专业的学生情况,并将查询结 果放入xs_101表中。 xs_101表中 果放入xs_101表中。
MAX: MAX:求最大值 MIN: MIN:求最小值 SUM: SUM:求和 求选修101 101课程的学生平均成绩 例4-8 求选修101课程的学生平均成绩
第4章结构化查询语言SQL
第4章结构化查询语言SQL学习目标在本章中将学习:l SQL语言的特点及功能l SQL的数据查询功能l SQL的数据操作功能l SQL的数据定义功能4.1SQL语言概述SQL全称是“结构化查询语言(Structured Query Language)”,最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。
SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。
如今无论是Oracle,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual FoxPro,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
4.1.1 SQL语言的特点1.综合统一SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统开发提供了良好的环境。
在关系模型中实体和实体间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一。
2.非过程化语言SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。
所有SQL语句接受集合作为输入,返回集合作为输出。
SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。
SQL不要求用户指定对数据的存放方法。
这种特性使用户更易集中精力于要得到的结果。
所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。
3.面向集合的操作方式SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
SQL教程(四)
数据查询-空行常量列 数据查询 空行常量列
查询空行 SELECT SName FROM Students WHERE SEmail IS NULL
思考:非空行怎么查?
使用常量列 SELECT 姓名=SName,地址= SAddress,'河北新龙' AS 学校 名称 FROM Students
7/38
7
数据查询-基础 数据查询 基础
查询全部的行和列 SELECT * FROM Students 查询部分行 SELECT SCode,SName,SAddress FROM Students WHERE SAddress = '河南新乡' SELECT SCode,SName,SAddress FROM Students WHERE SAddress <> '河南新乡'
2/38
2
目标
理解查询的机制 使用SELECT语句进行条件查询 使用 语句进行条件查询 在查询中返回限制行, 在查询中返回限制行,进行查询排序 在查询中使用表达式, 在查询中使用表达式,运算符和函数
3/38
3
什么是查询? 什么是查询?
SELECT * FROM SALES
查询请求 查询结果集 Application Logic SQL SERVER
17/38 17
系统函数
函数名 CONVERT 描述 用来转变数据类型 举例 SELECT CONVERT (VARCHAR (5), 12345) 返回:字符串12345 SELECT CURRENT_USER 返回:你登录的用户名 SELECT DATALENGTH ('中国A盟') 返回:7 SELECT HOST_NAME() 返回:你所登录的计算机的名字 SELECT SYSTEM_USER 返回:你当前所登录的用户名 SELECT USER_NAME(1) 返回:从任意数据库中返回"dbo"
第4章 标准查询语言SQL
(2)<列名>:规定了该列(属性)的名称。一个表中不能有两列同名。 (3)<数据类型>:规定了该列的数据类型。各具体DBMS所提供的数据类型是不同的; 本书使用的是SQL Server 2005中规定的数据类型。 (4)完整性约束:完整性约束规则在该命令中较为复杂,为了学习方便,没有把命令 的全部内容一次写出来,这里主要用到下列三类子句:
SQL语言的主பைடு நூலகம்特点
(2)高度非过程化。 SQL语言与各种关系数据库DBMS中的语言一样是一 种高度非过程化语言。使用时,只要指明“做什么?” 不必像高级语言那样指明“怎样做?”,因此用户无 需了解文件与数据的存取路径,这种存取路径的SQL 语句的操作过程是由系统自动来完成。这不仅大大减 轻了编程人员的负担,还有利于提高数据的独立性。
定义数据库内基本表
实例说明: (1)“教师”表:T,由教师编号(TNO)、姓名(TN)、性别(SEX)、 年龄(AGE)、职称(ZC)和所在专业(DEPT)6个属性组成。可记为: T(TNO,TN,SEX,AGE,ZC,DEPT) (2)“课程”表:C,由课程号(CNO)、课程名(CN)、课程性质 (CX)和学分(CT)4个属性组成。可记为: C(CNO,CN,CX,CT) (3)“教师授课”表:TC,由教师编号(TNO)、课程号(CNO)、教 龄(YEAR)3个属性组成,这里的教龄是指教授这门课的教龄。可记为: TC(TNO,CNO,YEAR)
第4章SQL结构化查询语言.
说明: ① 主数据文件扩展名为.mdf; ② 次数据文件扩展名为.ndf; ③ 日志文件扩展名均为.ldf。
3.修改数据库(ALTER DATABASE)
Alter Database命令语法: ALTER DATABASE 数据库名 { ADD FILE < filespec > [ ,...n ] | MODIFY FILE < filespec > | REMOVE FILE 逻辑文件名 | ADD LOG FILE < filespec > [ ,...n ] | MODIFY NAME = 新数据库名 } <filespec>::= ( NAME = 逻辑文件名 [ , NEWNAME = 新逻辑文件名 ] [ , FILENAME = ‘OS文件的路径及名字’ ] [ , SIZE =文件的初始大小 ] [ , MAXSIZE =最大的文件尺寸 [ , FILEGROWTH = 文件大小增量 ] )
说明:<数据值>的写法决定具体的插入方式。
2.数据插入的两种方式
(1) 插入一行 INSERT [INTO] 表名或视图名 [(列名表)]
VALUES (列值表)
(2) 插入一行或多行 INSERT [INTO] 表名或视图名 [(列名表)]
SELECT子句
三.数据修改(UPDATE)
1.数据修改命令的语法
<列级约束> ::=[ CONSTRAINT 约束名] { [ NULL | NOT NULL ] | [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] ] | [ [ FOREIGN KEY ] REFERENCES 参照表 [ (参照列) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] ] | CHECK ( 逻辑表达式) } <表级约束 > ::= [ CONSTRAINT 约束名 ] { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] {(列名[ASC | DESC] [ ,... ])} | FOREIGN KEY [ ( 列名 [ ,... ] ) ] REFERENCES 参照表 [ ( 参照列 [ ,... ] ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] | CHECK ( 条件表达式 ) }
计算机二级VFP第4章(sql)
一、判断题(20分)1、SQL语句的核心是数据查询。
2、查询设计器默认的查询去向是浏览窗口。
3、使用sql语句进行分组查询时,为了去掉不满足条件的小组,应该在group by后面使用where子句。
4、查询设计器中的“筛选”选项卡对应于sql语句中的where。
5、在使用查询设计器时,如果是单表查询,连接选项卡是肯定不需要设置的。
6、在select语句中,可以使用eof()函数。
7、在sql中,修改数据表结构的命令是modify structure。
8、在sql的alter table命令中增加字段的子句是drop。
9、用insert-sql语句可以插入记录的部分字段值。
10、用insert-sql语句可以插入多条记录。
11、select-SQL可以为输出的字段重新命名。
12、select-SQL语句不能重新指定列的顺序。
13、用select-sql语句进行统计查询时,要统计学生表中女生的人数应使用函数count。
14、如果要在屏幕上直接看到查询的结果,“查询去向”应选择浏览或屏幕。
15、如果学生表中有“所在系”字段,要统计全系有多少个系,可以用命令子句select count(distinct 所在系)。
16、select-sql中,top子句必须放在order by子句之后。
17、在select-sql中,空值用null表示。
18、在sql中的delete命令功能是物理删除记录。
19、在用select-sql进行多表查询时,多表的连接分为内连接、左连接、右连接和完全连接。
20、select-sql可以将查询结果追加到已有的数据表中。
二、选择题(40分)1、在SQL语句中,与表达式“工资BETEEN 2000 AND 2800”功能相同的表达是()A、工资>=2000 and 工资>=2800B、工资>=2000 or 工资>=2800C、工资>=2000 and 工资<=2800D、工资>=2000 or 工资<=28002、不属于SQL数据定义功能的是()A、CREAT TABLEB、CREAT VIEWC、ALTER TABLED、UPDATE3、在SQL查询时,使用where子句指出的是()A、查询目标B、查询结果C、查询条件D、查询视图4、执行“select * from stock into stock stock order by 单价”()A、会产生一个按“单价”升序排列的文件。
数据库原理及应用-第4章-SQL语言
建立学生表student,由学号、姓名、性别、年龄 、系别5个属性组成.
CREATE TABLE student
(Sno char(8) primary key, Sname char(20) not null ,
Ssex char(1) default ‘男’, Sage int check(Sage>=0 and Sage <=120),
Transact-SQL命令格式的约定
在Transact-SQL语言的命令格式中,
[ ]括起来的内容表示是可选的;
[,…n]表示重复前面的内容;
< >括起来表示在实际编写语句时,用相应的内容替代;
{ }括起来表示是必选的; 类似A|B的格式:表示A和B只能选择一个,不能同时都 选。
数据类型
系统数据类型 SQL Server预先定义好的,可以直接使用。
选择表中的若干行
1)消除重复的行:DISTINCT
1. 查询所有选修过课的学生的学号 SELECT Sno FROM SC
等价于:
SELECT ALL Sno FROM SC
结果中保留了重复的行
SELECT DISTINCT Sno FROM SC
结果中消除了重复的行
2)查询满足条件的元组
通过WHERE子句实现 常用的查询条件
约束 constraint
约束是SQL Server提供的自动保持数据库完整 性的一种方法 。
主键约束 primary key 主键能够唯一地确定表中的每一条记录,主键不能取空值。 主键约束可以保证实体的完整性。
唯一性约束 unique •唯一性约束用于指定一个或多个列的组合值具有唯一 性,以防止在列中输入重复的值。 •使用唯一性约束的字段允许为空值; •一个表中可以允许有多个唯一性约束; •可以把唯一性约束定义在多个字段上;
SQL Server数据库第4章
• 【例4-14】查询“学生”表中的学生信息,查 询结果集先按性别升序排列,然后再按照年龄 升序(即按出生日期降序)排列。为了方便查 看结果,输出“年龄”计算列。
SELECT *,年龄=Year(GETDATE())-YEAR(csrq)
FROM Xs
• 如果有ORDER BY子句,查询结果还要按照其后 指定列的值进行排序。
4.2基本子句查询:
4.2.1
SELECT子句
4.2.2
FROM子句
4.2.3
WHERE子句
4.2.4
ORDER BY子句
4.2.5
INTO子句
4.2.6
合并结果集
4.2.1 SELECT子句
• SELECT子句用于定义查询结果集中的列。常将 SELECT后面的内容称作选择列表。选择列表是 一系列以逗号分隔的表达式。每个表达式定义 结果集中的一列。结果集中列的排列顺序与选 择列表中表达式的排列顺序相同。选择列表可 以有如下不同的表达方式。
4.3.1
使用聚合函数
4.3.2
使用GROUP BY子句
4.3.3
使用HAVING子句
4.3.4
使用COMPUTE子句
4.3.1 使用聚合函数
使用聚合函数可以在查询结果集中生成汇总值。除了COUNT(*)函 数外,其他汇总函数都处理单个字段中全部符合条件的值以生成 一个结果集。聚合函数主要有: • COUNT(*)统计记录的个数。 • COUNT(<列名>)统计一列中值的个数。 • SUM(<列名>)统计一列中值的和(该列必须是数值型)。 • AVG(<列名>)统计一列值的平均值(该列必须是数值型)。 • MAX(<列名>)求一列值的最大值。 • MIN(<列名>)求一列值的最小值。 其中在*号和<列名>前面可以使用DISTINCT或ALL关键字。DISTIN CT用于去掉指定列中重复的信息,ALL是不取消重复信息,默认 值是ALL。
第4章 T-SQL语言
Select select select select
cast('2008-05-08 12:35:29.1234567' as time(7)) cast('2008-05-08 12:35:29.1234567' as date) cast('2008-05-08 12:35:29.123' as smalldatetime) cast('2008-05-08 12:35:29.123' as datetime)
4.1 T-SQL特点
一体化 两种使用方式,交互和嵌入 非过程化语言 简洁
4.2 T-SQL数据类型
分为系统数据类型和用户自定义数据类型 系统数据类型
数字型:整数,小数,负数、分数等
整数int,bigint,smallint,tinyint 非整型decimal(p,s),float
货币:money,smallmoney 日期:datetime,datetime2,date,time, datetimeoffset,smalldatetime
4.2 T-SQL数据类型--例子
Select cast('2007-05-03 12:35:29' as smalldatetime), cast('2007-05-08 12:35:30' as smalldatetime), cast('2007-05-08 12:59:59.998' as smalldatetime)
应用程序----作为一个批处理; 存储过程或触发器-----作为一个批处理; 由EXECUTE命令语句执行的字符串构成一个批处理
Select * from 客户表 Select * from 工作人员表 go
电大《数据库基础与应用》教材第4章答案
电大《数据库基础与应用》教材第4章答案第四章结构化查询语言--SQL一、填空题1. 视图、基本表2. 非过程化、集合3. KUCUN、LIU4. 列级、表级5. 主码、单值、外码、检查6. primary key、foreign key7. 建立、修改、删除、多行(多值)8. 单行(单值)9. 插入、修改、删除10. 表、建立11. 修改、查找12. 基本表、视图13. 没有影响、有影响14. create view、update、drop view 15.投影、连接、选择16.group by、order by17.inner join、left join、right join二、根据主教材第四章所给的商品库和教学库,按照下列所给的每条S QL 查询语句写出相应的功能。
1. 从商品库中查询出每一种商品的商品代号、分类名、数量和品牌等信息。
2. 从商品库中查询出所有商品的不同品牌。
3. 从商品库中查询出品牌为熊猫或春兰的所有商品的商品代号、分类名、产地和品牌。
4. 从教学库中查询出每门课程被选修的学生数。
5. 从教学库中查询出只选修了一门课程的全部学生。
6. 从教学库中查询出学生号为@s1 的学生所选修、而学生号为@s2 的学生没有选修的全部课程。
7. 从教学库中查询出所有已被学生选修的课程。
8. 从教学库中查询出同时选修了3门课程的全部学生。
9. 从教学库中查询出每个专业的学生人数,并按人数多少降序排列。
10. 从教学库中查询出每个学生选课的全部情况,并依次按学生号和成绩排序。
三、根据教材第四章所给的商品库和教学库,按照下列所给的每种功能写出相应的查询语句。
1. select 商品表1.商品代号,单价,数量,产地from 商品表1,商品表2where 商品表1.商品代号=商品表2.商品代号2. select *from 商品表1where 数量 between 10 and 20 (或w here 数量>=10 and 数量<=20) 3.select 分类名,avg(数量) as 平均数量from 商品表1group by 分类名4.select *from 商品表1where 单价>=2000 or 数量>=155.select *from 商品表1where 单价>all(select avg(单价)from 商品表1)6.select distinct 分类名from 商品表1group by 分类名 havingcount(*)>1 7. select *,单价*数量 as总价值from 商品表1order by 总价值 desc8. select distinct 学生.*from 学生,选课where 学生.学生号=选课.学生号 and 课程号=any(select 课程号from 学生,选课where 学生.学生号=选课.学生号 and 姓名=@m1)。
第4章 查 询
询
学习目标
1.了解查询的作用及查询的分类。 2.掌握各类查询的创建方法。
3.掌握查询编辑方法。
4.掌握高级查询的配置。
4.1 认识查询
4.1.1
1) 修改表中数据。 2) 选择字段或记录。 3) 完成计算。 4) 创建新表。 5) 排序记录。
查询的功能
4.1.2
查询的类型
1.选择查询 2.操作查询 1) 删除查询是从一个或多个表中删除一组记录。 2)追加查询是将新增的记录添加到现存的一个或多个表或查询的末 尾。 3) 更新查询是根据指定的条件更改一个或多个表中记录的查询。 4) 生成表查询就是从一个或多个表或查询中的数据集合中创建表的 查询。 3.交叉表查询 4.参数查询 5. SQL查询
图4-28 “选择列标题”对话框
4.4 创建交叉表查询
5) 单击“下一步”按钮,弹出如图4-29所示“确定交叉点数字”对 话框,用以选择行、列
图4-29 “确定交叉点数字”对话框
4.4 创建交叉表查询
6) 交叉表向导的最后一个窗口要求命名交叉表,默认名是“订单明 细表—交叉表”;单击“完成”按钮,交叉表在生成后将自动打开, 如图4-30所示。
图4-32 创建交叉表查询
4.4 创建交叉表查询
4) 在“交叉表”行,分别设置“客户标识”字段为“行标题”, “产品标识”字段为“列
图4-33 设置交叉表行列标题及计算方式
4.4 创建交叉表查询
5) 以“客户订购产品数量查询”为名保存所创建的交叉表查询,然 后单击工具栏上的运行按钮,此时显示出如图4-34所示运行结果。
4.2.2 创建带条件的查询
图4-19 Like 准则查询结果
4.3 在查询中进行计算
《Access数据库实用教程》第四章
4.1 查询概述
• 查询是指在数据库中,按照特定的要求,在指 定的数据源中查找、提取指定的字段,并返回 一个新的数据集合,即查询结果。查询是一个 动态的逻辑表,数据源中的数据发生变化时, 查询表中相应的数据也会随之改变。查询的数 据源既可以是一个表,也可以是多个相关的表, 还可以是其他查询对象。
• 同样有3种方法删除查询中不需要的字段,下面以在 “学生档案查询”中删除前面添加的“政治面貌”字 段为例介绍操作步骤。 • 1)使用键盘 • (1)打开“学生档案查询”的设计视图。 • (2)将鼠标移至待删除的“政治面貌”字段上方, 当鼠标变为实心向下箭头时单击鼠标,如图4-22所示, 选中“政治面貌”字段列,按“Delete”键。
• (3)此时“学生档案查询”以设计视图打开,单击 “查询”→“显示表”选项,或单击工具栏上的“显 示表”按钮,也可以在窗口空白处右击,在弹出的快 捷菜单中单击“显示表”选项,如图4-14所示。
• (4)在弹出“显示表”对话框中单击“两者都 有”,在“两者都有”选项卡下显示了所有的 表和查询。 • 选择需要的表/查询,然后单击“添加”按钮, 重复上述操作,依次添加需要的表/查询。 • 此处添加“学生信息查询”查询,然后关闭 “显示表”对话框,此时“学生信息查询”查 询在“学生档案查询”设计视图中显示。
4.1.1 查询的视图
• 查询对象的视图形式有5种:数据表视图、设计视图、 SQL视图、数据透视表视图和数据透视图视图,其中 设计视图是经常使用到的。 • 查询的设计视图分为上下两部分,如图4-1所示。
• (1)字段:查询结果中所显示的字段。 • (2)表:查询的数据源。 • (3)排序:确定查询结果中的字段的排序方式,有升 序和降序两种方式可供选择。 • (4)显示:选择是否在查询结果中显示字段,当对应 字段的复选框被选中时,表示该字段在查询结果中显 示,否则不显示。 • (5)准则:即查询条件,同一行中的多个准则之间是 逻辑“与”的关系。 • (6)或:也是查询条件,表示多个条件之间是逻辑 “或”的关系。
数据库课件 第四章 结构化查询语言
4.2.2 基本表的修改
【例4.4】向抢修工程计划表salvaging增加‚工程项目负 责人‛列,数据类型为字符型。
注意:不论基本表中原来是否已有数据,新增加的列一律为空值。
4.3 数据查询
执行过程:
(1)读取FROM子句中基本表、视图的数据,执行笛卡 儿积操作;
(2)选取满足WHERE子句中给出的条件表达式的元组; (3)按GROUP子句中指定列的值分组,同时提取满足 HAVING子句中组条件表达式的那些组;
(4)按SELECT子句中给出的列名或列表达式求值输出;
(5)ORDER子句对输出的目标表进行排序,可选择升序 或降序.
• 结果集
– 查询操作的对象是关系,结果还是一个关系, 是一个结果集,而且是一个动态数据集。
4.3 数据查询
我们以电力抢修工程数据库 为例说明SELECT语 句的各种用法.
(a) stock表
4.3 数据查询
(b) salvaging表
4.3 数据Βιβλιοθήκη 询(c) out_stock表
4.3.1 单表查询
4.2.1 基本表的定义
(3)配电物资领料出库表: out_stock(prj_num, mat_num, amount, get_date, department) 主码为(prj_num, mat_num) 各属性含义如下: 工程项目编号(prj_num) 物资编号(mat_num) 领取数量(amount) 领料日期(get_date) 领料部门(department)
4.2.1 基本表的定义
《Access2016数据库教程》第4章查询
4.5 设置查询的计算
【例4-14】 统计每一个学生已修的学分数。要求在查询结果中 显出“学号”、“姓名”和“学分”字段。 分析:
只有成绩>=60分,才能计算该门课程的学分。
分组
计算 条件
4.5 设置查询的计算
4.5.2 自定义计算 当需要统计的字段未出现在表中,或者用于计算 的数据来源于多个字段时,应在设计网格中添加 一个计算字段。
4.1查询概述
4.1.1查询的类型
SQL 查询
操作 查询
选择 查询
交叉表 查询
参数 查询的创建方法
1.查询向导
优点:简单快捷
简单查询向导
缺点:创建简单的查询
交叉表查询向导
查找重复项查询向导
查找不匹配项查询向导 优点:创建复杂的查询
2.查询设计
缺点:创建过程较复杂
Left(字符串表达式, 数值表达式)
返回从字符串左侧 算起的指定数量的 字符
Left([ 学 号 ], 4)="1201"
学号前4位字符为 “1201”
Right( 字 符 数值表达式)
串表
达式
,返算回起从的字指符定串数右量侧的 字符
Right([ 姓 名],1)="辉"
姓名最后一个字为 “辉”
Mid( 字 符 串 表 达 式 , 开始字符位置,数值表 达式)
涉及到2个表
4.4 设置查询条件
4.4.1 表达式与表达式生成器
对于比较复杂的表达式,可在表达式生成器中构造复杂的表 达式。
【例4-5】在“学生成绩管理”数据库中,查询2002年出生 的学生记录。使用表达式生成器构造该查询条件。
在输入表达式时,像“.”、“=”、“>”、“<”、 “(”、“)”、“[”、“]”、“””、“%”、“#”、 “*”、“?”、“!”等所有字符必须是在英文输入法 状态下输入
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
28
图4.13
29
利用设计视图创建选择查询的具体操作步骤:
(1) 在数据库窗口中,单击“查询”选项卡,然后单击 “新建”按钮,在出现的“新建查询”对话框中选 择“设计视图”并单击“确定”按钮,或者直接在 “查询”选项卡中双击“在设计视图中创建查询” 选项。此时 Access 在打开“查询 1 :选择查询”设计 视图的同时,打开如图4.14所示的“显示表”对话框。 在该对话框中列出了当前数据库中已有的表和查询。 用户可以在相应的选项卡中选择所需的表或查询, 然后单击“添加”按钮将选择的表或查询添加到查 询设计窗口中。这里我们依次添加三个表:“供应 商”、“产品”和“类别”。
下面以“罗斯文商贸”数据库为例,来说明创建选择 查询的方法。假定要创建一个“产品情况”查询,其 中包含以下字段:产品名称、类别、单价和库存量。 具体操作步骤如下:
(1) 在“查询”选项卡中,单击“新建”按钮。
14
(2) 在出现的“新建查询”对话框中单击“简单查询向 导”选项,如图4.4所示,然后单击“确定”按钮。 (3) 在随后出现的对话框(如图4.5所示)中选择查询中 要使用的字段:在“表 / 查询”框中选择要作为查询 数据来源的表或查询名;在“可用字段”中双击要用 的字段名,双击后字段将会添加到“选定的字段”框 中。或者也可以单击“可用字段”中的字段名,然后 单击“”按钮。如果发现“选定的字段”框中的字段 选错了,可在“选定的字段”框中双击要删除的字段 名,将它移动到“可用字段”框中,或者也可以单击 “选定的字段”框中的字段名,然后单击“”按钮。
37
图4.17
38
图4.18
39
单击“是”按钮,在出现的“另存为”对话框中输入 查询的名称,这里我们输入“北京供应商”,查询
参数查询在执行时能够显示对话框以提示用户输入信 息。 参数查询可以很方便地作为窗体、报表以及数据访问 页的基础。例如,可以在参数查询的基础上建立一个 月销售量报表,在打印报表时系统会询问用户所需报 表的月份,用户在对话框中输入相应的月份后, Access便会打印对应的报表。
选择查询是最常用的一种查询类型,它从一个或 多个表中查询数据,查询的结果是一组数据记录, 称为“动态集”。
2. 参数查询
如果用户经常运行某个查询,但每次都要改变其 中的查询准则,此时就可利用参数查询来解决这个 问题。
4
参数查询是在执行时能够显示对话框来提示用户输 入查询准则,系统以该准则作为查询条件,将查询 结果以指定的形式显示出来。
查
4.1 查询视图
询
4.2 查询的创建
4.3 查询的修改
4.4 查询的操作
1
查
询
查询是从Access的数据表中检索数据的最主要 方法。查询就是收集一个或几个表中用户认 为有用的字段的工具。
将查询到的数据组成一个集合(这个集合中 的字段可能来自同一个表,也可能来自多个 不同的表),这个集合就称为查询。
(4) 单击“下一步”按钮,在随后出现的对话框(如图 4.6所示)
询还是汇总查询中,系统要求确定采用明细查询还 是汇总查询。明细查询就是普通的选择查询,汇总 查询是在普通的选择查询基础上对一些字段进行统 计处理。在这里,我们选择“明细”单选按钮。
18
图4.6
19
如果在前面选择的字段中没有进行汇总的数字字段, 则不会出现这一步,而是直接出现要求输入查询名的 对话框。
入想要查询记录的订购起始日期,然后单击“确定”
要查询记录的订购终止日期。即可显示在两个日期
之间的订购信息。
41
图4.19
42
图4.20
43
4.3
4.3.1 添加字段
查询的修改
可以通过设计窗口向已有的查询中添加字段。具体 操作步骤如下: (1) 在“查询”选项卡中选择查询“产品情况”,然 后单击“设计”按钮,打开该查询的设计视图。
20
图4.8
21
上面建立的“产品情况”查询中,数据是横向排列 的,如果想要看每类产品的库存量就很不方便,使 用交叉表查询可以清晰而紧凑地表示出这样的信息。 具体步骤:
(1) 在“查询”选项卡中,单击“新建”按钮。 (2) 在出现的“新建查询”对话框中选择“交叉表查询 向导”并单击“确定”按钮。
7
图4.1
8
在数据表视图中,查询窗口与数据表视图中的表窗口
相似。但查询的好处是,即使其中的数据来自不同的
数据表,也可以像在一个表中一样对其中的字段进行 与在数据表视图中的表窗口中输入新值一样。
操作。另外,在查询中可以更改原始数据表中的数据,
4.1.2 设计视图
查询的设计视图是一个设计查询的窗口,包含了创建
32
图4.15
33
(3) 明确了查询使用的数据源,就应告诉Access在查询
结果中应该包含哪些字段,这里我们依次选择“供
应 商 ” 表 中 的 “ 公 司 名 称 ” 和 “ 城 市 ” 字 段 以及
“产品”表中的“产品名称”字段和“类别”表中 的“类别名称”字段。
(4) 单击“查询”菜单中的“运行”菜单项,可以看到
查询所需要的各个组件。
9
只需在各个组件中设置一定的内容,就可以创建一
个查询。以设计视图方式打开查询,通常是要改变
查询以这种方式打开后,其画面如图4.2所示。
查询的定义、结构或设计。如前面的“联系人列表” 可以看到设计视图中的查询分为如下3个部分: 标题及查询类型:在标题栏处显示查询的标题和查 询类型。
图4.10
25
图4.11
26
图4.12
27
(7) 在随后出现的对话框中输入交叉表的名字“产品情 况_交叉表”。然后单击“完成”按钮。
可见,在这个查询表中,可以非常清楚地知道每种 类型产品的库存总量以及同类型中各个具有不同单 价的产品的库存量。
4.2.3 利用设计视图创建查询
利用向导只能创建比较简单的查询,该查询的功能 较少,而利用设计视图则可以建立功能强大的查询。
更新查询:改变已有表中满足查询条件的记录
生成表查询:使用从已有表中提取的数据创建一个
新表
6
4.1
4.1.1 数据表视图
查询视图
数据表视图主要用于在行和列格式下显示表、 查询、窗体中的数据。 一般用户要通过查询进行操作,如查看信息、 更改数据等,就要以这种方式打开查询。 单击“查询”选项卡中的查询名,然后单击 “打开”按钮,或者用右键单击查询名,从出 现的快捷菜单中选择“打开”命令,
2
在Access中,一旦生成了一个查询,就可以把 它作为生成窗体、报表,甚至是生成另一个查 询的基础。
查询的结果似乎是建立了一个新表。但是查询 的记录集实际上并不存在。每次运行查询时, Access便从查询源表里的数据中创建记录集, 使查询中的数据能够与数据表中的数据保持同 步。
3
在Access中,查询可以分为选择查询、参数查询、 交叉表查询和操作查询四类。简要说明如下: 1. 选择查询
(5) 单击“下一步”按钮。在随后出现的对话框中要求 为查询指定标题输入查询名。 (6) 单击“完成”按钮完成该查询的创建过程。
4.2.2 利用交叉表查询向导创建交叉表查询
交叉表查询可以将数据分为两组显示,一组显示在左 边,一组显示在上面,左边和上面的数据在表中的交 叉点可以进行求和、求平均值、计数或其他计算。
40
创建参数查询的具体操作步骤如下:
(1) 在查询的设计视图中,打开需要设计参数的查询。
(2) 在要作为参数使用的字段下的“准则”单元格中, (3) 单击“查询”菜单中的“运行”菜单项,出现第一
输入相应的提示,提示要用方括号“[]”括起来。 个“输入参数值”对话框,如图4.20所示。在这里输
按钮,出现第二个“输入参数值”对话框,输入想
3. 交叉表查询
交叉表查询显示来源于表中某个字段的总计值,如 合计、计算以及求平均值等,并将它们分组,一组 列在数据表的左侧,另一组列在数据表的上部。
4. 操作查询
操作查询的主要功能是对大量的数据进行更新。
5
操作查询可以进一步分为四种类型:
追加查询:向已有表中添加数据
删除查询:删除满足查询条件的记录
生成的查询结果如图4.16所示。
由于还没有在查询设计网格中指定排序和选择准则,
因此该查询记录中显示了表中所有的记录。为了按
顺序显示记录,可以指定按某个字段进行排序;为
了缩小查询的范围,可以指定相关的准则。
34
图4.16
35
(5) 在查询设计窗口中,选择要对记录进行排序的字段。 例如,如果要按“公司名称”进行排序,则可以将插 入点移到“公司名称”列的“排序”行,单击该行右 边的向下箭头,在出现的下拉列表框中选择排序顺序: 升序或降序。通常,如果一个字段内容是文字,则排 序将以字母顺序排列;如果一个字段为数字,则排序 以数字的大小顺序排列。这里我们选择“升序”。如 果要对多个列进行排序,对其他要排序的列重复该步 骤即可。
SQL是“结构化查询语言”的缩写。当用户在设计 视图中创建查询时, Access 在 SQL 视图中自动创建 与查询对应的SQL语句。 在 SQL 视图中,用户可以查看和改变 SQL 语句,从 而改变查询。
12
图4.3
13
4.2
查询的创建
4.2.1 利用简单查询向导创建选择查询
利用简单查询向导创建选择查询,能够在一个或多个 表或查询中按指定的字段检索数据。另外,通过向导 还可以对记录组或全部记录进行总计、计数以及求平 均值的运算,并且可以计算字段中的最大值和最小值。