160 likes | 400 Views
第四章 关系数据库标准语言 SQL. 本章学习线索: SQL 是什么(与关系数据库) SQL 如何定义表:建立、删除、修改 SQL 如何操作记录:增、删、改 怎么用 SELECT 查询表中的记录 查询结果如何处理-去向 如使用工具 ( 向导、设计器 ) 来帮助建立 SQL 命令 查询与视图的使用-自学. 第四章 关系数据库标准语言 SQL 及数据查询.
E N D
第四章 关系数据库标准语言SQL • 本章学习线索: • SQL是什么(与关系数据库) • SQL如何定义表:建立、删除、修改 • SQL如何操作记录:增、删、改 • 怎么用SELECT查询表中的记录 • 查询结果如何处理-去向 • 如使用工具(向导、设计器)来帮助建立SQL命令 • 查询与视图的使用-自学
第四章 关系数据库标准语言SQL及数据查询 1.学习目标 * 掌握SQL语言的基本功能 * 使用SQL语言产生和修改数据库表 * 使用SQL语言操纵数据库数据2.学习指南 * 通过档案表、课程表、选课表练习各种SQL语句操作 * 完成P127习题四1~9题,并将对应的SQL操作语句 保留在一个文件中,作为作业提交。3.难点重点 * 掌握SQL语句的各种基本操作语句的格式和使用方法 , 包括带有各种集合函数、分组排序的查询操作; * 给定关系表和查询要求,会写出正确的SQL语句
第一讲 SELECT-FROM-WHERE • SQL 概述 • SQL 的查询功能 • 单表查询 • 多表查询 • 连接查询 • 嵌套查询 • BETWEEN…AND… LIKE
4.1 SQL概述 SQL是结构化查询语言 STRUCTURED QUERY LANGUAGE 的缩写,数据查询是SQL的最主要的组成部分,此外,SQL还包含数据定义、数据操纵和数据控制等部分。 SQL已经成为关系数据库的标准语言,所有关系数据库管理系统都支持SQL,VFP也如此。 SQL 发展:最早的SQL是1986年10月美国ANSI公布的。随后ISO于1987年6月也正式采纳它为国际标准,1989年又推出了SQL89版,1992年又推出了SQL92新标准版本。
SQL语言主要特点: (1)SQL是一种结构化的语言,集数据定义DDL、数据操纵DML、数据控制DCL功能为一体。具有数据定义、数据查询、数据操纵和数据控制等功能。 (2) SQL是一种非过程化的语言,它不需要告诉计算机怎样做,只要描述清楚“做什么”即可。
(3)SQL语法比较简单,但语言功能很强,它很接近英语自然语言,因此容易学习和掌握 • (4)SQL命令可以交互方式使用,也可以嵌入方式使用,如嵌入程序设计语言中使用,VFP就是这种方式。 • SQL的命令动词参见表4-1: • 查询:SELECT • 定义:CREATE DROP ALTER • 操纵:INSERT UPDATE DELETE • 控制:GRANT REVOKE
4.2查询功能 SQL的核心是查询。SQL的查询命令也称作SELECT命令,它的基本形式由SELECT FROM WHERE查询模块组成,多个查询块可以嵌套执行,VFP的 SQL-SELECT语法如下: SELECT [ DISTINCT ] <目标字段表>FROM 表名1 [,表名2] [ , … ][ WHERE 记录筛选条件] [ GROUP BY 分组字段表 ][ HAVING 组过滤条件] [ORDER BY 排序字段1[ASC | DESC] [ 排序字段2 … ] ]
SELECT命令6个短语的含义:须掌握 SELECT:要挑选表中哪些字段(以逗号分隔)——“投影” FROM:说明所选字段来自哪些表,以逗号分隔。WHERE:说明所查询记录的过滤条件——“选择” GROUP BY:查询结果如何分组,用以分组统计、汇总 HAVING:挑拣分组的条件, 必须跟随GROUP BY使用 ORDER BY:确定查询结果的排列顺序
4.2.1 简单查询 • SELECT [ DISTINCT ] <目标字段表>FROM 表名 [ WHERE 记录筛选条件] • 按以上命令格式,请写出如下问题的查询命令: • 找出档案表中的专业名称 例4-2 • 档案表中有几个专业 例4-2 DISTINCT • 成绩超过70分的有哪些课程,找出课程号 例4-5 • 档案表中有哪些学生的档案,请给出他们的姓名 例4-1 • 从选课表中查出所有记录。“ * ”号的使用 例4-3 • 找出学号和成绩(成绩大于80分呢 例4-4,或者要求 课程号为“1002”或“1004”,并且成绩小于75分例4-6)
4.2.2 简单的联接查询——从多表查询 • SELECT [DIST] [表.] 字段1 [ , [表.]字段2 … ]FROM 表1,表2 [ , … ]WHERE 表连接条件[ AND 记录筛选条件 ] • 请思考用简单的联接查询如何解决: • 检索出成绩大于80分的学生的姓名和专业 例4-7 • 成绩等于80分的学生选修的课程名和学分例4-8 • 成绩小于60分的学生的所有信息 结果
4.2.3 嵌套查询 基于多个关系的查询中,若结果出自一个关系,但相关的条件却涉及多个关系。语法: SELECT [ DISTINCT ] <目标字段表>FROM 表名 WHERE 字段名 运算符 ( Select-From-Where ) 记录筛选条件 内层子查询 例4.7 检索出成绩大于80分的学生的姓名和专业。 例4.8 索出成绩为80分的学生选修的课程名和学分。 例4.10 成绩小于60分的学生的档案表信息
4.2.4 几个特殊的运算符 BETWEEN....AND.... “在 … 和 … 之间” LIKE “具有 … 特征,象…一样” SQL中通配符“%”表示0个或多个字符, “_”(下划线)表示一个字符。 例4.11 检索出成绩在80到100分之间的选课信息 例4.12 从课程表中检索出课程名中带有“学”字的课程号和课程名。 例4.13 找出家庭住址不是”西安”也不是”北京"的同学的学号和姓名。 成绩 BETWEEN 80 AND 100 课程名 LIKE "%学" 家庭住址 NOT IN ("西安" ,"北京")
4.2.5 排序 使用ORDER BY可以将SELECT查询结果排序。 SELECT – FROM – [ WHERE – ] ORDER BY 字段名 [ ASC | DESC ] [ ,字段名 [ ASC | DESC ] ... ] 其中:ASC表示升序(默认),DESC表示降序 例4.10 按成绩升序检索出选课表中的所有信息。 例4.11 先按课程号升序排列,若课程号相同再按成绩降序排列检索出选课表中的所有信息。
本讲重点回顾 • SELECT [ DISTINCT ] <目标字段表>FROM 表名1 [,表名2] [ , … ][WHERE 表连接条件[ AND 记录筛选条件] ] • [ ORDER BY 字段1 [ ASC | DESC ] [ ,字段2 [ ASC | DESC ] ... ] • 单表查询 • 多表查询 • 连接查询 • 嵌套查询 • BETWEEN…AND… LIKE
作业:1、本章书中例题 2、本章习题