oracle alter和 insert,Oracle 笔记一 select insert update delete transaction create alter
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相关推荐
- 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 ...
- datanucleus+spring 的JDO操作 select save update delete
最近学习datanucleus ,datanucleus和Hibernate一样,都是操作数据库的持久层.本人之前一直使用的是SSH框架,这次尝试把Hibernate换成datanucleus,成功. ...
- Oracle 有long类型字段的表 使用insert into select 语句 ,出现:ORA-00997 错误
表结构如下 字段 类型 col1 varchar2(64) col2 long --复制数据 insert into mytable(col1,col2) select col1||'_copy',c ...
- oracle 复制数据 insert into、as select
搭建数据: [sql] view plaincopy create table tb_user1 (id integer primary key, user_name varchar2(20) not ...
- oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...
天萃荷净 oracle之数据导入,汇总开发DBA在向表中导入大量数据的案例,如:单线程向数据库中插入数据,多线程向数据表中插入数据,使用sql loader数据表中导入数据案例 1.Oracle数据库 ...
- oracle+包锁源头,oracle琐碎笔记 - 石奈子0314
Oracle 知识点 ps:由于是自己看的所以笔记比较乱,大家谅解 Commit rollback Sql 核心语句之 select Selct 中要用到以下语句 From 语句 Where 语句 G ...
- oracle 创建角色 权限设置,[学习笔记] Oracle创建用户、分配权限、设置角色,
[学习笔记] Oracle创建用户.分配权限.设置角色, 创建用户 create user student --用户名 identified by "123456" --密码 de ...
- oracle数据库基础知识总结,oracle数据库基础知识学习笔记
oracle数据库基础知识学习笔记 一.oracle数据库类型: Char: 字符型(最大长度2000,定长.不足时以空格补充) Varchar2:字符型 最大长度 4000,变长,实际长度由存储的 ...
- Oracle 进阶详细案例教程笔记
一.Oracle简介 Oracle 是甲骨文公司使用 Java 语言开发的一款关系型数据库产品.又名 Oracle RDBMS (关系型数据库管理系统).Oracle 数据库是目前流行的关系数据库 ...
- 判断题:oracle自带的sql语言环境是pl/sql,Oracle之PL/SQL学习笔记之数据类型(三)
Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到 ...
最新文章
- python爬虫正则表达式实例-python爬虫学习三:python正则表达式
- Linux思维导图之shell脚本编程基础、习题
- 程序员提高建议之踏踏实实“扎马步”
- sharepoint 页面定制经验小结
- 8_19 比赛总结 [暑假集训]
- keras库的安装及使用,以全连接层和手写数字识别MNIST为例
- cass有坐标文件生成里程文件_【视频】南方cass9.0进阶教程74.3生成里程文件3
- Spring揭秘-笔记
- 疫情之下,我们该如何选择工作?
- python数据收集整理教案_数据收集整理教学设计
- 计算机课有平时成绩吗,大学计算机基础课程平时成绩评定方法探究.doc
- 轻松实现网页中通过链接跳转到QQ聊天界面,通过链接加QQ群,自动打开聊天对话框等等,包含电脑版和手机版的实现,示例部分Android和iOS的代码
- win8 如何摄像头测试软件,高手解说win8系统摄像头检测不到的设置教程
- 统计学常识笔记整理(二)
- Okidoki - Alpha阶段项目展示 - TEAM LESS ERROR
- ORACLE查询某一字段重复的数据
- HCIE-RS论述BGP路由黑洞
- Spring初级入门(一)--易百教程
- Python生成图灵智能小助手,打发你工作生活中无聊时间
- 深圳的宽带费用一年3000多,真的好贵,小区的宽带又被电信垄断了,移动免费送我的宽带却不能安装,欲哭无泪!(宽带霸王条款几时休,真的好艰难)
热门文章
- 算法笔记-二分查找和二分答案
- qt 展开指定目录_Qt5实战003:Qt Creator工程目录浅析
- mysql数据库升幂_斯特林数
- 重学前端学习笔记(四十一)--CSS的颜色
- 如何使用Python3连接MySQL
- ActionBarSherlock SlidingMenu整合,解决SlidingMenu example的getSupportActionBar()方法不能用问题...
- JAVA的Random类(转)
- 六种实现元素水平居中
- 微软面试题 麻将胡牌算法
- 基于raphael 的图形变化