5.4关系数据库语言SQLy
第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 职工)
《数据库系统概论》(王珊)第五版课后习题答案
第二章关系数据库1 .试述关系模型的三个组成部分。
答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
2 .试述关系数据语言的特点和分类。
答:关系数据语言可以分为三类:关系代数语言。
关系演算语言:元组关系演算语言和域关系演算语言。
SQL:具有关系代数和关系演算双重特点的语言。
这些关系数据语言的共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。
3 (略)4 .5 . 述关系模型的完整性规则。
在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?答:实体完整性规则是指若属性 A 是基本关系R 的主属性,则属性 A 不能取空值。
若属性(或属性组)F 是基本关系R 的外码,它与基本关系S 的主码Ks 相对应( 基本关系R 和S 不一定是不同的关系),则对于R 中每个元组在 F 上的值必须为:或者取空值(F 的每个属性值均为空值);或者等于S 中某个元组的主码值。
即属性 F 本身不是主属性,则可以取空值,否则不能取空值。
6.设有一个SPJ 数据库,包括S,P,J,SPJ 四个关系模式:1)求供应工程J1 零件的供应商号码SNO:πSno(σJno=‘J1’(SPJ))2)求供应工程J1 零件P1 的供应商号码SNO:πSno(σJno=‘J1’∧Pno=‘P1‘(SPJ))3)求供应工程J1 零件为红色的供应商号码SNO :πSno(πSno,,Pno(σJno=‘J1‘ (SPJ))∞πPno(σCOLOR= ’红‘(P)))4)求没有使用天津供应商生产的红色零件的工程号JNO :πJno(SPJ)- πJNO(σcity=‘天津’∧Color= ‘红‘(S∞ SPJ∞ P)5)求至少用了供应商S1 所供应的全部零件的工程号JNO:πJno,Pno(SPJ)÷πPno(σSno=‘S1‘(SPJ)7.试述等值连接与自然连接的区别和联系。
C语言:5.2 关系数据库语言SQL
据按CR行E和A列TE存储TA。BLE/VIEW/INDEX D视RO图P是T在A基B本LE表/上VI建E立W的/I虚N拟D表EX,并不包
含数AL据T,E不R 分TA配B任L何E 存储空间。
索引为某个表提高查询速度而建立的。
students courses
enrolls
物理独立性:模式/内模式映像是唯一的,它定义了数 据库全局逻辑结构与存储结构之间的对应关系。如果数 据库的存储结构(即内模式)要作修改,那么模式/内 模式映像作相应的修改,才可以使模式保持不变,也不 必改变应用程序,这就保证了数据与程序的物理独立性, 简称数据的物理独立性。
5.4.2 数据库定义
SQL的数据定义功能包括三部分: 定义基本表、视图、索引主要语句有:
students(sno,name,sex,age,nation_place) courses(cno,subject) enrolls(cno,sno,grade)
范围条件查询
Where <表达式1> [NOT] BETWEEN <表达式2> AND <表达式3>,
等价于 表达式1>=表达式2 且 表达式1 <=表达式3
3.将学生表Students的学生住址列addr删除 ALTER TABLE students drop addr
表的删除——把一个基本表的定义连同表示 所有的记录、索引以及由此表导出的所有视 图全部删除,并释放相应的存储空间
DROP TABLE <表名>
注意:基本表一旦被删除,表中的数据以及 建立在该表上 的索引和视图都将自动被删除 掉。因此执行删除基本表的操作一定要格外 小心。
关系数据库标准语言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概述
第4章 关系数据库标准语言——SQL
4.2 SQL的数据定义
4.2.1 基本表的创建、修改和删除 4.2.2 索引的创建和删除
4.2 SQL的数据定义
SQL的数据定义功能包括:定义基本表、定义视图、定义索引。除此之外, 还有定义数据库、定义规则、定义存储过程等。SQL的数据定义语句如表 4-2所示。 表4-2 SQL的数据定义语句
操作方式 操作对象 创建 表 CREATE TABLE 删除 DROP TABLE 修改 ALTER TABLE
视图
CREATE VIEW
DROP VIEW
索引
CREATE INDEX
DROP INDEX
4.2.1 基本表的创建、修改和删除
1.
基本表的创建 一般格式如下:
CREATE TABLE<表名>(<列名><数据类型>[列级完整性 约束条件] [,<列名><数据类型>[列级完整性约束条件]]… [,<表级完整性约束条件>] );
4.2.1 基本表的创建、修改和删除
5. 基本表的删除 随着时间的变化,有些基本表无用了,可将其删除。删除基本表命 令的一般格式为: DROP TABLE<表名>[RESTRICT│CASCADE]; 说明: CASCADE(级联):表示在删除基本表时,不仅表中的数据和 此表的定义将被删除,而且此表上建立的索引、视图、触发器等 有关对象一般也都被删除。 RESTRICT(限制):表示在删除基本表时,只有在没有视图或 约束引用基本表 S 中的列时才能执行,否则拒绝删除。 如执行DROP TABLE S语句后,将基本表S的定义(表框架)连同它 的所有元组、索引以及由它导出的所有视图全部删除,并释放相 应的存储空间。
第3章:关系数据库标准语言SQL
例6:建立一个“课程”表Course. :建立一个“课程” Create table Course (Cno Cpno Char(4) Primary Key, , Char (4) , Cname Char (40) , Ccredit Smallint, , Foreign Key (Cpno) References Course(Cno) );
不论基本表中原来是否已有数据, 不论基本表中原来是否已有数据 , 新增加 的列一律为空值。 的列一律为空值。
例9:将年龄的数据类型改为整型。
ALTER TABLE Student Alter Column Sage Int; ;
修改原有的列定义有可能会破坏已有数据。 修改原有的列定义有可能会破坏已有数据。
group by:此短语将查询结果按某一列或某几 :
列的值进行分组。Having子句用于与group 列的值进行分组。Having子句用于与group by 子句用于与 子句配合使用,用于说明分组条件。 子句配合使用,用于说明分组条件。
查询分类
单表查询 连接查询 嵌套查询 集合查询
CREATE TABLE Student (Sno Ssex Sage Sdept
CHAR(5) NOT NULL UNIQUE,
Sname CHAR(20) UNIQUE, ,
CHAR(1) , INT, , CHAR(15)); ;
修改
Alter table <表名 表名> 表名
Add <新列名> <新列类型> (列宽度)[完整性约束] Drop Column <列名>|<完整性约束名> Alter Column <列名> <列类型> (列宽度) P87例8,例9,例10 , ,
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
《关系数据库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 ” … 的顺序,汉字按内码值顺序,日期按前后顺序,逻辑型数据“假”在 前“真”在后。
关系数据库的结构化查询语言SQL
备注
按固定长度n存储字符串,如果实际字符串长度长小于n,后 面填空格符;如果实际字符串长大于n,则报错。
按实际字符串长度存储,但字符长度不得超过n,则报错。 常见的长整数,字长32位
字长16位 n为十进制数总位数(不包括小数点),d为小数据点后的十进 制位数
一般指双精度浮点数,即字长64位
二进制位串,长度为n,n的缺省值为1
按实际二进制位串存储,但最长不得超过n位,否则报错 格式为“yyyymmdd”, yyyy表示年份,范围为0001~9999;mm 表示月份,范围为1~12;dd表示日,范围为1~31。 格式为“hhmmss”,hh表示小时,范围为0~24;mm为分钟, ss表示秒,范围都是0~59。 格 式 为 “ yyyymmddhhmmssnnnnnn” , 其 中 “ nnnnnn” 表 示 微秒,范围为0~99999,其他符号的意义同上。
2)SQL数据库的体系构造
SQL用户
用户1
用户2
用户3
用户4
外模式
视图V1
视图V2
模式
基本表B1
基本表B2
基本表B3
基本表B4
内模式 存储文件S1
存储文件S2
存储文件S3
存储文件S4
SQL数据库的体系构造的特征:
一个SQL模式是表和约束的集合。 一个表〔TABLE〕是行的集合。每行是列的序列,每
如果关键字由多个属性构成,那么必须使用方法(2)。
SQL事例
CREATE TABLE S
( SNO CHAR(6) PRIMARY KEY, /*第一种方式*/ SNAME CHAR(8) NOT NULL, AGE SMALLINT, SEX CHAR(1), DNAME VARCHAR(12));
关系数据库标准查询语言SQL
SELECT Sname, ‘Year of Birth:’, 2008-Sage ,
ISLOWER(Sdept)
FROM Student ; 结果为:
Sname ‘ Yearof Birth:’ 2008-Sage ISLOWER(Sdept)
李勇 Yearof Birth: 1986
第三章关系数据库标准查询语言sql第三章第三章关系数据库标准语言关系数据库标准语言sqlsql结构化查询语言sqlstructuredquerylanguage是一种介于关系代数与关系演算之间的语言它具有查询操纵定义和控制功能是一种通用的功能极强的标准的关系数据库语言
第三章 关系数据库标 准查询语言SQL
例4:删除关于学号必须取唯一值的约束。 ALTER TABLE Student DROP UNIQUE(Sno);
3.删除基本表
基本格式: DROP TABLE〈表名〉
例5. 删除student表 DROP TABLE Student ;
3.2.2.建立与删除索引
1. 建立索引 基本格式: CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>[,<列名>[〈次序>]]…..); 次序:ASC,DESC 例 6: 为Student, Course, SC 3个表 建立索引,Student
2.选择表中的若干元组
1).消除重复的行 例6.查询所有选修过课的学生学号。
SELECT Sno
FROM SC ;
Sno
Cno Grade
第5-2章Visual FoxPro与SQL概述
SELECT 学生信息.性别, count(学生信息.学号);
FROM 学生信息,课程考试; WHERE学生信息.学号=课程考试.学号;
GROUP BY 性别;
HAVING 数学成绩<60
注: count(学生信息.学号)为函数,统计人数。
10、小结 SQL功能很强,上述功能和举例只是一 小部分,主要目的是“抛砖引玉”,使 大家对SQL有初步了解。有兴趣的话可 以深入学习。
9、分组及使用库函数统计查询 可以将查询结果进行分组,然后再对每个 分组进行统计。SQL使用GROUP BY来确 定分组依据;使用HAVING确定分组条件。 需要说明的是, WHERE 和HAVING都是 用来指定查询条件, WHERE作用于表和 视图,而HAVING作用于分组。例如统计 数学考试不及格的男生、女生人数可用以 下命令:
SQL具有集合特性,即所有SQL语句都可用集 合输入、输出,这种集合特性允许允许一条 SQL 语句的输出结果作为另一条语句的输入。 SQL不要求用户指定数据存储方法, SQL使用 查询优化器,它能决定数据存储的最快方法。 SQL支持多种数据库平台,主要的关系数据库 管理系统都支持SQL语言。所以,用SQL语言 编写的程序都是可以移植的。
8、嵌套查询 可以将若干条SELECT语句嵌套使用,即嵌套查 询。 进行嵌套查询时,要注意各SELECT语句层次, 必要时用“()”引起。例如:查询与学号 “041001”同年出生的同学的学号、姓名和出生 年月,命令如下: SELECT 学号,姓名 ,出生年月 FROM 学生信息 WHERE year(出生年月 ) = (SELECT year(出生年月 ) FROM 学生信息 WHERE 学号=„041001‟) 注: year(出生年月 ) 为函数。
第五章 关系数据库标准语言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表相同
关系数据库标准语言
例:查询考试成绩有不及格的学生的学号。
SELECT DISTINCT 学号 FROM 选课 WHERE 成绩<60; 这里使用了DISTINCT短语,当一个学生有多门课程不及格,他 的学号也只列一次。
(2)确定范围
谓词BETWEEN…AND…和NOT BETWEEN…AND…可以用来查找属 性值在(或不在)指定范围内的元组,其中BETWEEN后是范围 的下限,AND后是范围的上限。 例:查询所有年龄在20岁到23岁之间的学生姓名、系别及其 年龄。
学号 95001
95001
95001
学号
95001 95002
95002
95002 95002
看书上的例子
2、查询满足条件的元组——条件查询
通过WHERE子句来实现, WHERE子句常用的查询条件有: 比较、确定范围、确定集合、字符匹配、空值与多重条件, 其谓词如书上P16所列。
(1)综合统一
SQL语言集DDL、DML、DCL的于一体,包括定义关系模式、录 入数据、建立数据库、查询、更新、维护、数据库重构、数据库安全性 控制等一系列功能。
(2)高度非过程化 用户无需了解存取路径,用户只需提出“做什么”,而不 必指明“怎么做”。存取路径的选择以及SQL语句的操作过 程由系统自动完成。 (3) SQL语言是一种面向集合的语言,每个命令的操作对 象是一个或多个关系,结果也是一个关系。 (4)以统一的语法结构提供两种使用方式——自含式和嵌 入式 自含式语言可以独立使用交互命令,适用于终端用户、 应用程序员和DBA; 嵌入式语言使其嵌入在高级语言中使用,供应用程序员 开发应用程序。
关系数据库标准语言SQL浙大城院数据库
05
数据查询与操作
简单查询
SELECT语句
01
用于从数据库中检索数据,可以指定要检索的列、表以及筛选
条件。
WHERE子句
02
用于指定筛选条件,可以根据列的值进行筛选。
ORDER BY子句
03
用于对查询结果进行排序,可以按照一个或多个列进行升序或
降序排序。
连接查询
INNER JOIN:返回两个表中匹配的行,只返回满 足条件的行。
课程涵盖关系数据库的基本概念、SQL语言 、数据库设计、数据库保护、数据库应用 开发等内容。
实验环境
师资力量
浙大城院配备了专业的数据库实验室,提 供Oracle等主流数据库软件,供学生进行 课程实验和实践操作。
课程组拥有经验丰富的教师团队,其中多 名教师具有博士学位和海外留学背景,为 学生提供优质的教学和指导。
触发器概述
触发器是一种特殊的存储过程,它与 表相关联,当表发生特定事件时自动 执行。
触发器可以用于实现数据的完整性、 安全性等控制。
创建触发器
使用CREATE TRIGGER语句创建触发器。
定义触发器的触发事件和触发时间。
编写触发器的SQL语句,实现特定功能。
管理触发器
01
02
03
使用ALTER TRIGGER语句修改 触发器。
RIGHT JOIN(RIGHT OUTER JOIN):返回右表 中的所有行,以及左表中匹配的行,如果没有匹配 的行,则结果中对应列的值为NULL。
LEFT JOIN(LEFT OUTER JOIN):返回左表中的 所有行,以及右表中匹配的行,如果没有匹配的行, 则结果中对应列的值为NULL。
FULL JOIN(FULL OUTER JOIN):返回左表和右 表中的所有行,如果没有匹配的行,则结果中对应 列的值为NULL。
数据库系统概论:第4章 关系数据库标准语言——SQL语言1
4)删除完整性约束
例:删除“Height”属性列上的CHECK约束。 ALTER TABLE Student DROP
CONSTRAINT Chk1;
27
5)删除属性列
例:删除Student表中新增加的“Height”属性列。 ALTER TABLE Student DROP COLUMN Height;
2
2、SQL语言应用情况
(1) Oracle、Sybase、Informix、Ingres、 DB2、SQL Server、Rdb等大型数据库管理系统 实现了SQL语言; (2) Dbase、Foxpro、Acess等PC机数据库管理 系统部分实现了SQL语言; (3)可以在HTML(Hypertext Markup Language, 超文本标记语言)中嵌入SQL语句,通过WWW访 问数据库; (4)在VC、VB、Delphi、PB也可嵌入SQL语句。
/*外键约束*/ Credit NUMBER);
21
例3:建立一个学生选课表SC,所有约束条件均为表
级完整性约束。
CREATE TABLE SC
( Sno CHAR(8),
Cno CHAR(8),
Grade NUMBER,
PRIMARY KEY(Sno,Cno),
/*主键约束*/
FOREIGN KEY(Sno) REFERENCES Student(Sno)
25
3)增加完整性约束
例:给Student表中“Height”属性列增加一 个CHECK约束,要求学生的身高要超过140厘 米才行。 ALTER TABLE Student ADD CONSTRAINT Chk1 CHECK(Height>140);
关系型数据库标准语言
关系型数据库标准语言关系型数据库标准语言 (SQL) 是管理和操作关系型数据库的标准语言。
SQL 是结构化查询语言 (Structured Query Language) 的缩写。
SQL 常用于关系型数据库的创建、查询、修改和删除操作,许多关系数据库系统都支持 SQL。
SQL 可以使用在各种关系型数据库系统中,包括 Oracle、MySQL、Microsoft SQL Server 等等。
SQL 语言包含以下几个方面:1. 数据库的创建和删除:SQL 可以创建数据库,定义表、列、键和索引等。
还可以删除数据库、表、列、键和索引等。
2. 数据的插入、更新和删除:SQL 可以插入新的数据行,也可以更新现有的数据行。
还可以删除数据行。
3. 数据查询:SQL 可以查询数据库中的数据行。
查询语句可以使用 SELECT 语句,指定要检索的表、列和其他细节。
4. 数据表的操作:SQL 可以对表进行操作。
包括创建、删除、重命名、添加列和删除列等。
5. 数据库的备份和还原:SQL 可以备份和还原数据库及其数据。
1. 数据库的创建和删除创建数据库:在 SQL 中,创建数据库使用 CREATE DATABASE 语句。
以下是一个示例:CREATE DATABASE mydatabase;插入数据:更新数据:UPDATE customersSET address='456 Elm Street', city='Someville', country='Canada'WHERE name='John Smith';删除数据:DELETE FROM customersWHERE name='John Smith';3. 数据查询4. 数据表的操作创建表:CREATE TABLE customers (id INT PRIMARY KEY,name VARCHAR(50),address VARCHAR(255),city VARCHAR(50),country VARCHAR(50));DROP TABLE customers;重命名表:添加列:5. 数据库备份和还原BACKUP DATABASE mydatabase TO DISK='C:\backup\mydatabase.bak';综上所述,SQL 是一种强有力的数据管理语言,可以让用户创建、修改和操作数据库,包括数据库的创建和删除、数据的插入、更新和删除、数据查询、数据表的操作以及数据库的备份和还原等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2)GROUP BY和HAVING的使用
GROUP BY子句是把一个表按某一列(或一些 列)分成许多行组,其中每组在该列(或几列) 上具有相同的值。HAVING指定选择组的条件, 只有符合条件的才列出来 SDEP=‘数学and SAGE<20 (S)
select * from students where sdept='数学' and sage<19; SNO,GRADE( CNO=‘C3’ (reports)) select sno,grade from reports where cno='c03';
或
字符匹配条件查询
语法: Where <列名> [NOT] LIKE <字符串常数>;
说明:这个谓词条表示件查找指定的属性列值与<匹配串 >相匹配的元组。<匹配串>可以是一个完整的字符串,也 可以含有通配符 % 和、_ 、[]或[^],其意义如下: ⑴ % (百分号): 代表一个任意长度的字符串 ⑵ _ (下横线): 代表任意单个字符。 (3)[ ](方括号) 表示与方括中的任意一个字符匹配。 (4)[^],表示不与方括中的任意一个字符匹配.
SQL特点2:两种使用方式、统一种语法结构
SQL语言两种使用方式: 1.是联机交互使用,用户可以在终端键盘上 直接键入SQL命令对数据库进行操作; 2.是嵌入某种高级程序设计语言(例如C, C++,Visual Basic)中使用。
SQL特点3:高度非过程化 用SQL语言只需提出“做什么”,而无需 指明“怎么做”。存取路径的选择以及SQL 语句的操作过程由系统自动完成,大大减 轻了用户负担,有利于提高数据独立性。
连接查询
reports))
子查询
练习 查询数据库课程成绩小于80分的学生学号 和成绩,其语句为:
sno, grade(cname ' 数据库 ' andgrade 80(courses
连接查询
reports))
子查询
练习 查询数据库课程成绩小于80分的学生学号和 姓名,其语句为:
sno, sname(cname ' 数据库 ' andgrade 80(courses
5.4 关系数据库语言SQL
5.4.1 SQL语言概述
5.4.2 数据库定义
5.4.3 数据查询 5.4.4 数据修改
5.4.1 SQL语言概述 SQL特点1:综合统一
SQL语言将数据定义语言DDL、数据操纵语 言DML、数据控制语言DCL的功能集于一体, 可独立完成数据库生命周期中的定义关系模 式、插入数据、建立数据库、查询、更新、 维护、数据库重构、数据库安全性控制等一 系列操作要求。数据库系统投入运行后可随 时地逐步地修改模式,且并不影响数据库的 运行,从而使系统具有良好的可扩展性。
比较条件查询
语法: Where <表达式> <比较算符> <表达式> 比较算符有:=,<,>,>=,<=,!=,!>,!< 例 查询数学系全体学生的学号(sno) 和姓名(sname)。其语句为:
练习1.查询年龄小于19岁的数学系的学生纪录。 练习2:查询选修了课程号为“C3”的学生的 学号和成绩。
例 查询所有不姓刘的学生姓名(sname) 和年龄(sage)。
空值条件查询
语法: Where <列名> IS [NOT] NULL; 例 查询不需要预修课程的课程号 和课程名,其语句为:
练习 查询没有成绩的学生学号(Sno)和课程号 (Cno)。其语句为:
2.多表查询
用子查询和连接查询可以实现 对多个表的查询操作,并把查 询结果组合成一个表。
范围条件查询
语法: Where <表达式1> [NOT] BETWEEN <表达式2> AND <表达式3>, 等价于 表达式1>=表达式2 且 目标列<=表达式3 例 查询年龄在18~20岁(包括18岁和20岁)之间的学生姓 名(sname)及所在的系部(sdept)。其语句为:
枚举条件查询
语法: Where <表达式> [NOT] IN ( <取值清单>); 例 查询信息学院系和计算机学院的学生的姓名 (sname)和性别(ssex)。
关系Courses
关系Reports
关系Students
1.表的建立
命令格式为:
CREATE TABLE <表名> (<列名> <数据类型> [NOT NULL] [, <列名> <数据类型> [NOT NULL]… [其他参数]); 说明:方括[ ]为可选项; 任何列可以为空值,除非列的定义中指定了NOT NULL.
A1, A2,..., An (F ( R1 R2
…
1.单表查询
关系代数 A1, A2,..., An ( S ) 查询句型:SELECT A1,A2,…,An FROM S 1) 查询表中的若干列
例 查询全体学生的姓名(Sname)、学号(Sno)、所在系 (Sdept)。这是一个无条件的投影查询,其语句为:
3.附加子句
1)内部函数
函数 SUM AVG MIN MAX 结果 求某一列的总和(此列值必须是数值) 求某一列的平均值(此列值必须是数值) 求某一列中的最小值 求某一列中的最大值
COUNT
COUNT(*)
对一列中的值计算个数
计算记录个数
可以在操作对象前加上DISTINCT,表示在函数运行前去掉重复值
3.表的删除
命令格式为: DROP TABLE <表名> ; 例 删除Students表。 DROP TABLE Students; 注意:基本表一旦被删除,表中的数据以及 建立在该表上 的索引和视图都将自动被删除 掉。因此执行删除基本表的 操作一定要格外 小心。
4.索引的建立
命令格式为: CREATE [UNIQUE] INDEX<索引名> ON <表名> (<列名> [<ASC or DESC>] [,<列名>[< ASC or DESC >]]…);
例1 建立学生表Students,要求Sno和 Sname不能为空值。
练习1 建立课程表courses,要求cno不 能为空值。
练习2 建立表reports,要求sno,cno不 能为空值。
2.表的修改
命令格式为 ALTER TABLE <表名> [ADD(新列名 类型); //在所有列的右边扩充新列] [DROP <列名>//删除某一列]
students
reports))
select students.sno,sname from students,reports,courses where cname='数据库' and o=o and students.sno=reports.sno and grade<80;
例 为学生选课数据库中的Reports建立索引。按 Sno(学号)升序和Cno(课程号)号降序建唯一索引。其 语句为:
5.索引的删除
命令格式为: DROP INDEX <索引名>;
SQL中的格式:drop index tablename.indexname 例 删除基本表Reports上的Rep_SCno索引。
Select-from-where句型 该句型是根据下面最常用的关系表达式而设计的:
Rm)) 这里R1,R2,…,Rm是关系,F是公式,A1,A2,…,An 是属性。表达式的含义是,首先求出R1,R2,…,Rm诸 关系的自然连接,然后按公式F给定的条件从水平方 向选取行的子集,最后从垂直方向投影出列的子集 A1,A2,…,An,从关系代数表达式演变而来的select基 本句型为 SELECT A1,A2,…,An FROM R1,R2,…,Rm WHERE F
例 找出学生的最小年龄,其语句为: select min(sage) from students; 例 统计所有学生选修的课程门数,其语句为: select count(distinct cno) from reports; 例 计算选修C01号课程的学生平均成绩。 其语句为: select avg(grade) from reports where cno='c01';
DROP INDEX Rep_SCno;
5.4.3 数据查询
SELECT [ALL|DISTINCT]目标列
FROM 表名或视图名 [WHERE 条件表达式] [GROUP BY <列名1> [HAVING<条件表达式>]] [ORDER BY <列名2> [ASC|DESC]];
说明:根据WHERE子句的条件,从FROM子句指定的基本 表或视图中找出满足条件的元组,再按目标列表达式规定 的属性列选出元组中对应的属性值形成结果表。 ALL指定在结果集中可以显示重复行,ALL是默认设置。 DISTINCT指定在结果集中除去重复的行。 如果有GROUP子句,则将结果按<列名1>的值进行分组。 如果GROUP子句带HAVING短语,则只输出满足指定条件 的组。如果有ORDER子句,则结果表还要按<列名2>的值 升序或降序方式排序。
<目标列表达式>中各个列的先后顺序可以与表中的 顺序不一致,用户可以根据应用的需要改变列的显
示顺序。若要查询FROM后面指定的表的全部属性,
可以用*来表示,如查询全体学生的的详细记录,其 SELECT语句可以写成. 例 查询全体学生的详细记录。其语句为: