MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询)
作者:mmseoamin日期:2023-12-20

目录

一、SELECT语句查询

二、查询所有字段

1、列出所有字段名称进行查询

2、使用通配符 * 进行查询

三、查询指定字段

四、查询去重数据

五、条件查询(带比较运算符、带逻辑运算符)

1、带比较运算符的查询

(1) 带 = 运算符的查询

(2)带 < > 运算符的查询

(3)带 < 运算符的查询

(4)带 >= 运算符查询

(5)带 IN 运算符的查询

(6)带 IS NULL 运算符的查询

(7)带LIKE 运算符的查询

%通配符

  _ 通配符

2、带逻辑运算符的查询

(1)带NOT运算符的查询 

(2)带AND运算符的查询

AND运算符查询

BETWEEN运算符查询

 (3)带OR运算符的查询


学习MySQL的查询所有字段、查询指定字段、查询去重数据、带比较运算符的查询、带逻辑运算符的查询。

一、SELECT语句查询

从数据中查询数据的基本语句是SELECT语句。

语法格式:

SELECT [ DISTINCT ] * | { select_ expr1 , select_ expr2 , ... }
               FROM 数据表名
              [ WHERE 条件表达式1 ] 
              [ GROUP BY 字段名 [ HAVING 条件表达式 2 ]
              [ ORDER BY 字段名 [ ASC | DESC ] ]
              [ LIMT [ OFFSET ] 记录数 ]

上述语法语法格式中,SELECT语句由多个子句组成,各子句的含义如下

(1)SELETC [ DISTINCT ] * | { select_expr1 , select_expr2 , ... } :指定查询结果中需要返回的值,其中DISTINCT是可选项,用于剔除执行结果中重复的数据;通配符 * 是执行结果中所有字段名称的简写方式;{ select_exprl,select_expr2,... } 表示要检索的列表,可以是字段名或表达式,可以指定字段名称。通配符与{ select_exprl,select_expr2, ... } 两者为互斥关系,任选其一。
(2)FROM数据表名:表示从指定名称的数据表中查询数据。
(3)WHERE条件表达式1:WHERE子句,是可选项,用于指定查询条件。
(4)[ GROUP BY 字段名 [ HAVING条件表达式2] ] :GROUP BY子句,是可选项,用于将查询结果按照指定字段进行分组;HAVING子句也是可选项,用于对分组后的结果进行过滤。
(5)[ ORDER BY字段名[ASC | ESC] ]:ORDER BY子句,是可选项,用于将查询结果按指定字段进行排序;排序方式由参数ASC或DESC控制,其中ASC表示按升序进行排列,DESC表示按降序进行排列。如果不指定参数,默认为升序排列。
(6)[ LIMIT [ OFFSET ]记录数 ]:LIMIT子句,是可选项,用于限制查询结果的数量。LIMIT后面可以跟2个参数:第一个参数OFFSET表示偏移量,如果偏移量为0则从查询结果的第一条记录开始,偏移量为1则从查询结果的第二条记录开始……以此类推,偏移量为n则从查询结果的第n+1条记录开始。OFFSET为可选值,如果不指定,其默认值为0;第二个参数“ 记录数 ”表示返回查询记录的条数。 

 

二、查询所有字段

1、列出所有字段名称进行查询

语法格式:

SELECT 字段名1 ,  字段名2 , ... FROM 数据表名 ;

创建一个表插入数据,并查看

创建一个表,查看

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第1张

 插入数据,后使用语法格式(SELECT 字段名1 ,  字段名2 , ... FROM 数据表名 ;)查看

(1)按字段名顺序查看

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第2张

 (2)不按字段名顺序查看

 MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第3张

2、使用通配符 * 进行查询

在SELECT 语句中还可以使用通配符 * 匹配数据表中所有字段。

语法格式:SELECT * FROM 数据表名 ;

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第4张

        从执行结果可以看出,使用通配符 * 同样可以查出数据表中所有字段的数据,这种方式比较简单,但执行结果只能按照字段在表中定义的顺序显示。
注意:

        当不知道字段的名称时,可以使用通配符获取字段信息。一般情况下,查询数据表中所有段的数据时,不建议使用通配符,因为使用通配符虽然可以节省输入查询语句的时间,但会降低查询的效率。

三、查询指定字段

查询数据时,有时不需要查询所有字段的信息。

查询指定字段可以在SELECT语句的字段列表中指定要查询的字段。

语句格式:SELECT 字段名1 , 字段名2 , ... FROM 数据表名 ; 

查询empno,ename,job字段数据

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第5张

四、查询去重数据

数据表的字段如果没有设置唯一约束,那么该字段就可能存储重复的值。有时需要将结果中的重复值去除后进行展示。MySQL中提供了DISTINCT关键字,可以在查询时去除重复的值。

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

(可以多个字段一起去重)

在上面的语法格式中,字段名表示要去除重复值的字段名称。

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第6张

五、条件查询(带比较运算符、带逻辑运算符)

1、带比较运算符的查询

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第7张

(1) 带 = 运算符的查询

        = 运算符用于比较运算符左右两边的操作数,如果操作数的字段类型为字符串,则需要使用单引号对操作数进行包裹。在WHERE子句的条件表达式中,字符串以不区分大小写的方式进行比较运算。

查询某一员工信息

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第8张

(2)带 < > 运算符的查询

       < > 运算符和 != 运算符都用于比较操作数是否不相等。例如,技术人员想要使用SQL语句查询员工表中所属部门编号不是30的员工信息,可以在查询时使用<>运算符对部门编号进行比较,具体SQL语句及执行结果如下。

查询deptno 不等于30的员工信息

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第9张

 注意:NULL 不能使用 < > 运算符和 != 运算符进行比较

(3)带 < 运算符的查询

        <运算符用于判断左侧操作数是否小于右侧操作数。例如,技术人员想要使用SQL语句查询员工表中工资小于1000元的员工信息,可以在查询时使用 < 运算符对员工工资进行比较。

查询工资sal小于2000元的员工信息

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第10张

(4)带 >= 运算符查询

        >= 运算符用于判断左侧操作数是否大于或等于右侧操作数。例如,技术人员想使用SOL语句查询员工表中基本工资大于或等于3000元的员工信息,可以在查询时的用>=运算符对员工工资进行比较,具体SQL语句及执行结果如下。

查询工资sal大于或等于3000元的员工信息

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第11张

(5)带 IN 运算符的查询

IN 运算符用于判断某个值是否在指定集合中,如果值存在集合中,则满足条件。

语法格式:

SELECT *| 字段名1 , 字段名2 , ...
FROM 数据表名
WHERE 值 [ NOT ] IN ( 元素1 , 元素2 , ...) ;

       在上面的语法格式中,“ 元素1,元素2... ”表示集合中的元素;NOT是可选项,表示查询集合元素之外的数据。
查询员工表中所属部门编号deptno为10或20的员工信息

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第12张

(6)带 IS NULL 运算符的查询

       当操作数为NULL时,不能使用运算符= 、< >、!=进行比较,这是因为NULL代表未指定或不可预知的值。如果需要判断数据是否为NULL,可以使用IS NULL进行比较。
查询某一字段名为NULL

MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第13张

(7)带LIKE 运算符的查询

        在查询数据时,有时需要对数据进行模糊查询,例如查询emp表中ename字段的

值以字符a开头的记录。为实现这种查询,MySQL提供了LIKE关键字。LIKE关键字

用于比较两个操作数是否匹配。

语法格式:

SELECT *| { 字段名1 , 字段名2 , ... }
FROM 数据表名
WHERE 值 [ NOT ] LIKE 匹配的字符串 ;
​

在上面语法格式中,NOT 是可选项 ,表示查询与指定字符串不匹配的记录。“ 匹配的字符串 ”是用来和值进行匹配的字符串,必须使用单引号或双引号进行包裹。

         使用LIKE进行字符串的匹配时,匹配的字符串可以是确定的,也可以是模糊的。换句话说,LIKE后面紧跟的匹配的字符串可以是一个普通字符串,也可以是不确定的字符串。当匹配的字符串不确定时,可以使用通配符代替一个或多个真正的字符。LIKE关键字支持的通配符有两个,分别是百分号( % )和下画线( _ )。下面分别讲解这两个通配符在LIKE查询中的使用。

包括空字

  • %通配符

             %通配符是模糊查询最常用的通配符,它可以匹配任意长度的字符串,包括空字符串。例如,字符串 c%可以匹配所有以字符 c 开始的任意长度的字符串,如c、cu、cut等。

    查询名字ename中以某一个字为结尾的员工(名字中以” 一 “ 结尾的员工)

    MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第14张

           在上述SELECT语句中,使用LIKE进行模糊查询,字符“ 一 ”之前使用%通配符为任意长度的字符串占位,表示匹配以字符“ 一 ”结尾的字符串;由执行结果可知,SELECT语句按要求查询出姓名以“ 一 ”结尾的员工信息。

             %通配符可以出现在匹配字符串的任意位置。

    查询员工表中姓名ename以“ 萧 ”开头且以“ 一 ” 结尾的员工信息

    MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第15张

            在上述SELECT语句中,使用LIKE进行模糊查询,“萧”字符和“一”字符的中间使用%通配符为任意长度的字符串占位;由执行结果可知,SELECT语句按要求查 的出姓名以“萧”开头且以“一”结尾的员工信息。

            使用LIKE模糊查询时,可以出现多个%通配符。
    查询员工表中姓名ename包含字符“ 十 ”的员工信息

    MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第16张

            在上述SELECT语句中,使用LIKE进行模糊查询,字符“ 十 ”的左右两边都使用%通配符为任意长度的字符串占位,表示查询所有包含字符“ 十 ”的字符串。由执行结果可知,SELECT语句按要求查询出姓名包含字符“ 十 ”的员工信息。

    •   _ 通配符

      通配符用于匹配单个字符,如果要匹配多个字符,需要使用多个 _ 通配符,每个通配符 _ 代表一个字符。例如,字符串cu_ 可以匹配以字符串cu开始,长度为3的字符串,如cut、cup等;字符串c__1匹配在字符c和字符1之间包含两个字符的字符串,如cool、coal等。需要注意的是,空格字符也是一个字符,例如,通配字符串“M__QL”能匹配字符串“MySQL”,而不能匹配字符串“My SQL”。如果使用多个连续的下画线匹配多个连续的字符,下画线之间不能有空格。

      查询员工名字ename长度为3且以字符” 一 ”结尾的员工信息

      MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第17张

       在上述SELECT语句中,使用LIKE进行模糊查询,字符串“一”之前使用2个__通配符为任意的2个字符占位;由执行结果可知,SELECT语句按要求查询出姓名长度为3且以字符“一”结尾的员工信息。

      2、带逻辑运算符的查询

      逻辑运算符又称布尔运算符,用于判断表达式的真假。

      MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第18张

      (1)带NOT运算符的查询

      运算符NOT和 ! 都表示逻辑非,返回和操作数相反结果。

      查询员工deptno不是10和30的员工信息

      MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第19张

      (2)带AND运算符的查询

                 在使用SELECT语句查询数据时,有时为了使执行结果更精确,可以使用多个查询条件。在MySQL中,可以使用AND运算符连接两个或多个查询条件,只有满足所有条件的记录才会被返回。

      • AND运算符查询

        语法格式:

        SELECT *| { 字段名1 , 字段名2 , ...}
        FROM 表名
        WHERE 条件表达式1 AND 条件表达式2 ...AND条件表达式n ;

                 从上面的语法格式可以看到,在WHERE关键字后面跟了多个条件表达式,条件表达式之间用AND运算符连接。

               使用AND连接多个条件表达式时,查询出的数据需要满足所有条件表达式的结果。

        查询员工表中职位job为分析员且所属部门编号deptno为20的员工信息

        MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第20张

        • BETWEEN运算符查询

                 除此之外,AND运算符还可以结合BETWEEN运算符判断某个字段的值是否在指定的范围之内。如果字段的值在指定范围内,则字段的值将被查询出来,反之则不会被查询出来。

          语法格式:

          SELECT *| { 字段名1 , 字段名2 , ...}
          FROM 数据表名
          WHERE 字段名 [ NOT ] BETWEEN 值1 AND 值2 ;

                     在上述语法格式中,值1表示范围条件的起始值,值2表示范围条件的结束值。NOT是可选项,表示查询指定范围之外的记录,通常情况下值1需要小于值2,否则查询不到任何结果。


          查询员工表中员工编号empno为9900-9935的员工信息

          MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第21张

           由执行结果可知,SELECT语句按要求查询出员工编号为9900-9935的员工信息。

                  如果想查询指定范围之外的记录,可以使用NOT关键字。

          查询员工表中员工编号empno不是9500-9900的员工信息

          MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第22张

           (3)带OR运算符的查询

                  在使用SELECT语句查询数据时,可以使用OR运算符连接多个查询条件。与AND运算符不同,在使用OR运算符查询时,只要满足任意一个查询条件,对应的数据就会被查询出来。

          语法格式:

          SELETC *| {字段名1 , 字段名2 , ...}
          FROM 数据表名
          WHERE 条件表达式1 OR 条件表达式2 [ ...OR 条件表达式n] ;

                  从上述语法格式中可以看到,WHERE子句中可以有多个条件表达式,多个条件表达式之间用OR运算符分隔。
          查询员工表中员工职job位为保洁或者所属部门编号deptno为30的员工信息

          MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第23张

                  在上述SELECT语句中,使用OR运算符查询job字段的值是保洁或者deptno字段的值是30的记录;由执行结果可知,输出结果中的员工信息要么job字段的值是保洁,要么deptno字段的值30。 这就说明,只要记录满足OR运算符连接的任意一个条件就会被查询出来,而不需要同时满足两个条件表达式。

          补充

          创建一个表,插入数据并查询

          MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第24张

           

          1、查询出goods表中price字段不为NULL并且商品编号在4到10范围内的商品(使用between and )

          MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第25张

           

          2、查询出goods表中price字段不为NULL并且商品编号在2到8范围内的商品(使用and )

          MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第26张

           

          3、查询出goods表中price字段不为NULL并且商品编号小于4或者大于8范的商品(使用or )

          MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询),第27张