第4章 中级SQL

news2024/11/18 18:24:35

第4章 中级SQL

考试范围: 4.1-4.7

考试题型: 计算题

考试内容:

连接类型(与第3章合并考察)

视图的定义与使用

事务(与17-19章合并考察)

完整性的概念

SQL中如何定义、修改各类完整性(Primary key, foreign key, check, unique, not null, default,添加、删除字段、添加删除约束、添加删除索引等)

SQL数据类型和模式(会用)

授权(grant\revoke\查看授权情况)

连接类型(与第3章合并考察)

  • Natural Join

    • 自然联接匹配所有公共属性具有相同值的元组,并且仅保留每个公共列的一个副本

      select * from student join takes on student.ID  = takes.ID
      
  • Outer Join

    • 计算联接,然后将一个关系中与另一个关系中的元组不匹配的元组添加到联接结果
      在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

视图的定义与使用

  • 视图由查询定义

    • create view v_name as < query expression >;
      
    • 视图定义导致表达式的保存

  • 视图是一种“虚拟关系”

    --没有薪水的教师视图
    create view faculty as
    select ID, name, dept_name
    from instructor;
    
    --创建部门工资总额视图
    create view departments_total_salary(dept_name, total_salary) as
       select dept_name, sum (salary)
       from instructor
       group by dept_name ;
    
    --删除视图
    drop view departments_total_salary;
    
    
    --使用其他视图定义的视图
    create view physics_fall_2017 as
    select course.course_id, sec_id, building, room_number
    from course, section
    where course.course_id = section.course_id
          and course.dept_name = 'Physics'
          and section.semester = 'Fall'
          and section.year = '2017';
          
    create view physics_fall_2017_watson as
      select course_id, room_number
      from physics_fall_2017
      where building= 'Watson';
    
    

在这里插入图片描述

  • Materialized Views(实体化视图)

    • 某些数据库系统允许存储视图关系,但它们确保,如果视图定义中使用的实际关系发生更改,视图将保持最新。

      --视图的更新:没有薪水的教师视图
      create view faculty as
      	select ID, name, dept_name
      	from instructor ;
      
      insert into faculty values ('30765', 'Green', 'Music');
      results in:
      insert  ('30765', 'Green', 'Music', null) into instructor,
      or this insertion is rejected
      
      

事务(与17-19章合并考察)

在这里插入图片描述

在这里插入图片描述

完整性的概念

  • Integrity constraints ensure that authorized changes to the database do not violate consistency 
    完整性约束确保对数据库的授权更改不会违反一致性
    
  • Types of integrity constraints:
    primary key 
    foreign key
    not null
    unique
    check (< predicate >)
    assertion
    
    完整性约束的类型:
    主键
    外键
    不为空
    独特
    检查(<谓词>)
    断言
    
  • 示例

    --创建表中的完整性约束
    create table student (
        ID            char(5),
        name          varchar(20) not null,
        dept_name     varchar(20),
        tot_cred      numeric(3,0),
        primary key (ID),
        foreign key (dept_name) references department) ;
    
    
    
    

SQL中如何定义、修改各类完整性(Primary key, foreign key, check, unique, not null, default,添加、删除字段、添加删除约束、添加删除索引等)

--Primary key, foreign key
create table takes (
    ID              varchar(5),
    course_id       varchar(8),
    sec_id          varchar(8),
    semester        varchar(6),
    year            numeric(4,0),
    grade           varchar(2),
    primary key (ID, course_id, sec_id, semester, year),
    foreign key (ID) references  student,
    foreign key (course_id, sec_id, semester, year) references section ) ;


--检查子句:确保学期是秋季,冬季,春季或夏季之一
create table section (
    course_id varchar (8),
    sec_id varchar (8),
    semester varchar (6),
    year numeric (4,0),
    building varchar (15),
    room_number varchar (7),
    time slot id varchar (4), 
    primary key (course_id, sec_id, semester, year),
    check (semester in (’Fall’, ’Winter’, ’Spring’, ’Summer’)));


