数据库系统(四)中级和进阶SQL
Published in:2023-12-04 | category: 数据库系统

1 中级

1.1 Join表达式

inner join、outer join、right join、left join 之间的区别_left inner join outer join 区别-CSDN博客

natural join 在所有共同属性上做等值连接,然后再投影去掉重复值

Inner join 在on的条件上做等值连接 或者叫join

outer join(外连接)又可以分为 left join,right join

cross join(笛卡尔积) 又叫full join(全连接)左连接和右连接的并集

和之前数据库关系代数那里讲的是一样的

加条件用on

1.2 View 虚表

创建一个虚拟表

1
create view v as <query expression>

其中v是新表的表名,对于原表的一个SQL查询

一但创建就可以在后面继续使用

我们之前讲过with as,虽然他看起来可以实现和view一样的效果,但实际上view是全局的,之后也可以调用,而with as是局部的,之后就不能继续调用了。

对于 更新View

会遇到很多问题

一个问题,就是更新之后View虚拟表,要映射回原本的表,

大多数 SQL 实现只允许在简单视图上进行更新

插入的话会是原表会是null

1.3 完整性限制constraint

完整性约束可防止对数据库造成意外损坏。

常见的一些限制

非空限制

独一限制

大于限制等等

比如如下一些限制实现

An instructor name cannot be null.
No two instructors can have the same instructor ID.
Every department name must have a matching department name in the department relation.
The salary of an instructor must be greater than $29000.

1
2
3
4
5
6
7
8
create table instructor
( ID varchar (5),
name varchar (20) not null,
dept_name varchar (20),
salary numeric (8,2) check (salary > 29000),
primary key (ID),
foreign key (dept_name) references department );

比如会在插入的时候遇到

2 进阶

2.1 数据库触发器trigger

触发器是一种特殊的存储过程。但触发器没有输入和输出参数,因而不能被显示调用。它作为语句的执行结果自动引发,而存储过程则是通过存储过程名称被直接调用。

触发器 可以自动执行一些内容,加强数据的完整性约束和业务规则等

比如在插入一个语句后,我判断他是否完整!

触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。

image-20231227140119379

Prev:
嵌入式系统(四)嵌入式系统定时器
Next:
嵌入式系统(三)嵌入式中断