Oracle数据更新,表结构,约束

数据插入

insert into 表名称[(列名称1,列名称2,…)] values (值1,值2…);

字符串:使用单引号声明,例如:‘sasda’;

数字:直接编写,例如:100;

日期:当前日期(sysdate)、使用to_date()转换

范例:使用完整格式:

insert into myemp(empno,sal,job,comm,ename,mgr,hiredate,deptno) values(8888,6666,'清洁工',10,'张三',7369,TO_DATE('1992-2-21','yyyy-mm-dd'),40);

数据更新

要针对于数据表中的数据修改的时候可以使用如下的语法完成

update 表名称 set 字段1 = 值 ,字段2 = 值,…[where 更新条件(s)];

在使用更新的时候,where子句里面的内容可以使用in,between…and,like等进行限定查询。

范例:
将Allen的工资修改为SCOTT的工资

update myemp set sal=(select sal from emp where ename = 'SCOTT')
where ename = 'ALLEN';

范例:
将低于公司平均工资的雇员工资上涨20%

  • 先找到公司的平均工资 select avg(sal) from emp;
  • 更新工资信息 update emp set emp = emp*1.2 where sal < (select avg(sal) from emp);

对于软件而言,判断效率的方式就两个:时间复杂度、空间复杂度。

软件的性能运行方式无外乎只有两种:以时间换控空间、以空间换时间。

总结:以后只要是写更新操作,不可能不写WHERE字句。

数据删除

delete from 表名称 [where 删除条件(s)]

事务处理

总结:

  1. 只有更新操作才会存在事务处理,DDL不支持事务处理,而且在ORACLE里面,如果发生DDL操作,所有未提交的事务都会被自动提交。

  2. 两个重要事务处理命令:Commit,RollBack.

数据伪列

  • rownum

取出第一行记录:select rownum *from emp where rownum =1;只能是数字1。
取出前N行记录:select rownum *from emp where rownum <= N;
取出6到10行记录:

select * from(select * rownum  rn from emp where rownum <= 10)temp
where temp.rn > 5;

分页语法

select * from(select 列,,,,rownum rnfrom 表名称,表名称,,,where rownum <=(currentpage*linesize)order by,,,,)temp
where temp.rn >(currentpage-1)*linesize
  • rowid

整理去重SQL(留最早出入的数据):

Delete from mydept where ROWID not in (select MIN(ROWID) --max(ROWID)表示留最后出入的数据from mydeptgroup by deptno,dname,loc);

表的创建与管理(常用数据类型)

