sqlplus:

1.命令行访问:sqlplus

2.sqlplus

3.isqlplus:            http://127.0.0.1:5560/isqlplus

问题:

scott 账户锁定,以管理员登陆,sqlplus sys/password as sysdba

conn  sys/passwords as sysdba

解除锁定:alter user scott account unlock,执行退出命令,

用scott登陆,提示密码过期,修改,仍用tigger

描述:

desc emp  员工表

desc dept  部门表

desc salgrade  薪水等级

desc dual 空表

查询表达式:select 2*3 from dual;

查询日期:select sysdate from dual;

起别名:

select ename,sal*12annual_salfrom emp;        //字段名转为大写

select ename,sal*12 "annual sal" from emp;      //双引号的字段名不变

空值:

任何含有空值的表达式的值都为空值

连接符:

select ename||sal from emp;

select ename||'abcdefg' from emp;

用两个单引号代替一个单引号:select ename||'abddd''adfa' from emp;

distinct:

select distinct deptno from emp;

select distinct deptno,job from emp;

select ename,sal,deptno from emp where sal>1500 and deptno<>10;

select ename,sal,deptno from emp where sal between 1000 and 1500 and deptno<>10;

空值处理:

select ename sal,comm from emp where comm is null;

select ename sal,comm from emp where comm is not null;

select ename ,sal from emp where sal in(800,1500,2000);

select ename ,sal from emp where ename in('King','abc');

select ename ,sal from emp where sal not in(800,1500,2000);

模糊查询:

select ename from emp where ename like '%ALL%';

转义字符/,含有%

select ename from emp where ename like '%/%%';

排序:

select  ename,sal,deptno from emp order by deptno asc,ename desc;(先按deptno正序排,内部再按ename反序排)

小结: select ename,sal*12 annual_sal from emp where ename not like '_A%' and sal >800 order by sal desc;

常用的SQL函数:

lower()  select lower(ename) from emp;

upper()  select upper(ename) from emp;

substr() select substring(ename,1,3) from emp;  从第一个开始截3个字符

chr()   select chr(65) from dual;   把ANSII转为字符

ascii()  select ascii('A') from dual

round()    select round(23.234,1) from dual;   四舍五入

to_char()select to_char(sal,'$999,999.9999') from emp;  转换数字

select to_char(hiredate,'yyyy-mm-dd hh:mi:ss') from emp; 转换日期

select to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;

