一、创建表和管理表

1.表名和列名的命名规则

必须以字母开头
必须在 1–30 个字符之间
必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
必须不能和用户定义的其他对象重名
必须不能是Oracle 的保留字

2.create table语句

条件: 

  CREATE TABLE权限

  存储空间

格式:

  CREATE TABLE [schema.]table

    (column datatype [DEFAULT expr][, ...]);

实例;

  1. create table test_create(
  2. name varchar2(10),
  3. id number(10),
  4. email varchar2(20)
  5. )

3.数据类型

VARCHAR2(size)   可变长字符数据

CHAR(size)       定长字符数据

NUMBER(p,s)      可变长数值数据

DATE           日期型数据

LONG          可变长字符数据,最大可达到2G

CLOB          字符数据,最大可达到4G

RAW (LONG RAW)    原始的二进制数据

BLOB          二进制数据,最大可达到4G

BFILE          存储外部文件的二进制数据,最大可达到4G

ROWID       行地址

4.使用子查询创建表

格式:

CREATE TABLE table
  [(column, column...)]
AS subquery;

注意:

使用 AS subquery 选项,将创建表和插入数据结合起来;

指定的列和子查询中的列要一一对应

通过列名和默认值定义列

实例:

  复制表

  1. create table emp1
  2. as select * from employees;
  3. --emp2为结构和employees相同的空表
  4. create table emp2
  5. as select * from employees where 1=2;

5.alter table语句

(1)追加一个新列

ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);

(2)修改列

ALTER TABLE table
MODIFY (column datatype [DEFAULT expr]
[, column datatype]...);

可以修改列的数据类型, 尺寸和默认值

对默认值的修改只影响今后对表的修改

(3)删除列

ALTER TABLE table
DROP COLUMN column_name;

(4)重命名列

ALTER TABLE table_name RENAME COLUMM old_column_name
TO new_column_name

6.删除表

DROP TABLE table_name;

数据和结构都被删除
所有正在运行的相关事务被提交
所有相关索引被删除
DROP TABLE 语句不能回滚

7.清空表数据

TRUNCATE TABLE table_name;

删除表中所有的数据
释放表的存储空间
TRUNCATE语句不能回滚
使用 DELETE 语句删除数据,可以回滚

8.改变对象的名称

RENAME obj_name TO new_name;

二、数据处理(DML)

1.插入数据:insert语句

格式:

INSERT INTO table_name [(column [, column...])]
VALUES (value [, value...]);

注意事项:

使用这种语法一次只能向表中插入一条数据
为每一列添加一个新值。
按列的默认顺序列出各个列的值。
在 INSERT 子句中随意列出列名和他们的值。
子句中没有列出的列将被赋为空值null
字符和日期型数据应包含在单引号中。
使用 & 变量指定列值,& 变量放在VALUES子句中,创建脚本由用户输入列值

实例:

  1. INSERT INTO employees(employee_id,last_name,email,hire_date,job_id)
  2. VALUES (300,’Tom’,’tom@126.com’,to_date(‘2012-3-21’,’yyyy-mm-dd’),’SA_RAP’);

从其他表中拷贝数据

  1. INSERT INTO sales_reps(id, name, salary, commission_pct)
  2. SELECT employee_id, last_name, salary, commission_pct
  3. FROM employees
  4. WHERE job_id LIKE '%REP%';
  5. --不用书写values子句
  6. --子查询中的值列表应与 INSERT 子句中的列名对应

2.更新数据:update语句

格式:

UPDATE table_name
SET column = value [, column = value, ...]
[WHERE condition];

特点:

可以一次更新多条数据
使用 WHERE 子句指定需要更新的数据。
如果省略 WHERE 子句,则表中的所有数据都将被更新

实例:

在 UPDATE 中使用子查询,使更新基于另一个表中的数据。

  1. UPDATE copy_emp
  2. SET department_id = (SELECT department_id
  3. FROM employees
  4. WHERE employee_id = 100)
  5. WHERE job_id = (SELECT job_id
  6. FROM employees
  7. WHERE employee_id = 200);

3.删除数据:delete语句

格式:

DELETE FROM table_name
[WHERE condition];

特点:

使用 WHERE 子句删除指定的记录。

如果省略 WHERE 子句,则表中的全部数据将被删除。

4.数据库事务

定义:

事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。
数据库事务由以下的部分组成:
一个或多个DML 语句
一个 DDL(Data Definition Language – 数据定义语言) 语句
一个 DCL(Data Control Language – 数据控制语言) 语句

结构:

以第一个 DML 语句的执行作为开始

