常用的SELECT

本文详细介绍了SQL中的SELECT查询,包括查询步骤、单行与组函数的使用,如DISTINCT、LIKE、IN、EXISTS、ORDER BY等操作。还讲解了子查询、事务处理以及COUNT、MAX、MIN、SUM和AVG等组函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SELECT

查询的步骤

1.查询的数据:即列名

2.数据来源:即表头

3.查询条件: 限制条件

 

SELECT * FROM 表名; à查询某个表中所有的记录的所有字段信息

SELECT 列名 FROM 表名; à 查询某个表中所有的记录的指定字段信息

SELECT 列名1,列名2 FROM 表名;  查询某个表中所有的记录的字段1,字段2

SELECT distinct 列名 FROM 表名; à去除重复记录

SELECT 表达式 FROM 表名; à查询表达式

SELECT xxx as 别名 FROM 表名 表别名 à使用别名,别名如果是英文默认大写,如果想要原样使用或者中文带空格,在别名的前后双引号("")

 

Distinct 修饰列名  表示去重。

 

单引号('')代表字符串

双引号("")原样输出结果字段名和值原样字符串输出

 

表达式|字符串都是伪列:不是表中真是存在的字段

 

字符串的拼接  ||

select 'a-'||'-b' from 表名;

 

虚表: oracle中不是真是存在的表,其中没有任何数据

 

like 模糊查询  %任意个任意字符  _任意一个字符

--姓名以A开头的所有人员信息

select * from 表头 where 姓名 like 'A%';

 

姓名中第二个字符为A的所有人员信息

select * from 表头 where 姓名 like '_A%';

 

--使用模糊匹配做精确匹配

select * from 表头 where 姓名 like 精确的名字;

 

select * from 表头 where 姓名 like '%C%%' escape('C'); --任意指定转义字符,需要使用escape() 中说明,此时C后面的%会采用它最本来的意义,C无实意

 

事务

commit; 类似保存

rollback; 回滚

 

in 匹配后面结果集中的任意一个数据,无法做区间判断

查询薪资为 1500 2000 2500 5000的员工信息

select * from 表头 where 薪资 in (1500,2000,2500,5000);

 

子查询 查询语句中嵌套查询语句

select *

  from emp

 where deptno in

       (select deptno from dept where dname in ('SALES', 'ACCOUNTING'));

       

   

--exists 存在即保留,存在即合法           

select *

  from emp e

 where exists (select deptno, dname

          from dept d

         where dname in ('SALES', 'ACCOUNTING')

           and e.deptno = d.deptno);  

如果exists后面的语句成立则执行前面的语句。          

 

--排序  order by  desc 降序  asc升序

--select * from 表名 where 行过滤条件 order by 排序字段;  --默认升序

select * from emp order by sal asc;   

单行函数

sysdate/current_date 以date类型返回当前的日期

add_months(d,x) 返回加上x月后的日期d的值

LAST_DAY(d) 返回的所在月份的最后一天

months_between(date1,date2) 返回date1和date2之间月的数目

next_day(sysdate,'星期一') 由此之后的下一个星期一

to_date(c,m) à 字符串以指定格式转换为日期

to_char(d,m) à 日期以指定格式转换为字符串

 

nvl(string1,string2) à 如果string1为null,则结果为string2的值

decode(condition,case1,express1,case2,express2,….casen,expressn, expressionm)

--分组 group by 分组字段

select *|字段.. from 表名 where 行过滤条件  group by 分组字段  having 组过滤信息 order by 排序字段;

执行流程:from--where--group by--having--select--order by

 

组函数

1)、count :统计记录数 count() -->* 或一个列名

2)、max, min: 最大值,最小值

3)、sum:求和

4)、avg:平均值

注意:

  1. 组函数仅在选择列表和Having子句中有效

2、出现组函数,select 只能有组函数或分组字段

说明:

l 1.组信息 与单条记录不能同时查询

l 2.组函数 不能用在where中,能使用的地方select having

l 3.null 不参与运算

TIPs:where :过滤行记录,不能使用组函数, having:过滤组 可以使用组函数

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值