3.表操作&&事务

表操作

常见的数据库对象

对象 描述
基本的数据存储集合,由行和列组成。
视图 从表中抽出的逻辑上相关的数据集合。
序列 提供有规律的数值。
索引 提高查询的效率
同义词 给对象起别名

数据类型

数据类型 描述
VARCHAR2(size) 可变长字符数据
CHAR(size) 定长字符数据
NUMBER(p,s) 可变长数值数据
DATE 日期型数据
LONG 可变长字符数据,最大可达到2G
CLOB 字符数据,最大可达到4G
RAW (LONG RAW) 原始的二进制数据
BLOB 二进制数据,最大可达到4G
BFILE 存储外部文件的二进制数据,最大可达到4G
ROWID 行地址

表的常见操作

产看已经创建的所有表

select table_name from user_tables;

创建表

创建table_01的表格,包含字段,id,name,salary,hire_date。

SQL> create table table_01(
  2  id number(10) not null,
  3  name varchar2(10),
  4  salary number(10,2),
  5  hire_date date
  6  );
  ```
### 查询方式创建表
把查询的结果作为一个新表,并创建

` create table emp as (select * from employees where salary>10000);`
`desc emp;`

输出:

alter修改表

修改表明

rename [旧表名] to [新表名]

删除表

drop table [表名]

清空表的内容

truncate table [表名]
该操作不能回滚
但是使用delete from [表名]之后使用rollback可以撤回操作

增加一个列

alter table [表名] add ([字段名] [字段类型]);

修改现有的列

alter table [表名] modify ([字段名] [字段类型]);

为新追加的列定义默认值

alter table [表名] modify ([字段名] [字段类型] default [默认值]);

删除一个列

alter table [表名] drop column [字段名] ;

重命名表的一个列

alter table [表名] [列名] rename column [旧字段名] to [新字段名] ;

表的增删改查

增加数据到表格

1. 直接插入

insert into [表名](column[,column...]) values (values[,values...])
示例:向 emp2 表中插入一行数据

SQL> insert into emp2 values(1,'bart',13000.89,to_date('2017-3-21','yyyy-mm-dd')
);

2. 创建脚本,按照提示输入数据并插入到表格:

SQL> insert into emp2(id,name,salary,hire_date) values(&id,'&name',&salary,&hire_date);
Enter value for id: 3
Enter value for name: maggie
Enter value for salary: 16000
Enter value for hire_date: to_date('2017-6-6','yyyy-mm-dd')
old   1: insert into emp2(id,name,salary,hire_date) values(&id,'&name',&salary,&
hire_date)
new   1: insert into emp2(id,name,salary,hire_date) values(3,'maggie',16000,to_d
ate('2017-6-6','yyyy-mm-dd'))

1 row created.

从其它表格拷贝数据

把B表数据拷贝到A表

insert into [表A] select * from [表B]
注意:
前提是A表必须存在而且表结构和B表一样

更新表格数据

  1. 更新
    update [表名] set [字段名]=[更新的值] where [条件]

[更新的值]可以是一个子查询

  1. 注意约束导致数据完整性错误
UPDATE employees
SET    department_id = 55
WHERE  department_id = 110;

导致错误

UPDATE employees
       *
ERROR at line 1:
ORA-02291: integrity constraint (HR.EMP_DEPT_FK) violated - parent key not found

原因是,employees对应department中没有55号这个部门所以导致失败。

删除数据

delete from [表名] where [条件]

如果不加条件则就是删除所有的表记录

[条件]可以作为一个子查询

事务

一组逻辑操作单元,使数据从一种状态变换到另一种状态。

数据库事务由以下的部分组成:

  • 一个或多个DML 语句
  • 一个 DDL(Data Definition Language – 数据定义语言) 语句
  • 一个 DCL(Data Control Language – 数据控制语言) 语句

commit和rollback

对一个表进行操作完毕后,使用commit表示保存做的操作,保存完毕之后如果在次对标进行操作,而没使用commit此时使用rollback会使得表的修改恢复到上一次commit之后

举个例子:创建一个表,并插入了数据,如果插入完数据之后没有使用commit,那么表格内容虽然是修改了的,但是并没有保存,此时如果使用rollback表格会恢复到没插入内容之前的状态。也就是空表格。。。

对表操作的时候,相当于数据库给表加了一把锁,当使用commit之后,锁才会释放,其他用户才能对表进行操作

你可能感兴趣的:(oracle)