第4章结构化查询语言SQL20101
第四章结构化查询语言SQL
第四章 结构化查询语言——SQL
2、修改表结构
语句格式:
ALTER TABLE [<数据库名>. <所有者名>.]<基 本表名>{ADD<列定义>,…| ADD<表级完整 性约束>,…|DROP COLUMN<列名 >,…|DROP<约束名>,… }
语句说明:
❖由关键字可大体了解语句的含义; ❖用户给定的标识符由汉字、英文字母、
数字等组成的一串字符;
❖语句中英文字母不区分大小写 ❖每条SQL语句都可单独作为命令来使用,
又称SQL命令。 ❖该语句执行后,可用“USE<数据库名>”
语句把该数据库置为当前数据库。进行 操作时,在不指定的情况下默认是对当 前数据库的。
一般比较式:比较两个同类型的表达式的值, 属于单值与单值的比较;
第四章 结构化查询语言——SQL
专门比较式:又称判断式,单值与集合(多值)、 单值与一个取值范围的比较及对一个集合是否 为空的判断。常用的如下六种格式:
1.<列名><比较符>ALL<子查询> 当子查询(一条完整的SELECT语句)结果中的
3、删除记录: 语句格式: DELETE[FROM][<数据库名>. <所有者名
>.]<目的表名> [FROM=<源表名 >,…][WHERE<逻辑表达式>] 功能: 删除一个表中满足条件的所有行。 语句说明:P81
第四章 结构化查询语言——SQL
四、视图的建立、修改和删除
第4章结构化查询语言SQL
二、SQL数据库的体系结构
SQL支持数据库的三级模式结构,如图4―1所示。从图中可以看出,模式与基 本表相对应,外模式与视图相对应,内模式对应于存储文件。基本表和视图都 是关系。
1.基本表(Base Table) 基本表是模式的基本内容。每个基本表都是一个实际存在的关系。
SQ L用 户
SQ L用 户
基本表 1
视图 1 基本表 2
视图 2
外 模式
基本表 3
模式
存 储文 件1
存 储文 件2
存 储文 件3 内 模式
图4―1 SQL支持的数据库模式
二、SQL数据库的体系结构
2.视图(View) 视图是外模式的基本单位,用户通过视图使用数据库中基于基本表的数据(基本表也可作
为外模式使用)。 视图是虚表,实际并不存在,只有定义存放在数据字典中。
学会关系数据库规范设计的方法和步骤;
了解数据库系统的实现技术;
具备使用关系数据库软件开发数据库应用
系统的能力 。
《数据库原理一》课堂教学+研讨(30学时)内容及安排:
第四章 结构化查询语言SQL (12学时)
第一章 数据库发展史
(3学时)
第二章 数据库系统结构 (3学时)
第六章 实体联系模型
2. 确定范围:列名 [NOT] BETWEEN <下限> AND <上限>
例: 查询年龄在20到25之间的学生姓名
3. 确定集合:列名 [NOT] IN(<值序列>
例: 查询选择了c1、c4、c6课号的学生学号和成绩
4. 涉及空值的查询:列名 IS [NOT] NULL
例:列出所有成绩为空的学生学号
SELECT语句中:
第4章 结构化查询语言SQL
4.2.2 定义视图
1.视图的建立 (1)从单个表派生的视图 (2)从多个表派生的视图 2.视图的删除 视图由于是从表中派生出来的,所以不存在修改结 构的问题,但是视图可以删除。
第4章 结构化查询语言SQL
SQL查询功能 4.3 SQL查询功能
SQL查询命令 4.3.1 SQL查询命令
标准SQL基本查询命令: 命令格式:
第4章 结构化查询语言SQL
4.3.4 嵌套查询
嵌套查询是指在SELECT-FROM-WHERE查询模块内部再 嵌入另一个查询模块,称之为子查询。嵌套查询只能对 外层查询排序,不能对内层查询排序。集合成员资格的 比较操作的形式如下:
(集合1)IN(集合2):用于指出包含在子查询模块的查询结果中。 (集合1)NOT IN(集合2):用于指出不包含在子查询模块的查询结果 中。
第4章 结构化查询语言SQL
③VALUES(<表达式1>[,<表达式2>,...]): 指定新记录中字段的值。如果省略了字段名,那么 必须以表结构中字段的顺序指定字段值。 ④FROM ARRAY<数组名>: 将指定一维数组中的元素值插入到新记录中。 ⑤FROMMEMVAR: 将内存中与字段名相同的内存变量的值插入到新记 录的字段中。如果与字段同名的内存变量不存在,该字 段则保持为默认值或空。
4.4.3 修改
命令格式: UPDATE<表名> SET<字段名1>=<表达式1>[,<字段名2>=<表达式 2>...] WHERE<条件>
第4章 结构化查询语言SQL
功能: 用指定的表达式值,更新表中相应记录的字段值。 说明: ①SET<字段名1>=<表达式1>[,<字段名2>=<表达 式2>...]: 指定要改写的字段名和相应的新值。 ②WHERE<条件>: 只有满足条件的记录中相应字段值才会被改写。可 以指定多个条件,各个条件之间用AND或OR连接。
第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语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
第4章 结构化查询语言SQL
课程号CNO 1 2 3 2 3
成绩GRADE 92 85 88 90 80
2013-5-16
12
SQL的数据定义(3)
课程号CNO 1 2 3 4 5 6 7 课程名CNAME 数据库 数学 信息系统 操作系统 数据结构 数据处理 C语言 表程表实例 先修课CPNO 5 1 6 7 6 学分CCREDIT 4 2 4 3 4 2 4
表
索引 视图
CREATE TABLE
CREATE INDEX CREATE VIEW
DROP TABLE
DROP INDEX DROP VIEW
ALTER TABLE
2013-5-16
11
SQL的数据定义(2)
例4.1 定义一个教务管理数据库JWGL,它包含3个表: 学生表:S(SNO,SNAME,SEX,AGE,SDEPT) 课程表:C(CNO,CNAME,CPNO,CCREDIT) 学生选课表:SC(SNO,CNO,GRADE)
2013-5-16
3
本章难点
(1)对SELECT查询语句的理解。
(2)对视图更新操作的限制。 (3)涉及游标的SQL DML的使用方式。
2013-5-16
4
本章概述
结构化查询语言SQL(Structured Query Language)是关系数据库 的标准语言,对关系模型的发展和商用DBMS的研制起着重要的作用。SQL语 言是介乎于关系代数和元组演算之间的一种语言。本章详细介绍SQL的核心 部分内容:数据定义、数据查询、数据更新和嵌入式SQL。
2013-5-16
17
定义、修改与删除基本表(3)
例4.2 建立一个“学生”表S。 CREATE TABLE S (SNO CHAR(9) PRIMARY KEY, /* 列级完整性约束条件,SNO
第4章 结构化查询语言---SQL
3)外码约束。表示为:FOREIGN KEY(<列名 >,...) REFERENCES<父表名>(<列名>,...)。它注 明一个或同时多个列为外码,并给出对应的父表及 父表中被参照的主码。如在一个选课表的定义中, 使用的表级完整性外码约束的定义为:foreign key (学生号) references 学生(学生号)。 (4)检查约束。表示为:CHECK(<逻辑表达式 >)。注明表中一个或一些列上的取值必须满足的约 束条件。如假定在职工表中采用的表级完整性检查 约束的定义为:check(工龄<年龄)。 表级完整性约束共有4种,列级完整性约束共有6种。 在表级完整性约束中缺少列级的默认值约束和空值/ 非空值约束,其他4个约束是共有的,包括主码约束、 外码约束、单值约束和检查约束。
命令格式举例: (1) create schema xuesh authorization xxk (2) create database 教学库 当执行了此create命令建立数据库后,此数据库将立即成为当前数 据库,若要改变另一个数据库为当前数据库,则可以使用“USE <数据库名>”命令;如使用“USE xuesh”命令后,xuesh数据 库就成为了当前数据库。 3.数据库的删除 删除数据库的命令格式如下: DROP {SCHEMA | DATABASE} <数据库名> 命令功能:删除掉由命令中<数据库名>所指定的一个数据库应 用系统。当然会同时把该库中已经存在的所有内容和信息一并删除 掉。 命令格式举例: drop database xuesh 该命令把刚建立的名称为xuesh的空数据库从数据库管理系统中 删除掉。
第四章 结构化查询语言SQL
CREATE TABLE 学生
(学号 C(12), 姓名 C(8), 性别 L, 出生年月 D, 评分 N(3, 0))
二、修改数据表
1. 添加字段
ALTER TABLE <表文件名> 命令 ADD <字段名> <字段类型>[(<字段长度>[,<小数位数>])]
功能 在表中添加新字段。
[e.g. 4-2] 在学生.dbf中,添加新字段备注 M。
求记录的个数 按列求值的个数 按列求和(用于数值列)
按列求平均值(用于数值列) 求一列中的最大值 求一列中的最小值
[e.g. 4-16]在选课.dbf中查询课程号为“C120”的记录,输出 课程号和选修该课程的人数。
SELECT 课程号, COUNT(*) AS 选修人数 FROM 选课 WHERE 课程号="C120"
五、查询排序 SQL使用ORDER BY子句对查询结果进行排序。
排序选项 ASC DESC
功能 升序排列(默认值) 降序排列
[e.g. 4-20]在选课.dbf中查询选修了课程“C130” 并且成绩 最高的3名学生的记录,输出学号和成绩。
SELECT TOP 3 学号, 成绩 FROM 选课 WHERE 课程号="C130" ORDER BY 成绩 DESC
4.确定集合 使用“IN”进行集合查询。 [e.g. 4-14] 在选课.dbf中查询选修课程“C120”或“C140”的 学生记录。 SELECT * FROM 选课 WHERE 课程号 IN ("C120", "C140") SELECT * FROM 选课 WHERE 课程号="C120" OR 课程号="C140"
《VisualFoxPro程序设计》第四章结构化查询语言SQL
其中各参数的说明如下:
• <表名1>:指定要修改的表的名称。
• [DROP <字段名>]:从表中删除指定字段。
• [SET CHECK <新有效性规则> [ERROR <出错信息>]]: 设置表的有效性规则,以及在不满足规则时的出错信息。
• [DROP CHECK]:删除表的有效性规则。
• [ADD PRIMARY KEY <字段表达式1> TAG <索引标识名1> [FOR <条件1>]]:为表建立主索引,一个表只能有一个 主索引。
SQL是Structured Query Language的缩写,属于一种一 体化语言,用于定义、查询、修改和控制关系型数据库 中的书籍。由于它功能强大,语言简洁,深受用户及计 算机工业界欢迎,被众多计算机公司和软件公司所采用。 经各公司的不断修改、扩充和完善,SQL语言最终发展成 为关系数据库的标准语言。1986年美国国家标准局ANSI 批准了SQL作为关系数据库语言的美国标准,1987年国际 标准化组织ISO也通过这一标准,1990言SQL 4.1 SQL语言概述 4.2 SQL的定义功能 4.3 SQL的查询功能 4.4 SQL的操作功能
提示:单击各个标题前的动画符号“ ” ,链接到相应的章节。
4.1 SQL语言概述
结构化查询语言(Structured Query Language)简称为 SQL,是关系数据库的标准语言。由于SQL语言具有功能 强大、使用方便灵活、语言简单易学等优点,目前几乎 所有的关系数据库管理系统软件都支持SQL。本章将详细 介绍Visual FoxPro中SQL语言各种主要功能的实现。
于100cm!”,班级 C(20))
第4章结构化查询语言—SQL.
第4章结构化查询语言—SQLSQL语言之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言。
SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,主要特点包括:1.综合统一2.高度非过程化3.面向集合的操作方式4.以同一种语法结构提供两种使用方式SQL语言既是自含式语言,又是嵌入式语言。
自含和嵌入的含义。
4.1数据库模式的建立和删除4.1.1建立数据库模式建立一个新数据库create database 数据库名4.1.2删除数据库模式撤消一个数据库drop database 数据库名4.2 表结构的建立、修改和删除4.1建立表结构SQL语言使用CREATE TABLE语句定义基本表,其一般格式如下:CREATE TABLE <表名> (<列名><数据类型>[列级完整性约束] [,<列名><数据类型>[列级完整性约束]]…[,<表级完整性约束>]);如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。
注意:定义表时每一个定义语句之间用逗号分隔,最后一条语句不用逗号。
每个SQL语句以分号结束。
例:CREATE TABLE C(cno char(4) not null,cname char(10) not null,PRIMARY KEY(CNO) );CREATE TABLE SC(SNO CHAR(4) NOT NULL,CNO CHAR(4) NOT NULL,GRADE SMALLINT,PRIMARY KEY(SNO,CNO) ,FOREIGN KEY(SNO) REFERENCES S(SNO) ,FOREIGN KEY(CNO) REFERENCES C(CNO) ) ;4.2.2修改表结构修改基本表SQL语言用ALTER TABLE语句修改基本表,其一般格式为:ALTER TABLE <表名>[ADD <新列名><数据类型>[完整性约束]][DROP <完整性约束名>][MODIFY <列名><数据类型>];ADD子句用于增加新列和新的完整性约束条件,DROP子句用于删除制定的完整性约束条件,MODIFY子句用于修改原有的列定义,包括修改列名和数据类型。
结构化查询语言---SQL.pptx
一、数据库模式的建立和删除
1、建立数据库模式
CREATE{SCHEMA|DATABASE}<数据库 名>[AUTHORIZATION<所有者名>]
Create database 教学库
2019-11-7
谢谢聆听
6
2、删除数据库模式 DROP {SCHEMA|DATABASE}<数据库名>
Drop database 教学库
谢谢聆听
10
create table 选课(
学生号 char(7)
课程号 char(4)
成绩 int check (成绩>=0 and 成绩<=100),
primary key (学生号,课程号),
foreign key (学生号) references 学生(学生号),
foreign key (课程号) references 课程(课程号)
2019-11-7
返回
谢谢聆听
7
二、表结构的建立、修改和删除
1、建立表结构
CCrreeaatteettaabbllee教学学生库.学生
格式:create table [<数据库名>.<所有者名>.]<基本表名>
(<列定义>,…[,<表级完整性约束>,…)
功能:在当前或给定的数据库中定义一个表的结构(关系模式)
第四章 结构化查询语言----SQL
• SQL是结构化查询语言(Structured Query Language)的缩写,它包括查询、 定义、操纵和控制四部分,是一种功能 齐全的数据库语言,已成为关系数据库语 言的国际标准。
SQL是一种高度非过程化的面向集合的语言
第四章 结构化查询语言SQL
例8:查询“学籍”表中含有的不同专业
条件查询:查询满足条件的记录
对比一下简单查询的语法格式,得出条件查 询的语法格式如下: select [distinct] 查询项[as 列标题],查询 项 [as 列标题]……from 表名 where 条件
例1:查询“学籍”表中入学成绩在400至 450之间的记录,只显示姓名、性别、出生 日期、专业、入学成绩字段内容 采用vF命令语句实现:
阅”表中的全部记录里的全部字段内容(两种方 式)
例5:使用select语句查询并显示“借阅”表里的借 书证号,借书日期,还书日期字段内容。
例6:查询“成绩表”中全部记录的姓名、语文、
数学、英语和3门课程的成绩之和,其中3门课程 的成绩之和用“总分”字段来存储
例7:查询“成绩表”中的记录个数,英语最高分, 数学最低分,语文成绩总和以及语文的平均分
例3:在上例中,只显示2007级的统计表
说明2:having条件选项表示在分组结果中, 对满足条件的组进行操作,having条件选 项总是跟在group by 之后,不能单独使用。
第四章 结构化查询语言 SQL
本 章 目录
1.掌握SELECT语句创建条件查询的方法 2.掌握SELECT语句创建排序查询的方法 3.掌握SELECT语句创建分组查询的方法 4.使用Sql 语句定义表、修改表结构 5.使用Sql 语句在表中插入、更新或删除 记录
• SQL的概念:(结构化查询语言)是用来对数据
课堂检测题:
例1:使用select语句只查询并显示“图书”表中的
全部记录里的“书名”字段内容
例2:使用select语句查询并显示“读者”表中的全
部记录里的“借书证号”,“姓名”,“职称”
第4章 结构化查询语言SQL(Structured Query Language).
学生
课程
学生号
姓名
性别 专业
0101001 王明 0102005 刘芹
0202003 张鲁 0303001 赵红 0304006 刘川 0501001 张江 0502003 沈艳
男 女
男 女 男 男 女
计算机 电子
电子 电气 通信 通信 电子
课程 课程名 号 C001 C++语言
课程 学分 4
C004 操作系统 3
格式五
• <列名> [NOT] in {(<常量表>) | (<子查询>)} • 当<列名>所指定的列的当前值包含在由<常量表> 所给定的值之内时,则此判断式为真,否则为假; 或<列名>所指定的列的当前值包含在子查询结果 之中时,判断式为真,否则为假。如用了NOT关 键字,则正好相反。 1、从教学库中查询出专业为计算机、电气和通信的 所有学生。
4.5 SQL查询
• 4.5.1 语句格式
Select [ALL|DISTINCT] <表达式1>[[AS]<列名1>][,| <表达式2>[[AS]<列名2> …
[ INTO ] from [where ..] [Group by..] [Having..] [Order by..]
•
4.5.2 Select 选项
从商品表1中查询出不同分类名的个数。
例4-8
从商品表1中查询出所有商品的最大数量、最小数量、平均数量及 数量总合。
例4-9
从商品表1中查询出分类名为“电视机”的商品的种数、最高价、 最低价及平均价。
例4-10
从商品表1中查询出所有商品的最高价值、最低价值及总价值。
第4章结构化查询语言SQL
第4章结构化查询语言SQLSQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。
它提供了一种简单而强大的方式来查询、插入、更新和删除数据库中的数据。
结构化查询语言SQL被广泛用于开发Web应用程序、管理企业数据库以及进行数据分析。
SQL的基本功能包括:1.数据查询:使用SELECT语句可以从数据库中检索数据。
SELECT语句可以指定要检索的列、要查询的表以及条件,并可以对检索结果进行排序和分组。
例如,可以使用以下SQL语句从"users"表中查询所有名字为"John"的用户:SELECT * FROM users WHERE name = 'John';2.数据插入:使用INSERT语句可以向数据库中插入新的数据。
INSERT语句可以指定要插入的表、要插入的列以及要插入的值。
例如,可以使用以下SQL语句将一个新的用户插入"users"表中:INSERT INTO users (name, age) VALUES ('John', 25);3.数据更新:使用UPDATE语句可以更新数据库中的现有数据。
UPDATE语句可以指定要更新的表、要更新的列以及新的值,还可以使用条件来确定要更新的数据行。
例如,可以使用以下SQL语句将"users"表中名字为"John"的用户的年龄更新为30:UPDATE users SET age = 30 WHERE name = 'John';4.数据删除:使用DELETE语句可以从数据库中删除数据。
DELETE语句可以指定要删除的表以及要删除的数据行的条件。
例如,可以使用以下SQL语句删除"users"表中名字为"John"的用户:DELETE FROM users WHERE name = 'John';SQL还提供了其他一些高级功能,例如聚合函数、连接查询、子查询、排序和分组等。
第四部分结构化查询语言SQL数据定义与数据操纵
例4.8 如下命令往订购单关系中插入一 条 记 录 (“E7”,”S4”,”OR01”,#2001-0525#,98000 ): Insert into 订购单 values("E7","S4","OR01",#2001-0525#,98000)
对以上的情况,假设供应商尚未确定,那 么只能先插入“职工号”和“订购单号” 两个属性的值,这时可用如下命令: Insert into 订购单(职工号,订购单号) values(“E7”,”OR02”)
1.数据的插入SQL 语句格式: Insert into dbf_name[fname1[,fname2,…]] Values(eExpression1[,eExpression2,…]) 其中:
insert into dbf_name说明向由dbf_name指定 的表中插入记录; 当插入的不是完整的记录时,可以用 fname1,fname2,…指定字段; Values(eExpression1[,eExpression2,…]) 给 出具体的记录值;
SQL语言特点
SQL是一种一体化的语言 SQL语言是一种高度非过程化的语言 SQL语言可以直接以命令方式交互使用,也 可以嵌入到程序设计语言中以程序方式使 用 SQL语言非常简洁
SQL语言包含4个部分功能:
数据查询(SELECT语句) 数据操纵(INSERT, UPDATE, DELETE语句) 数据定义(CREATE, DROP等语句)
例4.4用SQL create命令建立订购单表 (订购单号 字符型 宽度 5 主关键字;职 工号 字符型 宽度 5;供应商号 字符型 宽度 5,订购日期 date,备注 备注型)。 Create table 订购单 (订购单号 Char(5) primary key, 职工号 Char(5), 供应商号 Char(5),订购日期 Date, 备注 memo)
第4章结构化查询语言SQL和报表
1/16/2020
12
4.2.2 用Alter修改基本表(续)
命令说明:
• ADD [COLUMN]<字段名1><字段类型>[(字段宽 度[,小数位数])]:增加新字段,并指定新增字段 的名称、类型、字段宽度及小数位数。
• [NULL][NOT NULL]:指定新字段是否接受空值。
第4章 结构化查询语言SQL和报表
SQL语言的基本概述 数据定义语言DDL 数据操纵语言DML 查询和SELECT 命令 报表和标签 小结
1/16/2020
1
4.1 SQL语言的基本概述
结构化查询语言(Structured Query Language,简称 SQL)
SQL是用于对存放在计算机数据库中的数据进行组 织、管理和检索的工具,是一种用于和数据库进行 交互通信的计算机语言。SQL是1974年由Boyce和 Chamberlin提出的,并在IBM公司研制的System R上 首次实现了这种语言,由于它的功能丰富,使用方 式灵活和语言简洁易学等突出特点,很受计算机界 的欢迎。现在SQL语言已成为关系型数据库操纵语 言的国际标准。
命令功能:删除或者设置字段的默认值或约 束条件。
命令说明:
• [SET CHECK<逻辑表达式>[ERROR<文本信息>]]: 为字段设置约束条件。
• [SET DEFAULT<表达式>]:设置默认值。 • [DROP DEFAULT]:删除默认值。 • [DROP CHECK]:删除约束条件。
• CHECK<逻辑表达式>:为字段值指定约束条件;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
21
例1:检索选修了课程的学生信息。
SELECT DISTINCT STUDENT.* ; FROM STUDENT,SCORE; WHERE STUDENT.学号=SCORE.学号
例2:检索出成绩大于80分的学号、姓名、性别和成绩 。
SELECT STUDENT.学号,姓名,性别,成绩; FROM STUDENT,SCORE; WHERE 成绩>80 AND STUDENT.学号=SCORE.学号
第四章 结构化查询语言SQL
1
本章主要内容
4.1数据查询 4.2 数据操作 4.3 数据定义
2
SQL语言的基本概述
●SQL:Structured Query Language 缩写 结构化查询语言,介于关系代数与关系演算之间。目 前关系型数据库的通用语言。 ●SQL的发展 1974年,由Boyce和Chamberlin提出 1975~1979,IBM San Jose Research Lab 的关系数据库管 理系统原型System R实施了这种语言 SQL-86是第一个SQL标准 (ANSI) SQL-89、SQL-92(SQL2)、SQL-99(SQL3) (ANSI) ●现状:大部分DBMS产品都支持SQL,成为操作数据库的标 准语言
7
4.1 数据查询 P119
本节主要内容
1、基本查询 2、排序查询 3、带特殊运算符的条件查询 4、计算与分组查询 5、嵌套查询 6、利用空值查询 7、查询中的特殊选项
8
SELECT语句的格式 :P119
SELECT [*|ALL|DISTINCT][ TOP〈表达式〉 ] [〈别名〉] 〈Select表达式〉 [AS〈列名〉][,[〈别名 ] 〈Select表达式〉 [AS〈列名〉]…] FORM[ 〈数据库名〉 !] 〈表名〉[[AS]Local_Alias] [[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN[ 〈数据库名〉 !] 〈表名〉 [[AS]Local_Alias][ON〈联接条 件〉]] [INTO 〈查询结果〉 |TO FILE 〈文件名〉 [ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN] [PREFERENCE PreferenceName][NOCONSOLE][PLAIN] [NOWAIT] [WHERE〈联接条件1〉[AND〈联接条件2〉…][AND | OR 〈筛选条 件〉…]] [GROUP BY 〈组表达式〉 ][,〈组表达式〉…]] [HAVING ]〈筛选条件〉 ] [UNION [ALL] 〈SELECT命令〉 ] [ORDER BY 〈关键字表达式〉 [ASC |DESC] [, 〈关键字表达式〉 [ASC |DESC]…]] 包括三个基本子句:SELECT子句、FROM子句、WHERE子句,包括操作子句: ORDER子句、GROUP子句、UNION子句以及其他一些选项。
5
数据定义
数据控制
SQL的功能:
数据定义(DDL)
定义、删除、修改关系模式 (基本表CREATE、ALTER) 定义、删除视图(View) 定义、删除索引(Index)
数据查询(SELECT命令) 数据增、删、改(INSERT、DELETE、UPDATE命令)
数据操纵(DML)
14
无条件查询小结:
1)投影查询,SELECT子句指定获取部分列。 【例】查询学生的学号、姓名、性别。 2) 查询结果去掉重复列,用DISTINCT子句在查询结果中剔除重 复的行,DISTINCT与ALL(默认)对应。 【例】查询学生选修课的课程编号,去掉重复列。 3)查询全部列:SELECT * 表示查询结果中包括全部列的信息。 【例】查询全体学生的详细记录 4)查询经过计算的值 【例】查询全体学生的年龄。 5)查询结果使用别名 【例】查询全体学生的年龄,并使用别名。 6)结果排序 【例】查询显示COURSE表中的所有信息,并按学分升序排序。 SELECT * FROM COURSE ORDER BY 学分
4
表4-1 SQL语言的9个命令动词 P119
SQL功能 数据查询 数据操作 插入记录 更新记录 删除记录 定义基本表或索引 删除基本表或索引 修改基本表或索引 授权 收回权限 命令动词 Select Insert Update Delete Create Drop Alter Grant Revoke
22
DBMS执行连接操作的过程
STUDENT 条件 SCORE
【例】查询并显示各个学生的学号,姓名,课程编号及成 绩。(涉及2个表STUDENT 、 SCORE )
SELECT STUDENT.学号,STUDENT.姓名,SCORE.课程编号,SCORE.成绩 FROM STUDENT,SCORE WHERE STUDENT.学号=SCORE.学号 TO SCREEN 或: SELECT a.学号,a.姓名,b.课程编号 ,b.成绩 FROM STUDENT a,SCORE b WHERE a.学号=b.学号 TO SCREEN
数据控制(DCL)
用户访问权限的授予、收回(GRANT、REVOKE)
6
SQL语言的基本概念
SQL语言支持关系型数据库的三级模式结构。 外模式--视图(View)和部分基本表 模式--基本表,内模式--存储文件。 基本表:独立存在的表,在SQL语言中一个关 系。 存储文件的逻辑结构组成了关系型数据库的内 模式。而存储文件的物理文件结构是任意的。 视图:从基本表或其他视图中导出的表,数据 库只存放在视图的定义而不存放视图对应的数 据,因此视图是一个虚表。
SELECT 专业名称 FROM STUDENT
例4:查询SCORE表中的所有信息。 方法一:SELECT 学号 ,课程编号,成绩 FROM SCORE 方法二:
SELECT 学号 ,姓名,专业名称 FROM STUDENT
SELECT * FROM SCORE
11
注意:
【格式】SELECT [ALL | DISTINCT] <字段列表> FROM <表>
ALL: 表示显示全部查询记录,包括重复记录。 DISTINCT: 表示显示无重复结果的记录。 <字段列表>:* 是通配符,表示所有的字段。
DISTINCT
*
所有属性
,
SELECT后多字段名之间
12
去掉重复元组
(7)<字段名> [NOT]
(8)<字段名> [NOT]
IN ( <值表> )
IN (<子查询>)
(9)<字段名> [NOT]
LINK
<字符表达式>
20
3、多表联接查询(连接查询): P124 2. 【格式】SELECT [ALL |DISTINCT] <字段列表> FROM <表1>[,表2…..] WHERE <条件表达式> 连接条件 <表名1>.<公共字段名>=<表名2>.<公共字段名>
13
查询去向
P139
TO SCREEN:将查询结果保在屏幕上显示。 INTO ARRAY 数组名:将查询结果保存到一个数组中。 INTO DBF | TABLE <表名>:将查询结果保存到一个永久表中 INTO CURSOR< 临时表名>:将查询结果保存到一个临时表中。
TO FILE< 文件名 >[ADDITIVE] :将查询结果保存到文本文件中。 如果带“ ADDITIVE” 关键字,查询结果以追加方式添加到 < 文件 名>指定的文件,否则,以新建或覆盖方式添加到<文件名>指定的 文件。 TO PRINTER:将查询结果送打印机打印。
23
例3:检索学号为“42000401”的学生姓名以及 所选修的课程名称和授课教师姓名。
SELECT 姓名,课程名称,教师姓名; FROM STUDENT,COURSE,SCORE,TEACHER; WHERE STUDENT.学号=SCORE.学号 AND ; COURSE.课程编号=SCORE.课程编号 AND; COURSE. 教师编号=TEACHER.教师编号 AND; STUDENT.学号="42000401"
15
2、条件查询----SELECT … FROM …WHERE …
P123
【格式】SELECT [ALL | DISTINCT] <字段列表> FROM <表> [WHERE <条件表达式> ] 【功能】从SCORE表中查询满足条件的数据。
例1:查询成绩大于80分的学号。 SELECT DISTINCT 学号 FROM SCORE; WHERE 成绩>80 例2:从SCORE表中检索出选修了课程编号为 “10002101”的,并且成绩大于80分的成绩信息。 SELECT * FROM SCORE; WHERE 课程编号="10002101" AND 成绩>80
9
一、 基本查询 p121
单表查询
单表无条件查询 单表有条件查询
多表连接查询
多表无条件的连接查询 多表有条件连接查询
select…from…where…
字段名 表名 查询条件
10
1、无条件查询:SELECT … FROM …
P121
【格式】SELECT [ALL | DISTINCT] <字段列表> FROM <表> 【功能】无条件查询。(命令执行后,注意LIST显示的内容,可 能不全) 例1:将STUDENT表中的专业信息检索出来。 例2:将STUDENT表中的专业信息检索出来,并去掉重复元组。 例3:从STUDENT表中检索出学生的学号、姓名、专业信息。