以下面的其中之一作为结束:
COMMIT 或 ROLLBACK 语句
DDL 语句(自动提交
用户会话正常结束
系统异常终止

COMMIT和ROLLBACK语句的优点:
确保数据完整性。
数据改变被提交之前预览。
将逻辑上相关的操作分组。

回滚到保留点:

使用 SAVEPOINT 语句在当前事务中创建保存点。
使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。

  1. UPDATE...
  2. SAVEPOINT update_done;
  3. INSERT...
  4. ROLLBACK TO update_done;

提交或回滚前的数据状态:

改变前的数据状态是可以恢复的。
执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正。
其他用户不能看到当前用户所做的改变,直到当前用户结束事务。
DML语句所涉及到的行被锁定, 其他用户不能操作。

提交后的数据状态:

数据的改变已经被保存到数据库中。
改变前的数据已经丢失。
所有用户可以看到结果。
锁被释放,其他用户可以操作涉及到的数据。
所有保存点被释放。

数据回滚后的状态:

使用 ROLLBACK 语句可使数据变化失效:
数据改变被取消。
修改前的数据状态被恢复。
锁被释放。

Oracle学习DayTwo的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. Oracle学习线路

    出自huyangg的博客,地址是:oracle学习路线图 1.sql.pl/sql(网上有很多的视频,可以做一个简单的入手,然后看几本书,多做实验)    作为oracle的基本功,需要大家对sql和 ...

  3. Oracle学习指南

    Oracle学习指南 你走的那天,我决定不落泪,迎着风撑着眼帘用力不眨眼 创建数据库.创建用户.创建表空间.创建表.插入数据..... 1.用系统用户登录,任选系统用户 代码: >>sql ...

  4. Oracle学习系列1-7

    Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...

  5. Oracle学习系列7

    Oracle学习系列7 ************************************************************************************ 关联表 ...

  6. Oracle学习系列6

    Oracle学习系列6 ************************************************************************************ 删除约 ...

  7. Oracle学习系列5

    Oracle学习系列5 ************************************************************************************ ,掌握 ...

  8. Oracle学习系列4

    Oracle学习系列4 ************************************************************************************ 数据库 ...

  9. Oracle学习系列3

    Oracle学习系列3 ************************************************************************************ 多表查 ...

随机推荐

  1. Win10提示“因为文件共享不安全,所以你不能连接到文件共享”如何处理

    在使用Windows10 1803版本系统连接CentOS6.5下搭建的Samba服务时,发现打开共享文件会遇到以下提示: 其实,该问题是Win10版本不兼容导致的.微软官方说明:https://go ...

  2. Demo整合

    1.图片上传:  https://github.com/842549829/WebUploader 2.百度编辑器: https://github.com/842549829/Ueditor 3.安卓 ...

  3. (3)arp协议

    arp协议:通过ip找mac(交换机不能识别ip) arp解析表: mac 和 ip 的映射关系 arp协议: 通过ip找到mac,可以减少广播的频率,减少主机的损耗. arp协议: 能够完成,依靠交 ...

  4. 开发者的自测利器-Hprof命令(寻找cpu热点)

    测试代码: public class HProfTest { public void slowMethod() { try { Thread.sleep(1000); } catch (Excepti ...

  5. 使用js如何设置、获取盒模型的宽和高

    第一种: dom.style.width/height 这种方法只能获取使用内联样式的元素的宽和高. 第二种: dom.currentStyle.width/height 这种方法获取的是浏览器渲染以 ...

  6. XFS文件系统的备份和恢复

    1.工具 XFS文件系统提供了xfsdump和xfsrestore来协助备份.恢复XFS文件系统中的数据,xfsdump按inode顺序来备份XFS文件系统,备份时不需要卸载文件系统,备份和恢复的过程 ...

  7. url路由配置以及渲染方式

    路由分配及模板渲染 路由系统 urlpatterns = [ path('admin/', admin.site.urls), path('teacher/',include('teacher.url ...

  8. 前台ajax请求php后台返回成功却进error方法解决

    最近几天一直都在解决error问题,周末都没能好好过,悲痛万分,想逃走

  9. 生成器的认识及其思考:VAE, GAN, Flow-based Invertible Model

    生成器对应于认知器的逆过程. 这一切的起源都是当初一个极具启发性的思想:Sleep-wake algorithm——人睡眠时整理记忆做梦,是一个生成的过程,即通过最终的识别结果企图恢复接收到的刺激,当 ...

  10. oracle 12g,断电,数据库启动不了,无法登录 并且 报ora-00119和ora-00132错误

    oracle 12g,断电,数据库启动不了,无法登录 前提:服务全部打开,监听也配置好了! 可以参考网站:https://jingyan.baidu.com/article/5552ef47c73ee ...