如何对表进行增删改查操作
values(各参数的赋值);
如:insert into dept (deptno , dname,loc)
values(50,'Development','BeiJing');
更新表中的数据:
update 表名 set 列名=值 where 条件;
删除表中一条数据
delete from 表名 where 条件;
注意:
在 Oracle的SQLPLUS中,英文字符默认是左对齐,而数字则默认是右对齐
设置当前会话的时间格式
alter session set nls_date_format = 'YYYY-MM-DD';
查询当前系统时间:select sysdate from dual;
sysdate 是数据库当前的日期
dual 是 Oracle数据库的一个虚表,不是真实存在的表,在查询用到计算,常量表达式时可以使用
round(X,Y)对X保留Y个小数点后尾数, 缺省值为0;
order by 用来排序,默认是asc (升序), 而desc为降序;排序参数可为:表达式,排列号,别名,列名,或不在查询结果中的列名
将查询结果的列名转换为自己熟悉的别名
select something as "别名" from table;
注意:别名用双引号,而字符串用单引号
查询结果只显示唯一值,过滤掉重复的数据
select distinct somerow from table;
这个去掉重复数据的关键字在日常查询数据时经常使用到,在笔试或面试中也是出现频率很高的关键字
常用运算符有:>,>=,<,<=,<>,!=,=
注意:<>,,!=都是表示不等于,目前还不知道它们之间有木有区别和差异,这是要思考的问题
null :在Oracle数据库中是一个特殊的值,它即不表示零,也不表示为空,是一个不能确定的未知数
注意:要和null做比较的话,必须使用is null 或 is not null;
nvl(X,Y):当X is null 时 函数返回Y的值;当X is not null 的话 函数返回X的值;
注意:与nvl(X,Y)用法和功能一边的函数还有:nvl2(X,Y,Z);和NULLIF(X,Y)
字符串的模糊查询
"_"表示任意一个字符;"%"表示任意长度的字符串;作比较的关键字为:like (注意不是is like)
如: select ename , job,sal from emp
where ename like ‘M%’;
判断一个数据是否在一个表或临时表中出现
用到的关键字是:in
如: select ename , job from emp
where job in ('SALESMAN','ANALYST','MANAGER');
分组函数:group by
分组的筛选:having
如格式为:
select 。。。。。。。
from。。。。。
where。。。。。。。。
group by 。。。。
having 。。。。。。。。
它们执行的顺序为:首先是从from 中select 出来相关的列组成一个临时表,然后用where条件去筛选每个列,
然后用group by 对筛选过的临时表进行分组,接下来是用having 中的分组属性来去除不合条件的分组;
一些分组函数:count();sum(),max(),min(),avg()
注意区别count() 和sum() 的区别 前者是计算个数,后者是计算总和的,笔试中会出现两者区别的试题;
如何查询max() 和 min() 值对应的对象是谁呢?目前想到的方法是使用内联视图来实现的;
如:select empno , ename, max_sal
from emp , (select max(sal) as max_sal from emp) emp_max
where emp.sal = emp_max.max_sal;