简单查询
-
在MySQL中可以通过SQL语句来实现基本数据查询,SQL语句可以通过如下多种使用:查询所有字段数据、查询指定字段数据、避免重复数据查询、对结果进行排序和分组等查询。
-
数据库中可能包含数量庞大的表,表中可能包含无数的记录,如果没有两把刷子要获得所需的数据并非易事。在MySQL中,可以使用SELECT语句来查询数据,根据查询条件的不同,数据库系统会找到不同的数据,通过SELECT语句可以很方便地获取所需的信息。
-
在MySQL中,SELECT语句的基本语法形式如下:
SELECT field1 field2 … fieldn FROM tablename [WHERE CONDITION1] [GROUP BY fieldm [HAVING CONDITION2]] //分组 [ORDER BY fieldn [ASC|DESC]]; //排序
-
filed1~fieldn参数表示需要查询的字段名;
-
tablename参数表示表的名称;
-
CONDITION1参数表示查询条件;
-
fieldm参数表示按该字段中的数据进行分组;
-
CONDITION2参数表示满足该表达式的数据才能输出;
-
fieldn参数指按该字段中数据进行排序。排序方式由ASC和DESC两个参数指出;
-
ASC参数表示按升序的顺序进行排序,是默认参数;
-
DESC参数表示按降序的顺序进行排序。
查询所有字段数据
查询所有字段是指查询表中所有字段的数据,这种方式可以将表中所有字段的数据都查询出来。MySQL有两种方式可以查询表中的所有字段。
-
列出表的所有字段
通过SQL语句SELECT列出表的所有字段,具体语法形式如下:SELECT field1,field2,…,fieldn FROM tablename; 其中: filed1~fieldn参数表示需要查询的字段名; tablename参数表示表的名称。
-
“*”符号表示所有字段
查询所有字段数据,除了使用上面的方式外,还可以通过符号“*”来实现,具体语法形式如下:SELECT * FROM tablename; 其中: 符号“*”表示所有字段名; tablename参数表示表的名称。 与上一种方式相比,“*”符号方式的优势比较明显, 即可用该符号代替表中的所有字段,但是这种方式不够灵活, 只能按照表中字段的固定顺序显示,不能随便改变字段的顺序。
-
查询指定字段数据
查询指定字段数据,只需修改关键字SELECT后的字段列表为指定字段即可。SELECT field1,field2,…,fieldn FROM tablename; 例如,从班级表中查询班主任字段,SQL语句如下所示。 SELECT teacher FROM class;
如果关键字SELECT后面的字段不包含在所查询的表中,那么MySQL会报错。
-
DISTINCT 去重查询
当在MySQL中执行简单数据查询时,有时会显示出重复数据。为了实现查询不重复数据,MySQL提供了DISTINCT功能,SQL语法如下:SELECT DISTINCT field1,field2,…,fieldn FROM tablename;
在上述语句中,关键字DISTINCT去除重复的数据。下面将通过一个具体的示例来说明如何实现查询不重复数据。
执行SQL语句SELECT,在数据库school中查询班级表 class 中teacher字段的数据。具体步骤如下:mysql> create table class(name varchar(64)); #创建表class mysql> insert into class values('张三'),('李四'),('张三'),('张三'); #插入多条记录 mysql> select name from class ; #查询class表中的name 域,包含重复记录 mysql> select distinct name from class ; #查询class表中的name 域,去重
-
IN查询
有的时候,当我们需要查询的目标记录限定在某个集合中的时候,在MySQL中可以使用关键字IN来实现,关键字IN可以实现判断字段的数值是否在指定集合中,该关键字的具体语句形式如下:SELECT field1,field2,…,fieldn FROM tablename WHERE filedm IN(value1,value2,value3,…,valuen);
使用NOT IN可以反向查询非集合中的数据
SELECT field1,field2,…,fieldn FROM tablename WHERE filedm NOT IN(value1,value2,value3,…,valuen);
集合查询的注意: 集合中慎用 NULL
在具体使用关键字IN时,查询的集合中如果存在NULL,则不会影响查询,NULL 存不存在的效果都一样;但如果使用关键字NOT IN,查询的集合中如果存在NULL,则不会查询到任何的结果。 -
BETWEEN AND查询
当我们需要查询指定范围内的数据(如: id 从0 到 100)的时候,MySQL提供了关键字BETWEEN AND,用来实现判断字段的数值是否在指定范围内的条件查询。该关键字的具体语法形式如下:SELECT field1,field2,…,fieldn FROM tablename WHERE fieldm BETWEEN minvalue AND maxvalue
在上述语句中,参数fieldn表示名称为tablename的表中的字段名,通过关键字BETWEEN和AND来设置字段field的取值范围,如果字段field的值在所指定的范围内,那么满足查询条件,该记录会被查询出来,否则不会被查询出来。
BETWEEN minvalue AND maxvalue,表示的是一个范围间的判断过程,只针对数字类型。
1.符合范围的数据记录查询
通过关键字BETWEEN和AND设置查询范围,以实现查询语文成绩(字段Chinese)在80和90之间的学生,具体SQL如下:mysql> create table class(id int , name varchar(128), age tinyint unsigned); #创建class表 mysql> insert into class values(1, '张三' 18),(2, '李四' 23),(3, '王五', 25); #插入多条记录 mysql> select * from class where age between