MySQL查询语句(select)详解
1.查询记录
select*from 表名 [where 条件];
eg:select*from students;//查询 students 表中所有记录,所有字段的值都显⽰出来
select field1,field2,... from 表名 [where 条件];
insert语句嵌套selecteg:select id,name,age from students;//查询 students 表中所有记录, 只显⽰出 id,name,age三个字段的值
1.“*”表⽰将所有的字段都显⽰出来
2.⽤逗号分割,列出需要显⽰的字段
2.查询不重复的记录
select distinct 字段 from 表名;
eg: select distinct name from students;//查询名字不相同的学⽣;
select distinct name,age from students;//查询名字和年龄同时不同的学⽣mysql语句多表查询
1.distinct必须放在最开头
2.distinct只能使⽤需要去重的字段进⾏操作。 ----也就是说我sidtinct了name,age两个字段,我后⾯想根据id进⾏排序,是不可以的,因为只能name,age两个字段进⾏操作.
3.distinct去重多个字段时,含义是:⼏个字段同时重复时才会被过滤。
3.条件查询
select 字段 from 表名 where 条件;
eg:select * from student where sex='男' and age>20; //查询性别是男,并且年龄⼤于20岁的⼈。
where后⾯的条件可以⽤>、<、>=、<=、!=等多种⽐较运算符,多个条件之间可以⽤or、and等逻辑运算符
4.排序和限制
排序
select * from 表名 [where 条件] [ order by field1 [desc/asc],field2 [desc/asc]... ];
eg:select *from student order by age desc;//查询学⽣表并按年龄降序排列。
1.desc 降序排列,asc 升序排列
3.如果排序字段的值⼀样,则相同的字段按照第⼆个排序字段进⾏排序。
4.如果只有⼀个排序字段,则字段相同的记录将会⽆序排列。
限制
select ... [limit 起始偏移量,⾏数];
eg:select * from student order by mark desc limit 5;//取出成绩前五名的学⽣(省略了起始偏移量,此时默认为0)
1.默认情况下,起始偏移量为0,只写记录⾏数就可以。
5.聚合
select 字段 fun_name from 表名 [where 条件] [group by ] [with rollup] [having 条件];
eg:
批处理编写教程1.fun_name 表⽰要做的聚合操作,也就是说聚合函数,常⽤的有 : sum(求和)、count(*)(记录数)、max(最⼤值)、min(最⼩值)。
3.with rollup 是可选语法,表明是否对分类聚合后的结果进⾏再汇总
4.having 关键字表⽰对分类后的结果再进⾏条件过滤。
公司员⼯表A如下 (编号,姓,名,薪⽔) :
统计总⼈数huffman算法
select count(1) from A;
统计各个姓的⼈数
select xing,count(1) from A group by xing;
z姓男明星三字既要统计各个姓的⼈数,⼜统计总⼈数
select xing,count(1) from A group by xing with rollup;
统计⼈数⼤4的姓
select xing,count(1) from A group by xing having count(1)>4;
统计薪⽔总额,最低薪资,最⾼薪资
select count(1),min(salary),max(salary) from A;
6.表连接ajax表单提交为啥没反应
表连接分为内连接和外连接。
他们之间最主要的区别:内连接仅选出两张表中互相匹配的记录,外连接会选出其他不匹配的记录。以下是员⼯表staff和职位表deptno:
内连接
select staff.name,deptname from staff,deptno where staff.name=deptno.name;
外连接分为左连接和右连接
左连接:包含所有左边表中的记录,甚⾄是右边表中没有和他匹配的记录。右连接:包含所有右边表中的记录,甚⾄是右边表中没有和他匹配的记录。
外连接(左连接):
select staff.name,deptname from staff left join deptno on staff.name=deptno.name;
外连接(右连接):
select deptname,deptno.name from staff right join deptno on deptno.name=staff.name;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论