Oracle 数据库操作语句

创建表

SQL>create table classes(

       classId number(2),

       cname varchar2(40)

       birthday date

       );

添加一个字段

SQL>alter table student     add (classId number(2));

 

修改字段长度

SQL>alter table student modify(xm varchar2(30));

 

修改字段的类型/或是名字(不能有数据)

SQL>alter table student modify(xm char(30));

 

删除一个字段

SQL>alter table student drop column sal;

 

修改表的名字

SQL>rename student to stu;

 

删除表

SQL>drop table student;

 

插入所有字段数据

SQL>insert into student values (‘001’,’salina’,’女’,’01-5月-05’,10)

 

修改日期输入格式

SQL>alter session set nls_date_format = ‘yyyy-mm-dd’;       //临时生效,重启后不起错用

SQL>insert into student values (‘001’,’salina’,’女’,to_date(’01-5 -05’,’yyyy-mm-dd’),10)

SQL>insert into student values (‘001’,’salina’,’女’,to_date(’01/5 -05’,’yyyy/mm/dd’),10)

 

 

 

插入部分字段

SQL>insert into student (xh,xm,sex) values(‘001’,’lison’,’女’);

 

插入空值

SQL>insert into student (xh,xm,sex,birthday) values(‘021’,’BLYK’,’男’,null);

 

一条插入语句可以插入多行数据

SQL> insert into kkk (Myid,myname,mydept) select empno ,ename,deptno from emp where deptno=10;

 

 

查询空值/(非空)的数据

SQL>select * from student where brithday is null(/not null);

 

修改(更新)数据

SQL>update student set sal=sql/2 where sex =’男’

 

更改多项数据

