Oracle数据库
前言
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。
提示:以下是本篇文章正文内容,下面案例可供参考
安装
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
事务控制(TCL)
事务控制语言的组成部分
1.COMMIT:提交事务,即把事务中对数据库的修改进行永久保存。
2.ROLLBACK:回滚事务,即取消对数据库所做的任何修改。
3.SAVEPOINT:在事务中创建存储点。
5.ROLLBACK TO SavePoint_Name:将事务回滚到存储点。
开启事务
在Oracle中,事务在上一次事务结束以后,数据“第一次”被修该时自动开启。
结束事务
数据被提交时会结束事务
1.执行COMMIT指令后,当前事务会被提交。
2.执行DDL或DCL语句后,当前事务自动被提交。
3.与Oracle分离,如退出PL/SQL Developer时,当前事务自动被提交。
数据被撤销时会结束事务
1.执行ROLLABCK指令后,当前事务会被回滚。
2.服务器进程异常结束。
3.DBA停止回话。
示例
创建表
CREATE TABLE dept(
deptno NUMBER(2) PRIMARY KEY, -- 部门编号
dname VARCHAR2(14), -- 部门名称
loc VARCHAR2(13) -- 地址
);
插入数据
INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');
);
查询数据
SELECT * FROM dept;
查询结果:
虽然已经查询出了结果,但是,如果此时进行ROLLBACK操作的话,数据将会被回退,因为数据并没有被COMMIT;所以,在执行完修改语句之后,应该执行COMMIT语句,从而确保数据被永久保存。
提交
COMMIT;
插入数据
INSERT INTO dept VALUES (50,‘a’,NULL);
INSERT INTO dept VALUES (60,‘b’,NULL);
设置存储点
SAVEPOINT a;
插入数据
INSERT INTO dept VALUES (70,‘c’,NULL);
查询数据
SELECT * FROM dept;
查询结果为:
回滚到存储点
ROLLBACK TO a;
查询结果为:
回滚到存储a的位置
回滚
ROLLBACK;
查询数据
SELECT * FROM dept;
查询结果为:
没有进行提交则直接回滚到最初
伪列
伪列好比Oracle的列表,并未存储在表中,可查,不可增删改值
ROWID
返回每行数据的地址
1.可做标识,因存储位置不一
2.快速查询表中的一行
3.能显示表的行是如何存储的
查询ROWID伪列的方式:
SELECT ROWID FROM SCOTT.emp;
ROWID的格式
ROWID:AAAR3sAAEAAAACXAAA
AAAR3s | AAE | AAAACX | AAA |
---|---|---|---|
数据对象编号 | 文件编号 | 块编号 | 行编号 |
ROWNUM
ROWNUM像是排行榜给值排序
ROWNUM伪列的主要用途
1.限制查询返回的主要用途
SELECT ROWNUM FROM SCOTT.emp;
由于ROWNUM的值始终从1开始,所以使用WHERE ROWNUM > 2条件是查不出任何数据的
表操作
创建表(CREATE TABLE)
语法
加粗样式
CREATE TABLE [模式名称.]表名(
列名 数据类型 [列属性],
...
);
示例
CREATE TABLE stuInfo(
stuNo CHAR(6) NOT NULL,
stuName VARCHAR(20) NOT NULL,
stuAge NUMBER(3,0) NOT NULL,
stuID NUMBER(18,0) ,
stuSeat NUMBER(2,0)
);
清空表(TRUNCATE TABLE)
语法
TRUNCATE TABLE 表名;
示例
TRUNCATE TABLE stuInfo;
数据操纵语言DML
stuInfo示例
拼接查询
SELECT stuName||’_’||stuAge “name_age” FROM stuInfo;
结果:
选择重复的行
SELECT DISTINCT stuName,stuAge FROM stuInfo;
结果: