cascade:层级
foreign:外键声明
references:参照
procedure: 过程
declare:声明
exec sql declare 游标名称 cursor for:游标,游标后边跟select语句
open 游标名称:定义右边之后打开游标
fetch 游标名 into 变量表:推进游标,跟上前面声明的变量名
exec sql close 游标名:关闭游标
commit;return 0;:提交,正常结束
事务(要么都做,要么都不做):
begin transaction:事务开始
end transaction:事务结束
commit:事务提交
rollback:事务回滚,注意,如果说已经使用commit了,那旧不能再使用rollback了
下午题,需要观察题目,sql中一般得书写形式为:commit work,rollback work,
1、原子性:事务的所有操作在数据库中要么都做,要么都不做
2、一致性:一个事务独立执行得结果,将保持数据得一致性,及数据不会因为是无阿执行而遭受到破坏。
3、隔离性:一个事务得执行不能被其他事务干扰,并发事务在执行过程中可能会对同一数据进行操作,这些事务得操作应该不会相互干扰,是相互隔离得
4、持久性:一个事务一旦提交,它对数据库得改变必须是永久得,计时系统出现故障也是如此。
事务的五种状态:
活动状态、部分提交状态、失败状态、中止状态、提交状态
可恢复调度就是读取一个数据前,这个数据所占用的事务一定是先进行提交
并发调度是否正确,要与并行调度的任意一次的调度结果一致
事务的隔离级别:
1、READ UNCOMMIT(读未提交):可避免丢失修改
2、READ COMMIT(读已提交):可避免丢失修改,读脏数据
3、REPEARABLE READ(可重复读):可避免丢失修改、读脏数据、不可重复读
4、SERIALIZABLE(串行化):最高级别,可避免丢失修改、读脏数据、不可重复读、幻读。
幻读:事务A查询得到N条数据,然后事务B又插入了M条数据,或则改变了这N条数据之外的M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了所谓的幻读现象。
表级锁:Serializable
一、约束
1.完整性约束
1)直接跟:primary key
2)primary key(属性组,‘,’隔开)
2.外键约束
foreign key(属性名) references 表名(属性名)[on delete [cascade|set null]],foreign key定义哪些列为外码,references指明外码对应于哪个表的主码;on delete cascade指明删除被参照关系的元组时,同时删除参照关系中的元组;set null则是置为空置方式。
1)直接跟references 表名(属性名)
2)foreign key 外键名 on 其他表(属性)
3.属性值上的约束
1)check
2)default
3)unique
4)not null
4.用户全局性约束,
1)基于元组来检查子句:例如,年龄在16至16-20岁之间,可用check(Sage>=16 and Sage<=20)检测。
2)基于断言的语法格式:assertion(断言,实际情况中支持的数据库较少,只需知道断言可用于全局性约束即可)
create assertion<断言名>CHECK(<条件>)
eg:教学数据库的模式Students、SC、C中创建一个约束ASSE-SC2;每门课最多允许50名男同学选修
create assertion ASSE-SC2 CHECK
(50>=ALL(SELECT COUNT(SC.Sno)
FROM Student,SC
WHERE Students.Sno=SC.Sno AND SEX='M'
GROUP BY Cno));
二、授权
1.grant
grant insert/update/select/privileges on table/database [of 列名] to 用户
revoke insert/update/select from 用户 [restrict/cascade]
with grant option:持续赋予值给其他用户
三.触发器:
declare:声明主变量部分,引用主变量的时候需要在变量名前加上冒号:
section:部分
create trigger 触发器名 【before/after】
【delete/insert/update of 列名】
referencing new row as nrow,old row as orow 注:referencing 后边跟的是临时视图名
for each row/for each statement
when 触发条件 //when后面的触发条件指明当什么条件时执行下面的触发动作
begin
触发动作
end
四、存储过程
create procedure 存储过程名(in/out/in out 参数 数据类型)
【as] //参数的数据类型只需要指明类型名即可,不需要指明宽度,具体的宽度有外部调用者决定
begin
sql 语句
end
commit;return 0;
大数据
多样性:variety
高速性:velocity
低价值性:value
大量:volume
真实性:veracity
数据采集(抽取)--->数据分析(机器学习)--->数据解释(可视化、人机交互)