数据库复习(三)

该博客围绕SQL展开,介绍了SQL数据库的体系结构要点、组成,还阐述了数据定义、查询、更新等操作,涉及基本表连接操作的类型与条件,以及视图相关内容,为了解SQL数据库提供了全面信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL简介

SQL数据库的体系结构要点

一个SQL模式 ( Schema )是表和约束的集合。
一个表由行集构成,一行是列的序列 。
表有三种类型: 基本表、视图和导出表。 
基本表与存储文件间的联系是M:N。每个存储文件与外部存储器上一个物理文件对应。
用户可以用SQL语句对基本表和视图进行查询等操作。在用户看来,两者是一样的,都是表。
SQL用户可以是应用程序,也可以是终端用户

SQL的组成

数据定义语言,即SQL DDL。
用于定义SQL模式、基本表、视图、索引等结构。
数据操纵语言,即SQL DML。
数据操纵分成数据查询和数据更新两类。
其中数据更新又分成插入、删除和修改三种操作。
嵌入式SQL语言的使用规定。
SQL语句嵌入在宿主语言程序中的规则。
数据控制语言,即SQL DCL。
对基本表和视图的授权、完整性规则的描述、事务控制等内容。

SQL的数据定义

1SQL模式的创建
CREATE  SCHEMA〈模式名〉AUTHORIZATION〈用户名〉
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
2SQL模式的撤销
DROP  SCHEMA〈模式名〉[CASCADERESTRICTCASCADE (级联式)方式:执行DROP语句时,把SQL模式及其下属的基本表、视图、索引等所有元素全部撤消。
RESTRICT (约束式)方式:执行DROP语句时,只有当SQL模式中没有任何下属元素时,才能撤消SQL模式,否则拒绝执行DROP语句。 
注意:
“SQL模式”这个名词学术味太重,比较抽象,所以在大多数DBMS中不愿采用这个名词,而是采用“数据库”这个名词。
也就是大多数系统中把“创建SQL模式”称为“创建数据库”,语句采用 CREATE DATABASE…字样。
3、自定义类型
CREATE  DOMAIN  PERSON_NAME  CHAR(8)4、基本表的创建
CREATE   TABLE  基本表名
(列名   类型  [ 列级完整性约束条件 ],
    ……
   [表级完整性约束条件],
    ……)

5、完整性约束主要有3种子句:
主键子句:PRIMARY KEY
外键子句:FOREIGN KEY
检查字句:CHECK

6、基本表结构的修改
(1)增加新的列用“ALTERADD …”语句,其句法如下:
	ALTER  TABLE  <基本表名>  ADD  <列名> <类型> 
(2)删除原有的列用“ALTERDROP …”语句,句法如下:
    ALTER  TABLE  <基本表名>  DROP  <列名>CASCADERESTRICT]
     此处CASCADE方式表示:在基本表中删除某列时,所有引用到该列的视图和约束也要一起自动地被删除。
    而RESTRICT方式表示在没有视图或约束引用该属性时,才能在基本表中删除该列,否则拒绝删除操作。
(3)修改原有列的类型、宽度用“ALTERMODIFY …”语句,句法如下:
    ALTER  TABLE  <基本表名>  MODIFY  <列名> <类型>
7、基本表的撤销
 DROP  TABLE  <基本表名>CASCADERESTRICT8、索引的创建
CREATEUNIQUEINDEX  <索引名> ON  <基本表名><列名表>9、索引的撤销
 DROP  INDEX  <索引名>

SQL的数据查询

SELECT语句的完整句法:
 SELECT <目标表的列名或列表达式序列>
 FROM <基本表名和(或)视图序列>
 [ WHERE <行条件表达式>]
 [GROUP BY   <列名序列>
        [HAVING  <组条件表达式>]]
 [ORDER BY  <列名[ASC|DESC]>,…] 

SELECTFROMWHERE 句型:
SELECT  A1,…,An --属性列
FROM  R1,…,Rm --数据源·
WHERE  F    --条件