常见的数据类型
因为数据表就属于各种类型第一个集合,所以要想创建属于自己的数据表,那么就要先清楚常见的数据类型:

  1. VARCHAR2(n) 表示字符串,其中n表示最大长度,一般保存长度比较小的内容可以使用此类型(200个字以内的内容都建议使用VARCHAR2(n)
  2. NUMBER(n,m) NUMBER(n):表示整数数据,最多不能超过n个长度。
    NMBERE(n,m):表示小数位占m位,而整数位占n-m位
  3. DATE 保存日期时间数据
  4. CLOB 大文本数据,最多可以保存4G的文字
  5. BLOB 二进制数据,最多可以保存4G的内容

创建表

创建表的语法

CREATE TABLE 表名称(列名称 类型 【DEFAULT】);

可以在表中创建多个列名称要用,隔开。

创建一个表:

CREATE TABLE member(mid            NUMBER,name           VARCHAR2(50)    DEFAULT'无名氏',age            NUMBER(3),birthday       DATE            DEFAULT SYSDATE,note           CLOB
);

为表重命名

所谓表重命名,本质上就是更新一下数据字典中的相应信息。但是数据字典信息是由ORACLE自己维护,此信息修改必需由oracle命令完成,不可以直接update。

命令格式:rename [oldTable] to [newTable]

  • 用户级别的数据字典:user_*开头
  • 管理员级别数据字典:dba_*开头
  • 全级别:all_*开头

表的截断

要清除表的一张数据表的记录,执行DELETE操作,但是在使用DELETE的时候严格来讲,表所占用的资源(约束、索引)并不会被立刻释放掉。

可以rollback,之后在查发现数据还在。

如果想要将数据表所占的全部资源清空,就需要用截断表的操作。

语法是:TRUNCATE TABLE 表名称;

表的复制

复制表的语法(严格来说这是根据子查询返回的结构在创建数据表,并且将子查询中的数据保存到新的数据表中)

CREATE TABLE 表名称 AS子查询

创建一张只包含有10部门雇员信息的数据表

CREATE TABLE aaa AS SELECT * FROM emp WHERE deptno=10;

创建一张空表

CREATE TABLE emp_20190512 AS SELECT * FROM emp WHERE 1=2; --因为1永远不等于2,所以会产生一张emp的空表,不加where条件就是全部数据和表结构复制为另一张表(备份表)

表的删除

数据表的删除操作,严格来讲是属于对象的删除,于是语法是 DROP TABLE 表名称;

删除表

DROP TABLE aaa;

数据表的删除操作是比数据删除更为可怕的事情,所有几乎的数据库都不会提供全部删除表的命令。

闪回技术

如果用户执行了DROP TABLE命令,队数据库来说就是表被删除了。

从oracle10g开始引入了闪回(Flash back)技术,这个技术和windows的回收站很像。

当执行数据表删除后并不会立马就真的删了,而是先将数据表保存在回收站中,为了标记出回收站里的内容不是空的,就在表的数据字典上提供
有“BIE”开头的内容。

查看回收站:SHOW RECYCLEBIN;

修改表结构

修改表中数据列,语法:

ALTER TABLE 表名称 MODIFY(列名称 类型 【DEFAULT 默认值】,
列名称 类型 【DEFAULT 默认值】,...);

将name的长度修改成20,默认值设置为无名氏

ALTER TABLE member MODIFY(name VARCHAR2(20) DEFAULT '无名氏');

删除列,语法

ALTER TABLE DROP COLUMN 列名称;

删除sex列

ALTER TABLE member DROP COLUMN sex;

约束

共6中约束。关键字:CONSTRAINT

1、非空约束:NOT NULL;

示例:1、创建约束:name varchar2(8) NOT NULL;;2、添加非空约束:ALTER TABLE 表名 MODIFY 字段 NOT NULL;;3、删除非空约束:ALTER TABLE 表名 MODIFY 字段 NULL;。
异常信息:ORA-01400:无法将NULL插入("登录用户"."用户表名"."表字段")。

2、唯一约束:UNIQUE;

示例:phone number(11) UNIQUE; 或 phone number(11);CONSTRAINT uk_phone UNIQUE (phone);
注意:NULL值(如果允许为NULL)不会受到字段唯一约束限制;
异常信息:ORA-00001:违反唯一约束条件(登录用户.约束对象名 | 登录用户.自定义约束别名(uk_phone)(约束对象可通过数据字典"user_constraints"查看所属表;可通过数据字典"user_cons_columns"所属表的字段:SELECT * FROM user_cons_columns;)
)。

3、主键约束(唯一约束 + 非空约束):PRIMARY KEY;

唯一主键示例:id number(11) PRIMARY KEY; 或 CONSTRAINT pk_id PRIMARU KEY (id);
复合主键示例:CONSTRAINT pk_id_name PRIMARU KEY (id, name);
异常信息:同“唯一约束”或“非空约束”异常。

4、检查约束:CHECK;

示例:CONSTRAINT ck_age CHECK (age BETWEEN 0 AND 250);
注意:检查约束是一个个进行过滤的,并发量大情况下,影响性能。
异常信息:查询详情时,同“唯一约束”相同。

5、外键约束:FOREIGN KEY;

示例:CONSTRAINT fk_xid FOREIGN KEY (子表字段) REFERENCES 主表名 (主表字段) [ON DELETE 级联关系(可选)];
注意:子表数据范围,受主表数据的影响。
限制:1、在删除主表前,一定要先删子表。(A、B两表互设外键时,就会遇到无法删除的情况,可用强制删除表:DROP TABLE 表名 CASCADE CONSTRAINT;。强制删除的表会进入Oracle“回收站”);2、子表外键关联的主表字段,必须设置为主键约束或唯一约束;3、主表中的数据,在子表中存在外键数据,那么主表的这条数据不允许别删除(可设置级联关系删除)。
设置外键的级联关系:1、级联删除:CONSTRAINT fk_xid FOREIGN KEY (子表字段) REFERENCES 主表名 (主表字段) ON DELETE CASCADE;;2、级联更新:CONSTRAINT fk_xid FOREIGN KEY (子表字段) REFERENCES 主表名 (主表字段) ON DELETE SET NULL;。
异常信息:ORA-02291:违反完整约束条件(登录用户.约束对象名) - 未找到父项关键字。

6、修改约束:

示例:1、添加约束:ALTER TABLE 表名 ADD CONSTRAINT 自定义约束名cons_id 约束类型UNIQUE (字段) [选项];;2、删除约束:ALTER TABLE 表名 DORP CONSTRAINT 自定义约束名。
注意:无法增加非空约束NOT NULL,可通过修改表结构添加非空约束:ALTER TABLE 表名 MODIFY(字段 varchar2(n) NOT NULL);;删除非空约束,要先找到非空约束所在字典中的对象:ALTER TABLE 表名 DROP CONSTRAINT 非空对象SYS_C0011097;。

Oracle数据更新,表结构,约束相关推荐

  1. oracle 查看表结构约束,oracle 约束

    约束是表中列的属性,用来维护数据结构完整性的一种手段 约束的种类: NOT NULL UNIQUE PARIAMRY KEY FOREIGN KEY CHECK enble validate 检查现有 ...

  2. oracle怎么看一个表结构,Oracle查看表结构的几种方法

    Oracle查看表结构的几种方法 1,DESCRIBE 命令 使用方法如下: SQLgt; describe nchar_tst(nchar_tst为表名) 显示的结果如下: Oracle查看表结构的 ...

  3. MySql 、Oracle 获取表结构和字段信息

    MySql获取表结构信息 SELECTTABLE_NAME,TABLE_COMMENT FROMinformation_schema.`TABLES` WHERETABLE_SCHEMA = 'dm' ...

  4. oracle复制一个表的结构图,Oracle复制表结构

    Oracle复制表结构 如下,表a是数据库中已经存在的表,b是准备根据表a进行复制创建的表: 1.只复制表结构的sql create table b as select * from a where ...

  5. 数据库oracle修改属性列,Oracle修改表结构

    本篇文章帮大家学习Oracle修改表结构,包含了Oracle修改表结构使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 在本教程中,我们将学习如何使用Oracle ALTE ...

  6. oracle 数据库表结构对比

    oracle 数据库表结构对比 由于公司工作比较混乱,总有人会改数据库中表的内容和字段. 在部署的时候总会因为数据库出现了未知的改变而发生错误. 所以需要对数据库内容进行比对,以求得到变化的内容. 导 ...

  7. oracle用命令查表结构,Oracle查看表结构命令详解

    获取表: select table_name from user_tables; //当前用户的表 select table_name from all_tables; //所有用户的表 select ...

  8. 查询oracle表结构及注释,oracle查看表结构和注释

    查看表结构: 看字段名与数据类型 select   *   from   cols     WHERE   TABLE_name=upper( 'table_name ') 查看主键: select ...

  9. oracle 查看表结构

    oracle 查看表结构 1.命令窗口:desc 表名 2.sql窗口:select * from user_tab_columns where table_name='大写表名':

  10. Oracle修改表结构字段名和字段长度

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],-.); 修改字段的语法:alter ...

