Mysql(二)

2019年5月1日17:54:16 发表评论 311 views
select * from students where id<5;
筛选出id小于5的
select id from student;
筛选出id字段
select * from student where id is not null;
从表中选出id不为空的行
update student set name = 'moran' where id = 1;
将id为1的name字段设置为moran。
select * from student where name = 'moran' and age = 18;
将名字等于moran并且age等于18的行查找出来
可以将* 改成name age 来只显示这两个字段的值。
select name age from student where not id = 1;
将id不等于1 的行的name和age字段选择出来
select * from student where order by age [ase];
将选出的表按年龄顺序排序,不改变原表顺序。默认ase升序,可改为desec降序
select * from student where limit 2;
只显示查询到的前2条
select * from student limit 2,4;
显示第三条第四条第五条(第一个下标为0,左闭右闭)
select * from student order by id  limit 3;
用id排序后再显示前面三条。
select * from student where id > 2 order by id limit 3;
先筛选出id大于2 的然后再排序,最后显示前面三条
select distinct * from student;
去重查询,必须两行完全一样才可以,同理,如果限制字段名,需要值完全一样。
select * from student where name like 's%';
查询内容,名字以s开头的。%表示后面不限数量,放在前面的话是前面不限数量
_表示单个字符不限内容。
select * from student where id between 2 and 4;
显示2到4之间的,包括2 和4 ,左闭右闭
select * from student where id in(1,2,3,5);
选择的值包含在in后面的括号里。
select count(age) from student;
统计出现的次数,null值不算进出现的次数里面
其他聚合函数:
统计个数: count(column)
求和: sum(column)
最大值: max(column)
平均值: avg(column)
最小值: min(column)
列出全部字段值: group_concat(column)
select grade from students group by grade;
列出三个年级
注意: 在分组的情况下,只能能够出现分组字段和聚合字段,其他的字段没有意义,会报错。
select age, grade from student group by age,grade;
根据姓名和年级去分组。
select id from student group by id having id < 5;
筛选id小于5
select id from student where id > 2 group id < 49;
筛选id> 2 并且id< 49的并显示id。
顺序:
先执行where然后执行聚合函数和别名,最后执行having
select count(id) , grade from student group by grade;
统计各个年级的人数。
下面这两个统计各个年级大于18岁的人数。
select count(age)  , grade from student where age > 18 group by grade;
第二个先找出age大于18的然后进行分组,最后再统计age的数量。
第一个     43期带班老师-墨染  23:23:44
先聚合分组 然后聚合函数 再having筛选
select count(id) ,grade from student where age> 18 group by grade having grade = 'one';
统计出一年级人数大于18的人。
select count(id) ,grade from student group by grade having grade = 'one';
统计出一年级的人数。
Order by 没加
Limit没加
having后面加的条件要在聚合分组里出现的。
连接查询:
内连接(inner join)
无条件内连接:
又名交叉连接(笛卡尔连接)
第一张表的每一项会和另一张表的每一项依次结合
select * from student [inner] join scoren;
有条件内连接:
在无条件内连接的基础上,加上一个on子语句
当连接的时候,筛选出那些有实际意义的记录来进行组合
select * from student inner join scoren on dept_id = id;
外连接({left|right} join)
左外链接:(以左表为基准)
两张表做连接的时候,在连接条件不匹配的时候
留下做表的数据,而右表的数据以2NULL填充
select * from student left join department on dept_id = d_id;
右外连接:(以右表为基准)
对两张表做连接的时候,在连接条件不匹配的手
留下右表中的数据,而左表中的数据以NULL填充
select * from student right join department on dept_id = d_id;

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: