oracle 删除主键约束_029 SQL事务处理,定义约束,视图

866346f184e8fa035339c79e960b96c1.png

1. 什么是事务

(1) 什么是事务?

指作为单个逻辑工作单元执行的一系列操作,要么完全的执行,要么完全的不执行。

(2) 事务的特性有哪些?

1-原子性ATOMICITY:事务中操作要么都不做,要么就全做。

2-一致性CONSISTENCY:一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成一个成功的事务时,数据应处于一致的状态。

3-隔离性ISOLATION:Hige事务的执行不能被其他事务干扰。

4-持久性DURABILITY:一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。

2. 事务控制语言(TCL)

(1) 在数据库中控制事务的提交与回滚的语句是什么?

commit事务提交:当我们执行了一个DML语言后,此时的数据并不会持久化到数据文件中。需要使用commit来确认提交。

rollback事务回滚:当我们执行了一个DML语言后,也可以使用rollback来撤销当前对表的操作。

Savepoint 设置回滚点

(2) 事务类型有几种?

显示事务:需要我们手动的提交或回滚。DML语言中的所有操作都是显式事务操作。

隐式事务:数据库自动提交不需要我们做任何处理,同时也不具备回滚性。DDL、DCL语言都是隐式事务操作。

(3) 每种事务类型特点是什么?

同上

(4) 如何为事务设置回滚点?

通过savepoint设置回滚点,rollback to回到回滚点。

3. 数据库定义语言(DDL)创建表

(1) 数据库定义语言的作用是什么?

create创建数据库对象;

Drop 删除数据库对象

alter修改数据库对象

Rename 修改数据库对象名称

(2) 在数据库中创建表的语句是什么?

Create...创建数据库对象(表,用户,视图,索引,序列)

语法:create table dept(deptno number(2),dname varchar2(14),loc varchar2(13));

(3) 在Oracle数据库中表分为几种?每种表示什么含义?

用户表:有用户创建和维护的表的集合,包含用户信息;

数据字典:由Oracle服务器创建和维护的表的集合,包含数据库信息。

(4) Oracle中常见的数据字典表有哪些?分别表示什么含义?

Select table_name from user_tables;查看用户拥有的表的名称。

Select distinct object_type from user_objects;查看本用户所拥有的不同的对象类型;

Select * from user_catalog;查看本用户所拥有的表、视图、同义词和序列。

4. 使用查询创建表

(1) 创建dept80表,表结构以及数据来源于对employees表的查询,查询条件为department_id=80,投影列为:employee_id、last_name、salary、hire_date。

SQL> create table dept80 as select e.employee_id id,e.last_name name,e.salary ,e.hire_date hiredate from employees e where e.department_id=80;

5. 修改表信息ALTER TABLE

(1) 修改表信息ALTER TABLE

ALTER TABLE可以修改表信息

(2) 通过修改表的语句能够修改表的什么?

添加一个新列add

SQL> alter table dept add(salary number(8,2));

modify修改一个已存在的列(修改数据类型,默认值,列名)

alter table dept modify(dname varchar2(40));

SQL> alter table dept modify(salary number(8,2) default 1000);

SQL> alter table dept modify(salary number(8,2) default null);

SQL> alter table dept rename column dname to name; 修改列名!

删除一个列

SQL> alter table dept drop column salary;

(3) 向表中添加新列的语法结构是什么?

Alter table tablename add (column datatype [default expr][,column datatype]... );

(4) 删除表中的列的语法结构是什么?

Alter table tablename drop (column);

6. 修改表名与删除表

(1) 删除表中的列语句的语法结构是什么?

Alter table tablename drop column columnname;

(2) 修改表名的语句

Rename dept80 to dept90;

(3) 截断表的语句是什么?

Truncate table

truncate table dept90;

(4) 删除表的语句是什么?

Drop table dept90; 隐式事务

(5) 截断表与删除的区别是什么?

截断表中的所有数据,但是保留表结构;不支持附加条件;截断表是隐式事务,系统自动提交,delete是显示事务,需要手动提交。删除数据方面,truncate要优于delete。

7. 定义非空约束

(1) 数据库中的约束有哪些类型?

非空约束 NOT NULL;

唯一性约束 UNIQUE;

主键约束 PRIMARY KEY;

