将为空的数据增加10
update set fellowship =10 where fellowship is null
delete语句的使用
基本用法
delete from 表名 where 条件
注意事项
如果不使用where 条件将删除表中所有数据
删除其中某一列是不行的 delete 以行为操作 如果要删除某列的值则需要使用update语句
使用delete仅删除记录 不删除表本身如果要删除表要用drop table
从一个表中删除记录将引起其他表的参照完整性问题(另外一个表引用了删除表的数据)
delete from 表名 可以用先savapoint xx; rollback to xx;
drop table 表名;删除标的结构和数据
truncate table 表名 删除所有记录表结构不变 速度快 不写日志但是不能回滚
commission 这个单词的缩写,佣金的意思
查询语句select
基本语法
select [distinct] *|(列名1,列名2,列名3) from 表名 [where(条件)] []可写 ()必写
尽可能减少查询返回的结果 不要轻易使用*
select distinct deptno,job from emp ; 去除重复行 要完全一样才能去除查询结果中的记录
oracle 的sql不区分大小写(语句本身 比如字段和表名) 但是内容(查询的内容)是区分大小写的
oracle 查询中使用算术表达式
nvl(字段名,0) 字段名为空就改成0 不为空就原来的 用于处理数据null的问题
字段||字段 连接符 在查询的时候 如果希望把多列拼接作为一列返回可以使用
希望删除用户同时保留该用户的数据对象
锁定该用户
alter user scott account lock; 这时该用户已经不能登录到数据库但是 system用户依然可以使用他的数据对象
alter user scott account unlock; 解锁
select * from emp where hiredate >'1982-1-1'; 这时oracle 可能提示格式不匹配
select * from emp where to_char(hiredate,'yyyy-mm-dd') >'1982-1-1';
between 包含头和尾
select ename,sal from emp where ename like 'S%'; 取雇员首字母为S的
加_下划线为任意字符 到指定位置
select * from emp where empno in (123,345,666);
oracle 中使用逻辑运算符
select * from emp where (sal>123 or job='manager') and (ename like 'J%');
order by 对结果进行排序显示
select * from emp order by sal ; 默认升序ascend
select * from emp order by sal asc ;
select * from emp order by sal desc ; 降序 descend
select * from emp order by sal ,hiredate desc; 先左边后右边
oracle 支持使用别名排序
select ename,sal*13+nvl(comm,0) 年薪 from emp order by 年薪;
oracle 的分页查询要使用到子查询
数据分组常用五个函数 max min count sum avg
select max(sal) from emp;
avg(sal) 不会把sal 为null 的统计进去 因此我们要注意,如果要为null的也参与则
可以用select sum(sal)/count(*) from emp;
count(sal) 才4个 加*号就是所有
写sql语句是从左到右
sql执行的默认情况是从右到左
无论select有多少 oracle 有执行顺序
select ename, job from emp where sal = (select max(sal) from emp);
select max(sal) from emp 得到5000 1
select ename, job from emp where sal = 5000; 2
求平均工资的时候思考空的要不要加入进去