`

oracle中table表操作

阅读更多
1. scott用户示例表

  1) 部门表:dept
1DEPTNONUMBER(2)表示部门编号,由两位数字构成
2DNAMEVARCHAR2(14)部门名称,最多由14个字符所组成
3LOCVARCHAR2(13)部门所在的位置

  2) 雇员表:emp
1EMPNONUMBER(4)雇员的编号,由四位数字所组成
2ENAMEVARCHAR2(10)雇员的姓名,由10位字符所组成
3JOBVARCHAR2(9)雇员的职位
4MGRNUMBER(4)雇员对用的领导编号,领导也是雇员
5HIREDATEDATE雇员的工作日期
6SALNUMBER(7,2)基本工资,其中有两位小数,五位整数,一共七位
7COMMNUMBER(7,2)奖金,佣金
8DEPTNONUMBER(2)雇员所在的部门编号

  3) 部门表:dept
1GRADENUMBER工资的等级
2LOSALNUMBER此等级的最低工资
3HISALNUMBER此等级的最高工资

  4) 部门表:dept
1ENAMEVARCHAR2(10)雇员姓名
2JOBVARCHAR2(9)雇员职位
3SALNUMBER雇员的工资
4COMMNUMBER雇员的奖金


2. 表的操作

2.1 查询表结构
1) 查询表结构:
SQL> desc dba_users;

2) 使用user_tab_cols表查询表结构:
select column_name, data_type, data_length from user_tab_cols where table_name='DBA_USERS';


2.2 删除表
------------------------------ 
create table t_user(
  id number,
  username char(20),
  password varchar2(20)
);
------------------------------ 
1) delete命令
SQL> delete t_user;

  1.用delete删除表数据,只是删除表中的数据,表结构不会被删除!
  2.虽然也是删除整个表的数据,但是过程是系统一行一行地删,效率比truncate低。
  3.delete删除是不释放空间的。

2) truncate命令
SQL> truncate table t_user;

  1.用truncate删除表数据,只是删除表中的数据,表结构不会被删除!
  2.删除整个表的数据时,过程是系统一次性删除数据,效率比较高。
  3.truncate删除释放空间。

3) drop命令
SQL> drop table t_user;

  1.用drop删除表数据,不但会删除表中的数据,连表结构也被删除了!


3. 表的增删改查

3.1 插入insert语句
给指定列插入数据:
SQL> insert into dept(deptno,dname) values(50,'xx');

插入全部列数据:
SQL> insert into dept(deptno,dname,loc) values(60,'xx','lll'); 

插入全部列数据简写:
SQL> insert into dept values(70,'xxx','llll');

3.2 更新update语句
更新指定数据:
SQL> update dept set dname='司法部' where deptno=50;
SQL> update dept set dname='律政司', loc='china' where deptno=60;

3.3 删除delete语句
删除指定数据:
SQL> delete from dept where deptno=70;

删除指定条件的数据:
SQL> delete from dept where deptno>40;

3.4 查询select语句
------------------------------ 
create table t_user1(
  id number,
  username varchar2(20),
  password varchar2(20)
);
insert into t_user1(id, username, password) values(1, 'bill', 'bill123');
insert into t_user1(id, username, password) values(2, 'adam', 'adam123');

create table t_user2(
  id number,
  username varchar2(20),
  password varchar2(20)
);
insert into t_user2(id, username, password) values(1, 'bill', 'bill123');
insert into t_user2(id, username, password) values(2, 'bake', 'bake123');
------------------------------ 

查询所有
SQL> select * from emp;

指定字段查询
SQL> select ename, sal from emp;

加where条件
SQL> select * from emp where sal>=800;
SQL> select * from emp where sal>=1500 and job='SALESMAN';

distinct去重复记录
SQL> select distinct * from dept;

group by分组查询
SQL> select job,count(ename) as num from emp t group by job;

having过滤分组
SQL> select job,count(ename) as num from emp t group by job having count(ename)>=2;

order by排序
SQL> select * from emp order by sal desc;

子查询:查询出基本工资大于平均工资的员工
SQL> select * from emp where sal>(select avg(sal) from emp); 

联合查询、并集(去重复)
SQL> select * from t_user1 union select * from t_user2;

联合查询、并集(不重复)
SQL> select * from t_user1 union all select * from t_user2;

交集
SQL> select * from t_user1 intersect select * from t_user2;

差集(在第一集合t_user1中且不在第二个集合t_user2中)
SQL> select * from t_user1 minus select * from t_user2;

内连接
SQL> select * from emp t, dept d where t.deptno=d.deptno;
SQL> select * from emp e inner join dept d on e.deptno=d.deptno;

外连接
左外连接
SQL> select * from emp e left join dept d on e.deptno=d.deptno;
右外连接
SQL> select * from emp e right join dept d on e.deptno=d.deptno;
分享到:
评论

相关推荐

    ORACLE中查找定位表最后DML操作的时间小结

    在Oracle数据库中,如何查找,定位一张表最后一次的DML操作的时间呢? 方式有三种,不过都有一些局限性,下面简单的解析、总结一下。 1:使用ORA_ROWSCN伪列获取表最后的DML时间  ORA_ROWSCN伪列是Oracle 10g开始...

    利用 Oracle 系统触发器防止误删除表操作

    利用oracle 系统触发器防止用户使用drop table 或truncate table 命令。

    java操作Oracle数据库——ARRAY、TABLE类型批量入库

    NULL 博文链接:https://bijian1013.iteye.com/blog/2262435

    Analyze_Oracle_Table.rar_Table_analyze orac_analyze orac_oracle

    有時候Oracle效能變慢, 做一下分析 讓他認得index.key....,之後查詢、執行操作會提高效率

    oracle动态性能表

     table scans (blocks gotten):全表扫描中读取的总块数,不包括那些split的列。  user commits + user rollbacks:系统事务起用次数。当需要计算其它统计中每项事务比率时该项可以被做为除数。例如,计算事务中...

    ORACLE大表分区

    支持自动ORACLE大表分区: 版本进度: 31. 20110420 V2.2 支持任意表任意时间字段分区 以下为安装部署部分: 1.分区相关脚本部署执行顺序,安装前请确保该用户拥有管理员权限, 同时请执行GRANT CREATE ANY TABLE ...

    oracle性能优化技巧

    ORACLE的优化器共有3种 ... 在缺省情况下,ORACLE采用CHOOSE优化器, 为了避免那些不必要的全表扫描(full table scan) , 你必须尽量避免使用CHOOSE优化器,而直接采用基于规则或者基于成本的优化器

    Oracle表的各种操作.docx

    4、在CREATE TABLE子句中使用子查询,新表中的列数必须与子查询返回的列数相等,列位置对应。另外,除NOT NULL约束外,新列不会继承源列的所有约束。 5、在表中添加一列时,不能指定该列的位置,它会被默认放置在...

    oracle cast (multiset()as )用法

    通过实例介绍了 cast(multiset() as) 的使用方法,以处理嵌套表的操作

    ora_trunc_table.sh

    linux 下 shell 连接 oracle 数据库,对数据库数据处理操作。 脚本产生的背景是生产服务器每天产生几万笔数据,使用的数据库是oralceXE,当数据文件超过4G,会提示错误ORA-12953。因此需要调整数据库中部分表,日志...

    ORACLE查询表最近更改数据的方法

    修改项目时,涉及到了Oracle中许多表的修改(包括:增加、删除字段,修改注释等)。由于开始没有进行记录,造成在上测试机时,忘记了具体修改过哪些表了。后来在网上查找了一些资料,例如: 代码如下: 1、select uat...

    VS2010访问 oracle数据库的例子(EMP表)

    using System; using System.Collections.Generic; using System.Linq;... Response.Write("进入oracle自带emp表查询结果为"); Response.Write("<table bgcolor = #fff000>"); Response.Write("<tr>");

    Oracle 当前用户下所有表的记录总数

    您可能感兴趣的文章:shell脚本操作oracle删除表空间、创建表空间、删除用户杀掉oracle在线用户脚本分享[Oracle] 如何使用触发器实现IP限制用户登录在命令行下进行Oracle用户解锁的语句深入探讨:Oracle中如

    oracle命令中英文对照.doc

    DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引 DROP INDEX --从数据库中删除索引 ...

    Oracle数据库学习指南

    38.优化调整Oracle 8i数据库(从操作系统) 39.在Internet上运作公司是一项艰苦的任务--关键任务 40.在oracle中限制返回结果集的大小 41.在远端如何建立standby数据库 42.怎样分析你的SQL语句的效率 43....

    oracle表空间表分区详解及oracle表分区查询使用方法

    对表分区的维护性操作.(1.) 表空间及分区表的概念表空间:是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。分区表: 当表中的数据量不断增大,查询数据的...

    oracle表的简单操作步骤

    1.创建表 create table test_1(num number(2) not null,name VARCHAR2(20) not null,primary key(num)); 创建了一个两个字段的表,num和name,都设置为非空,num设为主键,在创建表的时候经常一个“缺失左括号”的...

    oracle中截断表的使用介绍

    在Oracle中如果删除了表中的某一条数据,还可以通过回滚操作(rollback)进行回滚,假如想清空一张 表的数据,但是又不想使其能进行回滚操作,就可以立刻释放资源,这时就需要使用截断表了。它的主要功能就是彻底删除...

Global site tag (gtag.js) - Google Analytics