部分查询功能语句
select distinct 列名1,列名2 from 表名 (distinct 去除重复项)
select * from 表名 where 列名 between 小值 and 大值(between and 取两值之间的,前后都包含)
select * from 表名 where in (值1,值2,值3) (in后面可以跟其他查询)
select * from 表名 where 列名 in (select 列名 from 表名 where 条件) (按其他查询结果作为查询条件)
select * from 表名 where 列名 like ‘值1%’ (查询以值1开头的,%代表其他所有字符)(%+值1,查询结尾为值1的)
select * from 表名 where 列名 not like ‘值1_’ (查询开头不为值1的)(_为单个字符,与%类似)
聚合函数 (聚合函数只返回单个值,可以同时查询多个,用于数值字段,空值不计算)
select count(*) from 表名 where 条件 (count 为查询的数据有几行)
select sum(列名) from 表名 where 条件 (sum 求总和)(max 最大值)(min 最小值)(avg 平均数)(空值不计算)
select max(列名),avg(列名) from 表名 where 条件 (同时查询最大值和平均数)
select * from 表名 where rownum = 1 (rownum 是伪列 意为序列号长度)(不与表绑定)(必须包含第一行)
数值函数
select abs(-123) from dual (abs 绝对值)
select mod(12,5) from dual (mod 求模)
select ceil(123.45) from dual (ceil 上限值,大于或等于该值的最小整数)
select floor(123.45) from dual (floor 下限值,小于或等于该值的最大整数)
select round(123.66) from dual (round 四舍五入取整数) select round(123.66,2) from dual (保留小数点后两位)
select trunc(123.66) from dual (trunc 不四舍五入取整) select trunc(123.66,-1) from dual (保留到小数点前一位)
字符串函数(可以放在where里面使用)(只是修改查询结果,不会修改源数据)
select length(列) from 表 (length 计算字符串长度)
select trim(' asdf ')from dual (trim 去除空格)(ltrim 去除左边空格)(rtrim 去除右边空格)
select replace(‘ aaaxbbb ’,‘x’,‘y’)from dual (replace 查找替换)(可以把空格换成空字符串)
select replace(列,‘x’,‘y’)from 表
select instr(‘asd’,'a')from dual (查找字符串,返回的是第一个找到的位置索引号)
select substr(‘asdfgh’,2)from dual (截取字符串,从第2个开始截取后面全部)(不能超过字符串长度)
select substr(‘asdfgh’,-2)from dual (截取字符串,从右侧第2个开始截取左边全部)
select substr(‘asdfgh’,2,3)from dual (截取字符串,从第2个开始截取后面3个字符)(3不能是负数,2同上)
替换函数
select nvl(列,默认值)from 表 (nvl 将null 替换为默认值)
nvl2(列,非空的新值,为空的默认值) (nvl2 将null 替换为默认值,把非空替换成新值)
select decode (列,‘值1’,‘新值1’ ,‘值2’,‘新值2’……‘剩余所有都改为此值’)from 表 (decode 匹配列的值并替换为新值)
特殊隐藏表
dual 伪表 系统内置的只有一行一列的数据表,常用来执行函数
查询当前时间 select sysdate from dual
对当前的月份进行加减 add_months(日期,±数值)
获取日期所在月份的最后一天 last_day(日期)
rownum (数据库给查询结果集自动添加的虚拟行号)(可以作为where条件限制查询结果的行数)(必须包含第一行)(常用于分页查询)
rowid (数据库自动管理数据行的唯一标识)(常用于更新数据 如果不使用可以用 select。。。for update代替)
join 多表之间的关联查询
内连接 select * from 表1,表2 where 表1列 = 表2列
select * from 表1 join 表2 on 表1列 = 表2列 where条件
(内连接特点:表1的数据和表2没有可关联的数据,那么该条数据会被隐藏 )
外连接 select * from 表1 lift join 表2 on 表1列 = 表2列 where条件 (lift 左边的表1全部查询,包括控制数据)
select * from 表1 right join 表2 on 表1列 = 表2列 where条件 (right 右边的表2全查询,同lift类似)
select * from 表1 full join 表2 on 表1列 = 表2列 where条件 (左右两表数据全部查询,类似左右同步)
转换函数 to_char(日期型,‘yyyy-mm-dd hh24:mi:ss’) 把其他数据类型转换成特定格式的字符串(最常用于日期类型)
to_date(‘字符串型’,‘yyyy-mm-dd’) 把特定格式字符串类型转换成日期类型
cast(源数据as新数据类型) 通用转换函数,把源数据按新数据类型转换
自动转型 一般是字符串和数值之间,可根据语境自动转型
合并数据
查询语句1 union all 查询语句2
查询语句的字段数量和数据类型必须一致,使用 union 连合起来,默认为去除重复项,可以加all使其不去除重复项
子查询
比较运算 any(返回多个数值类型的子查询) (>=子查询的最小值,<=子查询的最大值)
all(返回多个数值类型的子查询) (>=子查询的最大值,<=子查询的最小值)