1. 单表的数据查询
1.1指定字段的数据记录查询
select field1,field2,... FROM 表名 WHERE CONDITION
例:
select t.stuname,t.age,t.sex from STUINFO t where t.stuname='李四';
1.2 查询所有数据
使用通配符“*”,进行所有数据的查询。
select * from STUINFO t where t.stuname='李四';
在实际开发过程中,把需要查询的字段查询处理,用以减轻数据库的压力。
1.3 避免重复数据的查询
select distinct t.sex from STUINFO t;
1.5 实现数学运算的数据查询
Oracle 的数学运算符:+ - * / %
例:
-- 添加测试数据
update STUINFO SET salary =1000
update STUINFO SET salary =2000 where stuname='孙悟空';
update STUINFO SET salary =1500 where stuname='小白龙';
commit; -- 提交事务
SELECT t.stuname,salary,salary*12 FROM STUINFO t;
1.5 字符串连接符||
Oracle 中利用字符串连接符||(即双竖线)来连接查询结果
SELECT '19 级 3 班-'||stuname||'-同学',salary,salary*12 FROM STUINFO t;
2 条件数据记录的查询
在条件内部定义:
- 带关系运算符和逻辑运算符的表达式
- 带 between…and 关键字的条件数据查询
- 使用 is null 关键字的条件数据查询
- 使用 in 关键字的条件数据查询
- 带 like(模糊查询)关键字的条件数据查询
2.1 关系运算符和逻辑运算符的表达式
Oracle 中的关系运算符:>、 >=、 <、 <=、 !=(<>) 、 =
Oracle 中的逻辑运算符:&&(AND)、||(OR)、!(NOT)
在逻辑表达式中,我们一般使用英文表示,如 AND/OR/NOT。
例子:
SELECT stuname,salary,salary*12 FROM STUINFO WHERE salary=1000;
SELECT stuname,salary,salary*12 FROM STUINFO WHERE salary!=1000;
SELECT stuname,salary,salary*12 FROM STUINFO WHERE salary<>1000;
SELECT stuname,salary FROM STUINFO WHERE NOT(salary>1000 AND salary<2000);
2.2 带 between…and 关键字的条件数据查询
例子:
SELECT stuname,salary FROM STUINFO WHERE salary BETWEEN 1500 AND 2000;
SELECT stuname,salary FROM STUINFO WHERE NOT(salary BETWEEN 1500 AND 2000);
查询出的结果集包含边界
在实际开发过程中,一般用于对日期类型的数据,进行查询
查询日期函数:
update STUINFO SET enroldate = to_date('2019/9/1','yyyy/mm/dd') where stuname='孙悟空';
update STUINFO SET enroldate =to_date('2018/12/1','yyyy/mm/dd') where stuname='小白龙';
SELECT * FROM STUINFO WHERE enroldate BETWEEN to_date('2018/9/1','yyyy/mm/dd') AND to_date('2018/12/1','yyyy/mm/dd');
2.3 使用 is null 关键字的条件数据查询
其中空字符串和 null 是两个不同的值,
在使用的时候,需要注意,查询空字符串,
使用”xxx=’’”,而判断是否是 null 值,要使用 is null。
SELECT * FROM t_student WHERE code IS NULL;
SELECT * FROM t_student WHERE code IS NOT NULL; SELECT * FROM t_student WHERE code='';
2.4 使用 in 关键字的条件数据查询
在已知的指定范围内,进行数据的查询。
INSERT INTO t_student(id,name,code) VALUES(3,'Tom',NULL);
INSERT INTO t_student(id,name,code) VALUES(4,'Jack','');
commit; --提交事务
SELECT * FROM t_student WHERE id in(2,4);
SELECT * FROM t_student WHERE id NOT in(2,4);
2.5 带 like(模糊查询)关键字的条件数据查询
-- 准备数据
INSERT INTO t_student(id,name,code) VALUES(5,'唐三','001');
INSERT INTO t_student(id,name,code) VALUES(6,'白小纯','002');
INSERT INTO t_student(id,name,code) VALUES(7,'韩立','003');
INSERT INTO t_student(id,name,code) VALUES(8,'林动','004')
commit; // 提交事务
-- 模糊查询
只要带有“唐”,会匹配出来
SELECT * FROM t_student WHERE name LIKE '%唐%';
以“白”开头
SELECT * FROM t_student WHERE name LIKE '白%';
以“立”结尾
SELECT * FROM t_student WHERE name LIKE '%立';
第一个字符不管,只要第二个字符是“动”,会匹配出来
SELECT * FROM t_student WHERE name LIKE '_动%';
2.6 排序数据记录
SELECT * FROM table_name ORDER BY field1 排序条件(asc/desc),field2 排序条件(asc/desc)
SELECT * FROM t_student ORDER BY id DESC;