F中使用的运算符
1.算术比较运算符:<<=>>==<>或!=
2.逻辑运算符:ANDORNOT
3.集合成员资格运算符:INNOT IN
4.谓词:EXISTS(存在量词)ALLSOMEUNIQUE
5.聚合函数:AVG,MIN,MAX,SUM,COUNT
6.嵌套:F≡(SELECT语句)
SELECT查询结果运算符
UNION()INTERSECT()EXCEPT()

SELECT语句使用时的3种写法:
连接查询
嵌套查询
带存在量词的嵌套查询

“元组 [NOT] IN(集合)”,表示元组在集合内。

带有SOMEANY)或ALL谓词的子查询
谓词语义
SOME(ANY):任意一个值
ALL:所有值

EXISTS谓词
存在量词 
带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。
若内层查询结果非空,则外层的WHERE子句返回真值
若内层查询结果为空,则外层的WHERE子句返回假值
由EXISTS引出的子查询,其目标列表达式通常都用* ,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义

SELECT [ ALL|DISTINCT ] <列名或列表达式序列> | *
ALL:默认,保留重复行
DISTINCT:去除重复行

列和基本表的改名操作
结构:“旧名 AS 新名”

常用的比较运算符
算术比较判断:<<=>>==<>或!=
之间判断:[NOT] BETWEENAND…
相同判断: [NOT] LIKE
空值判断:IS [NOT] NULL
之内判断:[NOT] IN
限定比较判断:ALL|SOME|ANY
存在判断: [NOT] EXISTS
唯一判断: [NOT] UNIQUE

字符串的匹配操作
匹配操作符:[NOT] LIKE
匹配串为含通配符的字符串
%:与零个或多个字符组成的字符串匹配
_:与单个字符匹配
SQL允许使用“ESCAPE”定义转义字符。

用户用WITH子句定义一个临时视图(即子查询),置于SELECT语句的开始处,而临时视图本身是用SELECT语句定义的。
	WITH  RESULT(AVG_SCORE)AS
               SELECT  AVG(SCORE)
               FROM  SC 
              GROUP BY S#
  		SELECT  S#
		 FROM SC, RESULT
		GROUP BY S#
 			HAVING AVG(SCORE)>=ALL(AVG_SCORE)

基本表的连接操作

连接类型

INNER JOIN内连接
LEFT OUTER JOIN左外连接
RIGHT OUTER JOIN右外连接
FULL OUTER JOIN完全外连接

连接条件

NATURAL应写在连接类型的左边
ON等值联接条件应写在连接类型的右边
USING(A1, A2, …, An)应写在连接类型的右边

SQL的数据更新

1.单元组的插入
INSERT  INTO  基本表名 [(列名表)] VALUES (元组值)
2.多元组的插入
 	    INSERT  INTO  基本表名 [(列名表)]
 		VALUES (元组值)(元组值) ,……, (元组值)
3.查询结果的插入
 	    INSERT  INTO  基本表名 [(列名表)]SELECT查询语句>
4.表的插入
 	    INSERT  INTO  基本表名1 [(列名表)]TABLE  基本表名2
5.数据删除
DELETE  FROM  基本表名
		[WHERE 条件表达式]
6.数据修改
UPDATE 基本表名
	 SET 列名=值表达式[,列名=值表达式…]ROW=(元组)
	[WHERE 条件表达式]

视图

虚表,是从一个或几个基本表(或视图)导出的表。
只存放视图的定义,不存放视图对应的数据。
基本表中的数据发生变化,从视图中查询出的数据也随之改变。
1.视图的创建
		CREATE VIEW <视图名><列名序列>AS <SELECT 查询语句>
2.视图的撤销
DROP VIEW 视图名

 如果视图是从单个基本表只使用选择、投影操作导出的,并且包含了基本表的主键,
 那么这样的视图称为“行列子集视图”,并且可以被执行更新操作。
 Ks允许用户更新的视图在定义时必须加上“WITH CHECK OPTION”短语。

参考博客

数据库复习(一)
数据库复习(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值