oracle表的简单查询

desc emp显示emp表的结构

 

dual 是一个特殊的表,里面没有任何数据

 

select 语句:
计算数学表达式:select from 3*2 from dual 

 

重命名的形式输出: select 3*2 as mult_result from dual;

注意中间的as可以省略不写,且中间不能用空格隔开(eg:mult result );要想用空格隔开mult result 加上双引号“”后将可以原样输出;as后面的重命名要么加双引号要么不加,使用单引号将会出错。而插入值时除了number类型的值,其他类型的值都要用单引号括起来

 

空值运算函数:nvl(name,number)

任何运算法则(加减乘除)与含有空值的字段的运算结果都是空值,nvl(name,number)可以用number值来代替name字段为null处的值

eg:  select ename ,sal *12+nvl(comm,0) from emp   //表示如果comm列里面的值是空值,则用0代替,如果不是空值,则不起任何作用

 

查询空值情况:

* 不能用‘=’作为判断连接词,不是空就是 is not null

eg:select * from a_tbl where money is null  

 

 

字符串的连接用||
连接字符:select ename || 'fdfdfdfd' from emp;
如果连接的字符里面已经有一个单引号了,就用两个单引号代替一个单引号;

如:select ename || 'fdf''dfdfd' from emp;

 

dintinct 表示去掉重复的,修饰多个字段的组合的时候表示把这多个字段组成的重复的记录消除掉

 

模糊查询:like 

eg:select name from a_tbl where name like '%lms%'  

_代表一个字母,如:查询第二个字母为a的姓名 like '_a%'
默认的转义字符是\

eg:当模糊查询的条件里面就有%时查询语句如下: like '%\%%'
当不使用\作为转义字符写法如下(转义字符为$):select name from a_tbl where name like '%$%%' escape '$'

 

in

eg: select * from a_tbl where name in ('张三','李四','王五');

 

排序:order by(desc降序,asc升序),order by 默认为asc
eg:select * from emp order by EMPNO desc
两个字段进行排序:select * from emp  order by EMPNO desc,sal desc

如果使用列的别名进行查询,那么列的别名要用双引号括起来

eg:select sal as "月工资" from emp order by "月工资" desc;

 

字符串操作函数

lower(char),upper(char)    大小写的转换
eg:select name from a_tbl where lower(name) like '_a%'  查询所有姓名的第二个字符为(a/A)的姓名 

length(char)  获取字符串的长度
substr(str,beginIndex,login)截字符串,从1开始
eg:select substr(name,2,3) from a_tbl     从name第二个字符开始截取name值一个截取三个字符
chr(int):将ascii码转换为字符

eg:select chr(65) from dual
ascii(char):将字符转换为ascii码

eg:select chr('a') from dual

replace (char,search_string,replace_string)替换字符串中的字符

eg:将雇员名字中的字母'A'替换成'我是A'

 select replace(ename,'A','我是A') from emp;

instr(char1,char2,[,n[,m]])取子串在字符串中的位置

 

 常用字符串函数综合应用

以首字母大写的形式显示所有员工姓名

select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) as "姓名" from emp;

 

数学函数:

数学函数的输入参数和返回值类型都是数字类型的,数学函数包括cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round,最常用的有如下几个

round(c,[m]):该函数用于执行四舍五入,如果省掉m,则四舍五入到整数;如果m是正数,就四舍五入到小数点的m位后,如果是负数,则四舍五入到小数点的m位前

eg:select round(23.652) from dual 结果为:24
eg:select round(23.652,1) from dual 结果为:23.7
eg:select round(23.652,-1) from dual 结果为:20

trunc(c,[m])该函数用于截取数字,如果省掉m,就截取去小数部分,如果m是正数就截取到小数点的m位后,如果m是负数,就截取到小数点的前m位

eg:select trunc(23.652) from dual; 结果为23

eg: select trunc(23.652,1) from dual;结果为23.6

 select trunc(23.652,-1) from dual;结果为20

mod(m,n)取模的余数

eg:select mod(23,6) from dual;     结果为5

eg:select mod(23.5,6) from dual; 结果为5.5

floor(n)返回小于或是等于n的最大整数,向下取整

eg:select floor(23.6) from dual;返回23

ceil(n)返回大于或是等于n的最小整数,向上取整

eg:select ceil(23.6) from dual;返回24

eg:显示一个月为30天的情况所有员工的日薪金,忽略余数

第一种写法:select trunc(sal/30) as "日薪" from emp;

第二种写法:select floor(sal/30) as "日薪" from emp;

 对数字的处理,在财务系统或银行系统中用的最多,不同的处理方法,对财务报表会有不同的结果

 

其他的数学函数

abs(n)返回数字的绝对值

acos(n)返回数字的反余弦值

asin(n)返回数字的反正弦值

atan(n)返回数字的反正切值

cos(n)返回余弦值

exp(n)返回e的n次幂

log(m,n)返回对数值

power(m,n)返回m的n次幂

 

 

日期函数

日期函数用于处理date类型的数据

默认情况下日期格式是dd-mon-yy即12-7月-88

(1)sysdate:返回系统时间

eg:select sysdate from dual;返回值是2011-10-26

(2)add_months(d,n)

返回入职日期大于300个月的员工信息

 eg:select * from emp where sysdate>add_months(hiredate,300);

(3)last_day(d)返回制定日期所在的月份的最后一天

eg:查出各月倒数第三天被雇佣的员工

 select hiredate,ename from emp where last_day(hiredate)-2=hiredate;

eg:输入每个员工的入职日期

select trunc(sysdate-hiredate) as "入职天数" from emp;

 

转换函数
to_char():把数字或者日期转换为某种格式
to_date();把日期类型的字符串转换成日期类型
to_numbrt()把字符转换成数据类型
eg:select to_char(sal,'$999,999.999')from emp;   //9代表的一位,当给定的格式位数不够时将显示为##的形式
eg:  select to_char(sal,'L999,999.999')from emp;         //L代表本地货币,不区分大小写,位数不够同上
eg;  select to_char(sal,'000000000000.00')from emp; //0代表一位数字,且位数不够的用0代替,位数不够同上
eg;  select to_char(sysdate,'YYYY-MM-DD HH:MI:SS') from dual// 输出格式为:2008-10-2 02:20:30  ,HH默认为12时制,sysdate表示当前时间
eg;  select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual//输出格式为24时制

eg:  to_date('2008-01-01','yyyy-mm-dd')      //将字符串'2008-01-01'转换成'yyyy-mm-dd'的date类型

eg : select to_number('$888,888.00,'$999,999.00'')

eg:select to_char(sysdate,'yyyy') from dual;  //返回2011

 

系统函数

terminal:当前会话客户所对应的终端标识符

language:语言

db_name:当前数据库名称

nls_date_formate:当前会话客户所对应的日期格式

session_user:当前会话客户所对应的数据库用户名

current_schema:当前会话客户所对应的默认方案名(一个用户对应一个方案,用户名与方案名相同)

host:返回数据库所在主机的名称

host:返回数据库所在主机的名称

通过该函数,可以查询一些重要信息,比如你在使用哪个数据库?

eg:select sys_context('userenv','db_name') from dual;

 

 

 

其它的还有>,<,<>,他们不仅可以比较数字还可以比较字符串与日期,当比较字符串时比较第一个不相同的字符的ascii码值,当比较日期时要求进行比较的日期的格式一致
还有:between,and,or等

比较日期可以用如下形式

select * from table
where 日期字段 between to_date('2008-01-01','yyyy-mm-dd'
                        
and to_date('2008-10-20','yyyy-mm-dd')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章