--完整性中的级联操作:当违反参照完整性约束时,正常过程是拒绝导致冲突的操作。
create table course (
    …
    dept_name varchar(20),
    foreign key (dept_name) references department
    on delete cascade
    on update cascade,
    . . . 
) ;

--为约束指定名称:约束名称在我们要删除约束时很有用,系统自动分配的约束名称可以在Oracle系统表USER_CONSTRAINTS中找到

	salary numeric(8,2), constraint minsalary check(salary>29000),
	--使用 ALTER 语句删除约束
	alter table instructor drop constraint minsalary;


--禁用约束
	ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;
--启用约束
	ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;


--Assertions 断言:断言是一个谓词,表示我们希望数据库始终满足的条件
	create assertion <assertion-name> check <predicate>
	
create assertion credits_earned_constraint check
   (not exists (
         select ID
         from student
         where tot_cred <> (select coalesce(sum(credits),0)
			        from takes natural join course
            		where student.ID = takes.ID
                	and grade is not null 
                    and grade <> ‘F’) ;



  • SQL 中的索引定义

    • 关系属性上的索引是一种数据结构,它允许数据库系统有效地查找关系中具有该属性指定值的那些元组,而无需扫描关系的所有元组

    • 索引创建

      create index <index-name> on <relation-name> (<attribute-list>);
      
      --示例
      create table student	
      (ID varchar (5),
       name varchar (20) not null,
       dept_name varchar (20),
       tot_cred numeric (3,0) default 0,
       primary key (ID))
       
      create index studentID_index on student(ID);
      The query:
      select * from student where ID = '12345;
      --可以通过使用索引查找所需记录来执行,而无需查看学生的所有记录
      
      

SQL数据类型和模式(会用)

  • 时间数据类型:date、time、timestamp(时间戳)
    
    类型转换函数:cast
    	select cast(ID as numeric(5)) as inst_id from instructor order by inst_id;
    	
    合并函数:接受任意数量的参数,所有这些参数都必须属于同一类型,并返回第一个非空参数
    	select ID, coalesce(salary, 0) as salary from instructor;
    	
    大对象类型:binary large object (blob)、character large object (clob)
    	E.g. image blob(10MB)、book_review clob(10KB)
    
    用户定义类型
    create type Dollars as numeric (12,2) final;
    create table department(dept_name varchar (20),building varchar (15),budget Dollars);
    
    
    
    

授权(grant\revoke\查看授权情况)

  • -数据库各部分的授权形式:
    	读取授权
    	插入授权
    	更新授权
    	删除授权
    
    -修改数据库架构的授权形式:
    	索引授权 - 允许创建和删除索引
    	资源授权 - 允许创建新关系
    	更改授权 - 允许在关系中添加或删除属性
    	删除授权 - 允许删除关系
    
    
  • SQL 中授予/撤销权限

--授权语句
grant <privilege list> on <relation or view > to <user list>


--撤销语句
revoke <privilege list> on <relation or view> from <user list>

--<user list> is:
--a user-id
--public, which allows all valid users the privilege granted
--A role


--示例:
grant select on department to Amit, Satoshi ;
grant update(budget) on department to Amit, Satoshi ;
revoke select on department from Amit, Satoshi ;
revoke update(budget) on department from Amit, Satoshi ;

  • 角色

    --可以向用户以及其他角色授予角色
    create role <name> --创建角色
    grant  <role> to <users> --将“用户”分配给角色
    
    	create role teaching_assistant;
    	grant teaching_assistant to instructor;
    	--教师继承teaching_assistant的所有权限
    
    
  • 特权转让

    • 使用授权选项(with grant option):允许被授予权限的用户将权限传递给其他用户。

      grant select on department to Amit with grant option ;
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/107137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVS低代码多账号统一登录介绍

登录操作演示 统一登录能力 JVS整个系统认证采用Oauth2 认证方案&#xff0c;目前支持目前登陆方式如下&#xff1a; 登录方式 说明 账号密码登录 基于JVS的用户名用户密码登录 手机动态验证码登录 基于JVS用户绑定的手机号动态验证码登录 微信扫码关注公众号登录 基于…

web前端-javascript-Math对象(说明和方法,它封装了数学运算相关的属性和方法)

文章目录Math 对象1. 说明2. 方法1) abs()2) Math.ceil()3) Math.floor()4) Math.round()5) Math.random()6) max 和 min7) Math.pow(x,y)8) Math.sqrt()Math 对象 1. 说明 Math 和其他的对象不同&#xff0c;它不是一个构造函数它属于一个工具类不用创建对象&#xff0c;它里…

