表的查询操作

查询语法

select 【distinct】* form 表名

*代表所有列 ,查询时尽量不用select *, 效率非常低

a)查询某列

select 列名1,列名2 表名 from 表名

b)去重查询 distinct笔试

select distinct 列名 from 表名

若加多个列名用逗号隔开,代表两列数据都相同时才会去掉
c)对查询的列进行算术运算

select 列名1+列名2 from 表名

d)对查询结果重命名 as 笔试

select 列名1+列名2 as ‘新名’ from 表名

as可省略

eg: select math+english+chinese as ’总成绩’from student;

eg:将所有姓唐的学生总成绩增加%60 --》先写结果最后写条件

 select name,(chinese+math+english)*1.6 from student 
where name like ’唐%’

%为通配符 表示找唐xx/ ’%唐’则是找xx唐
e)where 子句

比较运算符:between...and  闭区间查找
           in() 具体值查找(枚举)
           like’’
           not like’’
           is null
           > < >= <= !=
逻辑运算符:and
           or
           not

用as起的别名不能作为查询的列名

f)排序

select * from [表名] order by [列名] asc/desc;

此处的order by 后的列名 可以引用别名
order by 语句要放在命令的最后.
g)分页

select [列名] from [表名] where 条件 limit 启始位置,记录条数

select [列名] from [表名] where 条件 limit记录条数 offset 起始位置

聚合函数
a)count 函数

select count(*)|count(列名) from [table_name] where condition

count(*)会统计一共的记录数,count(列名)会排除为null的情况
b) sum函数返回满足where条件的行的和

select sum(列名) {,sum(列名)...} from tbl_name [where condition]

sum仅对数值起作用,否则无意义
c)avg函数

select avg(列名) [,avg(列名),...] from tbl_name [where condition];

d) max/min函数返回满足where条件的一列的大/小值

select max(列名) from tbl_name [where condition]

e) 对指定列进行分组
题中出现“每个”的字样,一般需要用到分组。

select column1, column2, .. from table group by column;

having和group by配合使用,对group by结果进行过滤

select avg(sal) as myavg from EMP group by deptno having myavg<2000

多表查询:

select column1, column2, .. from table1,table2 【where 条件】

若没有where子句,直接用from 字句查询两个表,则是用的笛卡儿积查询,这样就有大量的重复内容,因此需要用where子句
两个表中有列名相同的,则需要通过[表名].列名 指出需要用哪个表中的列名。
自查寻:
须在from后给表起别名,然后通过[别名.列名](select中也需这样引用) 的方式调用列名
合并多个表的select执行结果
union 去重合并
union all 不去重合并
SQL查询中各个关键字的执行先后顺序== from > on> join > where > group by > with > having > select > distinct > order by > limit==

猜你喜欢

转载自blog.csdn.net/weixin_42962924/article/details/83869804