0729 操作符及SQL函数、数据库对象(同义词、序列)

 操作符及SQL函数

SQL函数:

单行函数:日期、字符、数字、转换、其他

分组函数

分析函数

Oracle支持SQL操作符有5种:1、算术 2、比较 3、逻辑 4、集合 5、连接操作符

select empno,ename,job,sal+1000 from emp

-- 比较运算符   between and   包头包尾
select * from emp where sal between 1000 and 2000

-- 查询奖金不为空的员工信息  等于s is nul   不等于是is not null
select * from emp where comm is not null

 

 

SELECT *  FROM t_student
WHERE sbirthday >= '01-1月-90' 
AND not sclass = 2;
SELECT *  FROM t_student
WHERE sbirthday >= '01-1月-90' 
AND sclass <> 2;
SELECT *  FROM t_student
WHERE sbirthday >= '01-1月-90' 
AND sclass != 2;

MySQL里面也有 UNION 但意思是不一样的

1、union 操作符返回两个查询的不重复的所有行

2、intersect  操作符只返回两个查询的公共行

3、MINUS  操作符返回从第一个查询结果中排除第二个查询中出现的行

注意:Oracle里叫连接 || 与MySQL的 短路或 || 是不同的

MySQL的短路或 || 特点:如果是或者,只看左边是否为true,无需看右边。若左边是false,右边也要判定

-- 连接操作符  || 
select ('员工号为'||empno||'姓名为'||ename||'的工资为'||sal) from emp

如果感觉太难看 可以起个别名   as info

-- 字符串函数  lower:大写转小写(lower在哪个字段前加 哪列字段就是小写)
select empno,lower(ename),job from emp

 ASC 码表需要记住的三个开头   0:48  a:97  A:65 

Abs:绝对值

Ceil:天花板 向上取整

Floor:地板  向下取整

Mod:取余(取模)

Round:四舍五入 后面的2 代表位数

Truncate:截取

Sqrt:平方根

-- 日期函数 add_months 偏移
select * from java0322
select add_months(sbirth,3) from java0322

Months_between:相差月份数

-- 日期函数 extract 计算年份差
select extract(year from sysdate) from dual

-- 计算java0322的人多少几年  extract 
select sname,extract(year from sysdate)-extract(year from sbirth)
as age from java0322

-- 转换函数
select to_char(0.123,'$0.9999') from dual
-- 转日期
select to_date('2015-02-22','yyyy-mm-dd') from dual
-- 转数值
select to_number('20') from dual

pm

select empno,sal +nvl(comm,0)as sal from emp;

select ename,sal+nvl2(comm,10000,0) from emp

select nullif(200,200) from dual;

select empno,ename,job,sal,rank() over(order by sal desc) as numm from emp

数据库对象

同义词:私有和公有

私有:当前用户内访问

公有:只能管理员创建,所有用户都可以访问

 

 要注意 创建用户 要切换 system登录

-- 同义词 创建用户 这里要切换 管理员登录
CREATE  USER  test  IDENTIFIED  BY 123456;
GRANT  CONNECT , CREATE  SYNONYM TO test;
GRANT  SELECT   ON   SCOTT.EMP  TO test;
GRANT  DELETE  ON   SCOTT.EMP TO test;
GRANT  UPDATE  ON  SCOTT.EMP TO test;
-- 以test身份登录
select * from scott.emp;
-- 创建同义词 synonym  谁建的谁用  
create synonym staff for scott.emp;
select * from staff

公有同义词:就是谁都可以查   

-- 以sys或system身份登录  创建公有同义词
create
public synonym emps for scott.emp

谁创建的谁删除、修改

-- 创建序列 先切换用户 scott
create sequence seq_student
start with 1
increment by 1;

-- 实现自增的功能 :利用里面的值  
insert into stu values(seq_student.nextval,'袁一鸣');
select * from stu

s

原文地址:https://www.cnblogs.com/zs0322/p/11265501.html