仿真设计|基于51单片机的简易抢答器

目录 前言 具体实现功能 设计介绍 51单片机简介 设计方案 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部资料&#xff08;压缩文件&#xff09; 前言 全部资料包括程序(Keil5)、protues仿真(protues8.7)、仿真视频、…

教育领域知识图谱

教育领域开源的知识图谱实体 在教育领域,有许多开源的知识图谱实体可供使用。下面列出了一些例子: DBpedia:这是一个知识图谱,由 Wikipedia 的内容构建而成。DBpedia 中包含了许多关于人、地方、事物和概念的实体,并且这些实体都具有相关的属性和关系。 Wikidata:这是一个…

LeetCode算法之--二叉树系列

点赞收藏&#xff0c;以防遗忘 本文【程序大视界】已收录&#xff0c;关注免费领取互联网大厂学习资料&#xff0c;添加博主好友进群学习交流&#xff0c;欢迎留言和评论&#xff0c;一起交流共同进步。 【一】前言 二叉树也是面试算法的常见题型&#xff0c;通常程序会自定义…

Go秒杀系统——RabbitMQ核心概念与工作模式

前言&#x1f4ac; Windows 上的 RabbitMQ 被我卸载了&#xff0c;在 macOS 上再安装一下&#xff0c;采用 brew install 还是挺方便的。 很好奇微软的程序员写代码用的是 Windows 操作系统吗&#xff1f;感觉有点不方便&#xff0c;但用 macOS 岂不是太丢撵了。 一、macOS 安装…

APS排程软件提升电子产品生产企业的服务效益

"3C产品"&#xff0c;就是计算机、通信和消费类电子产品三者结合&#xff0c;也称"信息家电"。由于3C产品的体积一般都不大&#xff0c;所以往往在中间加一个"小"字&#xff0c;故往往统称为"3C小家电"。 据报道&#xff0c;某一科技公…

使用DoraCloud免费版搭建办公桌面云

DoraCloud是一款多平台的桌面虚拟化管理软件&#xff0c;支持Hyper-V、VMware、Proxmox、XenServer等多种虚拟化平台。DoraCloud在虚拟化平台上具有极大的灵活性&#xff0c;允许您的组织自由选择合适的IT基础设施来构建桌面云&#xff1b;也允许您的组织重用现有的IT设施基础&…

B树和B+树的详解讲解

1.B树 前面我们已经学习了二叉查找树、2-3树以及它的实现红黑树。2-3树中&#xff0c;一个结点做多能有两个key&#xff0c;它的实现红黑树中使用对链接染色的方式去表达这两个key。接下来我们学习另外一种树型结构B树&#xff0c;这种数据结构中&#xff0c;一个结点允许多于…

Java LinkedList

链表&#xff08;Linked list&#xff09;是一种常见的基础数据结构&#xff0c;是一种线性表&#xff0c;但是并不会按线性的顺序存储数据&#xff0c;而是在每一个节点里存到下一个节点的地址。 链表可分为单向链表和双向链表。 一个单向链表包含两个值: 当前节点的值和一个…

linux软件安装

