第四章-SQL语言

合集下载

第4章_结构化查询语言SQL-6学时

第4章_结构化查询语言SQL-6学时
例2:检索出成绩大于80分的学号、姓名、性别和成绩 。
说明1:
SELECT S••F联Tro接Um条D短件E语:N:两T后.个学面表接号进多行,姓个联表名接时查,,性询两别的个前,表成提之是绩间一用;定逗有号“隔相开同。” FROM STUDENT,S的C字O段R名E。; WHERE 成•联绩接>的8方0法A:如N:D表“名Ss1Tt.u字Ud段eDn名tE.学=N表号T名=.学s2c.字o号r段e.=学名S号C”ORE.学号
无条件查询小结:
6)结果排序 【例】查询显示COURSE表中的所有信息,并按学分 升序排序。
SELECT * FROM COURSE ORDER BY 学分
2、单表条件查询----SELECT … FROM …WHERE …
【格式】SELECT [ALL | DISTINCT] <字段列表> FROM <表> [WHERE <条件表达式> ]
1975~1979,IBM San Jose Research Lab的关系数据库管 理系统原型System R实施了这种语言
SQL-86是第一个SQL标准
(ANSI)
SQL-89、SQL-92(SQL2)、SQL-99(SQL3) (ANSI)
●现状:大部分DBMS产品都支持SQL,成为操作数据库的标 准语言
第四章 结构化查询语言SQL
本章主要内容
4.1 数据查询 4.2 数据操作 4.3 数据定义 本章作业
SQL语言的基本概述
●SQL:Structured Query Language 缩写
结构化查询语言,目前关系型数据库的通用语言。
●SQL的发展
1974年,由Boyce和Chamberlin提出

关系数据库标准语言SQ

关系数据库标准语言SQ

WHERE (职工.仓库号=仓库.仓库号) AND (工资>1230)
例4.7 找出工作在面积大于400的仓库的职工 号以及这些职工工作所在的城市. 分析 条件:面积>400 联接条件:(职工.仓库号=仓库.仓库号) 查询涉及表:仓库,职工 查询结果字段:职工号,城市 语句:SELE 职工号,城市 FROM 仓库,职工 WHERE;

(面积>400) AND (职工.仓库号=仓库.仓库号)
3、嵌套查询


外查询的条件来自内查询的结果
在SQL语句中,一个SELECT-FROM-WHERE语句称 为一个查询块。将一个查询块嵌套在另一个查询块的 WHERE子句或HAVING短语的条件中的返回多个值 NOT IN :属于关系 联接条件:公共字段名 IN SELE 公共字段名 (相当于联接中条件:表1.公共字段名=表2.公共字 段名)
6、简单的计算查询
SQL不仅具有一般的检索能力,而且还有计 算方式的检索 用于计算检索的函数: COUNT()--- ------计数 SUM()--------------求和 AVG()---------求平均值 MAX()---------求最大值 MIN()----------求最小值
查询产生新字段
例4.10 找出和职工E4工资相同的所有职工. SELE 职工号 FROM 职工 WHERE 工资 =(SELE 工资 FROM 职工 WHERE 职工号 =“E4”) 注意:= 与 IN 之间的关系,等号可以用IN 来 替换,而IN不能用=替换 =:返回的值是一个具体的值 IN:返回的是多个值
4、几个特殊运算符
第四章 关系数据库标准语言SQL
罗盛
一、SQL概述

vf第四章关系数据库标准语言SQL

vf第四章关系数据库标准语言SQL

结果中有重复值,如果要 去掉重复值只需要指定DISTINCT短语:
SELECT DISTINCT 工资 FROM 职工 DISTINCT 短语的作用是去掉查询结果中 的重复值。
例4.2检索仓库关系中的所有元组。
sele * from 仓库
*代表要显示的所有字段
• HAVING短语必须跟随GROUP BY使用,它 用来限定分组必须满足的条件;
• ORDER BY短语用来对查询的结果进行排序。
4.2.1简单查询
基于单个表的查询,可以有简单的查询条件。这 样的查询由SELECT和FROM短语构成无条件查询, 或由SELECT 、 from 、 WHERE短语组成条件查询。 例4.1从职工表中检索所有工资值。 SELECT 工资 FROM 职工 SELECT 职工号,工资 FROM 职工
例4.7 找出工作在面积大于400的仓库的职工 号以及这些职工工作所在的城市。
SELE 职工号,城市 FROM 仓库,职工
WHERE(面积>400)AND(职工.仓库号= 仓库.仓库号)
4.2.3嵌套查询
基于多个关系的查询,这类查询所要求的结 果出自一个关系,但相关的条件却涉及多个关系。 例4.8哪些城市至少有一个仓库的职工工资为 1250元?
• 自然联接:当连接属性具有相同属性名,连接 条件取相等条件时,去掉得复属性的等值连接 称为自然连接。
SQL的核心是查询。SQL的查询命令也 称作SELECT命令,它的基本形式由 SELECT-FROM-WHERE查询块组成,多 个查询块可以嵌套执行。VFP的SQL SELECT命令的语法格式如下:(见书p128)
例4.3检索工资多于1230元的职工号。 Sele 职工号 from 职工 where 工资>1230

