第五章:

01:用户自定义完整性的时候, 我们可以在一个属性后面 同时加上 not null 和 unique 和 check语句。

并且 他们之间并没有 符号 而是空格隔开。

02:我们 针对 一个属性 定义完整性约束的时候 ,  一般仅仅针对当前的一个属性  来写  check子句, 当然了 写的时候也可以包含 其他属性,但是一般不建议这么做,因为我们可以使用  针对元素 定义的 check子句。

03:当我们使用 check 子句 定义约束的时候,

我们可以使用

in

加减乘除操作符

Between ... and

逻辑操作符 and  or

比较大小的操作符

Like     not like

%  和  _ 通配符

04:当我们 使用 完整性约束命名子句  的时候  如何定义 一个字段 唯一? 如何定义一个字段 非空呢? 书上没有说明,但是写法如下:

CREATE TABLE student(

sno CHAR(9) ,

sname CHAR(20) ,

CONSTRAINT csn UNIQUE(sname , sno) ,

CONSTRAINT css CHECK( sno IS NOT NULL) ,

ssex CHAR(4) ,

sage SMALLINT ,

sdept CHAR(20) ,

ssalary SMALLINT ,

sfee INTEGER ,

CONSTRAINT csno PRIMARY KEY (sno),

CONSTRAINT cssex CHECK(ssex IN ('男', '女'))

);

//此时 unique 跟 primary key 是一个级别 使用括号 将字段填入其中,就表示 填入其中的字段 是唯一的。

//当我们使用 完整性约束子句(constraint) 的时候 结合使用 check 子句 ,且在子句中 填入 不能为空 的 字段的名字  后面 写上 is not null 子句。

02:unique 和 primary key是一个级别的  我们依然单独的一行的使用 unique(属性,属性)的形式。也可以直接在一个 属性的后面直接写上 unique 的形式。 如果是第一种写法的话 ,就是一个表级别的约束条件 , 第二种是属性级别的约束条件。但是not null 只可以是 属性级别的约束。

CREATE TABLE student(

sno CHAR(9) ,

sname CHAR(20) ,

CONSTRAINT css CHECK( sno IS NOT NULL) ,

ssex CHAR(4) ,

sage SMALLINT ,

sdept CHAR(20) ,

ssalary SMALLINT ,

sfee INTEGER ,

UNIQUE(sno , sname),

PRIMARY KEY (sno),

CONSTRAINT csno PRIMARY KEY (sno),

CONSTRAINT csn UNIQUE(sname , sno) ,

CONSTRAINT cssex CHECK(ssex IN ('男', '女'))

);

03:mysql不支持 删除 constraint 约束 ,因此下面的写法是错误的。

ALTER TABLE student DROP CONSTRAINT csno

但是oracle支持 这样的写法。

04:当表 跟 表之间存在外键约束关系的时候,要删除其中一张表的时候 , mysql会提示删除不成功的提示, 此时要执意删除的话,  先关掉外键约束,然后删除指定的表,然后在打开外键约束 ,  那么操作之后, 存在外键约束的表 不会因为 另一张被删除的表被删除,而外键就不存在了,此时另一张表的外键的值 保持不变 跟之前的一样。这个是mysql的情况。

05:Select短语中也可以有子查询,这个子查询的执行思路的底层 依然还是按照固定的执行思路:先根据 where中的条件,然后带上这些个条件 去检索 from表中合适的元组组合,然后预备返回组合元组的所有的属性,此时具体返回组合元组的那个属性,视select写法的具体情况而定,也就是说select是针对每个符合条件的组合元组的,返回一条针对一条,返回一条针对一条。

那么此时在select短语中使用子查询的话,依然是接着上边的思路执行的。所以说大多数是 相关查询 ,也有少数情况是不相关查询。比如:

SELECT s.student_id,s.student_name,(SELECT class_name FROM t_class c WHERE c.class_id=s.class_id) FROM t_student s GROUP BY s.student_id;//相关

SELECT sno , sname , (SELECT 1/2)AS val  FROM student;// 不相关

//但是它要求返回的必须是一个值,而不是一个集合,也不是一个元组,因为要符合select的检索的规范:只可以输出一个值 要不后面如何使用as 起一个别名呢!

//select子句的意思就是选择性的输出的意思;

Where 子句中可以有子查询:

比如使用 in 谓词的时候,后面返回的是 不重复 的 单值的集合。不可以是元组的集合。是不是相关查询 还是不相关查询 视具体情况而定。

使用 >  =  <  <> 符号后面都可以用子查询 ,但是要求返回的是一个具体的值,而不是一个元组,或者多个值 ,仔细体会 。是相关查询 还是不相关查询 视具体情况而定。

//但是它要求返回的必须是一个值,而不是一个集合,也不是一个元组,要满足 比较运算符的规范(只可以跟一个值比较)。

Exists 十有八九就是 相关查询, 子查询依赖父查询。

having子句也 可以有子查询:

HAVING子句 此时子查询返回的都是 单行单列数据,主要是配合 聚合统计函数的使用。

此时having子句中的 子查询是相关查询 还是 不相关查询  视具体情况而定,都有可能。

//但是它要求返回的必须是一个值,而不是一个集合,也不是一个元组,要满足 having后面跟的聚合函数 的规范(只可以跟一个值比较)。

