当前位置: 首页 > news >正文

数据库-第二/三章 关系数据库和标准语言SQL【期末复习|考研复习】

前言

总结整理不易,希望大家点赞收藏。

给大家整理了一下计数据库系统概论中的重点概念,以供大家期末复习和考研复习的时候使用。
参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。


文章目录

  • 前言
  • 第二、三章 关系数据库和标准语言SQL
    • 2.1 关系
    • 2.2 SQL语言的特点
    • 2.3 SQL语句总结(别看代码了,这个再看就过一遍注意点)
      • (1) 模式创建和定义:
      • (2) 删除模式:
      • (3) 基本表定义:
      • (4) 显示当前搜索路径:
      • (5) 修改基本表:
      • (6) 删除基本表
      • (7) 索引:
      • (8) 数据查询:
      • (9) 连接查询:
      • (10) 嵌套查询:
      • (11) 数据更新:
      • (12) 空值:
      • (13) 视图:
        • 13.1 视图的作用
  • 3 练手题
    • 3.1


第二、三章 关系数据库和标准语言SQL

2.1 关系

关系代数:传统集合运算:并、差、交、笛卡尔积;
专门关系运算:选择σ(行),投影π(列),连接,除;
等值连接:相同属性不会合并,成为两列。
自然连接:相同属性合并(剔除相同)。
悬浮元组:因为合并而被丢弃的元组。(没有对应的可合并的元组)
外连接:悬浮元组全保留,没有的属性写NULL;
左外连接:保留左关系中的悬浮元组;
右外连接:保留右关系中的悬浮元组

2.2 SQL语言的特点

(1) 语句简单,逻辑清晰,综合统一
(2)高度非过程化
(3)面向集合
(4)同一种语法结构提供多种使用方式。

2.3 SQL语句总结(别看代码了,这个再看就过一遍注意点)

(1) 模式创建和定义:

create schema “s-t”(模式名) authorization user1(用户名);

可以在该语句后直接创建表/视图/授权。

(2) 删除模式:

drop schema “s-t” cascade/restrict [cascade]

cascade级联,删除该模式的同时删除模式下所有数据库对象。
Restrict限制,删除时如果该模式下还有其他数据库对象则拒绝删除]

(3) 基本表定义:

Create table student(
Sno char(9) primary key, //属性名 数据类型 列级约束;
Sname char(20) unique,
Age smallint,
Sdept char(29) //系名
Foreign key (sdept) references dept(dname) //我乱写的,表级完整性约束。

主键由多个属性构成,必须用表级完整性约束。Primary key(sno,cno)这样。

(4) 显示当前搜索路径:

show serach_path(用户,模式)

管理员设置路径:

set serach_path to +用户名,模式名

(5) 修改基本表:

//属于修改表中的列相关。

Alter table student add s_birth DATE; //增列
Alter table student alter column(这个column可写可不写) age int;//修改列类型
Alter table student drop column s_birth; //删列
Alter table student drop constraint primary key(sno);//删完整性约束

(6) 删除基本表

(突然发现删除时都有cascade/restrict规定)

Drop table student cascade;

(7) 索引:

用于加快查询速度。
顺序文件索引,B+索引,散列(hash)索引,位图索引。
索引由系统自动选择,用户不能选,属于内模式。
索引的SQL语言:

create unique index(关键字是index) stusno on student(sno);	//对student表的sno建立升序唯一索引stusno
Alter index stusno rename to snoindex;		//对索引改名
Drop index stusno;		//删除,没有cascade和restrict。根本没有和其他的索引之类有联系就不考虑级联。

(8) 数据查询:

Selectall / distinct 后者在查询时合并相同结果)列名……From 表名/视图Where 条件Group by 列名 having 条件(常+聚集函数)Order by 列名 asc/desc (排序)

注意事项:
where 和 having 的区别:
1、执行时机不同:where是分组之前进行过滤,不满足where条件不参与分组;having是分组后对结果进行过滤。
2、判断条件不同:where不能对聚合函数进行判断,而having可以。
执行顺序:FROM -> WHERE -> GROUP BY -> SELECT -> ORDER BY -> LIMIT

(9) 连接查询:

等值连接:

Select student.,sc. From student,sc Where student.sno=sc.sno;

自然连接则会合并相同列,这时候查询语句就会变成

Select student.sno,sname,sage,cno From student,sc Where student.sno=sc.sno;