软件安装1.安装方式2.安装jdk3.安装Tomcat4.安装mysql5.安装lrzsz1.安装方式 2.安装jdk &#xff08;1&#xff09;使用 Xftp 将jdk的二进制包上传到 Linux。 关于 Xftp 的下载和安装看这里&#xff1a; https://blog.csdn.net/weixin_56680764/article/details/126335138 本文…

C++:using : using的四大用法总结

1&#xff1a;using声明&#xff08;引入单个名称&#xff09; using声明是将命名空间中某个名字单独引入到当前作用域&#xff0c;这使得我们在当前作用域下可以直接使用该名字而无需使用作用域限定符 :: 。 #include <string> using std::string; int main() {string…

TKDE2022 | 基于关系的协同过滤算法,利用注意力机制来学习物品关系的嵌入特征...

嘿&#xff0c;记得给“机器学习与推荐算法”添加星标鉴于经典的协同过滤算法的有效性和易用性&#xff0c;基于物品的协同过滤方法已被广泛应用于工业领域&#xff0c;并在近年来被广泛研究。基于物品的协同过滤方法的关键在于物品之间的相似度测量&#xff0c;但本文认为这是…

推荐系统学习笔记-推荐系统数据流

一般数据流 数据流的定义 数据流&#xff08;data stream&#xff09;是一组有序&#xff0c;有起点和终点的字节的数据序列。包括输入流和输出流。数据流最初是通信领域使用的概念&#xff0c;代表传输中所使用的信息的数字编码信号序列。这个概念最初在1998年由Henzinger提…

《软件开发本质论》笔记——如何衡量价值

目录 一、使用数值来表示价值的做法 二、大多数与金钱有关的衡量指标的局限性 三、有没有一个简单的衡量方式 四、价值评估更好的做法 个人理解的价值 一、使用数值来表示价值的做法 这种方式可能让我们滑入深渊。 比如 如果公司开发产品的目的是赚钱&#xff0c;那么就可…

记一次:Keepalived安装高可用操作

前言&#xff1a;现在有许多现成的高可用产品&#xff0c;比如阿里的产品等等&#xff0c;直接购买就可以使用。这个只是笔者自己私下练习使用&#xff0c;成功了。所以记一次总结过程 安装方式一 下载安装包&#xff1a;https://keepalived.org/download.html网址下载2.2.7版…

【小程序】第一个小程序——创建小程序项目

目录 小程序简介 第一个小程序 安装开发者工具 创建小程序项目 小程序简介 1. 小程序与普通网页开发的区别 2. 体验小程序 可使用手机微信(6.7.2 及以上版本)扫码下方小程序码&#xff0c;体验小程序&#xff1a; 第一个小程序 1. 点击注册按钮 使用浏览器打开 https…

【大数据技术】Spark MLlib机器学习库、数据类型详解(图文解释)

机器学习的定义 机器学习是一种通过利用数据&#xff0c;训练出模型&#xff0c;然后使用模型预测的一种方法。机器学习的构建过程是利用数据通过算法构建出模型并对模型进行评估&#xff0c;评估的性能如果达到要求就拿这个模型来测试其他的数据&#xff0c;如果达不到要求就…

【图神经网络】Pytorch图神经网络库——PyG基础操作

Pytorch图神经网络库——PyG基础操作图数据处理常用的基准数据库Mini-BatchesData Transforms图学习方法参考资料PyG&#xff08;PyTorch Geometric&#xff09;是一个基于PyTorch构建的库&#xff0c;可轻松编写和训练图神经网络&#xff08;GNN&#xff09;&#xff0c;用于与…

【Web安全】访问控制

目录 1、权限与授权 2、垂直权限管理 3、水平权限管理 4、OAuth 1、权限与授权 权限控制&#xff0c;或者说访问控制&#xff0c;指的是当用户需要执行某个操作时&#xff0c;系统对这种操作的权限限制就是权限控制。 在网络中&#xff0c;一般是通过路由设备或者防火墙建立…