Oracle入门第四天(上)——表管理与数据处理
一、常见数据库对象
1.基本对象

对应的对象英文名参考:https://docs.oracle.com/cd/B19306_01/server.102/b14220/intro.htm#sthref69
2.表操作简介
其他对象将会在后续章节介绍
用户创建的表:包含用户创建和维护的表,
查看创建的表:
使用如下语句查看用户创建的表:(当然PL/SQL中可视化提供了十分方便的查看)
SELECT * FROM user_tables;
SELECT * FROM user_catalog ;
表的命名规则:与JAVA命名规则略有偏差:
表名和列名:
必须以字母开头
必须在 1–30 个字符之间
必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
必须不能和用户定义的其他对象重名
必须不能是Oracle 的保留字
创建表先决条件:
CREATE TABLE权限
存储空间
创建表语法:
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, ...]);
简单示例:
CREATE TABLE emp1(
id NUMBER(10),
name VARCHAR2(20),
salary NUMBER(10,2),
hire_date DATE
)
也可以使用SELECT通过结果集创建:
CREATE TABLE emp2
AS
SELECT employee_id id,last_name name FROM employees
当然,也可以只复制表结构而不需要表数据:(直接通过过滤条件不成立进行筛选)
CREATE TABLE emp3
AS
SELECT * FROM employees WHERE 1=2
给字段加注释的写法(注意主MYSQL不一样!)
comment on column 表名.字段名 is '注释内容';
comment on column OPERATOR_INFO.MAIN_OPER_ID is '归属操作员';
comment on table 表名 is '注释内容';
comment on table OPERATOR_INFO is '操作员信息表';
数据类型:

完整数据类型请参考官方文档:https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#SQLRF30020
修改表:
语法:

示例:
增加列:
ALTER TABLE emp1
ADD(product VARCHAR2(100))
修改列:
ALTER TABLE emp1
MODIFY(product VARCHAR2(101))
删除列:
ALTER TABLE emp1
DROP COLUMN product
删除表:
DROP TABLE dept80;
清空表:(DELETE可以回滚,而TRUNCATE无法回滚)
TRUNCATE TABLE
用于清除表数据,释放存储空间,只清空表数据,但保留表结构
改变对象名称:
RENAME dept TO detail_dept;
二、数据处理
插入记录
语法:(单条记录)
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);
示例:
INSERT INTO emp1 VALUES(1,'明',3000,to_date('2018-01-05','yyyy-mm-dd'));
// 插入指定列等不再赘述,参考MySQL章节
使用结果集进行插入:
INSERT INTO emp1(col1,col2) SELECT col1,col2 FROM empyolees
创建插入脚本:
INSERT INTO departments
(department_id, department_name, location_id)
VALUES (&department_id, '&department_name',&location);
之后会弹出对话框:

更新记录
语法:
UPDATE table
SET column = value [, column = value, ...]
[WHERE condition];
示例:(请使用条件语句过滤,除非你确定需要更改全表的记录!)
UPDATE emp2 SET NAME = '刚' WHERE ID = 1;
当然,如果没有显式地使用COMMIT,是可以使用rollback进行回滚
一个数据库事务起始于一个SQL语句,中止于以下4种事件之一:
COMMIT或ROLLBACK语句
DDL/DCL隐式提交
用户退出时自动提交
系统强行关闭时取消事务
事务结束后,下一条SQL语句将开始一个新的事务。
关于rollback的一些介绍,参考:http://blog.csdn.net/jack_ywj/article/details/52151975
删除记录
语法:(未提交的支持回滚)
DELETE FROM table
[WHERE condition];
示例:
DELETE FROM emp2 WHERE ID = 206;
三、数据库事务
更多概念介绍参考MySQL与JDBC随笔
Oracle事务由以下几部分组成:
一个或多个DML 语句
一个 DDL(Data Definition Language – 数据定义语言) 语句
一个 DCL(Data Control Language – 数据控制语言) 语句
事务的开始与结束:
以第一个 DML 语句的执行作为开始
以下面的其中之一作为结束:
——在结束之前其他用户是看不到改变的,直到提交才能在数据库显示而被所有用户查看到。并且也有类似MySQL的行锁!
COMMIT 或 ROLLBACK 语句
DDL 语句(自动提交)
用户会话正常结束
系统异常终止
事务控制

