SQL: 增删改,过程抽象,数据抽象,遍历访问

本部分包含:

表修改操作

增删改查:权限

查询不影响原表

 

修改操作语法上表现为SELECT外添加前缀(与新选项),或缺省SELECT(更具体的语义)

 

INSERT行插入(权限足够)

1.插入完整的行(部分列缺省)——字面量

2.插入查询结果——对象

 

INSERT INTO 表(更安全:改用关键字参数,可以缺省(前提:表必须允许NULL,或有默认值))

VALUES(逐个字面量)

 

INTO是否存在与其他语句的组合?

否——省略

 

INSERT

SELCET

WHERE

(是否保持完整的选项(子语句)?)

插入检索结果行

 

INSERT INTO插入现有表

SELECT INTO复制到新表

 

删改

UPDATE

DELETE

 

UPDATE

SET(删:设为NULL,前提:允许)

WHERE

 

DELETE(整行)

FROM

WHERE

 

删列:UPDATE

 

 

CREATE TABLE 表名

  列名  数据类型  是否允许NULL  DEFAULT val

不可重名:拒绝覆写

 

NULL !=空字串

对象=值+结构

 

删表

DROP TABlE

 

复杂表结构(列结构)更改

1.创建新表

2.复制数据(映射:计算字段,转换函数;归总:聚集值)

3.检验新表?

4.重命名(且删)旧表

5.重新创建触发器,存储过程,索引,外键

 

视图

SELECT

FROM 视图

WHERE

 

缺省表名:作为函数?

依然指定表名

是虚拟表(过程)不是数据——表可能更新——python property——对表运行时迟邦定

 

重用语句

保护数据?设定权限?

映射:修改值,格式,表示

 

可嵌套:性能低

视图不能索引,不能带触发器与默认值?

部分DBMS权限:只读

 

表更新对视图的影响?

视图作为生成器?

 

CREATE VIEW name AS

SELECT

(其余子语句完整性)

 

嵌套 IN SELECT

平行WHERE &|  UNION

抽象 VIEW

 

存储过程:抽象

状态——状态——状态——状态

状态——变化——变化——状态

存储过程相同则结果相同——Docker

存储编译后的结果——部分存储独立内容的编译结果——python存储编译后的正则表达式

 

SQL存储语法不同——可移植性差

 

EXECUTE name(

        参数列表

不传递主键:自动化生成ID?

 

调用时动作:

参数与签名验证

生成主键ID

执行动作:增删改

 

参数:

默认值

关键字参数

输出参数,返回值用于修改(哪个函数的)参数?

使用SELECT检索

输出值

 

CREATE PROCEDURE name(

  listName  IN/OUT/INOUT  typr

IS

name   type???

BEGIN

END

局部变量?

 

 

事务处理

打包SQL语句,并保证原子性(执行/不执行)

 

出现异常——恢复到执行前——保证数据库完整性

发生错误——回卷——异常

正常——提交

在沙盒中处理??

 

可回退:INSERT,UPDATE,DELETE——增删改

不可:SELECT——查

 

打包方式:标出代码块

BEGIN

COMMIT隐式提交——要求显式提交

 

ROLLBACK

撤销一次

 

保留点:历史记录

SAVEPOINT 标记

回滚到保留点

ROLLBACK 标记

 

游标

整体处理——随机访问

(数组作为指针)

游标修改权限:作为存取器入口:增?删?改?查权限

访问方式:随机,相对

列的存取权限控制:可修改,不可修改列

主要用于交互

 

使用:

声明:创建

定义:绑定表

读写数据

关闭,释放

 

创建

DECLARE name CURSOR

FOR

SELECT

FROM

WHERE

 

使用:

OPEN CURSER curser

(LOOP——END)

FETCH curser INTO date

 

CLOSE

 

能否使用多个CURSER?

多个数据如何使用?外部接收者(隐式迭代?)?

 

posted on 2018-07-06 09:51  秦梦超  阅读(127)  评论(0编辑  收藏  举报

导航