MySQL笔记---单表查询1
/**
单表查询
*/
show databases;
use db_26;
show tables;
select *
from tab_3;
desc tab_3;
insert into tab_3 (tid, tname, tage, sex)
values (1001,
concat('韩寒', 1),
truncate((rand() * 8 + 18), 0),
(if(rand() > 0.5, '男', '女')));
/**
单表查询
*/
select *
from tab_3;
# 查询所有行的所有列, select * from 表名
select tid, tname
from tab_3;
# 查询所有行的指定列 select 列名,列名 from 表名
select tage + 1, concat('我叫', tname, ' 今年', tage, ' 岁')
from tab_3;
# 列运算 + - * / %(mod)
# concat(str,str2,str3,.....) 字符串拼接运算
select distinct tname
from tab_3;
select distinct tname, tage
from tab_3;
# 去重 distinct 重复的记录显示一次
# 聚合函数: sum max min avg count
select sum(tage), min(tage), max(tage), avg(tage), count(tage), count(*)
from tab_3;
# count 不为 null 的数量 ,count(*) 总记录数
# avg ,计算非 null 的值
insert into tab_3 (tid, tname)
values (23, '张三');
# 不设置,默认为 null
# 求所有记录的平均年龄
select sum(tage) / count(*), avg(tage)
from tab_3;
# 17.3571 20.2500
/**
起别名
as 可以省略
*/
select sum(tage) as '年龄总和',
min(tage) as '最小值',
max(tage) as '最大值',
avg(tage) as '非 null 的平均值',
count(tage) as '非 null 的总人数',
count(*) as '全部的总人数'
from tab_3;
# 给 字段 起别名
select sum(t.tage) as '年龄总和',
min(t.tage) as '最小值',
max(t.tage) as '最大值',
avg(t.tage) as '非 null 的平均值',
count(t.tage) as '非 null 的总人数',
count(*) as '全部的总人数'
from tab_3 as t;
# 给 表 起别名
/**
like 模糊查询
*/
select *
from tab_3
where tname like '%1%';
# 查询名字中含有 1 的人, % 表示 0-多个字符
select *
from tab_3
where tname like '__1%';
# 查询名字中第三个字符是1的人 _ 表示1个字符
/**
分页查询 limit n,m
n为索引(从0开始),m 是获取的记录数量
⚠️ limit 是 MySQL的方言
*/
select *
from tab_3;
select *
from tab_3
limit 0,4;
# 查询前四行
select *
from tab_3
limit 4,4;
# 从第 5 行开始,查询 4 行
/**
条件查询 where 条件
运算符 > >= < <= != = <>
条件: or , and
判断是否是null: is null , is not null
范围: x between a and b [a,b] x in (x1,x2,x3)
⚠️:不能在 where 后加 聚合函数
*/
select *
from tab_3
where tage != 9
or tage is null;
# 年龄不等于 9 或者 等于 null
select *
from tab_3
where tage > 20
and sex = '女';
# 年龄大于20,并且 性别为 女
select *
from tab_3
where tage between 20 and 25;
# 查找 age 在 20 和 25 之间的人 [20,25]
select *
from tab_3
where tage in (20, 22, 24);
# 查找 年龄 = 20 或者 22 或者 24 的人
select *
from tab_3
where tage > any_value(20);
# 没用的东西
/**
null 转换
ifnull(field,value) 如果 filed 为 null 时,按 value 运算
*/
select tage '年龄', tage + 1 '明年的年龄'
from tab_3;
select concat('我叫', tname, '今年', tage, '岁')
from tab_3;
# 任何数据和 null 运算,结果还是 null
select tage '年龄', ifnull(tage, 0) + 1
from tab_3;
select concat('我叫', ifnull(tname, '无名'), '今年', ifnull(tage, 0), '岁')
from tab_3;
select database();
# 获取当前数据库