外键约束 FOREIGN KEY;

用户自定义约束 CHECK;

(2) 每个约束的含义是什么?

非空约束 NOT NULL:指定列不能包含空值;

唯一性约束 UNIQUE:指定列的值或者列的组合的值对于表中所有的行必须是唯一的;

主键约束 PRIMARY KEY:表的每行的唯一性标识;

外键约束 FOREIGN KEY:在列和引用表的一个列之间建立并且强制一个外键关系;

用户自定义约束 CHECK:指定一个必须为真的条件;

(3) 定义约束的原则是什么?

创建一个约束:在创建表的同时,或者在创建表之后都可以定义约束。可以给约束起名字,但是约束名不能相同,必须是唯一的。如果没有为约束起名字,Oracle服务器将用默认格式SYS_Cn产生一个名字,这里n是一个唯一的整数,所以约束名是唯一的。

定义NOT NULL约束

Create table employees(last_name varchar2(25) not null,hire_date date constraint emp_hire_date_nn NOT NULL)分别系统自动创建约束名和自定义指定约束名

8. 定义唯一性约束

(1) 创建dept90表,包含如下列:id number具备唯一性约束、name varchar2(20)。

create table dept90 (id number constraint dept90_id_uk unique,name varchar2(24) constraint dept90_name_nn not null );

修改已有列的约束类型alter table dept90 modify (name unique);

9. 定义主键约束

(1) 创建dept70表,包含如下列:id number具备主键约束。

create table dept70(id number primary key);

定义联合主键:

create table dept50 (id number,name varchar2(20),constraint dept50_pk primary key(id,name));

10. 定义外键约束

(1) 创建dept40表,包含如下列:id number、d_id number并为d_id列分配键列约束参照DEPT70表的id列。

create table dept40(id number,d_id number,constraint dept40_fk foreign key(d_id) references dept70(id));

将已有的键修改为外键:

alter table dept50 add(d_id number(8,2));

alter table dept50 add constraint dept50_fk foreign key(d_id) references dept70(id);

11. 定义检查约束

(1) 创建dept30表,包含如下列:id number、salary number(8,2)。为salary分配检查约束检查条件为salary>1000。

create table dept30 (id number,salary number(8,2) constraint dept30_ck check(salary>1000));

在添加列的同时添加自定义检查约束

alter table dept50 add(salary number(8,2) constraint dept50_ck check(salary>1000));

对已有列添加自定义检查约束:

alter table dept50 add(constraint dept50_ck_A check (name like '%A%'));

12. 禁用与启用约束

(1) 在Oracle中查看约束的数据字典表叫什么名字?

select constraint_name,constraint_type,search_condition from user_constraints where table_name = 'DEPT50';

(2) 禁用约束语句的语法结构是什么?

alter table dept50 disable constraint dept50_ck_a;

(3) 级联禁用约束语句的语法结构是什么?

禁用具有相关性的约束,级联操作。一般指有其他外键约束参照的主键约束。

alter table dept70 disable constraint SYS_C0011225 cascade;

其他无参照的可以不写cascade

(4) 启用约束语句的语法结构是什么?

alter table dept70 enable constraint SYS_C0011225;

13. 什么是视图

(1) 什么是视图?

可以通过创建表的视图来表现数据的逻辑子集或数据的组合。视图是基于表或另一个视图的逻辑,一个视图并不包含它自己的数据,它像一个窗口,通过该窗口可以查看或改变表中的数据。视图基于其上的表称为基表。

(2) 视图的优越性是什么?

视图限制数据的访问,因为视图能够选择性的显示表中的列;

视图可以用来构成简单的查询以取回复杂查询的结果。例如,视图能用于从多表中查询信息,而用户不必知道怎样写连接语句;

视图对特别的用户和应用程序提供数据独立性,一个视图可以从几个表中取回数据。

(3) 视图分为几种类型?

简单视图和复杂视图。

(4) 不同类型的视图的区别是什么?

视图有两种分类:简单和复杂,基本区别设计DML(INSERT,UPDATE,DELETE)操作。

简单视图:数据仅来自一个表,不包含函数或数据分组,能通过视图执行DML操作。

复杂视图:数据来自多个表,包含函数或数据分组,不允许通过视图进行DML操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值