SQL十二

1、数据的删除

①DROP  TABLE语句可以把表完全删除;

②DELETE语句回留下表(容器),而删除表中的全部数据。

2、DELETE语句

DELETE   FROM  <表名>;

【DELETE语句删除对象并不是表或者列,而是记录(行)。】

指定删除对象(搜索型DELETE)

DELETE  FROM  <表名>

  WHERE  <条件>;

  这种指定删除对象的DELETE语句称为搜索型DELETE。

  与SELECT语句不同的是,DELETE语句中不能使用GROUP  BY、 HAVING和ORDER  BY三类子句,而只能使用WHERE子句。

原因:GROUP  BY和HAVING是从表中选取数据时用来改变抽取数据形式的,而ORDER   BY是用来指定取得结果显示顺序的。

 3、数据更新(UPDATE语句)

UPDATE  <表名>

       SET   <列名>  =  <表达式>;

(1)搜索型UPDATE

UPDATE    <表名>

        SET    <列名>  =  <表达式>

   WHERE   <条件>;

SET子句中赋值表达式的右边不仅可以是单纯的值,还可以是包含列的表达式。

(2)使用NULL进行更新

使用UPDATE可以将列更新为NULL(该更新俗称为NULL清空)。但是,只有未设置NOT   NULL 约束和主键约束的列才可以清空为NULL,否则会出错。

(3)多列更新

①-- 使用逗号将列分隔排列

UPDATE  <表名>

          SET   <列名1>  =  <表达式1>,

                    <列名2>   =   <表达式2>

    WHERE    <条件>;

 

②--   将列用()括起来的列表形式

UPDATE    <表名>

        SET    ( 列名1,  列名2)  =    (表达式1,   表达式2)

   WHERE   <条件>;

执行上述两种UPDATE语句可以得到相同结果。实际应用中通常使用第一种方法,因为第二种方法将列清单化,在某些DBMS中无法使用。

4、事务

(1)事务就是需要在同一个处理单元中执行的一系列更新处理的集合。一个事务中包含多少个更新处理或者包含哪些处理,均根据用户的要求决定。

(2)创建事务

事务开始语句;

        DML语句①;

        DML语句②;

        DML语句③;

       (略)

事务结束语句(COMMIT或者ROLLBACK);

各个DBMS事务的开始语句不尽相同:

SQL  Server、PostgreSQL:    BEGIN   TRANSACTION

MySQL:   START    TRANSACTION

Oracle 、DB2:无【因为标准SQL中规定了一种悄悄开始事务处理的方法.】

 

事务结束需要用户明确地给出指示。

①COMMIT——提交处理

COMMIT是提交事务包含的全部更新处理的结束指令。相当于文件的覆盖保存,一旦提交,无法恢复到事务开始前的状态。因此,在提交前一定要确认是否真的需要进行这些更新。  

②ROLLBACK——取消处理

ROLLBACK是取消事务包含的全部更新处理的结束指令。相当于文件处理中的放弃保存,执行后表中数据不会发生任何改变。

【若果不小心在自动提交模式下执行了DELETE操作,即使再回滚也无济于事!】

04-01
### 关于SQL Error Code 12 或 SQL State 12 的解决方案 在数据库领域,错误码和状态码用于描述具体的操作失败原因。对于 `SQL Error Code 12` 和 `SQL State 12`,虽然具体的含义可能会因不同的数据库管理系统而有所不同,但在 Oracle 数据库中并未明确提及这些特定的错误代码[^1]。 #### 错误分类与排查方法 通常情况下,Oracle 数据库中的错误会通过以下方式表示: - **Error Codes**: 如 ORA-XXXXX 表示 Oracle 自身产生的错误。 - **SQL States**: 是 ANSI/ISO 标准定义的一组通用错误类别,用于跨平台兼容性。 如果遇到类似的错误情况(如对象不存在),可以尝试以下几种常见解决办法: 1. **验证对象是否存在** 确认所访问的对象是否已被删除或重命名。可以通过查询数据字典视图来确认对象的状态。例如: ```sql SELECT OBJECT_NAME, STATUS FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND OWNER = 'SCHEMA_NAME'; ``` 2. **检查权限** 如果当前用户没有足够的权限访问目标对象,则可能导致操作失败。确保已授予必要的权限给执行者账户。 3. **事务管理** 长时间运行未提交的事物也可能引发此类问题。定期清理挂起事物或者重新启动应用实例有助于缓解该类现象的发生。 4. **日志分析** 查看详细的跟踪文件以及告警记录可以帮助定位根本原因所在位置及其触发条件。 尽管上述提到的是关于ORA系列的具体例子,但对于任何未知编号的标准异常处理流程依然适用于此情境下探讨范围内的其他潜在可能性之中[^2]。 ```python def check_sql_state(sql_state): if sql_state.startswith('7'): print("This might be an internal system issue.") elif sql_state == '12': # Hypothetical handling based on context provided by user. print("Investigate long-running transactions or dropped objects.") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值