第六课

简单查询

1.SELECT语句

1.在SELECT语句中查询所有字段

在SELECT语句中列出所有字段名来查询表中的数据,其语法格式:

SELECT 字段名1,字段名2,…FROM 表名;

/*字段名表示查询的字段名,这里需要列出表中所有的字段名*/

从查询结果可以看出,SELECT语句成功地查出了表中所有字段的数据。

需要注意的是,在SELECT语句的查询字段列表中,字段的顺序是可以改变的,无需按照其表中定义的顺序进行排列。执行结果如下:

2.在SELECT语句中使用星号("*")通配符代替所有字段

语法格式:SELECT*FROM 表名;

/*注意的是,一般情况下,除非需要使用表中所有字段的数据,否则最好不要使用星号通配符,使用通配符虽然可以节省输入查询语句的时间,但由于获取的数据过多会降低查询的效率*/

3.查询指定字段

基本格式:SELECT字段名1,字段名2,…FROM表名;

/*字段名表示表中的字段名称,这里只需指定表中部分的字段名称*/,执行结果如下:

如果在SELECT语句中改变查询字段的顺序,查询结果中字段显示的顺序也会做相应改变。

按条件查询

1.关系运算符查询

语法格式:SELECT 字段名1,字段名2,…FROM 表名WHERE条件表达式;执行结果如下:

2.带IN关键字查询

IN关键字用于判断某个字段的值是否在指定集合中,如果字段的值在集合中,则满足条件,该字段所在的记录将被查询出来。

语法格式:SELECT*|字段名1,字段名2,…FROM 表名WHERE字段名[NOT]IN(元素1,元素2,…);

/*元素表示集合中的元素,即指定的条件范围,NOT是可选参数,使用NOT表示查询不在IN关键字指定集合范围中的记录*/,执行结果如下:

3.带BETWEEN AND关键字的查询

BETWEEN AND用于判断某个字段的值是否在指定的范围之内,如果字段的值在指定范围内,则满足条件,该字段所在的记录将被查询出来,反之则不会被查询出来。

语法格式如下所示:SELECT*|字段名1,字段名2,…FROM 表名WHERE字段名 [NOT] BETWEEN值1 AND 值2;

/*值1表示范围条件的起始值,值2表示范围条件的结束值。NOT是可选参数,使用NOT表示查询指定范围之外的记录,通常情况下"值1"小于"值2",否则查询不到任何结果*/

执行结果如下:

4.空值查询

在数据表中,某些列的值可能为空值(NULL),空值不同于0,也不同于空字符串。在MySQL中,使用IS NULL关键字来判断字段的值是否为空值。

语法格式:SELECT*|字段名1,字段名2,… FROM 表名 WHERE 字段名 IS [NOT] NULL;

/*NOT是可选参数,使用NOT关键字用于判断字段不是空值*/,执行结果如下:

5.带DISTINCT关键字查询

在SELECT语句中,可以使用DISTINCT关键字来去掉查询记录中重复的值。

语法格式:SELECT DISTINCT 字段名 FROM 表名;

6.DISTINCT关键字作用多个字段

语法格式:SELECT DISTINCT 字段名1,字段名2,… FROM 表名;

/*只有DISTINCT关键字后指定的多个字段值都相同,才会被认作是重复记录*/执行结果如下:

从查询结果看出,仍出现重复的值,只有两个字段的值都相同才被认为是重复记录。所以向表中添加一条新记录,并用SELECT语句查询所有记录,结果如下:

接下来再次查询gender和name字段,并使用distinct作用这两个字段,执行结果如下所示:

从查询结果看出,DISTINCT去除了重复的记录。

7.带LIKE关键字的查询

MySQL中提供了LIKE关键字,用于对字符串进行模糊查询。

语法格式:SELECT *|字段名1,字段名2,… FROM 表名WHERE 字段名[NOT] LIKE "匹配字符串";/*NOT是可选参数,使用NOT表示查询与指定字符串不匹配的记录。匹配字符串指定用来匹配的字符串*/

通配符

(1)百分号(%)通配符

可以匹配任意长度的字符串,包括空字符串。执行结果如下:

在通配字符串中可以出现多个百分号通配符。

LIKE之前可以使用NOT关键字,用来查询与指定通配字符串不匹配的记录。执行结果如下:

(2)下划线(_)通配符

可以匹配任意长度的字符串,包括空字符串。执行结果如下:

从查询结果可以看到,在通配字符串中使用了4个下划线通配符。