注意事项:
1、自然连接一定是等值连接,但等值连接不一定是自然连接。
2、等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。3、等值连接不把重复的属性除去;而自然连接要把重复的属性除去。
外连接

Select student.sno,sname,sage,cno From student left outer join sc on(student.sno=sc.sno)

(10) 嵌套查询:

不相关子查询:子查询条件不依赖父查询
相关子查询:子查询查询条件依赖父查询
区别:不相关子查询一次查询,相关子查询循环求解。联合查询时UNION ALL 会有重复结果,UNION 不会。
联合查询比使用or效率高,不会使索引失效

(11) 数据更新:

插入数据,修改数据,删除记录(这都是对行的操作,区别alter table语句)
插入

Insert Into student(sno,sname,sex,age) Values(20000,’张三’,‘男‘,18);

更新

Update student Set age=22 Where sno=20000;

删除

Delete From student Where sno=20000;

(12) 空值:

判断用 is null 或者 is not null

(13) 视图:

视图是一张虚表。只存放视图的定义,不存放其真正的结构。对视图的操作也会转化成对基本表的操作。
创建

Create view is_student As select sno,sname From stuent Where sdept=isWith check potion //用来保证对视图更新的时候,满足子查询条件
注意事项;

with cascaded check option 级联检查,不管上面开没开检查选项都会检查。
with local check option 本地检查,先在本地检查,再向上检查,上面没开检查选项就不检查。
删除

Drop view is_student cascade;

视图消解:对视图进行查询操作的时候,首先进行有效性检查,检查相关定义是否存在,如果存在就在数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成对基本表的查询,再执行修正了的查询。
视图和派生表是有区别的。视图永久性,派生表临时。

13.1 视图的作用

(1) 视图能够简化用户的操作
(2) 使用户能以多种角度看待同一数据
(3)视图可以帮助用户屏蔽真实表结构变化带来的影响保证了数据的独立。
(4) 通过视图用户只能查询和修改他们所能看到的数据,保证了数据的安全。

3 练手题

3.1

在这里插入图片描述

在这里插入图片描述

相关文章:

  • Springboot+vue的商业辅助决策系统的设计与实现(有报告)。Javaee项目,springboot vue前后端分离项目
  • 微信小程序自制动态导航栏
  • GNER: 生成式实体识别的新 SoTA
  • 数据结构实现-线性表
  • Javaweb之SpringBootWeb案例之自动配置的原理分析的详细解析
  • Flink基本原理 + WebUI说明 + 常见问题分析
  • element-plus表格合并
  • C 基本语法
  • C#双向链表实现:Append()方法追加并显示数据
  • 【k8s管理--两种方式安装prometheus】
  • 【Linux杂货铺】调试工具gdb的使用
  • 基于ZYNQ的PCIE高速数据采集卡的设计(一)
  • 【UE 材质】冰冻效果
  • 【风格迁移】StyTr2:引入 Transformer 解决 CNN 在长距离依赖性处理不足和细节丢失问题
  • elasticsearch、Kibana 与logstash分布式使用方案(珍藏版)
  • 【笔记】你不知道的JS读书笔记——Promise
  • Akka系列(七):Actor持久化之Akka persistence
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • ComponentOne 2017 V2版本正式发布
  • CSS实用技巧干货
  • Docker: 容器互访的三种方式
  • JavaScript 基本功--面试宝典
  • JAVA多线程机制解析-volatilesynchronized
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • leetcode-27. Remove Element
  • Python进阶细节
  • spring security oauth2 password授权模式
  • Swoft 源码剖析 - 代码自动更新机制
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 编写符合Python风格的对象
  • 反思总结然后整装待发
  • 如何设计一个比特币钱包服务
  • 如何实现 font-size 的响应式
  • 树莓派 - 使用须知
  • 通过几道题目学习二叉搜索树
  • 我与Jetbrains的这些年
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • ​什么是bug?bug的源头在哪里?
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #etcd#安装时出错
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (八)c52学习之旅-中断实验
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (十八)SpringBoot之发送QQ邮件
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)视频码率,帧率和分辨率的联系与区别
  • .net core控制台应用程序初识
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .net2005怎么读string形的xml,不是xml文件。
  • .Net环境下的缓存技术介绍
  • .NET面试题(二)
  • .NET中 MVC 工厂模式浅析