to_date()select ename,hiredate from emp where hiredate > to_date('1981-2-20 12:34:56

','yyyy-mm-dd hh24:mi:ss');

to_number()select sal from emp where sal > to_number('$1,250.00','$9,999.99');

NVL()    select ename,sal*12+NVL(comm,0) from emp;  如果comm是空值则用0代替

分组:

group by语句

select deptno,avg(sal) from emp group by deptno;

select ename from emp where sal=(select max(sal) from emp);

出现在select列表中的字段没有出现在子函数中必须出现在group by中

having

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

对分组进行限制

select - where- group by -having -order by

SQL> select avg(sal)

2  from emp

3  where sal>1200

4  group by deptno

5  having avg(sal) > 1500

6  order by avg(sal) desc;

SQL> select ename,sal from emp

2  join (select max(sal) max_sal,deptno from emp group by deptno) t

3  on (emp.sal=t.max_sal and emp.deptno=t.deptno);

子连接:SQL> select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno;

SQL> select ename,dname from emp cross join dept;    产生一个笛卡尔成绩cross

SQL> select ename,dname from emp ,dept where emp.deptno=dept.deptno;  旧语法

SQL> select ename,dname from emp join dept on (emp.deptno=dept.deptno);  新语法

SQL> select ename ,dname from emp join dept using(deptno);     等值连接(不推荐)

SQL> select ename,grade from emp e join salgrade s on (e.sal between s.losal and

s.hisal);

SQL> select ename,dname grade from

2  emp e join dept d on (e.deptno=d.deptno)

3  join salgrade s on(e.sal between s.losal and s.hisal)

4  where ename not like '_A%';

SQL> select e1.ename,e2.ename from emp e1 join emp e2 on (e1.mgr=e2.empno);

SQL> select e1.ename,e2.ename from emp e1 left join emp e2 on (e1.mgr=e2.empno);

左外连接:把左边表e1的多余数据拿出来

SQL> select ename,dname from emp e right join dept d on (e.deptno=d.deptno);

右外连接

SQL> select ename,dname from emp e full join dept d on (e.deptno=d.deptno);

全外连接

求部门中哪些人的薪水最高:

SQL> select ename,sal from emp

2  join (select max(sal) max_sal,deptno from emp group by deptno) t

3  on (emp.sal=t.max_sal and emp.deptno=t.deptno);

求部门平均薪水的等级

SQL> select deptno,avg_sal,grade from

2  (select deptno,avg(sal) avg_sal from emp group by deptno) t

3  join salgrade s on (t.avg_sal between s.losal and s.hisal);

求部门平均的薪水等级

SQL> select deptno,avg(grade) from

2  (select deptno,ename ,grade from emp join salgrade s on (emp.sal between s.

losal and s.hisal)) t

3  group by deptno;

雇员中有哪些人是经理人

SQL> select ename from emp where empno in (select mgr from emp);

不准用组函数,求薪水的最高值

SQL> select distinct sal from  emp where sal not in

2  (select distinct e1.sal from emp e1 join emp e2 on (e1.sal

平均薪水最高的部门编号:

SQL>  select deptno,avg_sal from

2  (select avg(sal) avg_sal,deptno from emp group by deptno)

3  where avg_sal=

4  (select max(avg_sal) from

5  (select avg(sal) avg_sal,deptno from emp group by deptno));

平均薪水最高的部门名称:

SQL> select dname from dept where deptno=

2  (select deptno from

3  (select avg(sal) avg_sal,deptno from emp group by deptno)

4  where avg_sal=

5  (select max(avg_sal) from

6  (select avg(sal) avg_sal,deptno from emp group by deptno)));

求平均薪水的等级最低的部门的部门名称

求比普通员工最高薪水还要高的经理人名称

SQL> select ename,sal from emp where empno in (select mgr from emp where mgr is

not null ) and sal > (select max(sal) from emp where empno not in (select distin

ct mgr from emp where mgr is not null));

求薪水最高的前五名职员:

SQL> select ename,sal from (

2  select ename ,sal from emp order by sal desc)

3  where rownum

求薪水最高的六到十名员工(重点掌握)

SQL> select ename,sal from (

2  select ename,sal,rownum r from (

3  select ename,sal from emp order by sal desc)

4  ) where r >5 and r<11;

将部门10薪水提升1倍,并在名字后加-

SQL> update emp2 set sal=sal*2,ename=ename || '-' where deptno=10;

事务控制语句: transaction

一个transaction起始于第一条DML语句

结束语commit

rollback 回退

DDL(create table)DCL(grant)自动提交transaction

用户正常断开连接,自动提交,非正常断开自动回滚。

约束:非空、唯一、主键、外键、Check

create table stu

(

id number(6) primary key,

name varchar(20) constraint stu_name_nn not null,

sex number(1),

age number(3),

sdate date,

grade number(2) default 1,

class number(4),

email varchar2(50) unique,

constraint stu_name_email_uni unique(email,name)

);

修改表结构:

alter table stu drop(addr)

alter table stu add(addr varchar(50))

alter table stu modify(addr varchar(150))

alter table stu drop constraint stu_class_fk  修改约束条件

序列:

create sequence seq;

select seq.nextval from dual;

oracle alter和 insert,Oracle 笔记一 select insert update delete transaction create alter相关推荐

  1. oracle execute immediate 报错,oracle中execute immediate的使用(select/insert/update/delete)...

    execute immediate的语法如下: execute immediate 'sql'; execute immediate 'sql_select' into var_1, var_2; e ...

  2. datanucleus+spring 的JDO操作 select save update delete

    最近学习datanucleus ,datanucleus和Hibernate一样,都是操作数据库的持久层.本人之前一直使用的是SSH框架,这次尝试把Hibernate换成datanucleus,成功. ...

  3. Oracle 有long类型字段的表 使用insert into select 语句 ,出现:ORA-00997 错误

    表结构如下 字段 类型 col1 varchar2(64) col2 long --复制数据 insert into mytable(col1,col2) select col1||'_copy',c ...

  4. oracle 复制数据 insert into、as select

    搭建数据: [sql] view plaincopy create table tb_user1 (id integer primary key, user_name varchar2(20) not ...

  5. oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...

    天萃荷净 oracle之数据导入,汇总开发DBA在向表中导入大量数据的案例,如:单线程向数据库中插入数据,多线程向数据表中插入数据,使用sql loader数据表中导入数据案例 1.Oracle数据库 ...

  6. oracle+包锁源头,oracle琐碎笔记 - 石奈子0314

    Oracle 知识点 ps:由于是自己看的所以笔记比较乱,大家谅解 Commit rollback Sql 核心语句之 select Selct 中要用到以下语句 From 语句 Where 语句 G ...

  7. oracle 创建角色 权限设置,[学习笔记] Oracle创建用户、分配权限、设置角色,

    [学习笔记] Oracle创建用户.分配权限.设置角色, 创建用户 create user student --用户名 identified by "123456" --密码 de ...

  8. oracle数据库基础知识总结,oracle数据库基础知识学习笔记

    oracle数据库基础知识学习笔记 一.oracle数据库类型: Char:  字符型(最大长度2000,定长.不足时以空格补充) Varchar2:字符型 最大长度 4000,变长,实际长度由存储的 ...

  9. Oracle 进阶详细案例教程笔记

    一.Oracle简介 ​ Oracle 是甲骨文公司使用 Java 语言开发的一款关系型数据库产品.又名 Oracle RDBMS (关系型数据库管理系统).Oracle 数据库是目前流行的关系数据库 ...

  10. 判断题:oracle自带的sql语言环境是pl/sql,Oracle之PL/SQL学习笔记之数据类型(三)

    Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到 ...

最新文章

  1. python爬虫正则表达式实例-python爬虫学习三:python正则表达式
  2. Linux思维导图之shell脚本编程基础、习题
  3. 程序员提高建议之踏踏实实“扎马步”
  4. sharepoint 页面定制经验小结
  5. 8_19 比赛总结 [暑假集训]
  6. keras库的安装及使用,以全连接层和手写数字识别MNIST为例
  7. cass有坐标文件生成里程文件_【视频】南方cass9.0进阶教程74.3生成里程文件3
  8. Spring揭秘-笔记
  9. 疫情之下,我们该如何选择工作?
  10. python数据收集整理教案_数据收集整理教学设计
  11. 计算机课有平时成绩吗,大学计算机基础课程平时成绩评定方法探究.doc
  12. 轻松实现网页中通过链接跳转到QQ聊天界面,通过链接加QQ群,自动打开聊天对话框等等,包含电脑版和手机版的实现,示例部分Android和iOS的代码
  13. win8 如何摄像头测试软件,高手解说win8系统摄像头检测不到的设置教程
  14. 统计学常识笔记整理(二)
  15. Okidoki - Alpha阶段项目展示 - TEAM LESS ERROR
  16. ORACLE查询某一字段重复的数据
  17. HCIE-RS论述BGP路由黑洞
  18. Spring初级入门(一)--易百教程
  19. Python生成图灵智能小助手,打发你工作生活中无聊时间
  20. 深圳的宽带费用一年3000多,真的好贵,小区的宽带又被电信垄断了,移动免费送我的宽带却不能安装,欲哭无泪!(宽带霸王条款几时休,真的好艰难)

热门文章

  1. 算法笔记-二分查找和二分答案
  2. qt 展开指定目录_Qt5实战003:Qt Creator工程目录浅析
  3. mysql数据库升幂_斯特林数
  4. 重学前端学习笔记(四十一)--CSS的颜色
  5. 如何使用Python3连接MySQL
  6. ActionBarSherlock SlidingMenu整合,解决SlidingMenu example的getSupportActionBar()方法不能用问题...
  7. JAVA的Random类(转)
  8. 六种实现元素水平居中
  9. 微软面试题 麻将胡牌算法
  10. 基于raphael 的图形变化