insert (into) t1(id,Name) values(1,“san”),(2,“san”),(3,“san”);
select id,name from tang1.t1;
select * from tang1.t1;
select distinct name from tang1.t1; 添加distinct避免查询内容重复
可以添加四则运算
select id,name,salary12 from tang1.t1; 想要查询这个人的年薪就可以这样操作
可以定义显示格式
select concat(“编号:”,id,”姓名:”,name,”年薪:”,salary12) from tang1.t1;
想要实现a:b:c…这样的效果
select concat_ws(“:”,name,salary*12) from tang1.t1;
select * from tang1.t1 where salary between a and b查找薪资在a-b之间的相当于a<=salary<=b
select * from tang1.t1 where age in(a,b,c,d,…);查找有这个年龄的数据相当于a or b or c or d…
判断是否为空
select * form tang1.t1 where age is null;
模糊查询
select * from tang1.t1 where name like “a%” 查询包含a后面至少0个字符的数据
select * from tang1.t1 where name like “a_” 查询a后面带一个字符的数据
分组查询
设置mysql
set global sql_mode = “ONLY_FULL_GROUP_BY”; 只能是取分组的字段
聚合函数 max,min,avg,sum,count
select sex ,group_concat(name) from tang1.t1 group by sex; 想要查询这个分组下的所有姓名
having 过滤 (注意是在分组时候去实现的过滤,后面直接是查询了distinct过滤重复的数据)
select age,group_concat(name) from tang1.t1 group by age having age<30;查询年龄分组下小于30岁的各个年龄所分布的人的姓名
order by 排序(这个操作是在select 查询数据完成之后运行的,所以可以使用查询时起的小名)
asc 升序
desc 降序
limit 限制条数 (最后运行的)
select * from tang1.t1 limit 1; 只显示一条数据
select * from tang1.t1 limit 0,2 从0开始读取两条数据(通常用来配合制作分页功能)
总结一下:
单表查询的执行顺序时
先from库中的表
然后查看where条件
接着是分组group by
然后是having过滤
紧跟着是查询select distinct 字段返回查询结果
然后再是order by进行排序
最后才是limit 限制输出行数
update tang1.t1 set name=”xxx” where id =3;
delete from t1 where id = 3;
清空表请使用
truncate t1;
select * from tang1.t1 where name regexp ‘^jin.*(g|in)$’ 查询以jin开头以g或者是in结尾的数据