【数据库原理及应用(第四版|微课版) 第二章 关系数据库】
符号 | 意义 | 等级 |
---|---|---|
⭐️ | 重点 | 2 |
✅ | 掌握 | 3 |
❗ | 难点 | 1 |
🌈 | 概念解释 | 4 |
3.1🌈SQL语言特点
SQL既有关系代数特点又有关系演算特点的查询语言。
SQL Structured Query Language 结构化查询语言,是一个通用的、功能极强的关系数据库的标准语言。
SQL的功能
- 数据定义
- 数据查询
- 数据更新
- 视图定义
- 数据安全性
SQL语言的特点
- 综合统一
- 高度非过程化
- 面向集合的操作方式
- 以同一种语法结构提供两种使用方式交互式和嵌入式
- 语法简洁、易学易用
SQL四大功能
SQL功能 | 动词 |
---|---|
数据查询(Query) | SELECT |
数据定义(definition) | CREATE、DROP、ALTER |
数据操控 (Manipulation) | INSERT 、UPDATE 、DELETE |
数据控制(Control) | GRANT、 REVOKE |
数据库语言的两种交互方式:
- 交互式:用户通过计算机终端设备直接向数据库系统输入数据库语言语句,向数据库系统请求服务。
- 嵌入式:把数据库语言嵌入到某个程序设计语言中,作为这个程序设计语言的子语言使用。程序员可以在宿主语言程序的任何地方使用数据库语言语句,向数据库系统提出操作请求。
SQL语言中的基本概念
基本表:
是独立存在的表,不是有其他表导出的。一个关系对应一个基本表,一个或多个基本表对应一个存储文件,一个表可以带若干个索引。
视图:
是一个虚拟的表,是从一个或几个基本表导出的表。他本身并不全部放在数据库中,数据库中只存放视图的定义,但是并不存放视图对应的数据,这些数据存放在导出视图的基本表中。当基本表中的数据发生改变时,从视图中查询出来的数据也随之改变。
存储文件:
逻辑结构组成了关系数据库中的内模式物理结构,用户不可见。
3.2✅数据库的创建和使用
创建
CREATE DATABASE 数据库名称
[ON
[FILEGROUP文件组名称]
(
NAME-数据文件逻辑名称,
PILENAME=‘路径+数据文件名’
SIZE=数据文件初始大小,
MAXSIZE=数据文件最大容量,
FILEGROWTH=数据文件自动增长容量,
)]
[LOG ON
NAME=日志文件逻辑名称,
FILENAME='路径+日志文件名
SIZE=日志文件初始大小,
MAXSIZE=日志文件最大容量,
PILEGROWTH=日志文件自动增长容量,
)]
[COLLATE 数据库校验方式名称]
[FOR ATTACH]
3.3✅数据表的创建和使用
数据类型(SQL Server)
定义约束SQL Server的数据完整性机制主要包括:⭐约束、默认、规则、触发器和存储过程
创建数据表
create table 表名
修改数据表
alter table 表名 add/alter/drop 列名/约束/约束
删除数据表
drop table 表名
3.4⭐️数据表的查询
SELECT 子句:指定要显示的属性列
FROM子句:指定的查询对象、基本表或视图
WHERE子句:指定查询条件
GROUP BY子句:对查询结果按照指定列的值分组,该属性列值相等的元组为一个组
HAVING短语:满足条件的组输出
OEDER BY子句:对查询结果表按照指定列值升序或降序排列。
连接查询
一、连接谓词
连接谓词在WHERE子句中使用比较运算符给出连接条件,对多个表连接,同时在FROM子句中要指定所连接的多个表。为了区分多个表中同样的列字段,我们使用“ . ”来表示哪个表的哪个字段(例如classes.classNO则表示classes表的classNO列)。
格式如下:
(表名1.) 列名1 <比较运算符> (表名2.) 列名2
这里我们只讲等值连接,即表之间是通过比较运算符“=”连接的,而非等值连接即是通过非等号连接。
另外当在目标列中去掉相同的字段名,即为自然连接;而如果将同一个表进行连接称为自连接。
二、JOIN连接
另一种方式则是使用关键字JOIN连接,其表示方式是用在FROM子句当中。这里的连接也分很多种:
(一)内连接
内连接按照JOIN…ON中ON所指定的连接条件合并两个表,返回满足连接条件的行,由于内连接是系统默认的,可以省略INNER关键字。内连接可以实现多个表的连接。
格式如下:
FROM 表1 JOIN 表2 ON <连接条件>
我们来看一个题。
例、根据以下两个表的信息,使用T-SQL语句查询所有员工有订单的销售员的信息表,采用内连接。
SQL语句:
USE Sales
SELECT Seller.,Orders.
FROM Seller JOIN Orders ON Seller.SaleID=Orders.SaleID
(二)外连接
首先我们要知道,外连接只能对两个表进行。
外连接跟内连接的差别在于内连接只有满足连接条件的行才能输出结果,而外连接输出结果不仅包括满足连接条件的行,还包括相应表的所有行。
这里外连接分为三种:
名称
作用
左外连接
输出结果不仅包括满足连接条件的行,还包括左表的所有行
右外连接
输出结果不仅包括满足连接条件的行,还包括右表的所有行
完全外连接
输出结果不仅包括满足连接条件的行,还包括两个表的所有行
(三)交叉连接
交叉连接,只做了解,即对两个表进行笛卡尔积,即第一个表的行数乘以第二个表的行数(笛卡尔积可以表示为一个二维表,表中每行对应一个元组,每列的值来自一个域)。
可以了解一下笛卡尔积
3.5✅数据表的操纵
添加一行新记录
INSERT INTO <表名> [(<列名1>[,<列名2>…])] VALUES(<值>)
exp:insert into table1 (sno,sn,major) values(2024,张三,计算机技术与科学)
添加多行语句
insert into table 列名/子查询
修改数据
update table set 更新数据值 where 条件
删除数据
delete from table where 条件
3.6✅视图与索引
建立索引
建立索引可以有效的提高查询的速度。
格式:CREATE 类型 INDEX 索引名 ON 表名 列名
功能:在一个指定关系的指定属性上建立一个索引
UNIQUE:表示此索引的每一个索引值只对应唯一的数据记录。//唯一索引
CLUSTER:表示要建立的索引是聚簇索引(NONCLUSTER为非聚簇索引)
聚簇索引也称为聚集索引,聚类索引,簇集索引,聚簇索引确定表中数据的物理顺序。聚簇索引类似于电话簿,后者按姓氏排列数据。由于聚簇索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚簇索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。汉语字典也是聚簇索引的典型应用,在汉语字典里,索引项是字母+声调,字典正文也是按照先字母再声调的顺序排列。
修改索引
ALTER INDEX
格式:ALTER INDEX <旧索引名> RENAME TO <新索引名>
功能:给指定索引重新命名
例:将CS表中的SCno索引名改成SCSno
ALTER INDEX SCno RENAME TO SCSno
删除索引
格式:DROP INDEX <索引名>
功能:删除一个指定的索引,在删除索引时,系统会自动从数据字典里删除有关索引的描述。
例:删除Student表中的Stusname索引
DROP INDEX Stusname;
查看索引
EXEC 索引名 表名
数据字典
数据字典是关系数据库管理系统内部的一组系统表,记录数据库中的所有定义信息。
数据字典包含了关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限和统计信息等。
关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典标准的相应信息。
参考资料
- 数据库原理及应用(第四 微课版)陈志泊 主编
- SQL语言之定义约束
- 二琳爱吃肉
- w3c
- chatgpt3.5
作者的话
- 感谢参考资料的作者/博主
- 作者:不会Debug
- 版权所有,转载请注明出处,谢谢~
- 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
- 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
- 文章在认识上有错误的地方, 敬请批评指正
- 望读者们都能有所收获