天天看点

mysql查询语句myaql 语句的查询

myaql 语句的查询

简单查询

最基础的查询,直接从表中查处需要的数据

select 列名 from 表名
还可以加上别名
select 列名 as 别名 from 表名
           

条件查询

在简单查询的基础上在后面加上条件

select 列名 from 表名 where 条件
           

case....end

用法:

case stu_sex when 1 then '男' else '女' end as 性别
           

表示在查询出来的表中,

stu_sex

列中如果为1则显示为男,否则就为女,将

stu_sex

别名为性别

当数据中有空值时不能用

数据=null

,而应该表示为

数据 is null

or

数据 is not null

注意:

分组以前的数据筛选使用

where

,分组以后的筛选使用

having

在条件筛选过程中还要注意

=

in

的使用。

例:

-- 查询1111、2222、3333这三门课平均成绩大于等于90的学生学号和平均成绩
select
	stu_id as 学号,
    round(avg(score),2) as 平均成绩
from tb_record
where cou_id in (1111,2222,3333)
group by stu_id 
having 平均成绩>=90;
           

聚合函数

排序: 升序:

order by 数据 asc;

;降序:

order by 数据 desc;

去重: 在需要去重的数据前面加上

distinct

curdate()

:计算当前时间

datediff()

: 计算时间差

floor()

: 向下取整

max()、min()、avg()、sum()、std()

:计算最大、最小、平均值、总和、标准差

ifnull()

: 遇到空值将其替换成指定值

limit x,y

:跳过x条数据拿到y条数据

limit x

:拿到x条数据

offset x

:跳过x条数据

round()

:原来保留几位小数

子查询(嵌套查询)

在查询语句中有两个或多个select

-- 查询年龄最大的学生的姓名(子查询)
select
	stu_name as 姓名 from tb_student 
	where stu_birth=(
		select min(stu_birth) from tb_student
        );
           

连接查询

当要查询的数据在多个表中,需要将多个表连接起来

内连接

表1 inner join 表2 on 表1.key=表2.key

表1,表2 where 表1.key=表2.key

表1 natural join 表2

外连接

– 左外连接:确保左表(写在join前面的表)中所有记录都能查出来,不满足连接条件的补充null

表1 left outer join 表2 on 表1.key=表2.key

– 右外连接:确保右表(写在join后面的表)中所有记录都能查出来,不满足连接条件的补充null

表1 right outer join 表2 on 表1.key=表2.key

– 全外连接:确保左表,右表中所有记录都能查出来,不满足连接条件的补充null

– mysql不支持全外连接,可以用左外连接并右外连接