SELECT语句是最常用的查询语句,它的使用方式有些复杂,但功能是相当强大的。
SELECT语句的基本语法如下:
select selection_list //要查询的内容,选择哪些列
from 数据表名 //指定数据表
where primary_constraint //查询时需要满足的条件,行必须满足的条件
group by grouping_columns //如何对结果进行分组
order by sorting_cloumns //如何对结果进行排序
having secondary_constraint //查询时满足的第二条件
limit count
单表查询是指从一张表中查询所需要的数据。所有查询操作都比较简单。
查询所有字段是指查询表中所有字段的数据。这种方式可以将表中所有字段的数据都查询出来。在MySQL中可以使用“*”代表所有的列,即可查出所有的字段,
语法格式如下:
SELECT * FROM 表名;
create database test; #创建库
use test; #进入库
create table info (id int not null,name char(6),score decimal(5,2),age int(4)); #创建表
插入测试数据
insert into info (id,name,score,age)values(1,'san',88,33);
insert into info (id,name,score,age)values(2,'lisi',48,31);
insert into info (id,name,score,age)values(3,'wwu',68,27);
insert into info (id,name,score,age)values(4,'pw',98,25);
insert into info (id,name,score,age)values(5,'wlk',19,37);
insert into info (id,name,score,age)values(3,'lihua',58,23);
SELECT * FROM info;
单表查询是指从一张表中查询所需要的数据。所有查询操作都比较简单
查询指定字段可以使用下面的语法格式:
SELECT 字段名 FROM 表名;
SELECT name FROM info;
查询结果:
如果要从很多记录中查询出指定的记录,那么就需要一个查询的条件。设定查询条件应用的是WHERE子句。通过它可以实现很多复杂的条件查询。在使用WHERE子句时,需要使用一些比较运算符来确定查询的条件。
SELECT * FROM info WHERE name = 'lisi' ;
查询结果:
IN关键字可以判断某个字段的值是否在于指定的集合中。如果字段的值在集合中,则满足查询条件,该记录将被查询出来;如果不在集合中,则不满足查询条件。
其语法格式如下:
SELECT * FROM 表名 WHERE 条件 [NOT] IN(元素1,元素2,…,元素n);
SELECT * FROM info WHERE name in ('lisi','pw') ;
查询结果:
SELECT * FROM info WHERE name not in ('lisi','kk') ;
查询结果:
BETWEEN AND关键字可以判断某个字段的值是否在指定的范围内。如果字段的值在指定范围内,则满足查询条件,该记录将被查询出来。如果不在指定范围内,则不满足查询条件。
其语法如下:
SELECT * FROM 表名 WHERE 条件 [NOT] BETWEEN 取值1 AND 取值2;
SELECT * FROM info WHERE age BETWEEN 25 AND 35;
查询结果:
友情提醒:边缘值包括在内,25和35都符合条件
LIKE属于较常用的比较运算符,通过它可以实现模糊查询。
它有两种通配符:“%”和下划线“_”;
SELECT * FROM info WHERE name LIKE '%w%' ;
查询结果:
IS NULL关键字可以用来判断字段的值是否为空值(NULL)。如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查询条件。
其语法格式样如下:
IS [NOT] NULL
SELECT * FROM info WHERE age is not NULL;
查询结果:
AND关键字可以用来联合多个条件进行查询。使用AND关键字时,只有同时满足所有查询条件的记录会被查询出来。如果不满足这些查询条件的其中一个,这样的记录将被排除掉。
AND关键字的语法格式如下:
select * from 数据表名 where 条件1 and 条件2 […AND 条件表达式n];
SELECT * FROM info WHERE age =33 and name ='san';
查询结果:
OR关键字也可以用来联合多个条件进行查询,但是与AND关键字不同,OR关键字只要满足查询条件中的一个,那么此记录就会被查询出来;如果不满足这些查询条件中的任何一个,这样的记录将被排除掉。
OR关键字的语法格式如下:
select * from 数据表名 where 条件1 OR 条件2 […OR 条件表达式n];
SELECT * FROM info WHERE age =23 or name ='san';
查询结果:
使用DISTINCT关键字可以去除查询结果中的重复记录
语法格式如下:
select distinct 字段名 from 表名;
select distinct score from info;
查询结果:
去重前:
使用ORDER BY可以对查询的结果进行升序(ASC)和降序(DESC)排列,在默认情况下,ORDER BY按升序输出结果。如果要按降序排列可以使用DESC来实现。
语法格式如下:
ORDER BY 字段名 [ASC|DESC];
select * from info ORDER BY score;
查询结果:
通过GROUP BY子句可以将数据划分到不同的组中,实现对记录进行分组查询。在查询时,所查询的列必须包含在分组的列中,目的是使查询到的数据没有矛盾。
select id,age from info GROUP BY age;
查询结果:
查询数据时,可能会查询出很多的记录。而用户需要的记录可能只是很少的一部分。这样就需要来限制查询结果的数量。LIMIT是MySQL中的一个特殊关键字。LIMIT子句可以对查询结果的记录条数进行限定,控制它输出的行数。
select * from info ORDER BY score LIMIT 3;
查询结果:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。