SQL> update emp set (job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';

 

删除数据

  1. 1.       保存还原点

SQL>savepoint aa;

  1. 2.       删除数据

【1】      SQL>delete from student; //删除表的数据

【2】      SQL>drop table student;  //删除表的结构和数据

【3】      SQL>delete from student where xh=’001’; //删除一条记录

【4】      SQL>truncate table student;  //删除表中的所有记录,表结构还在,不写日志,无法扎找回的记录,速度快

 

查看表结构

SQL>desc student;

 

查询指定列

SQL>select sex,xh,xm from student;

 

如何取消重复

SQL>select distinct deptno,job from student;

 

打开显示操作时间的开关

SQL>set timing on;

 

 

为表格添加大的数据行(用于测试反应时间)

SQL>insert into users (userid,username,userpss) select * from users;

 

统计表内有多少条记录

SQL>select count(*) from users;

 

屏蔽列内相同数据

SQL>select distinct deptno,job from emp;

 

查询指定列的某个数据相关的数据

SQL>select deptno,job,sal from emp where ename=’smith’;

 

使用算数表达式

SQL>select sal*12 from emp;

 

使用类的别名

SQL>select ename “姓名”,sal*12 as “年收入” from emp

 

处理null(空)

SQL>select sal*13+nvl(comm,0)*13 “年工资”,ename,comm from emp;

 

连接字符串(||

SQL>select ename || ‘is a’ || job from emp;

 

Where子句的使用

【1】SQL>select ename,sal from emp where sal>3000;   //number的范围确定

【2】SQL>select ename,hiredate from emp where hiredate>’1-1月-1982’;//日期格式的范围确定

【3】SQL>select ename,sal from emp where sal>=2000 and sal<=2500;      //组合条件

 

Like操作符:’%’、’_’

SQL>select ename,sal from emp where ename like ‘S%’;              //第一个字符【名字第一个字符为S的员工的信息(工资)】

SQL>select ename,sal from emp where ename like ‘__O%’;          //其它字符【名字第三个字符为O的员工的信息(工资)】

 

批量查询

SQL>select * from emp where in(123,456,789);       //查询一个条件的多个情况的批量处理

 

查询某个数据行的某列为空的数据的相关数据

SQL >select * from emp where mgr is null;

 

条件组合查询(与、或)

SQL>select * from emp where (sal>500 or job=’MANAGER’) and ename like ‘J%’;

 

Order by 排序

【1】SQL>select * from emp order by sal (asc);       //从低到高[默认]

【2】SQL>select * from emp order by sal desc;      //从高到低

【3】SQL>select * from emp order by deptno (asc),sal  desc;     //组合排序

【4】SQL>select ename,sal*12 “年薪” from emp order by “年薪” (asc);

SQL> select ename,(sal+nvl(comm,0))*12 as "年薪" from emp order by "年薪";

 

资料分组(max、min、avg、sum、count

SQL>select max(sal),min(sal) from emp;

SQL>select ename,sal from emp where sal=(select max(sal)  from emp); //子查询,组合查询

SQL> select * from emp where sal>(select avg(sal) from emp); //子查询,组合查询

SQL> update emp set sal=sal*1.1 where sal<(select avg(sal) from emp) and hiredate<'1-1月-1982';      //将工资小于平均工资并且入职年限早于1982-1-1的人工资增加10%

 

Group by 和 having 子句

//group by用于对查询出的数据进行分组统计

//having 用于限制分组显示结果

SQL>select avg(sal),max(sal),deptno from emp group by deptno;        //显示每个部门的平均工资和最低工资

SQL>select avg(sal),max(sal),deptno from emp group by deptno;        //显示每个部门的平均工资和最低工资

SQL> select avg (sal),max(sal),deptno from emp group by deptno having avg(sal)>2000;

SQL> select avg (sal),max(sal),deptno from emp group by deptno having avg(sal)>2000 order by  avg(sal);

 

多表查询

笛卡尔集:规定多表查询的条件是至少不能少于:表的个数-1

SQL> select a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno=a2.deptno;

SQL> select a1.dname,a2.ename,a2.sal from dept a1,emp a2 where a1.deptno=a2.deptno and a1.deptno=10;     //显示部门编号为10的部门名、员工名和工资

SQL> select a1.ename,a1.sal,a2.grade from emp a1,salgrade a2 where a1.sal between a2.losal and a2.hisal;

SQL> select a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno=a2.deptno order by a1.deptno;                   //多表排序

SQL> select worker.ename,boss.ename from emp worker,emp boss where worker.mgr=boss.empno;       //     自连接(多表查询的特殊情况)

SQL> select worker.ename,boss.ename from emp worker,emp boss where worker.mgr=boss.empno and worker.ename='FORD';

 

子查询

SQL> select * from emp where deptno=(select deptno from emp where ename='SMITH');

SQL> select distinct job from emp where deptno=10;

 

SQL> select * from emp where job in (select distinct job from emp where deptno=10);   

// 如何查询和部门10的工作相同的雇员的名字、岗位、工资、部门号。

SQL> select ename ,sal,deptno from emp where sal>all (select sal from emp where deptno=30);//如何查询工资比部门30的所有员工的工资高的员工的姓名、工资和部门号

SQL> select ename ,sal,deptno from emp where sal>(select max(sal) from emp where deptno=30);

SQL> select * from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH');

 

内嵌视图

//当在from子句中使用子查询的时候,必须给子查询指定别名

SQL>select a2.ename,a2.sal,a2.deptno,a1.mysal from emp a2,(select deptno,avg(sal) (as ) mysal from emp group by deptno) a1 where a2.deptno=a1.deptno and a2.sal>a1.mysal;

 

 

分页

SQL >select a1.*,rownum rn from (select * from emp) a1;//orcle为表分配的行号

SQL> select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum<=10) where rn>=6;

//查询内容的变化

  1. 所有的改动(指定查询列)只需更改最里面的子查询
  2. (排序)只需更改最里面的子查询

 

 

子查询(用查询结果创建新表)

SQL> create table mytable (id,name,sal,job,deptno) as select empno,ename,sal,job,deptno from emp;

 

合并查询

union(求并集), union  all  , intersect(取交集),   minus (差集)

SQL> select ename,sal,job from emp where sal>2500;

SQL> select ename,sal,job from emp where job='MANAGER';

 

SQL> select ename,sal,job from emp where sal>2500 union select ename,sal,job from emp where job='MANAGER';    // union(求并集)

 

Java连接数据库

 

事务

SQL>commit;        //事务            (第一次创建,第二次提交)当退出数据库时,系统自动提交事务

SQL>savepoint a1;              //创建保存点                     (保存点的个数没有限制)

SQL>rollback to aa;    //使用保存点回滚到aa

SQL>rollback;           //回滚到事务创建开始

只读事务

SQL>set transaction read only

 

Java中的事务

Ct.setAutoCommit(false);    //设置事务自动提交为否

Ct.commit();          //提交事务

 

 

字符函数

lower(char)将字符串转换为小写的格式

upper(char)将字符串装换为大写的格式

length(char)返回字符串的长度

substr(char,m,n)取字符串的子串

 

SQL>select lower(ename) from emp;

SQL>select ename from emp where length(ename)=5;

转载于:https://www.cnblogs.com/lucky1024/p/11157588.html

Oracle 操作语句相关推荐

  1. Oracle操作语句(PL/SQL)创建表空间:第 1 行出现错误: ORA-01119: 创建数据库文件时出错 ORA-27040: 文件创建错误, 无法创建文件OSD-04002: 无法打开文件

    1.题目要求: 2.遇到的问题情况: 3.问题分析: 创建表空间时指定的文件目录地址出错 4.解决问题(解决方法): 问:既然是路径出错,那么就找到正确的路径即可,那么正确路径是什么呢? 答:是自己P ...

  2. oracle人语句大全,oracle查询语句大全

    oracle分页查询的时候,不能使用limit,所以只能这样 1.  select * from table_name where   rownum>begin   and   rownum   ...

  3. Oracle 数据库常用操作语句大全

    原文:Oracle 数据库常用操作语句大全 一.Oracle数据库操作 1.创建数据库      create database databasename 2.删除数据库      drop data ...

  4. Oracle with语句的用法

    http://database.51cto.com/art/201010/231528.htm Oracle with语句是经常可以见到的语句,下面就为您详细介绍Oracle with语句的用法,如果 ...

  5. oracle 带有变量的语句_【成都校区】Oracle SQL语句之常见优化方法总结

    本帖出自于黑马程序员成都中心,更多资源可关注微信公众号 1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行. 2.使用表的别名: 当在SQL语句中连接多 ...

  6. oracle回滚事务的关键字,Oracle ROLLBACK语句(回滚事务)

    Oracle ROLLBACK语句(回滚事务) 在Oracle中,ROLLBACK语句可以用来撤销当前事务或有问题的事务.本教程就将教大家如何使用ROLLBACK语句. ROLLBACK语法 ROLL ...

  7. oracle Sql语句分类

    dml语句:数据操作语句[insert,update,delete] ddl语句:数据定义语言[create table,drop table] dql语句:数据查询语句[select] dtl语句: ...

  8. Oracle SQL语句执行步骤

    Oracle中SQL语句执行过程中,Oracle内部解析原理如下: 1.当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hard parse,这过程有点像程序编译,检查语法.表名.字 ...

  9. Oracle sql语句简单优化

    一.操作符优化: 1.IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格.但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不 ...

最新文章

  1. QIIME 2用户文档. 12训练特征分类器Training feature classifiers(2018.11)
  2. ASP.NET MVC 5 入门指南汇总
  3. JavaScript格式化数字显示格式
  4. paramiko学习笔记
  5. 输入输出系统的发展概况
  6. Hadoop 开源调度系统zeus
  7. 网站设计必备:网页经典代码(转)
  8. python经济统计学论文_统计学论文
  9. 在Debian上安装FlashPlayer10
  10. oracle库sql根据拼音查汉字,根据拼音首字母模糊查询数据库中文字段
  11. 百度云盘不限速 又一款百度网盘满速下载工具利器
  12. Windows设置自己的程序开机自动启动
  13. 2021-07-19支付宝扫码点餐推广怎么做(干货来了)
  14. 5G消息、聊天机器人和小程序
  15. 20200903-03-Hadoop运行模式之本地运行模式伪分布式运行模式
  16. mes系统和plc通讯案例_MES系统与PLC数据集成主要方式
  17. 安卓系统双屏异显_双屏异显在Android系统上的实现
  18. 快手程序员爆料:有大厂背书就是好,这就是光环效应
  19. osmdroid 在线加载谷歌瓦片(谷歌地图瓦片地址解释)
  20. 大数据技术在金融行业的应用前景

热门文章

  1. 六度分离(floyd)
  2. 强制显示U盘隐藏文件
  3. 大数据为我们的生活带来了什么?
  4. oracle sparc t5-2报价,SPARC T5-2服务器
  5. 基于区块链的二维码门禁系统成品演示视频
  6. Android从本地服务器获取Mp3实现边下边播(JavaEE+Tomcat+SQLServer)
  7. 产品经理如何设计网页导航菜单
  8. Python Gstreamer播放rtsp视频(含音频)(海康IPCAM)
  9. Matlab/Simulink仿真问题及技巧汇总【持续更新】
  10. [经验教程]在拼多多上发起拼单和参与拼单有什么区别?