数据库第4章 SQL语言基础及数据定义功能

数据库第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章 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 空间查询语言

4 空间查询语言

SQL:数据查询语言DQL
总结
SELECT语句充分体现了SQL语言的特征 非过程化:仅需要指明查询结果所符合的条件,而不需要 指定如何得到查询结果 面向集合:可以对整个元组集合进行操作,而不需要枚举 和以某种次序遍历集合中的每个元组
SQL:数据操纵语言DML
SQL语言中数据操纵语句包括
C c1 c2
a2
a1
b2
b3
c1
c2
关系代数
交(Intersection) 既属于R又属于S的元组组成的集合。 R∩S SELECT A,B,C FROM R WHERE IN ( SELECT A,B,C FROM S);
A a1 a2 B b2 b2 C c2 c1
关系代数
差(Difference)
order by <列名> [asc|desc]{,<列名> [asc|desc]}
输出结果关系按照order by子句中指定的输出属性列来排序,可以依次指定多个排 序属性列
条件表达式构成
包含各属性列和运算函数,以及用于各种数据类型值的比较符 用逻辑联结词(NOT、AND、OR)联结表达式项,形成更加复杂的复合条件
SQL:数据定义语言DDL
操作方式 操作对象 创建
基本表Table CREATE TABLE CREATE VIEW CREATE INDEX
删除
DROP TABLE DROP VIEW DROP INDEX
修改
ALTER TABLE
视图View
索引Index
SQL:数据定义语言DDL
SQL中,任何时候都可以执行一个数据定义语句,随 时修改数据库结构。数据库定义随时修改,不必一开 始就完全合理。

关系数据库查询语言SQL

关系数据库查询语言SQL

关系数据库查询语⾔SQL授课⽅式:以下所有的例⼦都在sql server 中进⾏现场调试其执⾏结果,或者让学⽣上讲台练习,让学⽣体会其具体的含义第四章关系数据库查询语⾔SQL(8学时)第1节关系数据库标准语⾔SQL ——查询部分⼀、SQL概述1.SQL标准SQL(Structured Query Language):结构化数据库查询语⾔。

SQL作为⼀个ANSI标准,现在最新的标准是SQL99!是介于关系代数和关系演算之间的结构化查询语⾔,功能包括数据查询(Data Query )、数据操纵(Data Manipulation)、数据定义(Data Definition)、数据控制(Data Control)2.SQL的特点1)综合统⼀SQL语⾔集数据定义语⾔DDL、数据操纵语⾔DML、数据控制语⾔DCL功能于⼀体,语⾔风格统⼀。

可独⽴完成数据库⽣命周期中的全部活动,包括:定义关系模式、建⽴数据库、插⼊数据、查询、更新、维护、数据库重构、数据库安全性控制等⼀系列操作要求,为数据库应⽤系统开发提供了良好的环境。

由于关系模型中实体间连续军⽤关系表⽰,这种数据结构单⼀性带来了数据操作的统⼀,查找、插⼊、删除、修改等每⼀种操作只需要⼀种操作符,从⽽克服了⾮关系系统由于信息表⽰⽅式多样性带来的操作复杂性。

2)⾼度⾮过程化SQL语⾔只要提出“做什么”,⽆须指明“怎么做”!!⽤户⽆须了解存取路径,存取路径的选择及SQL语句的操作过程由系统⾃动完成。

减轻了⽤户的负担,提⾼了数据独⽴性。

3)⾯向集合的操作⽅式Sql 语⾔采⽤集合操作⽅式,不仅操作对象、查询结果可以是元组集合,⽽且⼀次插⼊、删除、更新操作的对象可是元组的集合。

