文章目录
数据库(一)
数据库现在已经成为数据管理的重要技术,也是计算机的重要分支。
SQL SELECT
在sql语句中最重要的就是select查询语句。
1.查询列
1)所有列
SELECT * FROM 表名; 查询某个表中所有的记录的所有字段信息
2)部分列
SELECT 列名 FROM 表名; 查询某个表中所有的记录的指定字段信息
SELECT 列名1,列名2 FROM 表名; 查询某个表中所有的记录的字段1 字段2
3)去除重复
SELECT distinct 列名 FROM 表名; 去除重复记录
4)别名
SELECT xxx as 别名 FROM 表名 表别名; 使用别名
5)伪列
伪列就是不存在的字段,可以是数字也可以是表达式
SELECT 表达式 FROM 表名; 查询表达式
6)虚表
虚表即没有数据,没有字段,没有表
select 1*2 from dual;
dual即虚表
7)字符串
在sql语句中使用' '
写字符串," "
中的文字原样输出,字符串可以拼接使用||
拼接两个字符串。
8)null
null表示空值,null和数字运算结果还是null;null 和字符串拼接,结果是原串;
处理null值,nvl(值1,值2)
当值1为null,函数的结果为值2;当值1不为null,函数的结果为值1
2.查询行
1)比较条件
= 、 >、 <、 >=、 <=、 !=、 <>、 between and
2)且或非
and、 or、 not
3)null
null不能使用条件判断,只能使用is
4)集合操作
Union,并集(去重) 对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序;
Union All,全集(不去重) 对两个结果集进行并集操作,包括重复行,不进行排序 ;
Intersect,交集(找出重复) 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
Minus,差集(减去重复) 对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序 。
5)like模糊查询
模糊查询,使用通配符:
(1)%
:零个及以上(任意个数的)的字符
(2)_
:一个字符
(3)遇到内容中包含 % _
使用escape
(‘单个字符’)指定转义符
select ename,job,sal,deptno from emp where ename like '%a%%' escape('a');
6)in 与 exits
in相当于使用or的多个等值,定值集合 ,如果存在子查询,确保类型相同、字段数为1,如果记录多,效率不高,用于 一些少量定值判断上;
exists条件为true,存在记录则返回结果,后续不再继续比较查询,与查询的字段无关,与记录有关。
7)获取所有行的记录
select * from emp;
select * from emp where 1=1 ;
select * from emp where ename like '%';
3.排序
使用ORDER BY
排序,排序不是真实改变存储结构的顺序,而是获取的集合的顺序。
顺序:asc
升序(默认)desc
降序
多字段:在前面字段相等时,使用后面的字段排序
空排序:降序为 desc,注意null为最后
4.单行函数
单行记录,每行都能返回一个结果
1)时间
(1)当前时间:sysdate
、current_date
(2)日期可以直接加减,加月份要使用add_months(sysdate,2)
(3)当月的最后一天:last_day(sysdate)
(4)算下一个星期几是几号:next_day(sysdate,'星期五')
2)日期和字符串之间的转换
日期对象转为字符串:to_char(日期对象,日期格式字符串)
日期字符串转为日期对象:to_date(日期字符串,日期格式字符串)
将日期转为特定格式的字符串 to_char
to_char(sysdate,'yyyy-mm-dd hh24:mi-ss')
设定一个特定的时间(用一个特定的时间字符串转换为日期)
‘2019/8/23 16:49:44’
to_date('2017年8月23日 16:49:44','yyyy"年"mm"月"dd"日" hh24:mi:ss')
3)判断
decode 判断:
decode(判定字段,校验字段值1,结果1,校验字段2,结果2,……默认值)
case 判断:
case 判断字段 when 校验字段值1 then 结果1 else 结果n end
可以写很多个when then
组合
5.多行函数
多行记录返回一个结果
avg平均数 min最小值 max最大值 sum求和 count统计
,确定结果集,对结果集的数据求组函数
group by 分组
1)select 出现分组函数,就不能使用非分组信息,可以使用 group by 字段
2)group by字段 可以不出现 select 中 ,反之select 除组函数外的,其他字段必须出现在group by 中
过滤组 having :
where:过滤行记录,不能使用组函数; having:过滤组,可以使用组函数
注意:
当select后使用了组函数,就不能出现非组函数,非分组字段的其他字段不能一起使用
where后面不能出现组函数
null 不参与运算