第五章SQL语言
第五章 SQL课件
1
LOGO
本章主题
表的定义 能存储的不同数据类型 如何存储表以及将表存储于何处 使用SSMS和查询编辑器创建表 表的创建中所包含的更高级的部分 图片和大型文本数据
表的使用和管理
数据库是表的集合,表中含有数据和一些其他的一些对象, 数据库是表的集合,表中含有数据和一些其他的一些对象,表是用来 存储数据的对象.用户可以通过多种方式访问数据库中的数据, 存储数据的对象.用户可以通过多种方式访问数据库中的数据,但是归根 到底是访问表中的数据.所以掌握SQL Server的表的管理和使用是非常重要 到底是访问表中的数据.所以掌握SQL Server的表的管理和使用是非常重要 本章将讲解SQL 2005表的管理和使用 主要包括: 表的管理和使用, 的.本章将讲解SQL Server 2005表的管理和使用,主要包括: 表的基本概念. 表的基本概念. 使用Management Studio创建 修改和删除表. 创建, 使用Management Studio创建,修改和删除表. 使用T SQL创建 修改和删除表. 创建, 使用T-SQL创建,修改和删除表. 实现SQL 2005的数据完整性 的数据完整性. 实现SQL Server 2005的数据完整性. 作. 通过本章学习, 通过本章学习,读者可以掌握数据库中表的基本知识和对表的基本操
Classes表 图5.1 Classes表
5
(二) 系统表简介
系统表用来保存一些服务器配置信息数据,和系统数据库一样,用户 系统表用来保存一些服务器配置信息数据,和系统数据库一样, 不能直接查看和修改系统表,这些表在什么地方呢? 2005中的 不能直接查看和修改系统表,这些表在什么地方呢?SQL Server 2005中的 系统数据现在存储在隐藏的"资源"表中, 系统数据现在存储在隐藏的"资源"表中,这个表只能被服务器自身直接 访问. 访问. SQL Server 2005中有很多自带的系统表,这些表都有各自的作用,表 2005中有很多自带的系统表,这些表都有各自的作用, 中有很多自带的系统表 分别描述了系统表的所属及其作用. 5-1分别描述了系统表的所属及其作用.
SQL语言基础教学
SQL语言基础教学第一章:引言SQL(Structured Query Language,结构化查询语言)是一种专门用于管理和操作关系型数据库的标准语言。
本章节将对SQL的背景和概述进行介绍。
第二章:SQL的起源和发展本节将详细介绍SQL的起源、发展和版本更新历程。
介绍IBM的SEQUEL语言如何演变为现今的SQL标准,以及不同数据库管理系统(DBMS)对SQL的实现。
第三章:SQL的数据类型SQL支持多种数据类型,包括整数、浮点数、字符型、日期时间型等。
本章将对这些数据类型进行详细解释,并说明它们在数据库中的应用。
第四章:SQL的表格操作表格是SQL中最基本的数据组织形式。
本章将介绍如何创建数据库表格、插入数据、更新数据、删除数据和查询数据。
还将介绍如何对表格进行排序和过滤以及如何定义表格的主键和外键。
第五章:SQL的数据查询数据查询是SQL的核心功能之一。
本章将介绍SQL中的SELECT语句,包括基本查询、条件查询、排序、聚合函数和多表查询等。
还将介绍如何使用JOIN语句将多个表格关联起来进行查询。
第六章:SQL的数据修改除了查询数据,SQL还提供了修改数据的功能。
本章将介绍如何使用UPDATE语句修改表格中的数据,如何使用INSERT语句插入新的数据,以及如何使用DELETE语句删除数据。
第七章:SQL的数据约束数据约束是为了保证数据库中数据的完整性和一致性。
本章将介绍如何使用SQL中的约束来定义表格的约束条件,包括主键约束、外键约束、唯一约束、默认值和检查约束等。
第八章:SQL的视图和索引视图和索引是提高数据库性能和灵活性的重要工具。
本章将介绍如何使用SQL创建和操作视图,以及如何使用索引来加快数据库的查询速度。
第九章:SQL的事务处理事务处理是SQL中非常重要的概念,用于保证数据的一致性和完整性。
本章将介绍如何使用SQL的事务处理功能,包括事务的提交和回滚,以及如何处理并发访问问题。
第十章:SQL的安全性和权限控制数据库中的数据往往具有重要性,因此安全性和权限控制是SQL中不可忽视的方面。
第5章 SQL语言
例 5.7 找出工作在面积大于 1400 的仓库的职工号 以及这些职工所在的城市
SELECT 职工号,城市 FROM 职工,仓库 ; WHERE (面积>1400) AND(职工.仓库号=仓库.仓库号)
若使用SELECT SUM(DISTINCT工资) FROM 职工
举例
例5.15 求北京和上海的仓库职工的工资总和
SELECT SUM(工资) FROM 职工 WHERE 仓库号 IN ; (SELECT 仓库号 FFROM 仓库 WHERE 城市=”北京” OR; 城市=”上海”)
例5.16 求所有职工的 工资都多于2210元的仓库的平均 面积
[UNION …] [ORDER BY …]
• SELECT说明要查询的数据 • FROM说明要查询的数据来自哪个或哪些表, 可以对单个表或多个表进行查询; • WHERE说明查询条件,即选择元组的条件; • GROUP BY短语用于对查询结果进行分组, 可以利用它进行分组汇总; • HAVING短语必须跟随GROUP BY 短语使 用,它用来限定分组必须满足的条件; • ORDER BY 用来对查询的结果进行排序。
“武汉”的“SH4”仓库还没有职工,但该仓库的信息 也被检索出来了。
举例
• 排除那些还没有职工的仓库,检索要求描述 为: 查询所有的职工工资都多于 2210元的 仓库的信息,并且该仓库至少要有一名职工.
SELECT * FROM 仓库 WHERE 仓库号 NOT IN ; (SELECT 仓库号 FROM 职工 WHERE 工资<=2210) ; AND仓库号IN (SELECT 仓库号 FROM 职工)
第五章 SQL语言、查询和视图
——Visual FoxPro 6.0数据库应用基础第二部分数据库操作第五章SQL 语言、查询和视图5.1 SQL语言5.3 视图第四章查询和统计⏹掌握并熟练运用SQL语言⏹掌握视图的概念学习目标数据库应用基础5. 1 SQL语言返回SQL 是结构化查询语言(Structured Query Language ,SQL )的缩写,它是一个通用的,功能极强的关系数据库的标准语言。
它与VFP 的其它表操作命令相独立,即可以独立使用。
如SQL 操作表时,不用USE 命令打开表1. SQL 语言具有以下特点⏹⏹高度非过程化⏹面向集合的操作方式⏹以同一种语法结构提供两种使用方式⏹语言简洁,易学易用2. SQL 语言具有以下功能(1)数据定义功能:用于定义数据表的结构,如创建、修改或删除数据表命令:CREATE 、ALTER 、DROP(2)数据操纵命令:SELECT(3)数据查询功能:用于查询数据命令:INSERT 、UPDATE 、DELETE(4)数据控制功能:用于控制用户对数据表的访问权限等命令:由于VFP 在安全控制方面的缺陷,没提供数据控制命令。
5.1.1数据定义语言SQL 语言使用数据定义语言(Date Definition Language ,简称DDL )实现其数据定义功能,可对数据库用户、基本表、视图、索引进行定义和撤消。
DDL 的命令及功能1.建立表结构命令CREATE TABLE创建数据表时已经打开了一个数据库,则所创建的数据表将自动添加到该数据库中,否则将生成自由表。
【命令】(<字段名1> <字段类型>[<字段宽度> [,小数位]][CHECK <表达式> [ERROR <提示信息>]][PRIMARY KEY/UNIQUE][,<字段名2> …])5.1.1数据定义语言5.1.1数据定义语言【说明】①FREE 指定创建自由表,当数据库没有打开时,不必指定该项.②命令中常见的字段数据类型和字段宽度及小数位数③NULL/NOT NULL 表示是否允许字段值为空值。
第五章 数据库教案SQL语言
Sno 95001 95001 95001 95002 95002
单表查询
查询满足条件的元组 常用查询条件 查询条件 谓词
比较
确定范围 确定集合 字符匹配 空值 多重条件
=, >, <, >=, <=, !=, <>, !>, !< not + 上述比较运算符 between and, not between and in, not in like, not like is null, is not null and, or
样板模式
Sailors(sid: integer, sname: string, rating: integer, age: real) Boats(bid: integer, bname: string, color: string) Reserves(sid: integer, bid: integer, day: date)
ห้องสมุดไป่ตู้
单表查询
例子: 查询选修了课程的学生人数 select count( distinct Sno) from SC; 求选修1号课程的学生的平均成绩 select avg(Grade) //注意 from SC where Cno=‘1’;
单表查询
SQL提供的主要集函数 count( [distinct|all] *) count( [distinct|all] <列名>) sum( [distinct|all] <列名>) avg( [distinct|all] <列名>) max ( [distinct|all] <列名>) min ( [distinct|all] <列名>)
sql语言.do
所有选课记录。
当删除COURSE表中某一课程号的记录 时,系统自动将SC表中该课程号所对
应的记录中的课程号设为空。
23
例3:建立选课关系模式 SC(S#,C#,G)
CREATE TABLE SC 外键名不一定要 ( SNUM CHAR(4) NOT NULL, 和主键相同,但 CNUM CHAR(4) NOT NULL, 类型一定要相同 G SMALLINT, PRIMARY KEY (SNO, CNO), FOREIGN KEY(SNUM) REFERENCES S(SNO), FOREIGN KEY(CNUM) REFERENCES C(CNO), CHECK ((G IS NULL) OR (G BETWEEN 0 AND 100)));
1)对表增加列:
语法:ALTER 语句的形式: ALTER TABLE <表名> ADD (<列名><数据类型> [NULL|NOT NULL],…); 例:ALTER TABLE S ADD (ADDR CHAR(20)); ★ 如果原表中已存在数据,则新定义的列 必须设臵为NULL,表中原有元组在新增加的 列上的值均被定义为空值;
20
例3:建立选课关系模式 SC(SNO,CNO,G)
CREATE TABLE SC ( SNO CHAR(4) NOT NULL, CNO CHAR(4) NOT NULL, G SMALLINT, PRIMARY KEY (SNO, CNO), *表级约束* FOREIGN KEY(SNO)REFERENCES S(SNO), FOREIGN KEY(CNO)REFERENCES C(CNO), CHECK ((G IS NULL) OR (G BETWEEN 0 AND 100))); *表级约束*
《数据库原理及应用》第五章SQL查询
SQL语言
SQL功能 命令动词
数据查询
数据定义 数据操纵
SELECT
CREATE、DROP、ALTER INSERT、UPDATE、DELETE
数据控制
GRANT、REVOKE
SQL语言
SQL语言的优点在于SQL不是面向过程的 语言,使用SQL语言只需描述做什么,而 不需要描述如何做,为使用者带来极大的 方便。本章将以讨论SQL的数据查询语言 为主,同时介绍数据定义语言和数据操纵 语言。本章中大部分例题使用“学生管理” 数据库,并假定数据库在Access的当前目录 下。
简单查询----选择记录
WHERE子句通过指定查询条件,可以在表中找出满足条件 的记录。查询条件可以是任意复杂的逻辑表达式。 当WHERE子句需要指定一个以上的查询条件时,要使用逻 辑运算符AND、OR和NOT将其连接成复合的逻辑表达式。 其优先级由高到低为:NOT、AND、OR,可以使用括号改 变优先级。 条件查询还可以使用LIKE或NOT LIKE进行部分匹配查询。* 表示任意长度的字符串;?表示任意单个字符。 在查询中还可以使用查询谓词,查询谓词IN 和NOT IN用于 检索属于(IN)或不属于(NOT IN)指定集合的记录。 例10 查询成绩在60分以下(不包括60分)、90分以上(含 90分)学生的学号。
连接查询(多表查询)
例13 查询会计系学生选修课程及成绩,要求查询结果中含 属性学号、姓名、课程名称和成绩。 SELECT student.学号,姓名,课程名称,成绩 FROM student,course,grade WHERE 所属院系='会计学院' and student.学号=grade. 学号 and grade.课程编号=course.课程编号 这个查询涉及到两个表,查询所要求的结果来自两个表,查 询的条件也涉及到两个表,所以有“FROM student,grade”; 这两个表之间是有联系的,这种联系是通过父表的主关键字 (student中的学号)和子表的外部关键字(grade表的学号) 建立的,所以有命令子句WHERE中的筛选条件“student. 学号=grade.学号”。 由于student表和grade表都有学号属性,因此在SELECT子 句中要用前缀的形式“student.学号”指明取自哪个表中的 学号;此例中用“grade.学号”的形式,查询结果是一样的。
《关系数据库SQL语言》
[DataName!]TableName [[AS] Local_Alias] [ON JoinCondition]…] [WHERE JoinCondition [AND JoinCondition…] [AND|OR FilterCondition [AND|OR FilterCondition…]]] [ORDER BY Order_Item [ASC|DESC][,Order_Item [ASC|DESC]…]] [GROUP BY GroupColumn [,GroupColumn…] [HAVING FilterCondition]] [TO SCREEN|FILE FileName [ADDITIVE]|PRINTER [PROMPT]] [INTO TABLE TableName|CURSOR CursorName|ARRAY ArrayName]
(1)简单条件查询
【例5-5】在Zgjk.dbf表中,查询基本工资在1000元以上(含 1000元)职工的姓名和部门(要求不重复显示)。
在命令窗口中键入:
SELECT DISTINCT 姓名,部门,基本工资 FROM Zgjk WHERE 基本工资>=1000
(2)复合条件查询
【例5-6】在Zgjk.dbf表中,查询家电部门已婚的职工的信息。
1000 AND 1200 该命令等价于:
SELECT * FROM Zgjk WHERE 基本工资>=1000 AND ;
基本工资<=1200
3.对查询结果进行排序
在SELECT-SQL命令中,使用ORDER BY子句,可以使查询结果按 指定要求排序。 命令格式:SELECT <列名表> FROM <表名> [WHERE <条件>]; ORDER BY <排序依据> [ASC|DESC] 说明: 排序依据:备注型数据和通用型数据不能作为排序依据。排序依据 可以是字段名、由AS子句命名的列标题(在ORDER BY子句中,不能 直接使用表达式和函数)和列序号(即该列在查询结果中的位置1,2, 3…)。 排序方式:ASC表示查询结果按照排序依据项的值升序排列, DESC表示查询结果按照排序依据项的值降序排列。默认排序方式为 ASC。 排序规则:数值按大小顺序,字母按“ a ” < “ A ” < “ b ” < “ B ” … 的顺序,汉字按内码值顺序,日期按前后顺序,逻辑型数据“假”在 前“真”在后。
第 5 章 复习 SQL(结构化查询语言)
SELECT student_info.*,class_info.* FROM student_info, class_info WHERE student_info.class_no= class_info.class_no
[^]
BDTWEEN„AND IS NULL
LIKE
IN EXISTS
模式匹配,字符串匹配操作符
检查一个字段值是否属于一组值之中 检查某一个字段值是否有值,实际上,EXISTS是IS NULL的反义词
4.练习
列出性别为女的学生姓名、家庭住址 SELECT student_name, address FROM student_info WHERE student_sex='女'
3.AVG函数的应用
AVG函数的表达式格式与MAX和 MIN的表达式格式一样。求表达式中所有 项的平均值。其格式为: AVG([ALL|DISTINCT] 表达式)
SELECT AVG (course_time) '平均课时', AVG (course_score) '平均学分' FROM course_info WHERE course_start =1
4.SUM函数的应用
SUM函数用于求表达式中所有项的总 和。其格式为: SUM([ALL|DISTINCT] 表达式)
SELECT SUM (course_time) '总课时', SUM (course_score) '总学分' FROM course_info WHERE course_start =1
练习 列出2000年元旦前入学的学生名单。要 求查询结果按入学时间降序显示,若入校时间 相同,则按学号升序排列
第5章 SQL语言
二、 VF中的SQL命令动词
SQL功能 数据定义 数据更新
命令动词 Create、Drop、alter Insert、update、 Delete
数据查询 select
二、VF中的SQL命令动词
命令动词
select
alter create Insert update Delete Drop
主要功能
功能:用于修改字段的类型、宽度、有效性规则、错误信息 和默认值等。 例:alter table 学生 alter 年龄 drop check
alter table 学生 alter 年龄 D alter table 学生 alter 性别 set default "女"
二、修改表结构
格式3: Alter table 表名 [drop column 字段名] [set check 记录有效性规则 [error 错误提示信息]] [drop check] [add primary key 主索引表达式 tag 主索引名] [drop primary key] [add unique 候选引表达式 tag 候选索引名] [drop unique tag 候选索引名] [add FORE KEY 普通索引表达式 TAG 普通索引名 refe 主表名] [drop fore key tag 候选索引名] [rename column 原字段名 to 新字段名] 功能:用于删除字段、重命名字段名、增加、删除记录有效性规则、主
若有percent参数,则为百分比,n取值为0.01- 99.99 。
目标列
指定包括在查询结果中的项,每一项在查询结果中都
生成一列。可以为:字段名、常量、表达式。如果包 括所有字段,可使用*号。可以为SQL计算函数: AVG(字段名)、SUM(字段名)、 MAX(字段名)、 MIN(字段名)、 COUNT(*)、COUNT(字段名)
《Access2016数据库教程》第5章SQL查询
SQL(Structure Query Language)结构化查询语言
是一种专门针对数据库操作的计算机语言,是关系数据库管 理系统中的标准语言。 SQL查询是使用SQL语句创建的查询。 查询对象本质上是一条SQL语言编写的命令。
SELECT语句
SELECT语句是对关系数据库的表作选择查询的一个命令, 可以返回指定的数据表中的全部或部分满足条件的记录。
Where Year(出生日期)=2001 Or Year(出生日期)=2003
Where Year(出生日期) In(2001,2003)
4.9 SQL查询
【例5-11】查询“学生表”中年龄为18岁的 学生的学号、姓名、政治面貌。
Select 学号, 姓名, 政治面貌 From 学生表
Where Year(Date())-Year(出生日期)=18
然后使用Group By子句按照课程名称进行分组 再计算每个组内包含成绩的平均值、最大值和最小值。
3.SELECT多表连接查询示例
【例5-19】 查询每个学生的学号、姓名和平均成绩 (保留2位小数),查询结果按“平均成绩”降序排序。
Select 学生表.学号, First(学生表.姓名) As 姓名, Round(Avg(成绩),2) As 平均成绩 From 学生表 Inner Join 选课成绩表 On 学生表.学号= 选课成绩表.学号 Group By 学生表.学号 Order By Round(Avg(成绩),2) Desc
先从Where子句的条件筛选出“男”同学,再按照 院系代码进行分组求出平均分,然后按照平均分降 序排序。
5.2.3 多表连接查询
连接就是将其他表中的列字段添加到本表中。连接运 算主要分成内连接和外连接。 内连接是应用最广泛的连接运算,结果只包含两个表 中连接字段相同的记录行,是等值连接。使用Inner Join就可以将两张表内连接在一起。
第5章-SQL语言 作业和思考
一、单项选择题:1.SQL语言是( )的语言,容易学习。
A.过程化B. 非过程化C.格式化D. 导航式2.关系操作方式的特点是( )操作。
A. 导航方式B. 一次一集合方式C.一次一记录方式 D. 记录或集合方式3.下列关于基本表与存储文件之间关系的叙述中,正确的是( )。
A. 一个基本表只能存储于一个文件中,一个存储文件中也只能存储一个基本表B. 一个基本表只能存储于一个文件中,但一个存储文件中可存储多个基本表C. 一个基本表可以存储于一个或多个文件中,但一个存储文件中只能存储一个基本表D. 一个基本表可以存储于一个或多个文件中,一个存储文件中也可以存储一个或多个基本表4.视图是从一个或多个基本表(视图)导出的表。
它相当于三级模式结构中的( )A. 外模式B. 模式C.内模式 D. 存储模式5.SQL的GRANT与REVOKE命令属于数据库保护中的( )控制。
A.完整性 B. 安全性 C. 并发控制 D. 恢复机制6.1986年,( )被定为关系数据库标准语言。
A. 关系代数B. 关系演算C.SQL语言D.QBE7.在SQL语言中授权的操作是通过( )语句实现的。
A. CREATE B.REVOKE C.GRANT D.INSERT8.SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE,DELETE等.其中最重要的,也是使用最频繁的语句是( )。
A. DELETEB. INSERTC. UPDATED. SELECT9.SQL语言中,实现数据检索的语句是( )。
A.SELECT B.INSERT C. UPDATE D.FIND10.下列SQL语句中,修改表结构的是( )。
A. ALTERB. CREATEC.UPDATED. DELETE11.实体完整性约束和SQL语言中的()相对应。
A.primary key B.foreign key C.check D.unique12.参照完整性约束和SQL语言中的()相对应。
第五章 关系数据库标准语言SQL(2)
作业
课后作业
一、教材第五章课后习题 二、pdf第8章习题 pdf第
第五章 关系数据库标准语言SQL
预习
预习
第六章 视图和查询 1、视图和查询的创建方法 2、视图和查询在功能上的不同
第五章 关系数据库标准语言SQL
5.4 SQL的数据定义功能 SQL的数据定义;表名> ADD [PRIMARY KEY | UNIQUE <字 段名> TAG <索引标识>]
删除主索引
ALTER TABLE <表名> DROP PRIMARY KEY
第五章 关系数据库标准语言SQL
5.3 SQL的数据定义功能 SQL的数据定义功能
第五章 关系数据库标准语言SQL
8.3 SQL的数据定义功能 SQL的数据定义功能
5.4.1 创建表 <表名 (<字段名 表名> 字段名1> <类型>[(宽度 类型>[( CREATE TABLE <表名> (<字段名1> <类型>[(宽度 [,小数点位数])][,<字段名 <类型>[(宽度 小数点位数])][,<字段名2> 类型>[( [,小数点位数])][,<字段名2> <类型>[(宽度 [, 小数点位数] )]。。。。 。。。。) 小数点位数] )]。。。。) 例:创建sp1表,结构和sp表相同。 创建sp1表 结构和sp表相同。 sp1 sp表相同
第5章结构化查询语言SQLppt课件全
基本查询
❖ 例1:列出“学生”表中所有同学名单
▪ SELECT * FROM 学生
❖ 例2:列出成绩表中所有学生的学号,去掉重复值。
▪ SELECT DISTINCT 学号 FROM 成绩
SELECT命令中的函数
❖ 例3、列出所有学生的学号,姓名和入学成绩, 其中入学成绩四舍五入保留整数。
▪ SELECT 学号,姓名,ROUND(入学成绩,0) AS “入学成 绩” FROM 学生
WHERE——BETWEEN
❖ WHERE子句中的BETWEEN运算符用来确定范围 。
❖ 格式:
▪ BETWEEN…AND…或NOT BETWEEN…AND ▪ 其中BETWEEN后是范围的下限(低值),AND后是范围的
上限(高值)。
❖ 例1、列出入学成绩在560分到600分之间的学生 名单和成绩。
SQL89 ▪ 1992年公布了SQL的新标准,即SQL-92。 ▪ SQL99——SQL3
SQL语言的特点
❖ SQL是一种结构一体化的语言。它包括了数据定义 、数据查询、数据操纵和数据控制等功能,可以完 成数据库活动中的全部工作。
SQL语言的组成
❖ 数据定义:CREATE、DROP(删除)、
ALTER(修改)
▪ SELECT * FROM 学生 WHERE 专业<>“计算机”
❖ 例4、统计计算机专业入学成绩在600分以上的 学生的人数。
▪ SELECT COUNT(姓名) 人数 FROM 学生 WHERE 入 学成绩>=600 AND 专业=“计算机”
WHERE——IN
❖ WHERE子句中的IN谓词用来确定查询的集合。 ❖ 例1、查询计算机专业和外语专业的学生姓名和
SQL结构化查询语言
使用别名
➢ 在结果表的标题行所在列上显示更易读的文字。方法:
✓ 写Select子句的选择列表时,字段名称 [as] 别名 或 别名=字段名称
别名也可用引号括起来。但别名以数字开头时,必须加单引号。
✓ 例5-3:select student_name, address 家庭住址 from student_info
➢ 空值在排序时,被视为比最小非空值(min)还小。
第8页,共30页8。
SQL聚合函数
利用聚合函数完成统计功能,通常和group by 一起使用,对每组进行计算,返回 单个结果。具见表5-4。除count函数之外,别的聚合函数都忽略空值。
➢ count :满足条件的行数。
✓ select count(*) 19岁以上男生人数 from student_info where year(getdate())-year(born_date)>19 and student_sex= '男'
2 第2页,共30页。
5.3 基于单表的查询
查询表中指定的字段
➢
在结果表中,字段是按照SELECT子句后的各个字段的顺序显示。
✓ SELECT子句后的各个字段的先后顺序可与原表中的顺序不一致。如无特别需要,最好“照搬”
表定义时的字段顺序,以减少运算代价。另,详细列出要查的个别字段,而不是“所有”字
by 一般都和聚合函数一起用)
➢ select 选择列表 from 表 group by 分组列表
✓ 选择列表中出现的列要么是分组列表中出现的列,要么是运用了统计函数的列,别的不能出 现。
✓ 例5-26:select class_no,count(student_id) '学生人数' from student_info group by class_no
自考本科计算机SQL语言
自考本科计算机SQL语言7.游标(cursor)为什么要使用游标SQL语言与主语言具有不同数据处理方式SQL语言是面向集合的,一条SQL语句原则上可以产生或处理多条记录。
第五章SQL语言学习目的与要求:SQL语言是关系数据库的标准语言,是本课程的一个重点。
本章总的要求是:全面掌握,深刻理解。
熟练应用。
要求掌握的技能是:SQL定义语句、嵌入式SQL语句的应用。
要求熟练掌握的技能是:SQL查询语句、视图、SQL更新语句的应用。
方法:多做题,多上机实践。
考核知识点与考试要求5.1SQL简介(识记)5.2SQL的数据定义(综合应用)5.3SQL的数据查询5.3.1SELECT查询语句的基本结构,连接、嵌套、存在量词的三种查询方式(综合应用)5.3.2SELECT 语句完整的结构,分组子句、排序子句的用法(综合应用)5.3.3数据查询中的限制和规定(简单应用)5.3.4条件表达式中的比较操作(简单应用)5.3.5嵌套查询的改进写法(领会)5.3.6基本表的连接操作(综合应用)5.4SQL的数据更新(综合应用)5.5视图(简单应用)5.6嵌入式SQL(领会)5.7存储过程SQL/PSM(识记)5.1SQL简介1.SQL 发展历程SQL从1970年美国IBM研究中心的E.F.Codd发表论文到1974年Boyce和Chamberlin把SQUARE语言改为SEQUEL语言,到现在还在不断完善和发展之中,SQL(结构式查询语言)虽然名为查询,但实际上具有定义、查询、更新和控制等多种功能。
2.SQL数据库的体系结构SQL数据库的体系结构也是三级结构,但术语与传统关系模型术语不同,在SQL中,关系模式称为"基本表",存储模式称为"存储文件",子模式称为"视图",元组称"行",属性称"列"。
SQL数据库体系的结构要点如下:(1)一个SQL数据库是表的汇集。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
查询结果排序
使用ORDER BY 字句以及DESC或ASC 命令关键字。 作用是对结果集进行排序,每个排序 列后都可以跟一个排序要求。
使用集函数
在SELECT语句中使用 COUNT(数值表达式) AVG(数值表达式) SUM(字段表达式) MIN(字段表达式) MAX(*|字段)
查询结果分组
在SELECT语句中使用GROUP BY字句 将查询结果表按照某一列或多列的值分 组,使其列值相等的为一组。还可以用 HAVING短语指定结果组满足的条件。
说明: (1)<表名>是要为其创建索引的基本表的名字。索引可以建立在该表的一列或 多列上,各列名之间用逗号分隔。每个<列名>还可以用 <排序方式 >来指 定索引值按照ASC(升序)或DESC(降序)的方式排序,缺省值为ASC。 (2)UNIQUE表明每一个索引值只对应唯一的一个元组,即索引值相同的元组 只索引一次。 (3)CLUSTER表示要建立的索引是聚簇索引。所谓聚簇索引是指索引项的顺 序与表中元组的物理顺序一致的索引组织。
CONSTRAINT<约束名>PRIMARY KEY [CLUSTERED](<列组>)
FOREIGN KEY
CONSTRAINT<约束名>FOREIGN KEY(<外 码>)REFERENCES<被参照表名>(<与外码对应的 主码名>)
修改基本表
SQL语言用ALTER TABLE语句修改基本表,其一般 格式为: ALTER TABLE <表名> [ADD <新列名> <数据类型> [完整性约束]] [ DROP [完整性约束名]] [MODIFY <列名> <数据类型>];
⑴ 当连接运算符为“=”时,称为等值连接,其它为非等值连接。连接条件 中列名对应属性的类型必须是可比的,但列名不必是相同的。 ⑵ DBMS执行连接操作的过程是:首先在表1中找到第1个元组,然后对表2 从头开始扫描逐一查找满足连接条件的元组,找到后就将表1中的第1个元 组与该元组拼接起来,形成结果表中的一个元组。表2全部查找完后,再找 表1中第2个元组,然后再对表2从头开始扫描,逐一查找满足连接条件的元 组,找到后就将表1中的第2个元组与该元组拼接起来,形成结果表中的一 个元组。重复上述操作,直到表1中的全部元组都处理完毕为止。
条件查询(2)
(1)谓词条件。例如: where Sage BETWEEN 18 AND 22; where Sage>18 NOT BETWEEN 18 AND 22; where Sdept IN (‘自动化’, ‘数学’,’计算机’); 还有用LIKE和NOT LIKE构成谓词条件的语法格式如下:[NOT]LIKE’<匹配 串>’[ESCAPE’<换码字符>’] 其含义是查找指定的属性列值与<匹配串>向匹配的元组。<匹配串>可以是 一个完整的字符串,也可以含有通配符%和-,其意义如下: ① % (百分号): 代表任意长度(长度可以为0)的字符串。例如a%b表示以a 开头,以b结尾的任意长度的字符串。如acb,abcdb,ab等都满足该匹配 串。 ② _ (下横线): 代表任意单个字符。例如a_b 表示以a开头,以b结尾的长 度为3的任意字符串。如acb,adb等都满足该匹配串。 此外,还有使用IS NULL和IS NOT NULL谓词进行有关空值判断的谓词条 件,如: WHERE Grade IS NULL; 注意:以上的“IS”不能用等号“=”代替。
1 数据库的三级模式——视图机制
① 简化用户的操作。 ② 多角度看待同一数据。 ③ 视图为数据库重构提供了一定程度的 逻辑独立性。 ④ 对数据安全保护。
1 数据库的三级模式
——支持三级模式结构
SQL命令
外模式
视图1
视图2
模 式
基本表1
基本表2
基本表3
基本表4
内模式
存储文件1
存储文件2
返回
2.SQL概述
1 数据库的三级模式
外模式对应于视图(View),模式对应于基本表,内模式 对应于存储文件。其中: ⑴ 基本表。基本表是数据库中独立存在的表,每个基本 表对应一个关系模式和关系。一个(或多个)基本表对 应一个存储文件。 ⑵ 视图(虚拟表)。视图对应于外模式(用户模式),它 是由一个或几个基本表导出的表——虚拟表。视图中存 放着视图的定义及其关联的基本表名称等信息而不存放 视图对应的具体数据。用户可以在视图上再定义视图。 ⑶ 存储文件。若干个基本表组成一个存储文件。存储文 件的逻辑结构组成了关系数据库的内模式。
简单的选择与投影查询
无条件查询
条件查询 查询结果排序 集函数的使用
查询结果分组
无条件查询
在 SELECT 语句中不使用 [WHERE< 条件表达式>]字句。
条件查询(1)
在SELECT语句中使用[WHERE<条件 表达式>]子句。 常见的条件有:
(1)比较条件。例如: where Sdept = ‘数学’; where Sage>18 AND Sage <=22;
自身连接查询
自身连接:将同一个表与自己进行连接的查 询,其基本方法是在SELECT语句的FROM子 句中将同一个表取两个不同的别名。比如: SELECT o, ame, B.pre_Cno FROM Courses A, Courses B WHERE A.pre_Cno = o;
主要功能
数据定义功能 数据操纵功能
数据控制功能
返回
SQL的数据定义功能通过DDL(Data Definition Language) 实现,它用于定义关系数据库的模式,外模式和内模式,以实 现对基本表、视图以及索引文件的定义、修改和删除等操作。 数据库的控制指数据的安全性和完整性 控制。SQL的数据控制通过DCL (Data Control Language)实现。 SQL通过对数据库用户的授权和收权 命令来有关数据的存取控制,以保证数 据库的安全性。SQL还提供了数据完 整性约束条件的定义和检查机制。以保 证数据库的完整性。
1.3.2 连接查询
不同表之间的连接查询 自身连接查询 外连接查询
不同表之间的连接查询
一般是在WHERE字句中WHERE子句中将两(多)个表的属性列名,作为连接 条件实现,其格式通常为: [<表名1>.]<列名1 > <比较运算符> [<表名2>.]<列名2>
或者
[<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND [<表名2>.]<列名3> 说明:
说明:<表名>是要修改的基本表表名; ADD子句用于增加新列和新的完整性约束条件; MODIFY子句用于修改原有的列定义,包括修; 改列名和数据类型。
删除基本表
用 DROP TABLE语句可删除基本表。 其一般格式为: DROP TABLE <表名> ;
建立与删除索引
建立与删除索引
1 建立索引:使用CREATE INDEX命令,其语句格式为: CREATE [UNIQUE] [CLUSTER] INDEX<索引名> ON <表名> (<列名> [<排序方式>] [,<列名>[<排 序方式>]]…);
TINYINT 整数类型,其值按1个字节存储。 SMALLINT 整数类型,其值按2个字节存储。 INTEGER或INT 整数类型,其值按4个字节存储。 REAL 实数类型,其值按4个字节存储。 FLOAT 实数类型,其值按8个字节存储。 CHARTER(n)或CHAR(n) 长度为n的字符类型,一个字符占 一个字节。 VARCHAR(n) 最大长度为n的变长字符串,所占空间与 实际字符数有关。 DATETIME 日期时间类型,缺损格式为MM-DDYYYY HH:MM:AM/PM。 TIMESTAMP 更新或插入一行时,系统自动记录的日 期时间类型。
删除索引
使用DROP INDEX语句,其一般格式为: DROP INDEX <索引名>;
返回
4 SQL的数据查询
查询语句 连接查询 嵌套查询 集合查询
查询语句
SELECT语句的一般格式: SELECT [ALL|DISTINCT] <目标列表达式> [,< 目标列表达式>] FROM <表名或视图名> [,<表名或视图名>]… [WHERE <条件表达式>] [GROUP BY <列名1> [HAVING<条件表达式>]] [ORDER BY <列名2> [ASC|DESC]];
外连接
选定连接操作中涉及的某个表A为基准, 即使另一个表 B中没有与之匹配的记录, 其结果表中也要求包括表A的所有元组。
Байду номын сангаас
若表B中没有与之匹配的记录,结果表
中涉及表B的属性列全部取空值。
1.3.3 嵌套查询
嵌套查询:将一个查询块(SELECT-FROMWHERE)嵌套在另一个查询块的WHERE子句或 HAVING短语条件中的查询。 2、常用的嵌套查询 ⑴ 带谓词IN的嵌套查询 ⑵ 带有比较运算符的嵌套查询 ⑶ 带谓词ANY或ALL的嵌套查询 ⑷ 带谓词EXISTS的嵌套查询
1 基本表的定义、删除与修改
2 建立与删除索引
3 建立与删除视图
返回
定义基本表
命令格式为:
CREATE TABLE <表名> (<列名> <数据类型> [列