查询语句(标红的是关键字)

牢记这些语句的语法


全表查询

select * from t_hq;

字段也是可以起个别名的
select bumen as 部门,hanqbh as 汉企编号 from t_hq;

连接两个字段
select bumen||bumendh as 部门和电话 from t_hq;

表内的排序
select hanqbh as bh , t.* from t_hq t order by hanqbh;
是表内的数据按照hanqbh的升序排序,默认asc是升序,加上个desc,变成降序排序。

组合排序
select hqbh as bh , t.* from T_zhao_banji t order by xingb desc,hqbh;

按照第几列排序
select * from t_zhao_banji order by 5;

选择某几项的和相加进行排序,注意一点就是如果出现空格和字符运算,则计算结果为空
select nianl,hqbh, (nianl + hqbh) as g from t_zhao_banji order by (nianl + hqbh);


去除表格内重复的内容
select distinct xingb from t_zhao_banji;

distinct后面的字段是限制的条件,如果写上两个则表示两个字段同时都没有重复的。


where条件过滤,这一条是比较关键的,以后的应用当中少不了判断一些条件,多注意加以练习。
比较操作符中判断是否为空的关键字是 is ,应该注意。
where后面的条件语句也是有优先级的,括号的优先级还是最高的,如果是数字,则可以自动转换,也就是说''是可以不写的,仅限于数字

模糊查询
select * from t_zhao_banji where xingm like '王%';
百分号的位置不是固定的,可以自己随便更改。
模糊查询的通配符用下划线来表示,按位通配。
_是严格按照字符位置来查询的,%是模糊查询


调取复合条件的行
select * from t_zhao_banji where hqbh in ('102','104','109');
in关键字的用法,这是最简单的,*是可以改,也可以只取需要的几列。

between and 关键字,取出在这两个值中间的一些数据
select * from t_zhao_banji where nianl between 20 and 25;


套用in关键,子查询
select * from t_zhao_banji where hqbh in (select hanqbh from t_hq where bumendh = '13579');

分组,count(1)是指的这一组里面有多少个数据
select diannaopp,count(1) as 数量 from t_zhao_banji group by diannaopp;
分组区别于去重复,但是group by可以添加别的函数,group by 可以跟where同时使用,不过必须放在group by 的后面。
group by要注意的一点变焦重要的是分组语句前面select后面的字段必须跟group by后面的字段保持一致,否则报错。

group by 分组的关键字一定要在命令语句的最后使用!

select diannaopp,count(1) as 数量, avg(gongzi) as 平均工资, sum(gongzi) as 合计 from t_zhao_banji group by diannaopp having avg(gongzi) < 250;
having要和group by一起使用。
这里需要注意一下的是,与having后面的数据有关联的前面的关键字和字段是不能省略的。
比如上面的语句中,"count(1) as 数量"可以删掉,但是"sum(gongzi) as 合计"删掉就会报错,希望有朋友帮解释一下。

avg的平均值和sum的合计总值是在分组里面使用的,无法单独使用。

原文地址:https://www.cnblogs.com/wgbs25673578/p/4915588.html