4)以同⼀种语法结构提供两种使⽤⽅式既是⾃含式语⾔,⼜是嵌⼊式语⾔。

⾃含式语⾔:能独⽴的⽤于联机交互的使⽤⽅式,⽤户可以在终端键盘上直接键⼊SQL 命令对数据库进⾏操作。

在SQL SERVER 2000种现场演⽰SQL语句的操作。

第4章结构化查询语言SQL

第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语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
行排序
以上短语是学习和理解SQL SELECT命令必须
掌握的,还有一些短语是VFP特有的。
4.2.1 简单查询
首先从几个简单的查询例子来说明
SELECT、FROM 和 WHERE短语的使用方法。
(以下例子均是基于档案表、选课表和课
程表)
档案表
学号
姓名
性别
专业
家庭住址
2004130101 李洪昆

财会
例4.4 检索出课程号为“1002”或“1004”, 并且成绩小于75分的学号和成绩。
SELECT 学号,成绩 FROM 选课表; WHERE 成绩<75 AND ; (课程号=’1002’ OR 课程号=’1004’)
结果是: 2004140101 50 2004150101 55
前面的几个例子在FROM之后只指定了一个关系,如 果有WHERE条件子句,系统首先根据指定的条件依次检 验关系中的每个记录,如果没有指定WHERE子句,则不 进行检验,然后选出满足条件的记录。
例4.13 求出来自“北京”的学生的总 成 绩。 SELECT SUM(成绩) FROM 选课表 ;
WHERE 学号 IN (SELECT 学号 ; FROM 档案表 WHERE ; 家庭住址=’北京’) 结果是:
295
上面的“WHERE 学号 IN”中的IN不能用 “=”代替,否则,屏幕上将出现“子查询 返
SQL已经成为关系数据库的标准语言
,所以关系数据库管理系统都支持SQL
,VFP也同样支持SQL。
4.1 SQL 概述 最早的SQL是1986年10月美国ANSI 公布的。随后ISO于1987年6月也正式 采纳它为国际标准,1989年又推出了 SQL98版,1992年又推出了SQL92新标 准版本。 SQL语言具有以下主要特点: (1)SQL是一种结构化的语言,它 包括数据定义、数据查询、数据操纵 和数据控制等方面的功能。 (2) SQL是一种非过程化的语言, 它不需要告诉计算机怎样做,只要用
例 4.10 按学分升序检索出选课表中的 所有信息。
SELECT * FROM 选课表 ORDER BY 成绩 结果是:
2004140101 1002 50
2004150101 1004 55 2004150101 1005 70 2004130101 1004 72 2004130101 1002 80 2004130102 1004 80 2004130102 1003 85 2004130101 1001 90 其中短语“ORDER BY 成绩”是按升序排列 ,默认情况下按升序排序,ASC可加也可不 加;如果按降序排序,ORDER BY子句后面 的字段名后必须加上DESC。
第五章
关系数据库标准语言SQL
SQL 概述 SQL 的查询功能 SQL 的操作功能 SQL 的定义功能
SQL是结构化查询语言 STRUCTURED QUERY LANGUAGE 的缩 写,可以说查询是SQL的最主要的组成 部分,但并不是它的全部, SQL还包 含数据定义、数据操纵和数据控制功 能等部分。
2004150101 1005 70
这里是对两列排序的例子,对多列同样可
以进行排序操作。
4.2.6 简单的计算查询 SQL 不但有查询功能,而且还有计算方 式的查询。用于计算查询的函数有: (1)COUNT---计数 (2)SUM---求和 (3)AVG---计算平均值 (4)MAX---求最大值 (5)MIN---求最小值 例4.12 求出学生来自多少个城市。 SELECT COUNT (DISTINCT 家庭住址); FROM 档案表 结果是: 3
选课表
课程号 1001 1002 1003 1003 1004 1002 1004 1005
课程表
课程号
课程名
学时数
1001
高等数学
80
1002
计算机基础
50
1003
数据库应用
70
1004
会计学
100
1005
经济学
100
成绩 90 80 72 85 80 50 55 70
学分 3 2
2.5 4 4
开课学期 1 1 2 3 4
查询的结果出自一个关系,但相关的条件 却涉及多个关系。
例4.7检索出成绩大于75分的学生的姓名。 SELECT 姓名 FROM 档案表 WHERE ; 学号 IN (SELECT 学号 FROM ; 选课表 WHERE 成绩>80)
结果是: 李洪昆 王倩
可以看到,这个命令中有两个SELECT-FROM-WHERE 查询 语句,即内外层查询块。这里的IN相当于集合运算符 ∈(属于)。
例4.9命令还可以写成下面的语句:
SELECT * FROM 选课表 WHERE ; (成绩 >= 80)AND (成绩 <=100)
( LIKE例题)
从课程表中检索出课程名中带有“学”字

