花瓣小跑 发表于 2024-6-11 12:33:43

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

目录
一、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字段名 ]: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 数据表名 ;
创建一个表插入数据,并查看
创建一个表,查看
https://img-blog.csdnimg.cn/af178807a91045b2850f7395344ed4db.png
 插入数据,后使用语法格式(SELECT 字段名1 ,  字段名2 , ... FROM 数据表名 ;)查看
(1)按字段名次序查看
https://img-blog.csdnimg.cn/edc126b07d4f4405a9801825720b9aec.png
 (2)不按字段名次序查看
 https://img-blog.csdnimg.cn/2bb018417ae34828840b8a7a243d974b.png
2、使用通配符 * 进行查询

在SELECT 语句中还可以使用通配符 * 匹配数据表中所有字段。
语法格式:SELECT * FROM 数据表名 ;
https://img-blog.csdnimg.cn/d5feed1bd30b4a53963d5e29e1dee3a9.png
        从实行结果可以看出,使用通配符 * 同样可以查出数据表中所有字段的数据,这种方式比较简单,但实行结果只能按照字段在表中定义的次序表现。
注意:
        当不知道字段的名称时,可以使用通配符获取字段信息。一般情况下,查询数据表中所有段的数据时,不发起使用通配符,因为使用通配符固然可以节省输入查询语句的时间,但会低落查询的服从。

三、查询指定字段


查询数据时,有时不必要查询所有字段的信息。
查询指定字段可以在SELECT语句的字段列表中指定要查询的字段。
语句格式:SELECT 字段名1 , 字段名2 , ... FROM 数据表名 ; 
查询empno,ename,job字段数据
https://img-blog.csdnimg.cn/2474bebcb33a445aa77f01bcca9eaa83.png

四、查询去重数据

数据表的字段如果没有设置唯一约束,那么该字段就可能存储重复的值。有时必要将结果中的重复值去除后进行展示。MySQL中提供了DISTINCT关键字,可以在查询时去除重复的值。
语法格式:SELECT DISTINCT 字段名 FROM 数据表名 ; 
(可以多个字段一起去重)
在上面的语法格式中,字段名表现要去除重复值的字段名称。
https://img-blog.csdnimg.cn/d97fdb99bfc040a38127932046f39411.png
五、条件查询(带比较运算符、带逻辑运算符)

1、带比较运算符的查询

https://img-blog.csdnimg.cn/0f5a02b3e76440e5847ba26f833450c6.jpeg
(1) 带 = 运算符的查询


        = 运算符用于比较运算符左右两边的操纵数,如果操纵数的字段类型为字符串,则必要使用单引号对操纵数进行包裹。在WHERE子句的条件表达式中,字符串以不区分巨细写的方式进行比较运算。
查询某一员工信息
https://img-blog.csdnimg.cn/3cb45473c3fa4dd2a533e1afa49fac39.png

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


       < > 运算符和 != 运算符都用于比较操纵数是否不相等。例如,技能人员想要使用SQL语句查询员工表中所属部分编号不是30的员工信息,可以在查询时使用<>运算符对部分编号进行比较,具体SQL语句及实行结果如下。
查询deptno 不即是30的员工信息
https://img-blog.csdnimg.cn/6ce19a5736d743bf9f2f599af416acb4.png
 注意:NULL 不能使用 < > 运算符和 != 运算符进行比较

(3)带 < 运算符的查询

        <运算符用于判断左侧操纵数是否小于右侧操纵数。例如,技能人员想要使用SQL语句查询员工表中工资小于1000元的员工信息,可以在查询时使用 < 运算符对员工工资进行比较。
查询工资sal小于2000元的员工信息
https://img-blog.csdnimg.cn/8d89f3be099045d98d750e8db89693ec.png