From子句也可以有子查询,这个一定不是 相关性查询的。因为没办法写成相关性查询。

oracle数据库王珊,数据库系统概论 王珊 教材部分总结相关推荐

  1. (数据库系统概论|王珊)第七章数据库设计-第一节:数据库设计概述

    注意:此部分内容和软件工程的知识点重合较多,更多请点击[免费分享]软件工程核心知识点 本章较分散,各节导航如下 (数据库系统概论|王珊)第七章数据库设计-第二节:需求分析 (数据库系统概论|王珊)第七 ...

  2. (数据库系统概论|王珊)第四章数据库安全性-第一节:数据库安全性概述

    文章目录 一:数据库的不安全因素 二:安全标准简介 (1)信息安全标准的发展简史 (2)TCSEC/TDI A:基本内容 B:安全级别划分 在(数据库系统概论|王珊)第一章绪论-第一节:数据库系统概论 ...

  3. 数据库系统概论王珊编写的第三章学生-课程数据库

    一.前言 因为考研需求,我于是将数据库系统概论王珊编写的第三章学生-课程数据库的三张表实现了一下,为了简化操作,我没有实现部分外码功能. 我用的是MySQL实现的 二.正文 /*3. 创建学生表Stu ...

  4. (数据库系统概论|王珊)第三章关系数据库标准语言SQL:习题

    文章目录 名词解释 简答题 应用题 名词解释 视图:视图是一个虚表,其本质就是一条SELECT语句,而查询结果被赋予了一个名字,也即视图名字.或者说视图本身不包含任何数据,它只包含映射到基表的一个查询 ...

  5. (数据库系统概论|王珊)第六章关系数据理论-第一节:为什么要研究关系数据理论

    文章目录 一:概念回顾:关系模式 二:数据依赖 三:一个例子:不遵循关系数据理论导致的问题 一句话,研究关系数据库理论就是为了设计出合适的关系模式,也即合适.高效的表 一:概念回顾:关系模式 相关文章 ...

  6. (数据库系统概论|王珊)第三章关系数据库标准语言SQL-第四节:数据查询

    文章目录 ★★★★★SELECT语句格式★★★★★ 一:单表查询(查询时只涉及一张表) (1)选择表中的若干列 A:查询指定列 B:查询全部列 C:查询经过计算的值 ①:算数表达式 ②:字符串常量及函 ...

  7. (数据库系统概论|王珊)第三章关系数据库标准语言SQL-第二、三节:数据定义

    文章目录 零:有关说明 (1)安装数据库与建表 (2)一些语法说明 一:模式的定义和删除(SCHEMA) (1)定义模式 (2)删除模式 二:基本表的定义.删除和修改(TABLE) (1)定义基本表 ...

  8. (数据库系统概论|王珊)第二章关系数据库-第一节:关系数据结构及其形式化定义

    文章目录 一:关系 (1)域 (2)笛卡尔积 (3)关系 A:基本概述 B:码相关概念 C:关系的三种类型 二:关系模式 三:关系数据库 (1)基本概念 (2)关系数据库的型与值 前面说过,数据模型由 ...

  9. (数据库系统概论|王珊)第九章关系查询处理和关系优化-第三节:查询优化之代数优化

    注意: 关系代数有关符号,大家可能又不熟悉了,点击跳转:(数据库系统概论|王珊)第二章关系数据库-第四节:关系代数 文章目录 一:关系代数表达式等价变换规则 (1)连接.笛卡尔积.并.交的交换律 (2 ...

最新文章

  1. 《Kotlin项目实战开发》第1章 Kotlin是什么
  2. 六条规则让你的ML模型部署的更快
  3. mysql和oracle表的互导_oracle到mysql的导数据方式(适用于任意数据源之间的互导)...
  4. vsftpd实现的FTP服务
  5. java函数ao活动对象_[AO] AO全面介绍
  6. File类创建删除功能的方法
  7. 解题报告——试题 基础练习 分解质因数——31行代码AC
  8. 4.SharePoint的权限
  9. 125_Power BI 中 DAX 的性能测试
  10. CircularFifoQueue队列API
  11. 云服务器上搭建hadoop伪分布式环境
  12. Coursera ML 逻辑回归与正则化
  13. 437.路径总和III (力扣leetcode) 博主可答疑该问题
  14. STM32固件升级之 hypertrm(超级终端)使用(三)
  15. 图像处理之前景检测(三)之码本(codebook)(主要为代码升级)
  16. Ubuntu12.10 GT650M 混合显卡/双显卡驱动安装
  17. 中天科技(600522)
  18. 一仓库失窃,四管理员被传讯_如何找到丢失或失窃的Android手机
  19. xp java安装_xp下安装jdk8
  20. web聊天室项目开发过程及重难点整理

热门文章

  1. shell脚本:监控MySQL服务是否正常
  2. 项目组网技术方案实施要点
  3. C++ 11 Lambda表达式
  4. 复杂高端木马USB窃贼出现
  5. TY_GASPX SQL
  6. 计算机专业术语全称及含义整理
  7. java ide eclipse,java IDE Eclipse
  8. tortoiseSVN svn+ssh
  9. JavaScript创建对象:深入理解编程原理
  10. document.getelementbyid().value与innerHTML使用场景对比,别再搞错了兄嘚