8.使用百分号和下划线通配符进行查询操作

如果要匹配字符串中的百分号和下划线,就需要在通配字符串中使用右斜线("\")对百分号和下划线进行转义,例如:\%匹配百分号字面值,\_匹配下划线字面值。

在查询之前,首先向表中添加一条记录,执行结果如下:

从查询结果可以看到,查出了name字段值为"sum%er"的新记录。

9.带AND关键字的多条件查询

使用AND关键字可以连接两个或者多个查询条件,只有满足所有条件的记录才会被返回。在WHERE关键字后面跟了多个条件表达式,每两个条件表达式之间用AND关键字分隔。

语法格式如下所示:

SELECT *|字段名1,字段名2,…FROM 表名WHERE 条件表达式1 AND 条件表达式2 […AND 条件表达式n];执行结果如下:

10.带OR关键字的多条件查询

在使用SELECT语句查询数据时,也可以使用OR关键字连接多个查询条件,只要记录满足任意一个条件就会被查询出来。

语法格式:SELECT *|字段名1,字段名2,…FROM 表名 WHERE 条件表达式1 OR 条件表达式2[…OR 条件表达式n];执行结果如下:

只要记录满足OR关键字连接的任意一个条件就会被查询出来,执行结果如下:

11.OR和AND关键字一起使用的情况

AND的优先级高于OR,因此当两者在一起使用时,应该先运算AND两边的条件表达式,再运算OR两边的条件表达式,执行结果如下:

高级查询

一、聚合函数

1.COUNT()函数

用来统计记录的条数,语法格式:SELECT COUNT(*) FROM 表名;

2.SUM()函数

SUM()是求和函数,用于求出表中某个字段所有值的总和,语法格式:SELECT SUM(字段名) FROM 表名;

3.AVG()函数

AVG()函数用于求出某个字段所有值的平均值,语法格式如下所示:

SELECT AVG(字段名) FROM student;执行结果如下:

4.MAX()函数

MAX()函数是求最大值的函数,用于求出某个字段的最大值,执行结果如下所示:

5、MIN()函数

MIN()函数是求最小值的函数,用于求出某个字段的最小值,执行结果如下所示:

二、对查询结果排序

语法格式:SELECT字段名1,字段名2,…FROM 表名ORDER BY 字段名1 [ASC|DESC],字段名2 [ASC|DESC]…

/*ASC表示按照升序进行排序,DESC表示按照降序进行排序*/

从查询结果可以看到,返回的记录按照ORDER BY指定的字段grade进行排序,并且默认是按升序排列

从查询结果可以看到,在ORDER BY中使用了DESC关键字,返回的记录按照grade字段的降序进行排列。

三、分组查询

语法格式:SELECT 字段名1,字段名2,…FROM 表名 GROUP BY 字段名1,字段名2,…[HAVING 条件表达式];

/* HAVING关键字指定条件表达式对分组后的内容进行过滤,注意的是,GROUP BY一般和聚合函数一起使用*/

1.单独使用GROUP BY分组

单独使用group by关键字,查询的是每个分组中的一条记录。执行结果如下:

2、GROUP BY和聚合函数一起使用

3、GROUP BY和HAVING关键字一起使用

HAVING关键字和WHERE关键字的作用相同,都用于设置条件表达式对查询结果进行过滤。

HAVING关键字后可以跟聚合函数,而WHERE关键字不能。通常情况下HAVING关键字都和GROUP BY一起使用,用于对分组后的结果进行过滤。

四、使用LIMIT限制查询结果的数量

语法格式:SELECT 字段名1,字段名2,…FROM 表名LIMIT [OFFSET,],执行结果如下:

五、函数(列表)

执行结果如下:

从查询结果看,将将各个字段值使用下划线"_"连接起来。

从查询来看,如果gender字段的值为"男"则返回1,如果不为"男"则返回0。

为表和字段取别名

为表取别名

在查询操作时,如果表名很长使用起来就不太方便,这时可以为表取一个别名,用这个别名来代替表的名称。语法格式:SELECT * FROM 表名 [AS] 别名;/*AS关键字用于指定表名的别名,它可以省略不写*/执行结果如下:

MySQL中为字段起别名的格式如下所示:SELECT 字段名 [AS] 别名[,字段名 [AS] 别名,……] FROM 表名;执行结果如下:

猜你喜欢

转载自www.cnblogs.com/yqy0407/p/12052051.html