(4)带 >= 运算符查询

        >= 运算符用于判断左侧操纵数是否大于或即是右侧操纵数。例如,技能人员想使用SOL语句查询员工表中基本工资大于或即是3000元的员工信息,可以在查询时的用>=运算符对员工工资进行比较,具体SQL语句及实行结果如下。
查询工资sal大于或即是3000元的员工信息
https://img-blog.csdnimg.cn/b29bf8e002254b019f9ec347356b38d7.png
(5)带 IN 运算符的查询

IN 运算符用于判断某个值是否在指定集合中,如果值存在集合中,则满足条件。
语法格式:
SELECT *| 字段名1 , 字段名2 , ...
FROM 数据表名
WHERE 值 [ NOT ] IN ( 元素1 , 元素2 , ...) ;        在上面的语法格式中,“ 元素1,元素2... ”表现集合中的元素;NOT是可选项,表现查询集合元素之外的数据。
查询员工表中所属部分编号deptno为10或20的员工信息
https://img-blog.csdnimg.cn/aa44c6876be1447d9fb12b9a64487a42.png
(6)带 IS NULL 运算符的查询

       当操纵数为NULL时,不能使用运算符= 、< >、!=进行比较,这是因为NULL代表未指定或不可预知的值。如果必要判断数据是否为NULL,可以使用IS NULL进行比较。
查询某一字段名为NULL
https://img-blog.csdnimg.cn/9f2a00269e8c4f0a85ce01a453aaa5bd.png

