第五章 SQL语言
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
常用完整性约束
主码约束:
PRIMARY KEY
主索引 候选索引
唯一性约束:UNIQUE 非空值约束:NOT NULL 参照完整性约束
PRIMARY KEY与 UNIQUE的区别?
8
修改表
【格式】ALTER TABLE <表名>[ADD <新字段 名><数据类型>[(<宽度>[,<小数位数>])][完整 性约束][NULL | NOT NULL]][DROP [完整性约 束]][alter <字段名><数据类型>] 【功能】修改表结构。 【说明】ADD子句用于增加指定表的字段变量名、 [例] 【例5-3】在课程成绩表SC中,增加一个成绩字段变量 删除属性列 将年龄的数据类型改为日期。 数据类型、宽度和完整性约束条件;DROP子句用 (N,3)。 直接删除属性列:(新) ALTER TABLE Student ALTER 年龄 DATE; 于删除指定的的完整性约束条件;alter子句用于 ALTER TABLE Drop ADD 成绩 N(3) 修改原有的字段变量的值。 例:ALTER TABLE Student SC Scome; 注:修改原有的列定义有可能会破坏已有数据
11
插入记录
【格式1】INSERT INTO <表名> [<字段名表>] VALUES (<表达式表>) 【格式2】INSERT INTO <表名> FROM ARRAY <数组名> | FROM MEMVAR 【功能】在指定的表文件末尾追加一条记录。
格式1用表达式表中的各表达式值赋值给<字段名表>中 的相应的各字段。 格式2用数组或内存变量的值赋值给表文件中各字段。
DELETE FROM STUD ; WHERE 性别=“男”
17
SQL中的数据查询语句 数据库中的数据很多时侯是为了查 询的,因此,数据查询是数据库的核 心操作。而在SQL语言中,查询语言中 有一条查询命令,即SELECT语句。
18
基本查询语句
【格式】SELECT [ALL | DISTINCT] <字段列表> FROM <表>
WHERE 年龄 BETWEEN 20 AND 23
25
(3) 确定集合
使用谓词 IN <值表>, NOT IN <值表>
<值表>:用逗号分隔的一组取值
[例]查询信息系、数学系和计算机系学生的姓名和 性别。 SELECT 姓名,性别
FROM Student
WHERE 系别 IN ( '信息','数学','计算机' )
5分。 UPDATE SC SET 成绩=成绩+5 ;
16
WHERE
课程号="02"
删除记录 【格式】DELETE FROM <表名> WHERE <表达 式>
【功能】从指定的表中删除满足WHERE子句条件的 所有记录。如果在DELETE语句中没有WHERE子句, 则该表中所有记录都将被删除。 【说明】这里的删除是逻辑删除,即在删除的记录前 加上一个删除标记“*”。 【例】删除STUD表中所有性别为男的记录。
LIST STRUCTURE
9
删除数据库
【格式】DROP DATABASE <数据库名>
【功能】删除指定数据库的结构和数据。 【说明】谨慎使用。
删除表
【格式】DROP TALBE <表名>
【功能】删除指定表的结构和内容(包括在此表上建立 的索引)。
【说明】如果只是想删除一个表中的所有记录,则应使 用DELETE语句。
例:a%b表示以a开头,以b结尾的任意长度的 字符串。如acb,addgb,ab 等都满足该匹配 串
2.
_ (下横线)
代表任意单个字符
例:a_b表示以a开头,以b结尾的长度为3的任 意字符串如acb,afb等都满足该匹配串
28
例 题
1) 匹配模板为固定字符串
[例] 查询学号为95001的学生的详细情况。
【功能】从一个表中查询满足条件的数据。
【说明】<条件表达式>由一系列用AND 或 OR 连 接的条件表达式组成,条件表达式的格式可以是 以下几种:
22
WHERE子句常用的查询条件
表 3.3 常用的查询条件
查 询 条 件 比 较 谓 词 =,>,<,>=,<=,!=,<>,!>,!<; NOT + 上述比较运算符 BETWEEN AND,NOT BETWEEN AND IN,NOT IN LIKE,NOT LIKE IS NULL,IS NOT NULL AND,OR
FROM
Student
WHERE 年龄 < 20
(2) 确定范围
使用谓词 BETWEEN … AND …
NOT BETWEEN … AND …
[例] 查询年龄在20~23岁(包括20岁和23岁)之间的 在 学生的姓名、系别和年龄。 在变成不在呢?
SELECT 姓名,系别,年龄;
FROM Student;
SELECT * FROM Student WHERE 学号 LIKE '95001' 等价于:
SELECT * FROM Student
WHERE 学号 = '95001'
29
例题(续)
2) 匹配模板为含通配符的字符串
假如改为不姓刘呢?
[例]
查询所有姓刘学生的姓名、学号和 性别。 SELECT 姓名,学号,性别 FROM Student WHERE 姓名 LIKE ‘刘%’;
10
数据操纵
数据操纵语言是完成数据操作的命令,一般分为两 种类型的数据操纵,它们统称为DML: ● 数据检索(常称为查询):寻找所需的具体数据。 ● 数据修改:添加、删除和改变数据。 数 据 操 纵 语 言 一 般 由 INSERT ( 插 入 ) 、 DELETE (删除)、UPDATE(更新),SELECT(检索,又 称查询)等组成,由于SELECT比较特殊,所以一般 又将它以查询(检索)语言单独出现。
第5章 关系数据库标准语言 SQL
1
本章要点
5.1 5.2 5.3 5.5 5.5 SQL语言的基本概述 数据定义 数据操纵 数据管理 SQL中的数据查询语句
2
SQL语言的特点
•SQL语言是一种一体化语言,它集数据定义、数据查 询、数据操纵和数据控制功能于一体,简单实用。 •SQL语言是一个非过程化语言,它的大多数语句都是 独立执行、与上下文无关。它不是数据库管理系统, 也不是应用软件开发语言,它只能用于对数据库中数 据的操作。 •SQL语言功能很强,但只有为数不多的几条命令,简 单实用。 • SQL语言可以直接以命令方式交互使用,也可以嵌 入到程序设计语言中。
– 算术表达式
– 字符串常量
【例】显示SC(课程成绩表)中的所有记录, – 函数 、集函数 并将成绩一项乘以0.7。
– 列别名
SELECT 学 号 , 课 程 号 , 成 绩 * 0.7 AS 成 绩 ; FROM SC
21
带条件(WHERE)的查询语句
【格式】SELECT [ALL | DISTINCT] <字段列 表> FROM <表> [WHERE <条件表达式> ]
【说明】 ALL: 表示显示全部查询记录,包括重复记录。
DISTINCT: 表示显示无重复结果的记录。
19
基本查询语句举例
【例】显示STUD(学生信息数据表)中的所 有记录。 SELECT * FROM STUD
命令中的*表示 输出 显示所有的字段,数据来 源是STUD表,表中的内容以浏览方式显示。
INTO
STUD
FROM
15
更新记录命令 【格式】UPDATE <表文件名> SET <字段名 1>=< 表 达 式 > [ , < 字 段 名 2>=< 表 达 式 >…] [WHERE <条件>] 【功能】更新指定表文件中满足WHERE条件子 句的数据。其中SET子句用于指定列和修改的 值 , WHERE 用 于 指 定 更 新 的 行 , 如 果 省 略 WHERE子句,则表示表中所有行。 【例】将成绩表(SC)中,所有课程号为02的成绩各加
13
***用数组方式追加第二条记录***
DIMENSION DATA[8] DATA(1)="011103" DATA(2)="李宁" DATA(3)="女" DATA(5)="电0135" DATA(5)="02" DATA(6)="江西九江" DATA(7)={05/06/85} DATA(8)=.F.
3
表 5.1 SQL 语言的动词 SQL 功 能 数 据定 义 数 据查 询 数 据操 纵 数 据控 制 动 词 CREATE, DROP, ALTER SELECT INSERT,UPDATE DELETE GRANT,REVOKE
4
一、数 据 定 义
表 5.2 SQL 的数据定义语句 操 作 对 象 表 视 图 索 引 操 作 方 式 创 建 CREATE TABLE CREATE VIEW CREATE INDEX 删 除 DROP TABLE DROP VIEW DROP INDEX 修 改 ALTER TABLE
【例】显示STUD(学生信息数据表)中的 所有的学生的姓名,同时能去除重名。
SELECT DISTINCT FROM STUD 姓名;
20
【格式】SELECT [ALL | DISTINCT] <字 【例】显示STUD(学生信息数据表)中的所 有学生的姓名和年龄。 段列表> FROM <表>
SELE 姓名,YEAR(DATE())-YEAR(出生日期) <字段列表> 可以是下列表达式: AS 年龄 FROM STUD
26
(4) 字符串匹配
[NOT] LIKE ‘<匹配串>’
<匹配串>:指定匹配模板
匹配模板:固定字符串或含通配符的字符串
当匹配模板为固定字符串时
可以用 = 运算符取代 LIKE 谓词
用 != 或 < >运算符取代 NOT LIKE 谓词
27
通配符
1.
百度文库
% (百分号)
的字符串
代表任意长度(长度可以为0)
INSERT INTO ARRAY DATA
STUD
FROM
14
***用内存变量方式追加第三条记录***
学号="011202" 姓名="赵娜" 性别="女" 班级名="英0112" 系别代号="03" 地址="广西南宁" 出生日期={02/21/85} 是否团员=.F.
INSERT MEMVAR LIST
CREATE TABLE SC(学号 C(10),课程号 CREATE TABLE STUD ( 学 号 C(10), 姓 名 C(2)) C(10),性别 C(2),班级名 C(10),系别代号
C(2),地址 C(50),出生日期 D,是否团员 L, LIST STRUCTURE 备注 M,照片 G) LIST STRUCTURE
5
一、数据定义
1、定义(创建)表 【格式】CREATE TABLE <表名> (<字段
名 1>< 数 据 类 型 >[ ( < 宽 度 >[ , < 小 数 位 数
>])][完整性约束][NULL | NOT NULL][,
<字段名2>…])
【功能】定义(也称创建)一个表。
6
SQL建表举例
【例】创建一个表STUD(学生信息表),它由 【例】创建一个表SC(课程成绩表),它由以 以下字段组成:学号 (C,10);姓名(C,8); 性别(C,2);班级名(C,10);系别代号 下字段组成:学号(C,10);课程号(C, (C,2);地址(C,50);出生日期 (D); 2)。 是否团员 (L);备注 (M)。
确定范围 确定集合 字符匹配 空 值 多重条件
23
(1) 比较大小
在WHERE子句的<比较条件>中使用比 较运算符=,>,<,>=,<=,!= 或 <>,!>,!<,
逻辑运算符NOT + 比较运算符
[例] 查询所有年龄在20岁以下的学生姓名及其年龄。 SELECT 姓名,年龄 SELECT 姓名,年龄 或 FROM Student WHERE NOT 年龄 >= 20 24
30
例题(续)
匹配模板为含通配符的字符串(续) [例] 查询姓“欧阳”且全名为三个汉字的学 生的姓名。
12
【例】在表文件STUD的末尾追加三条记录。 ***用表达式方式追加第一条记录***
INSERT INTO STUD (学号,姓名,性别,班级名, 系别代号,地址,出生日期,是否团员) VALUES ("011110"," 李 建 国 "," 男 "," 计 0121","01"," 湖 北武汉",{09/28/02},.T.)
常用完整性约束
主码约束:
PRIMARY KEY
主索引 候选索引
唯一性约束:UNIQUE 非空值约束:NOT NULL 参照完整性约束
PRIMARY KEY与 UNIQUE的区别?
8
修改表
【格式】ALTER TABLE <表名>[ADD <新字段 名><数据类型>[(<宽度>[,<小数位数>])][完整 性约束][NULL | NOT NULL]][DROP [完整性约 束]][alter <字段名><数据类型>] 【功能】修改表结构。 【说明】ADD子句用于增加指定表的字段变量名、 [例] 【例5-3】在课程成绩表SC中,增加一个成绩字段变量 删除属性列 将年龄的数据类型改为日期。 数据类型、宽度和完整性约束条件;DROP子句用 (N,3)。 直接删除属性列:(新) ALTER TABLE Student ALTER 年龄 DATE; 于删除指定的的完整性约束条件;alter子句用于 ALTER TABLE Drop ADD 成绩 N(3) 修改原有的字段变量的值。 例:ALTER TABLE Student SC Scome; 注:修改原有的列定义有可能会破坏已有数据
11
插入记录
【格式1】INSERT INTO <表名> [<字段名表>] VALUES (<表达式表>) 【格式2】INSERT INTO <表名> FROM ARRAY <数组名> | FROM MEMVAR 【功能】在指定的表文件末尾追加一条记录。
格式1用表达式表中的各表达式值赋值给<字段名表>中 的相应的各字段。 格式2用数组或内存变量的值赋值给表文件中各字段。
DELETE FROM STUD ; WHERE 性别=“男”
17
SQL中的数据查询语句 数据库中的数据很多时侯是为了查 询的,因此,数据查询是数据库的核 心操作。而在SQL语言中,查询语言中 有一条查询命令,即SELECT语句。
18
基本查询语句
【格式】SELECT [ALL | DISTINCT] <字段列表> FROM <表>
WHERE 年龄 BETWEEN 20 AND 23
25
(3) 确定集合
使用谓词 IN <值表>, NOT IN <值表>
<值表>:用逗号分隔的一组取值
[例]查询信息系、数学系和计算机系学生的姓名和 性别。 SELECT 姓名,性别
FROM Student
WHERE 系别 IN ( '信息','数学','计算机' )
5分。 UPDATE SC SET 成绩=成绩+5 ;
16
WHERE
课程号="02"
删除记录 【格式】DELETE FROM <表名> WHERE <表达 式>
【功能】从指定的表中删除满足WHERE子句条件的 所有记录。如果在DELETE语句中没有WHERE子句, 则该表中所有记录都将被删除。 【说明】这里的删除是逻辑删除,即在删除的记录前 加上一个删除标记“*”。 【例】删除STUD表中所有性别为男的记录。
LIST STRUCTURE
9
删除数据库
【格式】DROP DATABASE <数据库名>
【功能】删除指定数据库的结构和数据。 【说明】谨慎使用。
删除表
【格式】DROP TALBE <表名>
【功能】删除指定表的结构和内容(包括在此表上建立 的索引)。
【说明】如果只是想删除一个表中的所有记录,则应使 用DELETE语句。
例:a%b表示以a开头,以b结尾的任意长度的 字符串。如acb,addgb,ab 等都满足该匹配 串
2.
_ (下横线)
代表任意单个字符
例:a_b表示以a开头,以b结尾的长度为3的任 意字符串如acb,afb等都满足该匹配串
28
例 题
1) 匹配模板为固定字符串
[例] 查询学号为95001的学生的详细情况。
【功能】从一个表中查询满足条件的数据。
【说明】<条件表达式>由一系列用AND 或 OR 连 接的条件表达式组成,条件表达式的格式可以是 以下几种:
22
WHERE子句常用的查询条件
表 3.3 常用的查询条件
查 询 条 件 比 较 谓 词 =,>,<,>=,<=,!=,<>,!>,!<; NOT + 上述比较运算符 BETWEEN AND,NOT BETWEEN AND IN,NOT IN LIKE,NOT LIKE IS NULL,IS NOT NULL AND,OR
FROM
Student
WHERE 年龄 < 20
(2) 确定范围
使用谓词 BETWEEN … AND …
NOT BETWEEN … AND …
[例] 查询年龄在20~23岁(包括20岁和23岁)之间的 在 学生的姓名、系别和年龄。 在变成不在呢?
SELECT 姓名,系别,年龄;
FROM Student;
SELECT * FROM Student WHERE 学号 LIKE '95001' 等价于:
SELECT * FROM Student
WHERE 学号 = '95001'
29
例题(续)
2) 匹配模板为含通配符的字符串
假如改为不姓刘呢?
[例]
查询所有姓刘学生的姓名、学号和 性别。 SELECT 姓名,学号,性别 FROM Student WHERE 姓名 LIKE ‘刘%’;
10
数据操纵
数据操纵语言是完成数据操作的命令,一般分为两 种类型的数据操纵,它们统称为DML: ● 数据检索(常称为查询):寻找所需的具体数据。 ● 数据修改:添加、删除和改变数据。 数 据 操 纵 语 言 一 般 由 INSERT ( 插 入 ) 、 DELETE (删除)、UPDATE(更新),SELECT(检索,又 称查询)等组成,由于SELECT比较特殊,所以一般 又将它以查询(检索)语言单独出现。
第5章 关系数据库标准语言 SQL
1
本章要点
5.1 5.2 5.3 5.5 5.5 SQL语言的基本概述 数据定义 数据操纵 数据管理 SQL中的数据查询语句
2
SQL语言的特点
•SQL语言是一种一体化语言,它集数据定义、数据查 询、数据操纵和数据控制功能于一体,简单实用。 •SQL语言是一个非过程化语言,它的大多数语句都是 独立执行、与上下文无关。它不是数据库管理系统, 也不是应用软件开发语言,它只能用于对数据库中数 据的操作。 •SQL语言功能很强,但只有为数不多的几条命令,简 单实用。 • SQL语言可以直接以命令方式交互使用,也可以嵌 入到程序设计语言中。
– 算术表达式
– 字符串常量
【例】显示SC(课程成绩表)中的所有记录, – 函数 、集函数 并将成绩一项乘以0.7。
– 列别名
SELECT 学 号 , 课 程 号 , 成 绩 * 0.7 AS 成 绩 ; FROM SC
21
带条件(WHERE)的查询语句
【格式】SELECT [ALL | DISTINCT] <字段列 表> FROM <表> [WHERE <条件表达式> ]
【说明】 ALL: 表示显示全部查询记录,包括重复记录。
DISTINCT: 表示显示无重复结果的记录。
19
基本查询语句举例
【例】显示STUD(学生信息数据表)中的所 有记录。 SELECT * FROM STUD
命令中的*表示 输出 显示所有的字段,数据来 源是STUD表,表中的内容以浏览方式显示。
INTO
STUD
FROM
15
更新记录命令 【格式】UPDATE <表文件名> SET <字段名 1>=< 表 达 式 > [ , < 字 段 名 2>=< 表 达 式 >…] [WHERE <条件>] 【功能】更新指定表文件中满足WHERE条件子 句的数据。其中SET子句用于指定列和修改的 值 , WHERE 用 于 指 定 更 新 的 行 , 如 果 省 略 WHERE子句,则表示表中所有行。 【例】将成绩表(SC)中,所有课程号为02的成绩各加
13
***用数组方式追加第二条记录***
DIMENSION DATA[8] DATA(1)="011103" DATA(2)="李宁" DATA(3)="女" DATA(5)="电0135" DATA(5)="02" DATA(6)="江西九江" DATA(7)={05/06/85} DATA(8)=.F.
3
表 5.1 SQL 语言的动词 SQL 功 能 数 据定 义 数 据查 询 数 据操 纵 数 据控 制 动 词 CREATE, DROP, ALTER SELECT INSERT,UPDATE DELETE GRANT,REVOKE
4
一、数 据 定 义
表 5.2 SQL 的数据定义语句 操 作 对 象 表 视 图 索 引 操 作 方 式 创 建 CREATE TABLE CREATE VIEW CREATE INDEX 删 除 DROP TABLE DROP VIEW DROP INDEX 修 改 ALTER TABLE
【例】显示STUD(学生信息数据表)中的 所有的学生的姓名,同时能去除重名。
SELECT DISTINCT FROM STUD 姓名;
20
【格式】SELECT [ALL | DISTINCT] <字 【例】显示STUD(学生信息数据表)中的所 有学生的姓名和年龄。 段列表> FROM <表>
SELE 姓名,YEAR(DATE())-YEAR(出生日期) <字段列表> 可以是下列表达式: AS 年龄 FROM STUD
26
(4) 字符串匹配
[NOT] LIKE ‘<匹配串>’
<匹配串>:指定匹配模板
匹配模板:固定字符串或含通配符的字符串
当匹配模板为固定字符串时
可以用 = 运算符取代 LIKE 谓词
用 != 或 < >运算符取代 NOT LIKE 谓词
27
通配符
1.
百度文库
% (百分号)
的字符串
代表任意长度(长度可以为0)
INSERT INTO ARRAY DATA
STUD
FROM
14
***用内存变量方式追加第三条记录***
学号="011202" 姓名="赵娜" 性别="女" 班级名="英0112" 系别代号="03" 地址="广西南宁" 出生日期={02/21/85} 是否团员=.F.
INSERT MEMVAR LIST
CREATE TABLE SC(学号 C(10),课程号 CREATE TABLE STUD ( 学 号 C(10), 姓 名 C(2)) C(10),性别 C(2),班级名 C(10),系别代号
C(2),地址 C(50),出生日期 D,是否团员 L, LIST STRUCTURE 备注 M,照片 G) LIST STRUCTURE
5
一、数据定义
1、定义(创建)表 【格式】CREATE TABLE <表名> (<字段
名 1>< 数 据 类 型 >[ ( < 宽 度 >[ , < 小 数 位 数
>])][完整性约束][NULL | NOT NULL][,
<字段名2>…])
【功能】定义(也称创建)一个表。
6
SQL建表举例
【例】创建一个表STUD(学生信息表),它由 【例】创建一个表SC(课程成绩表),它由以 以下字段组成:学号 (C,10);姓名(C,8); 性别(C,2);班级名(C,10);系别代号 下字段组成:学号(C,10);课程号(C, (C,2);地址(C,50);出生日期 (D); 2)。 是否团员 (L);备注 (M)。
确定范围 确定集合 字符匹配 空 值 多重条件
23
(1) 比较大小
在WHERE子句的<比较条件>中使用比 较运算符=,>,<,>=,<=,!= 或 <>,!>,!<,
逻辑运算符NOT + 比较运算符
[例] 查询所有年龄在20岁以下的学生姓名及其年龄。 SELECT 姓名,年龄 SELECT 姓名,年龄 或 FROM Student WHERE NOT 年龄 >= 20 24
30
例题(续)
匹配模板为含通配符的字符串(续) [例] 查询姓“欧阳”且全名为三个汉字的学 生的姓名。
12
【例】在表文件STUD的末尾追加三条记录。 ***用表达式方式追加第一条记录***
INSERT INTO STUD (学号,姓名,性别,班级名, 系别代号,地址,出生日期,是否团员) VALUES ("011110"," 李 建 国 "," 男 "," 计 0121","01"," 湖 北武汉",{09/28/02},.T.)