ORACLE中查增删改查语句的使用以及语法
添加信息
--全部字段都需要赋值,value需要和数据表的字段顺序一致
insert into 表名 values(?,?,?,?,...);
--部分指定赋值,values需要和指定的字段顺序和数量一致
insert into 表名(字段名...) values(?,?,?,?...);
模糊查询
like '张_' 只匹配 张某
like '张%' 匹配 张 后面随意多少都可以
like '%张' 匹配 张 前面都少位都可以
like '%张%' 匹配随意多少位 张 随意多少位
like '12[1-3]' 只匹配 12 后面1到3之间的
like '12[^8]' 只匹配 12 后面不等于8的
匹配查询
--多匹配
where address in ('广东','上海','江西')
--匹配单个
where address on "南昌" 或者 where address='南昌'
大小写转换函数
lower(’CH‘) 转成小写
upper('ch') 转成大写
查询当前时间距离指定时间的天数
select localtimestamp-时间字段 from 表名;
select sysdate-时间字段 from 表名;
聚合函数
- SUM(要求和字段)
- AVG(要求平均分的字段)
- MAX(要求最大值的字段)
- MIN(要求最小值的字段)
- COUNT(要求总行数的字段)
- Round(数值类型的字段可以是其他计算的聚合函数,小数的长度)
- TO_DATE(“要转换成时间类型的字符串”,“时间表达式:比如yyyy-MM-dd”)
- TO_CHAR(要转换成普通字符串的时间类型字段)
分组查询
按照地址分类查询,select 后面查询字段只能出现地址这个字段以及聚合函数,其他也是如此
--查询每个地区的人数
select address as 地址, COUNT(*) as 人数 from stu group by address
--查询每个学生的平均分并排序
SELECT s_id,ROUND(avg( s_score ) , 2) 平均分 FROM score GROUP BY s_id order by 平均分 desc
HAVING和WHERE的区别:
HAVING是专门给GROUP BY 追加筛选条件的,在 分组之后的筛序
WHERE是分组之前的帅选,从原表进行筛选
三种多表连接查询
- INNER JOIN
常用的连接:用表中的通用列去进行匹配,如果值一样的话就能匹配连接 - LEFT JOIN
在A表(主表)和B表(从表)中,如果A表和B表的通用列,B表中有一个值没有但是A表中有,这时候使用左查询的话,A表中的所以数据会查出来,在B表中没有匹配到的数据就是null - RIGHT JOIN
在A表(从表)和B表(主表)中,如果A表和B表的通用列,A表中有一个值没有但是B表中有,这时候使用右查询的话,B表中的所有数据会查出来,在A表中没有匹配到的数据就是null