(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中以某一个字为末端的员工(名字中以” 一 “ 末端的员工)
https://img-blog.csdnimg.cn/b75e627f5de94ce882d700b54fa766d2.png
       在上述SELECT语句中,使用LIKE进行模糊查询,字符“ 一 ”之前使用%通配符为任意长度的字符串占位,表现匹配以字符“ 一 ”末端的字符串;由实行结果可知,SELECT语句按要求查询出姓名以“ 一 ”末端的员工信息。
         %通配符可以出现在匹配字符串的任意位置。
查询员工表中姓名ename以“ 萧 ”开头且以“ 一 ” 末端的员工信息

https://img-blog.csdnimg.cn/aa79e9231d7c49d2bb112dbd685246e7.png
        在上述SELECT语句中,使用LIKE进行模糊查询,“萧”字符和“一”字符的中心使用%通配符为任意长度的字符串占位;由实行结果可知,SELECT语句按要求查 的出姓名以“萧”开头且以“一”末端的员工信息。
        使用LIKE模糊查询时,可以出现多个%通配符。
查询员工表中姓名ename包含字符“ 十 ”的员工信息
https://img-blog.csdnimg.cn/a5768f402e434525997825379f172e35.png
        在上述SELECT语句中,使用LIKE进行模糊查询,字符“ 十 ”的左右两边都使用%通配符为任意长度的字符串占位,表现查询所有包含字符“ 十 ”的字符串。由实行结果可知,SELECT语句按要求查询出姓名包含字符“ 十 ”的员工信息。


[*]   _ 通配符
通配符用于匹配单个字符,如果要匹配多个字符,必要使用多个 _ 通配符,每个通配符 _ 代表一个字符。例如,字符串cu_ 可以匹配以字符串cu开始,长度为3的字符串,如cut、cup等;字符串c__1匹配在字符c和字符1之间包含两个字符的字符串,如cool、coal等。必要注意的是,空格字符也是一个字符,例如,通配字符串“M__QL”能匹配字符串“MySQL”,而不能匹配字符串“My SQL”。如果使用多个连续的下画线匹配多个连续的字符,下画线之间不能有空格。
查询员工名字ename长度为3且以字符” 一 ”末端的员工信息
https://img-blog.csdnimg.cn/aa53169e518e4228b7de2e33b2e8a6a4.png
 在上述SELECT语句中,使用LIKE进行模糊查询,字符串“一”之前使用2个__通配符为任意的2个字符占位;由实行结果可知,SELECT语句按要求查询出姓名长度为3且以字符“一”末端的员工信息。
2、带逻辑运算符的查询

逻辑运算符又称布尔运算符,用于判断表达式的真假。
https://img-blog.csdnimg.cn/e37e0414370d4bfd8535921c62ab0721.jpeg

(1)带NOT运算符的查询

运算符NOT和 ! 都表现逻辑非,返回和操纵数相反结果。
查询员工deptno不是10和30的员工信息
https://img-blog.csdnimg.cn/9f748648c1d44ee98423d94bd04b3080.png
(2)带AND运算符的查询

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


[*] AND运算符查询
语法格式:
SELECT *| { 字段名1 , 字段名2 , ...}
FROM 表名
WHERE 条件表达式1 AND 条件表达式2 ...AND条件表达式n ;          从上面的语法格式可以看到,在WHERE关键字反面跟了多个条件表达式,条件表达式之间用AND运算符毗连。
       使用AND毗连多个条件表达式时,查询出的数据必要满足所有条件表达式的结果。
查询员工表中职位job为分析员且所属部分编号deptno为20的员工信息
https://img-blog.csdnimg.cn/3978f8aa21184060b496a7eac8d64c68.png



[*] BETWEEN运算符查询
       除此之外,AND运算符还可以联合BETWEEN运算符判断某个字段的值是否在指定的范围之内。如果字段的值在指定范围内,则字段的值将被查询出来,反之则不会被查询出来。
语法格式:
SELECT *| { 字段名1 , 字段名2 , ...}
FROM 数据表名
WHERE 字段名 [ NOT ] BETWEEN 值1 AND 值2 ;            在上述语法格式中,值1表树模围条件的起始值,值2表树模围条件的竣事值。NOT是可选项,表现查询指定范围之外的记载,通常情况下值1必要小于值2,否则查询不到任何结果。

查询员工表中员工编号empno为9900-9935的员工信息
https://img-blog.csdnimg.cn/a54291d273b94b63857e65d313740134.png
 由实行结果可知,SELECT语句按要求查询出员工编号为9900-9935的员工信息。
        如果想查询指定范围之外的记载,可以使用NOT关键字。
查询员工表中员工编号empno不是9500-9900的员工信息
https://img-blog.csdnimg.cn/fc54e6a3ce3248108c90a3d43ffac8d4.png
 (3)带OR运算符的查询

        在使用SELECT语句查询数据时,可以使用OR运算符毗连多个查询条件。与AND运算符不同,在使用OR运算符查询时,只要满足任意一个查询条件,对应的数据就会被查询出来。
语法格式:
SELETC *| {字段名1 , 字段名2 , ...}
FROM 数据表名
WHERE 条件表达式1 OR 条件表达式2 [ ...OR 条件表达式n] ;         从上述语法格式中可以看到,WHERE子句中可以有多个条件表达式,多个条件表达式之间用OR运算符分隔。
查询员工表中员工职job位为保洁大概所属部分编号deptno为30的员工信息
https://img-blog.csdnimg.cn/d1156a841ec841168768517cb27c2c50.png

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

创建一个表,插入数据并查询
https://img-blog.csdnimg.cn/c11498e270384033b109d59bbb6562e1.png
 
1、查询出goods表中price字段不为NULL并且商品编号在4到10范围内的商品(使用between and )

https://img-blog.csdnimg.cn/487823260a2e4ae2becdf94a8aa5f3c9.png
 
2、查询出goods表中price字段不为NULL并且商品编号在2到8范围内的商品(使用and )

https://img-blog.csdnimg.cn/29df5c823bd94853b4179ba875b82cb5.png
 
3、查询出goods表中price字段不为NULL并且商品编号小于4大概大于8范的商品(使用or )

https://img-blog.csdnimg.cn/614b736d018145d99de06492d1df3bf9.png
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: MySQL学习总结(查询所有字段、查询指定字段、查询去重数据、条件查询)