MySQL数据库的select语句
MySQL数据库的select语句
⼀、查询记录
select * from 表名 [where 条件];
例如:
(1):select*from students;//查询 students 表中所有记录,所有字段的值都显⽰出来
(2):select m1,m2,...mn... from 表名 [where 条件];
(3):select stu_id,stu_name,stu_age from students;//查询 students 表中所有记录, 只显⽰出 stu_id,stu_name,stu_age三个字段的值
1."*"表⽰见所有的字段都显⽰出来
2.⽤逗号分割,列出需要显⽰的字段
⼆、查询不重复的记录
select distinct 字段 from 表名;
例如:
(1): select distinct stu_name from students;//查询名字不相同的学⽣;
select distinct stu_name,stu_age from students;//查询名字和年龄同时不同的学⽣
select语句查询日期 1.distinct必须放在最开头
2.distinct去重多个字段时,含义是:⼏个字段同时重复时才会被过滤。
三、条件查询
select 字段 from 表名 where 条件;
例如:select * from student where stu_sex='⼥' and stu_age>18; //查询性别是nv,并且年龄⼤于18岁的⼈。
where后⾯的条件可以⽤>、<、>=、<=、!=等多种⽐较运算符,多个条件之间可以⽤or、and等逻辑运算符
四、排序和限制
1.排序
select * from 表名 [where 条件] [ order by m1 [desc/asc],m2 [desc/asc]... ];
例如:select *from student order by stu_age desc;//查询学⽣表并按年龄降序排列。
1.desc 降序排列,asc 升序排列
3.如果排序字段的值⼀样,则相同的字段按照第⼆个排序字段进⾏排序。
4.如果只有⼀个排序字段,则字段相同的记录将会⽆序排列。
2.限制
select ... [limit 起始偏移量,⾏数];
例如:select * from student order by mark desc limit 5;//取出成绩前五名的学⽣(省略了起始偏移量,此时默认为0)
1.默认情况下,起始偏移量为0,只写记录⾏数就可以。
五、聚合
select 字段 stu_name from 表名 [where 条件] [group by ] [with rollup] [having 条件];
例如:
1.fun_name 表⽰要做的聚合操作,也就是说聚合函数,常⽤的有 : sum(求和)、count(*)(记录数)、max(最⼤值)、min(最⼩值)。
3.with rollup 是可选语法,表明是否对分类聚合后的结果进⾏再汇总
4.having 关键字表⽰对分类后的结果再进⾏条件过滤。
六、学⽣表如下(学号、姓名、性别、年龄)
1.统计总⼈数 :
select count(1) from 学⽣表
1.统计总⼈数
select count(1) from 学⽣表
2.统计男⽣和⼥⽣分别有多少⼈以及总⼈数
select stu_sex,count(1) from 学⽣表 group by stu_sex with rollup;
3.统计⼈数⼤于4的性别
select stu_sex,count(1) from 学⽣表 group by stu_sex having count(1)>4;
4.统计学⽣的总⼈数以及最⼩年龄和最⼤年龄select count(1),min(stu_age),max(stu_age) from 学⽣表;
七、表连接
两张表分别是学⽣表和职位表
1.内连接
select stu_name,position from 学⽣表,职位表 where stu_id=id;
2.外连接
外连接分为左外连接和右外连接
左外连接: 左连接是已左边表中的数据为基准,若左表有数据右表没有数据,则显⽰左表中的数据右表中的数据显⽰为空。左联接的结果集包括 LEFT ⼦句中指定的左表的所有⾏,⽽不仅仅是联接列所匹配的⾏。如果左表的某⾏在右表中没有匹配⾏,则在相关联的结果集⾏中右表的所有选择列表列均为空值。
右外连接: 右联接是左向外联接的反向联接。将返回右表的所有⾏。如果右表的某⾏在左表中没有匹配⾏,则将为左表返回空值
(1)左外连接
select stu_name,position from 学⽣表 left join 职位表 on stu_name=name;
(2)右外连接
select stu_name,position from 学⽣表 right join 职位表 on stu_name=name;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论