增
mysql除了sql标准的增加,还提供了另外一种增加的方法
insert into student set stu_name='xxoo',stu_age=23;
这种方式的扩展应用是可以在等号后面加子查询。
另外一种增加的方法
insert into student select *******;
查
1,group by 可以升降序
select age from student
group by stu_age desc;
2,limit 子句
limit 5;//
limit 5,10;//offset 为5,查10个 mysql的offset是从0开始
3,子查询
select * from students where stu_age> any(
select stu_age from students where stu_name='张三'
)
如果子查询结果不止一个,那么就必须在查询前面加关键字,包括any,all,some
any:符合一个就可以
all:要全部符合
改
有这么个场景,有张学生表,有个字段叫stu_province。后来想做张province表,要求两张表中的数据要一致。
insert into province(province)
select stu_province from student group by province
update student inner join province on student.stu_province = province.province
set student.stu_province=province.id
连接
分为内连接跟外连接,其中外连接又分为左外连接跟右外连接。
内连接就是求交集,外连接就是求并集。
多表连接
select * from
A join B on A.id=B.id
join C on A.id=C.id
单表删除重复记录,涉及到表的自连接
//先找出重复记录,这里的id取小的那个
select min(id),name from student group by name having count(name)>1
//假设上面的表定义t2,为了使语句简单,下面直接使用t2
delete t1 from A as t1 left join t2 on t1.name = t2.name
where t1.id > t2.id