基础语句
查询语句
select [distinct] * | 列 【别名】,列 【别名】
from 表名称 【别名】
【where 条件(s)】
【GROUP BY 分组字段】
【hanging 分组后过滤 】
【ORDER BY 字段【asc|desc】
- distinct:去重
- 条件分为关系运算符(>、<、>=、<=、<>、!=);范围运算符(between…and);in子句(于IN操作,是针对于基数判断,如果此时使用not
in的时候,基数里面有null,所有的数据都不会被显示)like字句(%,_);空判断(is null,为空:is null,不为空:is not null ,not is null,在进行数字列的表示上,0和null是绝对不一样的两个概念)逻辑运算符(AND,OR,NOT) - 在oracle中能,所有数据都是区分大小写的
- where 字句,是在分组前使用,而且不能够使用统计函数进行验证,经过where筛选的数据才可进行分组。Having字句,必须和group by字句一起使用,是分组后的过滤,可以使用
统计函数
更新语句
数据的更新操作(增,删,改)
复制数据本身,约束和关系等全不复制
CREATE TABLE myemp AS SELECT * FROM emp
数据增加
INSERT INTO 表名称 [(字段,字段,...)] VALUES (值,值,...)
- 字符串,加引号
- 数字,直接写
- 日期,当前日期写sysdate,自定义可按照指定的格式编写,或TO_DATE()函数将字符串变为日期型数据
数据修改
UPDATE 表名称 SET 字段=值,字段=值,...【where 更新条件】
数据删除
DELETE FROM 表名称 【where 条件】
函数
日期函数
- 伪列:sysdate,systimestamp 是不存在表中的列,但可以直接使用。获得系统日期 select sysdate from dual;
- MONTHS_BETWEEN(日期1,日期2) ,返回两个日期之间的月数
- ADD_MONTHS(日期,月数) 加上指定月数的日期,返回日期
- Next_day(日期,一周时间数) 求出指定的下一个一周时间数的日期
- Last_day(日期) 指定日期所在月的最后一天的日期
- TO_CHAR(日期,转换函数) 年(yyyy),月(mm)、日(dd)、时(HH、HH24)分(mi)秒(ss) 数字(9)
本地货币(L)
通用函数
返回值 | 格式 | 描述 |
---|---|---|
string | UPPER | 转大写 |
string | Lower | 转小写 |
string | INITCAP | 首字母大写,其余小写 |
string | UPPER | 转大写 |
number | length | 返回字符串的长度 |
string | replace(‘旧’,‘新’) | 替换字符串 |
string | substr(字符串,开始,结束) | 截取字符串,负数是从后向前开始的 |
number | ROUND(数字 列,保留小数位) | 四舍五入,如果不写小数位,则自动为取整。oracle中,可以为负数,为精确到几位数 |
number | TRUNC(数字 列,保留小数位) | 截取,如果不写小数位,则自动为取整。oracle中,可以为负数,为精确到几位数 |
number | MOD(数字1,数字2) | 求余 |
number | NVL(列 数据,默认值) | 默认值为0 |
数据 | DECODE(数据,判断数据1,显示数据1,判断数据2,显示数据2,[默认数据]) | 非常类似于 if else if 语句 |
多表查询
两个集合的乘积,在数据库之中,称为“笛卡尔乘积”
在数据量大的时候,绝对不要采用多表查询
- 内连接
- 外连接(左右连接,全外连接)
- 左外连接 字段=字段(+)
- 右外连接 字段(+)=字段
- CROSS JOIN 产生笛卡尔积
- 自然连接(内连接) 消除笛卡尔积
- USING 字句 用户指定关联字段
using(指定字段) - on 用户设置连接条件
- 外连接 LEFT|RIGHT|FULL outer join
查询结果连接:
UNION 所有数据不重复
UNION ALL 所有数据包含重复数据
INTERSECT 交集
MINUS 差集
组函数与分组统计查询
1 组函数
统计函数: count,sum(),avg(),max(),min()
count(*)
count(字段):null不参与统计
count(DISTINCT 字段):,消除重复数据的统计
2 分组统计
GROUP BY 分组字段 在where之后执行
说明
- 统计函数单独使用的时候,没有GROUP BY,只能出现统计函数,不能够出现其他字段
- 使用统计查询时,有GRPOUP BY,只能出现统计函数,和分组字段
- 统计函数在分组之中可以嵌套使用,但在嵌套之后的统计查询之中,select 字句不允许出现任何字段,包括分组字段