使用 SAVEPOINT 语句在当前事务中创建保存点。
使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。
示例:
UPDATE...
SAVEPOINT update_done;
Savepoint created.
INSERT...
ROLLBACK TO update_done;
Rollback complete.
Oracle入门第四天(上)——表管理与数据处理的更多相关文章
- Oracle入门第四天(下)——约束
一.概述 1.分类 表级约束主要分为以下几种: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK 2.注意事项 如果不指定约束名 ,Oracle server ...
- oracle入坑日记<五>数据表
1 数据表 1.1.数据表是存放数据字段信息的地方:在Oracle,数据表拥有者单位是用户,同时数据表属于表空间.如: 登录my_user用户在orcl表空间下创建的表就是 my_user用户在o ...
- TYUT程序设计入门第四讲练习题题解--数论入门
程序设计入门第四讲练习题题解--数论入门 对于新知识点的学习,需要不断地刷题训练,才能有所收获,才能更好地消化知识点. 题组链接: 程序设计入门第四讲练习题--数论 by vjudge 题解: A. ...
- JavaMail入门第四篇 接收邮件
上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操 ...
- Kotlin入门第四课:简单工厂模式
Kotlin基础知识的学习,请参考之前的文章: Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次尝试用Kotlin实现Android ...
- Oracle入门第三天(上)——多表查询与分组函数
一.多表查询 所有的连接分析,参考之前随笔:http://www.cnblogs.com/jiangbei/p/7420136.html 1.笛卡尔积 select last_name, depart ...
- Oracle入门第五天(上)——数据库对象之视图
一.概述 1.什么是视图(VIEW) 视图 从表中抽出的逻辑上相关的数据集合(是一张虚表). 2.为什么使用视图 1.控制访问 2.简化查询 3.视图的分类 二.视图管理 1.创建视图 CREATE ...
- Oracle数据安全(四)j角色管理
一.角色管理的概述 1.角色的概念 为了简化数据库权限的管理,在Oracle数据库中引入了角色的概念.所谓的角色就是一系列相关权限的集合. 2.角色的特点 在数据库中,角色的名称必须是唯一的,不能与用 ...
- CTF---密码学入门第四题 困在栅栏里的凯撒
困在栅栏里的凯撒分值:10 来源: 北邮天枢战队 难度:易 参与人数:4531人 Get Flag:2124人 答题人数:2285人 解题通过率:93% 小白发现了一段很6的字符:NlEyQd{sef ...
随机推荐
- Angular4 @HostBinding @HostListener
host属性 @Component({ selector: 'jhi-project', templateUrl: './project.html', styleUrls: [], host: { ' ...
- 基于HP DL388 Gen 9服务器基本配置(ESXI 6.5)
最近一段时间由于做毕业设计的原因,一直处于忙碌状态,刚做完毕业设计,导师处于项目的原因,买了一台惠普服务器(人民币1.7万),服务器自带的内存仅有16 G,硬盘也就只有600G,而且磁盘还做了raid ...
- flask开启debug模式的两种方法、加载配置文件的两种方法、URL传参的四种方法
from flask import Flask app = Flask(__name__) # app.config.update(DEBUG=True)#开启debug模式 #加载配置文件方法一 # ...
- [19/04/23-星期二] GOF23_创建型模式(工厂模式、抽象工厂模式)
一.工厂模式(分为:简单工厂模式.工厂方法模式.抽象工厂模式) 实现了创建者和调用者的分离 核心本质:1.实例化对象,用工厂方法代替new操作:2.将选择实现类.创建对象统一管理和控制,从而将调用者跟 ...
- HTTP 错误 401.0 - Unauthorized 的解决方案
1.安装vs2015后,以前做的项目中Forms身份验证,竟然不能使用了 2.打开当前项目属性,将windows身份验证属性改为启用 3.vs2015生成的mvc项目中,webconfig缺失auth ...
- ethereumjs/ethereumjs-blockchain-2-test
https://github.com/ethereumjs/ethereumjs-blockchain/tree/master/test 'use strict' const test = requi ...
- PAT——1040. 有几个PAT
字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T). 现给定字符串,问一共可以形成多少个P ...
- 修改jupyter notebook的默认路径
我的系统环境是win10,安装了anaconda3 for python 3.6.6首先需要配置notebook的变量环境:打开 cmd 输入命令 jupyter notebook --generat ...
- 前端基础-HTML的的标签详解
阅读目录 一.head内常用标签 二. HTML语义化 三. 字符实体 四. h系列标签 五. p标签 六. img标签 七. a标签 八. 列表标签 九. table标签 十. form标签 一. ...
- 多线程系列之 Java多线程的个人理解(一)
前言:多线程常常是程序员面试时会被问到的问题之一,也会被面试官用来衡量应聘者的编程思维和能力的重要参考指标:无论是在工作中还是在应对面试时,多线程都是一个绕不过去的话题.本文重点围绕多线程,借助Jav ...