事务(Transaction)是一个操作序列。这些操作要么都做, 要么都不做, 是一个不可分割的工作单元, 是数据库环境中的最小工作单元。
原子性是指事务包含的所有操作要么全部成功, 要么全部失败回滚, 因此事务的操作如果成功就必须要完全应用到数据库, 如果操作失败则不能对数据库有任何影响.
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态, 也就是说一个事务执行之前和执行之后都必须处于一致性状态.
隔离性是当多个用户并发访问数据库时, 比如操作同一张表时, 数据库为每一个用户开启的事务, 不能被其他事务的操作所干扰, 多个并发事务之间要相互隔离.
持久性是指一个事务一旦被提交了, 那么对数据库中的数据的改变就是永久性的, 即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作.
a) 提交, 在确保事务执行成功时, 应该将事务进行提交. 提交后, 数据被永久保存, 不能进行回滚.
commit; |
b) 回滚, 当事务执行出现故障时, 应该进行事务的回滚操作, 本次事务的所有操作将被还原, 保证数据库的一致性.
rollback; |
insert into emp values(2,‘dsfs‘,3000);
savepoint A;
insert into emp values(3,‘oldu‘,4000);
savepoint B;
delete from emp;
rollback to A;
commit;
create table dept
( deptno number(2),
dname varchar2(14),
loc varchar2(2) );
用户表:
由用户创建和维护的表的集合。
包含用户信息。
数据字典:
由oracle服务器创建和维护的表的集合
包含数据库信息
查看本用户所拥有的表的名称
select table_name
from user_tables;
查看本用户所拥有的不同的对象类型
select distinct object_type
from user_objects;
查看本用户所拥有的表、视图、同义词、和序列
select * from
from user_catalog;
create table dept as select employee_id,last_name,salary,hire_date from employees e where e.department_id=80;
alter table语句可以修改表的信息。
添加一个新列
修改一个已存在的列
删除一个列
alter table table
add ( column datatype [default expr][,column datatype]....);
alter table dept add(salary number(8,2))
修改数据数据类型
alter table dept modify(dname varchar2(40));
修改默认值
alter table dept modify(salary number(8,2) default 1000);
alter table dept80 modify location_id not null;
修改列名
alter table emp rename column dname to name;
删除一个列
alter table table
drop colum [ziduan];
修改表如下
rename dept80 to dept90;
特点:
1.直接将所有的数据删除,但是表结构是留着的。
2.在截断表时不能指定条件。
3.截断表是隐式事务。
truncate table dept90
drop table dept90;
非空约束(NOT NULL)
唯一性约束(UNIQUE)
主键约束(PRIMARY KEY)
外键约束(FOREIGN KEY): 在列和引用表的一个列之间建立并且强制一个外键关系
用户自定义约束(CHECK)
创建一个约束:在创建表的同时,或者在创建表之后都可以定义约束。可以给约束起名字,但是约束名不能相同,必须是唯一的。如果没有为约束起名字,oracle服务器会将默认格式SYS_Cn产生一个名字,这里n是一个唯一的整数,所以约束名是唯一的。
create table dept80(
id number,
name varchar2(20) not null,
salary number constraint dept_80_notn not null);
)
create table(
employee_id number(6),
last_name varchar2(25) not null,
email varchar2(25),
salary number(8,2),
commission_pct number(2,2)
hire_date date not null,
....
constraint emp_email_uk unique(email);
)
create table dept90(id number constraint dept90_uk unique, name varchar2(20));
alter table dept90 modify(name unique);
create table department(
department_id number(4),
department_name varchar2(30),
CONSTRAINT dept_name_nn not null,
manager_id number(6),
location_id number(4),
CONSTRAINT dept_id_pk primary key(department id);
);
create table dept70(id number constraint dept70_pk primary key);
alert table dept60 modify(id constraint dept60_pk primary key);
两个列的主键定义方式
create table dept50(id number,name varchar2(20),constraint dept50_pk primary key(id,name));
原文:https://www.cnblogs.com/wq-9/p/11561097.html