在之前的文章中,已经总结了insert语句,update语句与delete语句,此处不再累赘,该文将总结select语句的基本用法,select语句的分组与聚合,多表查询等常用语法将在其他文章中单独进行总结.
查询tb1表中的全部数据,如果表中 的数据量巨大,那么使用它纯属作死.
select * from tb1;
表示从tb1表中查询出所有数据,但是只显示前3行
select * from tb1 limit 3;
从tb1表中查询出name字段与age字段的数据,即使这样写,也不好
select name,age from tb1;
从tb1表中查询出符合条件的数据,使用where子句给定条件,带有筛选条件的查询语句则会比上面两种查询语句好很多,如下示例给出常用的条件表达式,如下语句表示从tb1表中查询出age等于25的行的name和age字段.
select name,age from tb1 where age = 25;
select * from tb1 where age != 28; ##不等于28
select * from tb1 where age >= 25 and age <=28; ##大于25小于28
select * from tb1 where age = 25 or age = 28; ## 等于25或者28
如下语句表示从tb1表中查询出age不再25到28区间中的数据.
select * from tb1 where age not between 25 and 28;
select * from tb1 where age < 25 or age > 28;
使用like结合通配符进行模糊查询,如下语句表示查询tb1表中name字段以j开头的数据,,’%’在查询语句中表示”任意长度的任意字符”.
select * from tb1 where name like 'j%';
如下语句表示查询tb1表中name字段以t开头,并且只有三个字符的数据,”_”在查询语句中表示”任意单个字符”,下面的例子中,在t后面跟随了两个”_”表示t后面的两个字符可以是任意字符.
select * from tb1 where name like 't__';
也许你觉得还不够灵活,或许你更习惯使用正则表达式作为匹配条件,没问题.我们可以使用rlike结合正则表达式,对字符数据进行模糊查询,所以,查询语句能有多强大的功能,就看你的正则表达式运用的有多熟练了,
查询出tb1表中name字段以t开头的所有数据,
select * from tb1 where name rlike '^t.*';
我们还可以从指定的列表中匹配对应的条件,使用in关键字指定列表.
如下表示从tb1表中查找出age等于22、23、24或25中的任意一个的行的所有数据.
select * from tb1 where age in (22,23,24,25);
除了使用in,我们还可以使用not in,聪明如你一定秒懂,not in就是in的对立面.
查询出tb1表中age不等于28、43、33的数据.
select * from tb1 where age not in (28,33,43);
我们可以对查询出的数据进行排序,如下示例表示查询tb1表中的所有数据,并且按照age的值从小到大进行升序排序,asc表示升序排序,asc可省,默认使用升序排序.
select * from tb1 order by age;
select * from tb1 order by age asc;
查询tb1表中的所有数据,并且按照age的值从大到小进行降序排序,如果多行之间的age字段的值相同时,这些行再根据name字段进行升序排序.
select * from tb1 order by age desc,name asc;
我们可以在查询某字段的时候去重,使用DISTINCT关键字表示去重查询,比如,查询学生的年龄并去重显示年龄.
select distinct age from students;
我们也可以在查询时给字段添加别名,以便显示为我们指定的列名.
select name as StuName , age from tb1;
+---------+---------+
| StuName | age |
+---------+---------+
| tom | 33 |
+---------+---------+
| jerry | 22 |
+---------+---------+
| naruto | 11 |
+---------+---------+
评论前必须登录!
注册