您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > mysql查询数据相关操作
第5章查询数据查询数据指从数据库中获取所需要的数据。查询数据是数据库操作中最常用,也是最重要的操作。用户可以根据自己对数据的需求,使用不同的查询方式。通过不同的查询方式,可以获得不同的数据。MySQL中是使用SELECT语句来查询数据的。在这一章中将讲解的内容包括。•查询语句的基本语法•在单表上查询数据•使用聚合函数查询数据•多表上联合查询•子查询•合并查询结果•为表和字段取别名•使用正则表达式查询5.1基本查询语句查询数据是数据库操作中最常用的操作。通过对数据库的查询,用户可以从数据库中获取需要的数据。数据库中可能包含着无数的表,表中可能包含着无数的记录。因此,要获得所需的数据并非易事。MySQL中可以使用SELECT语句来查询数据。根据查询的条件的不同,数据库系统会找到不同的数据。通过SELECT语句可以很方便的获取所需的信息。MySQL中,SELECT的基本语法形式如下:SELECT属性列表FROM表名和视图列表[WHERE条件表达式1][GROUPBY属性名1[HAVING条件表达式2]][ORDERBY属性名2[ASC|DESC]]5.2单表查询单表查询是指从一张表中查询所需要的数据。查询数据时,可以从一张表中查询数据,也可以从多张表中同时查询数据。两者的查询方式上有一定的区别。因为单表查询只在一张表上进行操作,所以查询比较简单。本小节将讲解在单表上查询所有的字段、查询指定的字段、查询指定的行、多条件查询、查询结果不重复、给查询结果排序、分组查询和用LIMIT限制查询结果的数量等内容。5.2.1查询所有字段查询所有字段是指查询表中所有字段的数据。这种方式可以将表中所有字段的数据都查询出来。MySQL中有两种方式可以查询表中所有的字段。本小节将详细讲解这两种方法。1.列出表的所有字段2.使用“*”查询所有字段SELECT*FROM表名;5.2.2查询指定字段查询数据时,可以在SELECT语句的“属性列表”中列出所要查询的字段。这种方式可以指定需要查询的字段,而不需要查询出所有的字段。下面查询employee表中num、name、sex和homeaddr这四个字段的数据。SELECT语句的代码如下:SELECTnum,name,sex,homeaddrFROMemployee;5.2.3查询指定记录SELECT语句中可以设置查询条件。用户可以根据自己的需要来设置查询条件,按条件进行查询。查询的结果必须满足查询条件。例如,用户需要查找d_id为501的记录,那么可以设置“d_id=501”为查询条件。这样查询结果中的记录就都会满足“d_id=501”这个条件。WHERE子句可以用来指定查询条件。其语法规则如下:WHERE条件表达式查询条件符号或关键字比较=,,=,,=,!=,,!,!指定范围BETWEENAND,NOTBETWEENAND指定集合IN,NOTIN匹配字符LIKE,NOTLIKE是否为空值ISNULL,ISNOTNULL多个查询条件AND,OR5.2.4带IN关键字的查询IN关键字可以判断某个字段的值是否在指定的集合中。如果字段的值在集合中,则满足查询条件,该纪录将被查询出来。如果不在集合中,则不满足查询条件。其语法规则如下:[NOT]IN(元素1,元素2,…,元素n)5.2.5带BETWEENAND的范围查询BETWEENAND关键字可以判读某个字段的值是否在指定的范围内。如果字段的值在指定范围内,则满足查询条件,该纪录将被查询出来。如果不在指定范围内,则不满足查询条件。其语法规则如下:[NOT]BETWEEN取值1AND取值25.2.6带LIKE的字符匹配查询LIKE关键字可以匹配字符串是否相等。如果字段的值与指定的字符串相匹配,则满足查询条件,该纪录将被查询出来。如果与指定的字符串不匹配,则不满足查询条件。其语法规则如下:[NOT]LIKE'字符串'“NOT”可选参数,加上NOT表示与指定的字符串不匹配时满足条件;“字符串”表示指定用来匹配的字符串,该字符串必须加单引号或双引号。“字符串”参数的值可以是一个完整的字符串,也可以是包含百分号(%)或者下划线(_)的通配字符。二者有很大区别“%”可以代表任意长度的字符串,长度可以为0;“_”只能表示单个字符。如果要匹配姓张且名字只有两个字的人的记录,“张”字后面必须要有两个“_”符号。因为一个汉字是两个字符,而一个“_”符号只能代表一个字符。5.2.7查询空值ISNULL关键字可以用来判断字段的值是否为空值(NULL)。如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查询条件。其语法规则如下:IS[NOT]NULL其中,“NOT”是可选参数,加上NOT表示字段不是空值时满足条件。ISNULL是一个整体,不能将IS换成”=”.5.2.8带AND的多条件查询AND关键字可以用来联合多个条件进行查询。使用AND关键字时,只有同时满足所有查询条件的记录会被查询出来。如果不满足这些查询条件的其中一个,这样的记录将被排除掉。AND关键字的语法规则如下:条件表达式1AND条件表达式2[…AND条件表达式n]其中,AND可以连接两个条件表达式。而且,可以同时使用多个AND关键字,这样可以连接更多的条件表达式。5.2.9带OR的多条件查询OR关键字也可以用来联合多个条件进行查询,但是与AND关键字不同。使用OR关键字时,只要满足这几个查询条件的其中一个,这样的记录将会被查询出来。如果不满足这些查询条件中的任何一个,这样的记录将被排除掉。OR关键字的语法规则如下:条件表达式1OR条件表达式2[…OR条件表达式n]其中,OR可以用来连接两个条件表达式。而且,可以同时使用多个OR关键字,这样可以连接更多的条件表达式。5.2.5查询结果不重复如果表中的某些字段上没有惟一性约束,这些字段可能存在着重复的值。例如,employee表中的d_id字段就存在着重复的情况。+-------+|d_id|+-------+|501||501||502||504|+-------+DISTINCT关键字非常有用,尤其是重复的记录非常多时。例如,需要从消息表中查询有哪些消息。但是,这个表中可能有很多相同的消息,将这些相同的消息都查询出来显然是没有必要的。那么,就需要DISTINCT关键字消除相同的记录。5.2.11对查询结果排序从表中查询出来的数据可能是无序的,或者其排列顺序不是用户所期望的顺序。为了使查询结果的顺序满足用户的要求,可以使用ORDERBY关键字对记录进行排序。其语法规则如下:ORDERBY属性名[ASC|DESC]ASC升序,DESC降序。默认情况下,按照ASC方式进行排序。5.2.12分组查询GROUPBY关键字可以将查询结果按某个字段或多个字段进行分组。字段中值相等的为一组。其语法规则如下:GROUPBY属性名[HAVING条件表达式][WITHROLLUP]1.单独使用GROUPBY关键字来分组2.GROUPBY关键字与GROUP_CONCAT()函数一起使用3.GROUPBY关键字与集合函数一起使用4.GROUPBY关键与HAVING一起使用5.按多个字段进行分组6.GROUPBY关键与WITHROLLUP一起使用1单独使用GROUPBY关键字来分组GROUPBY关键字只能查询出每个分组的一条记录,使用的意义不大,一般在使用集合函数时才使用GROUPBY关键字。2GROUPBY关键字与GROUP_CONCAT()函数一起使用GROUP_CONCAT()函数会把每个分组中指定字段值都显示出来。3.GROUPBY关键字与集合函数一起使用可以通过集合函数计算分组中的总记录、最大值、最小值等。集合函数包括COUNT()、SUM()、AVG()、MAX()和MIN()。通常先使用GROUPBY关键字将记录分组、然后每组都使用集合函数进行计算。4.GROUPBY关键与HAVING一起使用可以限制输出的结果,只有满足条件表达式的结果才会显示。HAVING条件表达式,作用于分组后的记录,用于选择满足条件的组;WHERE条件表达式,作用于表或者视图,是表和视图的查询条件。5.按多个字段进行分组例如employee表按照d_id字段和sex字段进行分组。分组过程中,先按照d_id字段进行分组。遇到d_id字段的值相等的情况时,再把d_id值相等的记录按照sex字段进行分组。6.GROUPBY关键与WITHROLLUP一起使用使用WITHROLLUP时,将会在所有记录的最后加上一条记录。这条记录是上面所有记录的总和。5.2.13用LIMIT限制查询结果的数量查询数据时,可能会查询出很多的记录。而用户需要的记录可能只是很少的一部。这样就需要来限制查询结果的数量。LIMIT是MySQL中的一个特殊关键字。其可以用来指定查询结果从哪条记录开始显示。还可以指定一共显示多少条记录。LIMIT关键字有两种使用方式。这两种方式分别是不指定初始位置和指定初始位置。1.不指定初始位置LIMIT记录数2.指定初始位置LIMIT初始位置,记录数LIMIT关键字是MySQL中所特有的。LIMIT关键字可以指定需要显示的记录的初始位置,0表示第一条记录。5.3使用集合函数查询集合函数包括COUNT()、SUM()、AVG()、MAX()和MIN()。其中,COUNT()用来统计记录的条数;SUM()用来计算字段的值的总和;AVG()用来计算字段的值的平均值;MAX()用来查询字段的最大值;MIN()用来查询字段的最小值。当需要对表中的记录求和、求平均值、查询最大值、查询最小值等操作时,可以使用集合函数。例如,需要计算学生成绩表中的平均成绩,可以使用AVG()函数。GROUPBY关键字通常需要与集合函数一起使用。本节中将详细讲解各种集合函数。5.3.1COUNT()函数COUNT()函数用来统计记录的条数。如果要统计employee表中有多少条记录,可以使用COUNT()函数。如果要统计employee表中不同部门的人数,也可以使用COUNT()函数。【示例5-40】下面使用COUNT()函数统计employee表的记录数。SELECT语句如下:SELECTCOUNT(*)FROMemployee;执行结果如下:mysqlSELECTCOUNT(*)FROMemployee;5.3.2SUM()函数SUM()函数是求和函数。使用SUM()函数可以求出表中某个字段取值的总和。例如,可以用SUM()函数来求学生的总成绩。SUM()函数只能计算数值类型的字段。包括INT类型、FLOAT类型、DOUBLE类型、DECIMAL类型等。字符类型的字段不能使用SUM()函数进行计算。使用SUM()函数计算字符类型字段时,计算结果都为0.5.3.3AVG()函数AVG()函数是求平均值的函数。使用AVG()函数可以求出表中某个字段取值的平均值。例如,可以用AVG()函数来求平均年龄,也可以使用AVG()函数来求学生的平均成绩。5.3.4MAX()函数MAX()函数是求最大值的函数。使用MAX()函数可以求出表中某个字段取值的最大值。例如,可以用MAX()函数来查询最大年龄,也可以使用MAX()函数来求各科的最高成绩。MAX()不仅仅适用于数值类型,也适用于字符类型。MAX()可以计算字符和字符串的最大值。MAX()使用字符对应的ASCII码进行计算的。5.3.5MIN()函数MIN()函数是求最小值的函数。使用MIN()函数可以求出表中某个字段取值的最小值。例如,可以用MIN()函数来查询最小年龄,也可以使用MIN()函数来求各科的最低成绩。5.4连接查询连接查询是将两个或两个以上的表按某个条件连接起来,从中选取需要的数据。连接查询是同时查询两个或两个以上的表时使用的。当不同的表中存在表示相同意义的字段时,可以通过该字段来连接这几个表。例如,学生表中有course_id字段来表示所学课程的课程号,课程表中有num字段来表示课程号。那么,可以通过学生表中的course_
本文标题:mysql查询数据相关操作
链接地址:https://www.777doc.com/doc-6182490 .html