本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • MySQL基础教程(5)MySQL的子句、函数与子查询用法

MySQL基础教程(5)MySQL的子句、函数与子查询用法

发布:TangLu2019-1-3 12:46分类: MySQL 标签: mysql

一、MySQL常用子句

DISTINCT子句:对查询结果进行去重

select age from student_table;
select DISTINCT name,age from student_table;  #对name和age列的查询结果去重



ORDER BY:对查询结果进行排序,需要注意如果存在相同数据会随机排序。该子句一般写在语句最后。

select * from student_table order by age;  #根据age列的数据进行排序
select * from student_table order by age desc;  #根据age列的数据进行倒序排序
select * from student_table order by age,price;  #根据age列的数据进行排序,如果该列有重复值再根据price列进行排序



LIMIT:限制查询结果的返回行数

select * from student_table order by age desc limit 100; 
select * from student_table order by age desc limit 100,10;  #返回第100行以及它后10行的数据 



WHERE:对语句所要处理的数据进行过滤,多条件过滤时需要注意顺序,AND优先于OR,可以加括号来改变优先级

select * from student_table where age > 18 order by price limit 10;
select * from student where age > 18 and height < 170 #多条件过滤


BETWEEN:带范围的条件过滤

select * fron student where age between 18 and 20;


NULL、NOT NULL:过滤空值或非空值,但不是空字符串

select * fron student where price IS NULL;
select * fron student where price IS NOT NULL;  #过滤非空数据
 


IN、NOT IN:以集合的形式过滤

select * from student_table where age in (18,19,20);
select * from student_table where age not in (18,19,20);  #age不等于18,19,20


LIKE:实现模糊匹配

select * from student where name like 'tang%' ;  #%代表通配所有字符,_代表通配一个字符


REGEXP:正则表达式匹配

select * from student where name REGEXP '^tang' ;


二、MySQL常用函数(不同函数可嵌套组合使用)

CONCAT:实现字段拼接

select concat(name,age) from student  #拼接name和age字段

select concat(name,'_'age) from student  #拼接name和age字段,用下划线分割


AS:为字段起别名,AS关键词其实可以省略不写

select *,concat(company,address) as company_info from student  #将concat拼接出来的字段命名为company_info 
select address addr,concat(company,address) company_info from student;  #省略as的写法


LEFT、RIGHT:从左或从右截取指定长度的字符串

select left(name,5) from student;  #截取name列前5个字段


LENGTH:返回指定列的字符串长度


LOWER、UPPER:将指定列的字符串修改为小写或大写


LTRIM、RTRIM:将字符串左边或右边的空格去掉后返回


SUBSTRING:指定需要截取的字符串范围并返回

select substring(name,1,3) from student ;  #返回name列的第一到第三个字符


NOW:返回系统当前时间

select now();


COUNT:行数统计

select count(name) from student  #统计name列的长度,不会包含空行

select count(*) from student;  #统计整张表的长度,包含空行


AVG

MAX、MIN:找出指定列中最大或最小的一行

select MAX(id) from student;


GROUP BY:为查找出来的数据进行分组

select age,count(*) from student group by age;  #按age数据进行分类,然后统计每个分类下的行数
select age,height,count(*) from student group by age,height;  #对多列数据进行分组统计


HAVING:对分组后的数据进行筛选,优先级在where之后

select age,count(*) from student group by age having age >18 ;

三、子查询

子查询就是嵌套进行多次查询的一个过程,主要解决AVG等聚合函数不能写在where条件中的问题

select age,height from studeng where age > ( select avg(age) from student);

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《MySQL基础教程(5)MySQL的子句、函数与子查询用法
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-289.html  [生成短网址]

已有 0/2120 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~