最新文章

  1. AttributeError: module ‘os‘ has no attribute ‘mknod‘
  2. R语言配对图可视化:配对图(pair plot)可视化(根据分类变量的值为散点图上的数据点添加颜色和形状、Add color and shape by variables)
  3. laravel cookie加密解密原理
  4. [BZOJ 1879][SDOI 2009]Bill的挑战 题解(状压DP)
  5. StrategyPattern--策略模式java实现
  6. 谈论Java原子变量和同步的效率 -- 颠覆你的生活
  7. 9个元素换6次达到排序序列_C语言必学的12个排序算法:希尔排序(第3篇)
  8. foreach lambda写法_Java8新特性之forEach+Lambda 表达式遍历Map和List
  9. 使用countDownLahct模拟多线程并发场景
  10. 十字链表 java_十字链表法,十字链表压缩存储稀疏矩阵详解
  11. js define函数_不夸张,这真的是前端圈宝藏书!360前端工程师Vue.js源码解析
  12. c ++中哈希表如何访问_C / C ++中的哈希表–完整的实现
  13. AcWing 796. 子矩阵的和
  14. 【权限设计】如何以“权限”为单位的进行权限设计(二)
  15. 【POJ 1456】Supermarket【并查集】
  16. 编译原理(第3版)陈火旺——课后习题答案——第四章
  17. 跨平台开发实践之Flutter
  18. for of 的基本用法
  19. 计算机表格数据怎么样汇总,Excel 中如何汇总相同结构的多个工作表数据
  20. 2024浙江大学计算机考研信息汇总

热门文章

  1. 【无标题】研究过程中的一些经验感悟
  2. Tushare Day4——导入IPO新股列表new_share并分析基金和盈利
  3. html5 重度游戏,款款经典 2016年H5重度游戏好作大盘点
  4. iphone通讯录 android,3个方法,教你如何快速而又有效的将联系人从iPhone转移到安卓...
  5. CUrl 创始人怒怼苹果:靠开源年赚数十亿,却把开发者当免费工具人
  6. Linux判断服务进程存在,存在则重启,不存在则启动
  7. 重新认识 Java 的 System.in
  8. 玩转算法面试LeetCode题目目录
  9. 信汇、电汇和票汇的概念、程序及其异同点
  10. linux游戏星际公民,鲜游快报:《星际公民》众筹破3.1亿美元 公布新视频展示新机制...