课程号和课程名。
SELECT 课程号,课程名 FROM 课程表;
WHERE 课程名 LIKE “%学”
结果是:
北京
2004130102 王倩

财会
昆明
2004140101 李义

金融
昆明
2004140102 吴文英

金融
.null.
2004150101 刘留

营销
北京
2004150102 赵西

营销
西安
学号 2004130101 2004130101 2004130101 2004130102 2004130102 2004140101 2004150101 2004150101
1001
高等数学
1004 会计学
1005 经济学
LIKE 是字符串匹配运算符,通配符“%” 表示0个或多个字符,另外通配符“_”(下
4.2.5 排序 使用SQL SELECT 可以将查询结果排序 ,排序子句是 ORDER BY 。具体格式是: ORDER BY 字段名 [ASC|DESC][,字段名 [ASC|DESC]....] 其中: ASC表示升序,DESC表示降序
4.2.2 简单的联接查询
联接是关系的基本操作之一,联接查询
是一种基于多个关系的查询 。
例4.5 检索出成绩大于80分的学生的姓
名和专业。
SELECT 姓名,专业 FROM ;
档案表,选课表 WHERE (成绩>80) ;
AND (档案表.学号=选课表.学号)
结果是:
李洪昆 财会
王倩
财会
这里所要求检索的内容分别来自于选课表和档案表两个表,其 中的“档案表.学号=选课表.学号”是联接条件。
例4.14 检索学时数最多的课程名和学分。
SELECT 课程名,MAX(学时数) FROM ;
课程表ห้องสมุดไป่ตู้
结果是:
经济学
100
课程表中有两条满足条件的记录,但只显示满足条件
的第一条。
例4.15 检索出除北京之外的其他学生的平
均分。
SELECT AVG(成绩) FROM 选课表 ;
WHERE 学号 NOT IN;
(SELECT 学号 FROM 档案表 WHERE ;
家庭住址=’北京’)
结果是:
71.75
4.2.7 分组与计算查询
分组与计算查询的 GROUP BY 短语格
式如下:
GROUP BY 字段名1 [, 字段名2,....]
[HAVING <条件表达式>]
例4.16 求出每门课程的平均分。
SELECT 课程号,AVG(成绩) FROM ;
SELECT * FROM 选课表 结果是:
2004130101 1001 90 2004130101 1002 80 2004130101 1003 72 2004130102 1003 85 2004130102 1004 80 2004140101 1002 65 2004150101 1004 55
命令中的“*”是多字节通配符,表示
所有字段,这个命令相当于: SELECT 学号,课程号,成绩 FROM 选课表 在数据库中 * 代表多字节通配符,?代
表单字节通配符。 例4.3 检索出成绩大于80分的学号和成绩。 SELECT 学号,成绩 FROM 选课表;
WHERE 成绩>80 结果是:
2004130101 90 2004130102 85 这里的WHERE短语是查询条件,查询条 件条件可以是任意复杂的逻辑表达式。
例 4.8 检索出成绩小于60分的学生的所有 信息 SELECT * FROM 档案表 WHERE 学号 ;
NOT IN (SELECT 学号 FROM 选课表 ; WHERE 成绩>60) 结果是: 2004140101 李义 男 金融 昆明 2004140102 吴文英 女 金融 2004150102 赵西 男 营销 西安
例4.1 从档案表中查出专业名称。
SELECT 专业 FROM 档案表
结果是:
财会
可以看到查询结果中
财会
有重复值,如果要去
金融
掉重复值,需要指定
金融
DISTINCT 短语:
营销
营销
SELECT DISTINCT 专业 FROM 档案表 结果是:
财会 金融 营销 例 4.2 从选课表中查出所有记录。
例4.11先按课程号升序排列,再按学分
降序排列检索出选课表中的所有信息。
SELECT * FROM 选课表 ORDER BY ;
课程号,成绩 DESC
结果是:
2004130101 1001 90
2004130101 1002 80
相关文档
最新文档