一、常见数据库对象

  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入门第四天(上)——表管理与数据处理的更多相关文章

  1. Oracle入门第四天(下)——约束

    一.概述 1.分类 表级约束主要分为以下几种: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK 2.注意事项 如果不指定约束名 ,Oracle server ...

  2. oracle入坑日记<五>数据表

    1   数据表 1.1.数据表是存放数据字段信息的地方:在Oracle,数据表拥有者单位是用户,同时数据表属于表空间.如: 登录my_user用户在orcl表空间下创建的表就是 my_user用户在o ...

  3. TYUT程序设计入门第四讲练习题题解--数论入门

    程序设计入门第四讲练习题题解--数论入门 对于新知识点的学习,需要不断地刷题训练,才能有所收获,才能更好地消化知识点. 题组链接: 程序设计入门第四讲练习题--数论 by vjudge 题解: A. ...

  4. JavaMail入门第四篇 接收邮件

    上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操 ...

  5. Kotlin入门第四课:简单工厂模式

    Kotlin基础知识的学习,请参考之前的文章: Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次尝试用Kotlin实现Android ...

  6. Oracle入门第三天(上)——多表查询与分组函数

    一.多表查询 所有的连接分析,参考之前随笔:http://www.cnblogs.com/jiangbei/p/7420136.html 1.笛卡尔积 select last_name, depart ...

  7. Oracle入门第五天(上)——数据库对象之视图

    一.概述 1.什么是视图(VIEW) 视图 从表中抽出的逻辑上相关的数据集合(是一张虚表). 2.为什么使用视图 1.控制访问 2.简化查询 3.视图的分类 二.视图管理 1.创建视图 CREATE ...

  8. Oracle数据安全(四)j角色管理

    一.角色管理的概述 1.角色的概念 为了简化数据库权限的管理,在Oracle数据库中引入了角色的概念.所谓的角色就是一系列相关权限的集合. 2.角色的特点 在数据库中,角色的名称必须是唯一的,不能与用 ...

  9. CTF---密码学入门第四题 困在栅栏里的凯撒

    困在栅栏里的凯撒分值:10 来源: 北邮天枢战队 难度:易 参与人数:4531人 Get Flag:2124人 答题人数:2285人 解题通过率:93% 小白发现了一段很6的字符:NlEyQd{sef ...

随机推荐

  1. 获取当前模块句柄(dll、exe)

    HMODULE getCurrModuleHandle(){ MEMORY_BASIC_INFORMATION info; ::VirtualQuery((LPCVOID)(&getCurrM ...

  2. .net framework profiles /.net framework 配置

    几年前一篇关于 .net framework client profile http://www.cnblogs.com/zzj8704/archive/2010/05/19/1739130.html ...

  3. ZT Linux系统环境下的Socket编程详细解析

    Linux系统环境下的Socket编程详细解析 来自: http://blog.163.com/jiangh_1982/blog/static/121950520082881457775/ 什么是So ...

  4. 请问在JAVA编程中什么叫耦合?什么又叫解藕? 悬赏分:0 - 解决时间:2008-3-8 12:55

    模块一的实现依赖于模块二,更改模块二后,模块一也得更改,那么二者就有耦合.修改程序,使得更改模块二后,模块一不受影响,那么就叫解藕 请问<java编程思想>中的“完全解藕”如何理解,和实现 ...

  5. 【Win10+eclipse+MinGW+QT安装教程】已有eclipse环境下配置QT插件出错详解

    (纪念一下装了一整天濒临绝望的自己[/doge]) (以下所有下载项一律使用32位) step1:下载安装eclipse.适配的jdk.MinGW和QT 1.下载32位eclipse for c++以 ...

  6. 怎么在Linux环境下通过VS Code调试Python 3+?

    今天突然想写一写Python了,于是就开始弄.使用源码包安装好Python3.6.6之后,发现Linux下只能通过python3来调用python 3.6.6.如果直接使用python的话,调用的是系 ...

  7. 程序人生:02我来告诉你,一个草根程序员如何进入BAT

    本文摘自左潇龙博客,原文出处:http://www.cnblogs.com/zuoxiaolong/p/life54.html 引言 首先声明,不要再问LZ谁是林萧,林萧就是某著名程序员小说的主角名字 ...

  8. UVa 11971 - Polygon(几何概型 + 问题转换)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  9. UVa 1515 - Pool construction(最小割)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  10. Odoo中如何复制有唯一性约束的记录?

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281393.html  如果为模型的字段添加了唯一性约束,那么在记录的form视图功能菜单上选择“复制”时就会 ...