mysql 函数返回table怎么返回一个表

2808人阅读
mysql(5)
C API函数概述
mysql_affected_rows()
返回上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。
mysql_autocommit()
切换 autocommit模式,ON/OFF
mysql_change_user()
更改打开连接上的用户和数据库。
mysql_charset_name()
返回用于连接的默认字符集的名称。
mysql_close()
关闭服务器连接。
mysql_commit()
提交事务。
mysql_connect()
连接到MySQL服务器。该函数已不再被重视,使用mysql_real_connect()取代。
mysql_create_db()
创建数据库。该函数已不再被重视,使用SQL语句CREATE DATABASE取而代之。
mysql_data_seek()
在查询结果集中查找属性行编号。
mysql_debug()
用给定的字符串执行DBUG_PUSH。
mysql_drop_db()
撤销数据库。该函数已不再被重视,使用SQL语句DROP DATABASE取而代之。
mysql_dump_debug_info()
让服务器将调试信息写入日志。
mysql_eof()
确定是否读取了结果集的最后一行。该函数已不再被重视,可以使用mysql_errno()或mysql_error()取而代之。
mysql_errno()
返回上次调用的MySQL函数的错误编号。
mysql_error()
返回上次调用的MySQL函数的错误消息。
mysql_escape_string()
为了用在SQL语句中,对特殊字符进行转义处理。
mysql_fetch_field()
返回下一个表字段的类型。
mysql_fetch_field_direct()
给定字段编号,返回表字段的类型。
mysql_fetch_fields()
返回所有字段结构的数组。
mysql_fetch_lengths()
返回当前行中所有列的长度。
mysql_fetch_row()
从结果集中获取下一行
mysql_field_seek()
将列光标置于指定的列。
mysql_field_count()
返回上次执行语句的结果列的数目。
mysql_field_tell()
返回上次mysql_fetch_field()所使用字段光标的位置。
mysql_free_result()
释放结果集使用的内存。
mysql_get_client_info()
以字符串形式返回客户端版本信息。
mysql_get_client_version()
以整数形式返回客户端版本信息。
mysql_get_host_info()
返回描述连接的字符串。
mysql_get_server_version()
以整数形式返回服务器的版本号。
mysql_get_proto_info()
返回连接所使用的协议版本。
mysql_get_server_info()
返回服务器的版本号。
mysql_info()
返回关于最近所执行查询的信息。
mysql_init()
获取或初始化MYSQL结构。
mysql_insert_id()
返回上一个查询为AUTO_INCREMENT列生成的ID。
mysql_kill()
杀死给定的线程。
mysql_library_end()
最终确定MySQL C API库。
mysql_library_init()
初始化MySQL C API库。
mysql_list_dbs()
返回与简单正则表达式匹配的数据库名称。
mysql_list_fields()
返回与简单正则表达式匹配的字段名称。
mysql_list_processes()
返回当前服务器线程的列表。
mysql_list_tables()
返回与简单正则表达式匹配的表名。
mysql_more_results()
检查是否还存在其他结果。
mysql_next_result()
在多语句执行过程中返回/初始化下一个结果。
mysql_num_fields()
返回结果集中的列数。
mysql_num_rows()
返回结果集中的行数。
mysql_options()
为mysql_connect()设置连接选项。
mysql_ping()
检查与服务器的连接是否工作,如有必要重新连接。
mysql_query()
执行指定为“以Null终结的字符串”的SQL查询。
mysql_real_connect()
连接到MySQL服务器。
mysql_real_escape_string()
考虑到连接的当前字符集,为了在SQL语句中使用,对字符串中的特殊字符进行转义处理。
mysql_real_query()
执行指定为计数字符串的SQL查询。
mysql_refresh()
刷新或复位表和高速缓冲。
mysql_reload()
通知服务器再次加载授权表。
mysql_rollback()
回滚事务。
mysql_row_seek()
使用从mysql_row_tell()返回的值,查找结果集中的行偏移。
mysql_row_tell()
返回行光标位置。
mysql_select_db()
选择数据库。
mysql_server_end()
最终确定嵌入式服务器库。
mysql_server_init()
初始化嵌入式服务器库。
mysql_set_server_option()
为连接设置选项(如多语句)。
mysql_sqlstate()
返回关于上一个错误的SQLSTATE错误代码。
mysql_shutdown()
关闭数据库服务器。
mysql_stat()
以字符串形式返回服务器状态。
mysql_store_result()
检索完整的结果集至客户端。
mysql_thread_id()
返回当前线程ID。
mysql_thread_safe()
如果客户端已编译为线程安全的,返回1。
mysql_use_result()
初始化逐行的结果集检索。
mysql_warning_count()
返回上一个SQL语句的告警数。
与MySQL交互时,应用程序应使用该一般性原则:
1.&&& 通过调用mysql_library_init(),初始化MySQL库。库可以是mysqlclient C客户端库,或mysqld嵌入式服务器库,具体情况取决于应用程序是否与“-libmysqlclient”或“-libmysqld”标志链接。
2.&&& 通过调用mysql_init()初始化连接处理程序,并通过调用mysql_real_connect()连接到服务器。
3.&&& 发出SQL语句并处理其结果。(在下面的讨论中,详细介绍了使用它的方法)。
4.&&& 通过调用mysql_close(),关闭与MySQL服务器的连接。
5.&&& 通过调用mysql_library_end(),结束MySQL库的使用。
调用mysql_library_init()和mysql_library_end()的目的在于,为MySQL库提供恰当的初始化和结束处理。对于与客户端库链接的应用程序,它们提供了改进的内存管理功能。如果不调用mysql_library_end(),内存块仍将保持分配状态(这不会增加应用程序使用的内存量,但某些内存泄漏检测器将抗议它)。对于与嵌入式服务器链接的应用程序,这些调用会启动并停止服务器。
mysql_library_init()和mysql_library_end()实际上是#define符号,这类符号使得它们等效于mysql_server_init()和mysql_server_end(),但其名称更清楚地指明,无论应用程序使用的是mysqlclient或mysqld库,启动或结束MySQL库时,应调用它们。对于早期的MySQL版本,可调用mysql_server_init()和mysql_server_end()取而代之。
如果愿意,可省略对mysql_library_init()的调用,这是因为,必要时,mysql_init()会自动调用它。
要想连接到服务器,可调用mysql_init()来初始化连接处理程序,然后用该处理程序(以及其他信息,如主机名、用户名和密码)调用mysql_real_connect()。建立连接后,在低于5.0.3版的API中,mysql_real_connect()会将再连接标志(MYSQL结构的一部分)设置为1,或在较新的版本中,将其设置为0。对于该标志,值“1”指明,如果因连接丢失而无法执行语句,放弃之前,会尝试再次连接到服务器。从MySQL 5.0.13开始,可以在mysql_options()上使用MYSQL_OPT_RECONNECT选项,以控制再连接行为。完成连接后,调用mysql_close()中止它。
当连接处于活动状态时,客户端或许会使用mysql_query()或mysql_real_query()向服务器发出SQL查询。两者的差别在于,mysql_query()预期的查询为指定的、由Null终结的字符串,而mysql_real_query()预期的是计数字符串。如果字符串包含二进制数据(其中可能包含Null字节),就必须使用mysql_real_query()。
对于每个非SELECT查询(例如INSERT、UPDATE、DELETE),通过调用mysql_affected_rows(),可发现有多少行已被改变(影响)。
对于SELECT查询,能够检索作为结果集的行。注意,某些语句因其返回行,类似与SELECT。包括SHOW、DESCRIBE和EXPLAIN。应按照对待SELECT语句的方式处理它们。
客户端处理结果集的方式有两种。一种方式是,通过调用mysql_store_result(),一次性地检索整个结果集。该函数能从服务器获得查询返回的所有行,并将它们保存在客户端。第二种方式是针对客户端的,通过调用mysql_use_result(),对“按行”结果集检索进行初始化处理。该函数能初始化检索结果,但不能从服务器获得任何实际行。
在这两种情况下,均能通过调用mysql_fetch_row()访问行。通过mysql_store_result(),mysql_fetch_row()能够访问以前从服务器获得的行。通过mysql_use_result(),mysql_fetch_row()能够实际地检索来自服务器的行。通过调用mysql_fetch_lengths(),能获得关于各行中数据大小的信息。
完成结果集操作后,请调用mysql_free_result()释放结果集使用的内存。
这两种检索机制是互补的。客户端程序应选择最能满足其要求的方法。实际上,客户端最常使用的是mysql_store_result()。
mysql_store_result()的1个优点在于,由于将行全部提取到了客户端上,你不仅能连续访问行,还能使用mysql_data_seek()或mysql_row_seek()在结果集中向前或向后移动,以更改结果集内当前行的位置。通过调用mysql_num_rows(),还能发现有多少行。另一方面,对于大的结果集,mysql_store_result()所需的内存可能会很大,你很可能遇到内存溢出状况。
mysql_use_result()的1个优点在于,客户端所需的用于结果集的内存较少,原因在于,一次它仅维护一行(由于分配开销较低,mysql_use_result()能更快)。它的缺点在于,你必须快速处理每一行以避免妨碍服务器,你不能随机访问结果集中的行(只能连续访问行),你不知道结果集中有多少行,直至全部检索了它们为止。不仅如此,即使在检索过程中你判定已找到所寻找的信息,也必须检索所有的行。
通过API,客户端能够恰当地对查询作出响应(仅在必要时检索行),而无需知道查询是否是SELECT查询。可以在每次mysql_query()或mysql_real_query()后,通过调用mysql_store_result()完成该操作。如果结果集调用成功,查询为SELECT,而且能够读取行。如果结果集调用失败,可调用mysql_field_count()来判断结果是否的确是所预期的。如果mysql_field_count()返回0,查询不返回数据(表明它是INSERT、UPDATE、DELETE等),而且不返回行。如果mysql_field_count()是非0值,查询应返回行,但没有返回行。这表明查询是失败了的SELECT。关于如何实现该操作的示例,请参见关于mysql_field_count()的介绍。
无论是mysql_store_result()还是mysql_use_result(),均允许你获取关于构成结果集的字段的信息(字段数目,它们的名称和类型等)。通过重复调用mysql_fetch_field(),可以按顺序访问行内的字段信息,或者,通过调用mysql_fetch_field_direct(),能够在行内按字段编号访问字段信息。通过调用mysql_field_seek(),可以改变当前字段的光标位置。对字段光标的设置将影响后续的mysql_fetch_field()调用。此外,你也能通过调用mysql_fetch_fields(),一次性地获得关于字段的所有信息。
为了检测和通报错误,MySQL提供了使用mysql_errno()和mysql_error()函数访问错误信息的机制。它们能返回关于最近调用的函数的错误代码或错误消息,最近调用的函数可能成功也可能失败,这样,你就能判断错误是在何时出现的,以及错误是什么。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:207824次
积分:1751
积分:1751
排名:第17219名
原创:38篇
转载:43篇
评论:38条
(2)(19)(1)(1)(3)(5)(1)(5)(1)(3)(1)(3)(2)(10)(3)(1)(6)(1)(10)(2)mysql 函数怎么返回一个表
[问题点数:20分,结帖人tanjiaozhong]
mysql 函数怎么返回一个表
[问题点数:20分,结帖人tanjiaozhong]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2015年6月 其他数据库开发大版内专家分月排行榜第二2015年5月 其他数据库开发大版内专家分月排行榜第二2013年6月 其他数据库开发大版内专家分月排行榜第二2013年3月 其他数据库开发大版内专家分月排行榜第二2012年12月 其他数据库开发大版内专家分月排行榜第二2012年10月 其他数据库开发大版内专家分月排行榜第二2012年9月 其他数据库开发大版内专家分月排行榜第二2012年7月 其他数据库开发大版内专家分月排行榜第二2012年6月 其他数据库开发大版内专家分月排行榜第二2011年11月 其他数据库开发大版内专家分月排行榜第二2011年10月 其他数据库开发大版内专家分月排行榜第二2011年9月 其他数据库开发大版内专家分月排行榜第二2011年6月 其他数据库开发大版内专家分月排行榜第二2011年5月 其他数据库开发大版内专家分月排行榜第二2011年4月 其他数据库开发大版内专家分月排行榜第二2011年3月 其他数据库开发大版内专家分月排行榜第二2011年2月 其他数据库开发大版内专家分月排行榜第二2010年12月 其他数据库开发大版内专家分月排行榜第二2010年11月 其他数据库开发大版内专家分月排行榜第二2010年9月 其他数据库开发大版内专家分月排行榜第二2010年7月 其他数据库开发大版内专家分月排行榜第二2010年4月 其他数据库开发大版内专家分月排行榜第二2010年3月 其他数据库开发大版内专家分月排行榜第二2010年1月 其他数据库开发大版内专家分月排行榜第二2009年12月 其他数据库开发大版内专家分月排行榜第二2008年6月 其他数据库开发大版内专家分月排行榜第二2008年5月 其他数据库开发大版内专家分月排行榜第二2008年4月 其他数据库开发大版内专家分月排行榜第二2007年5月 其他数据库开发大版内专家分月排行榜第二2007年1月 其他数据库开发大版内专家分月排行榜第二2006年10月 其他数据库开发大版内专家分月排行榜第二2006年8月 其他数据库开发大版内专家分月排行榜第二2006年6月 其他数据库开发大版内专家分月排行榜第二2006年4月 其他数据库开发大版内专家分月排行榜第二2005年9月 其他数据库开发大版内专家分月排行榜第二
2013年12月 其他数据库开发大版内专家分月排行榜第三2013年5月 其他数据库开发大版内专家分月排行榜第三2013年4月 其他数据库开发大版内专家分月排行榜第三2013年2月 其他数据库开发大版内专家分月排行榜第三2013年1月 其他数据库开发大版内专家分月排行榜第三2012年5月 其他数据库开发大版内专家分月排行榜第三2012年4月 其他数据库开发大版内专家分月排行榜第三2012年3月 其他数据库开发大版内专家分月排行榜第三2012年2月 其他数据库开发大版内专家分月排行榜第三2011年8月 其他数据库开发大版内专家分月排行榜第三2011年7月 其他数据库开发大版内专家分月排行榜第三2010年10月 其他数据库开发大版内专家分月排行榜第三2010年5月 其他数据库开发大版内专家分月排行榜第三2010年2月 其他数据库开发大版内专家分月排行榜第三2009年11月 其他数据库开发大版内专家分月排行榜第三2009年10月 其他数据库开发大版内专家分月排行榜第三2009年5月 其他数据库开发大版内专家分月排行榜第三2009年4月 其他数据库开发大版内专家分月排行榜第三2008年12月 其他数据库开发大版内专家分月排行榜第三2008年11月 其他数据库开发大版内专家分月排行榜第三2008年10月 其他数据库开发大版内专家分月排行榜第三2008年9月 其他数据库开发大版内专家分月排行榜第三2007年9月 其他数据库开发大版内专家分月排行榜第三2007年8月 其他数据库开发大版内专家分月排行榜第三2007年4月 其他数据库开发大版内专家分月排行榜第三2007年3月 其他数据库开发大版内专家分月排行榜第三2007年2月 其他数据库开发大版内专家分月排行榜第三2006年7月 其他数据库开发大版内专家分月排行榜第三2006年2月 其他数据库开发大版内专家分月排行榜第三2006年1月 其他数据库开发大版内专家分月排行榜第三2005年11月 其他数据库开发大版内专家分月排行榜第三2005年10月 其他数据库开发大版内专家分月排行榜第三
2015年6月 其他数据库开发大版内专家分月排行榜第二2015年5月 其他数据库开发大版内专家分月排行榜第二2013年6月 其他数据库开发大版内专家分月排行榜第二2013年3月 其他数据库开发大版内专家分月排行榜第二2012年12月 其他数据库开发大版内专家分月排行榜第二2012年10月 其他数据库开发大版内专家分月排行榜第二2012年9月 其他数据库开发大版内专家分月排行榜第二2012年7月 其他数据库开发大版内专家分月排行榜第二2012年6月 其他数据库开发大版内专家分月排行榜第二2011年11月 其他数据库开发大版内专家分月排行榜第二2011年10月 其他数据库开发大版内专家分月排行榜第二2011年9月 其他数据库开发大版内专家分月排行榜第二2011年6月 其他数据库开发大版内专家分月排行榜第二2011年5月 其他数据库开发大版内专家分月排行榜第二2011年4月 其他数据库开发大版内专家分月排行榜第二2011年3月 其他数据库开发大版内专家分月排行榜第二2011年2月 其他数据库开发大版内专家分月排行榜第二2010年12月 其他数据库开发大版内专家分月排行榜第二2010年11月 其他数据库开发大版内专家分月排行榜第二2010年9月 其他数据库开发大版内专家分月排行榜第二2010年7月 其他数据库开发大版内专家分月排行榜第二2010年4月 其他数据库开发大版内专家分月排行榜第二2010年3月 其他数据库开发大版内专家分月排行榜第二2010年1月 其他数据库开发大版内专家分月排行榜第二2009年12月 其他数据库开发大版内专家分月排行榜第二2008年6月 其他数据库开发大版内专家分月排行榜第二2008年5月 其他数据库开发大版内专家分月排行榜第二2008年4月 其他数据库开发大版内专家分月排行榜第二2007年5月 其他数据库开发大版内专家分月排行榜第二2007年1月 其他数据库开发大版内专家分月排行榜第二2006年10月 其他数据库开发大版内专家分月排行榜第二2006年8月 其他数据库开发大版内专家分月排行榜第二2006年6月 其他数据库开发大版内专家分月排行榜第二2006年4月 其他数据库开发大版内专家分月排行榜第二2005年9月 其他数据库开发大版内专家分月排行榜第二
2013年12月 其他数据库开发大版内专家分月排行榜第三2013年5月 其他数据库开发大版内专家分月排行榜第三2013年4月 其他数据库开发大版内专家分月排行榜第三2013年2月 其他数据库开发大版内专家分月排行榜第三2013年1月 其他数据库开发大版内专家分月排行榜第三2012年5月 其他数据库开发大版内专家分月排行榜第三2012年4月 其他数据库开发大版内专家分月排行榜第三2012年3月 其他数据库开发大版内专家分月排行榜第三2012年2月 其他数据库开发大版内专家分月排行榜第三2011年8月 其他数据库开发大版内专家分月排行榜第三2011年7月 其他数据库开发大版内专家分月排行榜第三2010年10月 其他数据库开发大版内专家分月排行榜第三2010年5月 其他数据库开发大版内专家分月排行榜第三2010年2月 其他数据库开发大版内专家分月排行榜第三2009年11月 其他数据库开发大版内专家分月排行榜第三2009年10月 其他数据库开发大版内专家分月排行榜第三2009年5月 其他数据库开发大版内专家分月排行榜第三2009年4月 其他数据库开发大版内专家分月排行榜第三2008年12月 其他数据库开发大版内专家分月排行榜第三2008年11月 其他数据库开发大版内专家分月排行榜第三2008年10月 其他数据库开发大版内专家分月排行榜第三2008年9月 其他数据库开发大版内专家分月排行榜第三2007年9月 其他数据库开发大版内专家分月排行榜第三2007年8月 其他数据库开发大版内专家分月排行榜第三2007年4月 其他数据库开发大版内专家分月排行榜第三2007年3月 其他数据库开发大版内专家分月排行榜第三2007年2月 其他数据库开发大版内专家分月排行榜第三2006年7月 其他数据库开发大版内专家分月排行榜第三2006年2月 其他数据库开发大版内专家分月排行榜第三2006年1月 其他数据库开发大版内专家分月排行榜第三2005年11月 其他数据库开发大版内专家分月排行榜第三2005年10月 其他数据库开发大版内专家分月排行榜第三
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
本帖子已过去太久远了,不再提供回复功能。mysql的length函数和char_length中文字符长度计算函数 - 为程序员服务
为程序员服务
mysql的length函数和char_length中文字符长度计算函数
mysql中字符串长度有两个函数分别为char_length和length,前者可以计算unicode字符,包括中文等字符集的长度,而length函数用来计算普通字符的长度,他会把一个中文字符的长度计算为2或3.
如下代码片段:
mysql& select length('的') as l, char_length('的')
+---+----+
| l | cl |
+---+----+
+---+----+
可以看到中文“的”的length为3,而char_length函数结果为1
您可能的代码
相关聚客文章
荣誉:2076
相关专栏文章> MySQL查询数据表中数据记录(包括多表查询)MySQL查询数据表中数据记录(包括多表查询)MySQL查询数据表中数据记录(包括多表查询)
在MySQL中创建数据库的目的是为了使用其中的数据。
使用select查询语句可以从数据库中把数据查询出来。
select语句的语法格式如下:
select selection_list
// 要查询的内容,选择哪些列
from table_list
// 从什么表中查询,从何处选择行
where primary_constraint
// 查询时需要满足的条件,行必须满足的条件
group by grouping_columns
// 如何对结果进行分组
order by sorting_columns
// 如何对结果进行排序
having secondary_constraint
// 查询时满足的第二条件
limit count
// 限定输出的查询结果
下面对select查询语句的参数进行详细的讲解。
首先,连接MySQL服务器,其次,选择指定的数据库:
要确保该数据库已经建立。
还要确保已经建立了数据表tb_chengji,并且已经添加了数据,然后才能更好地理解下面的内容。
1. selection_list
设置查询的内容。
1)如果要查询一个表中的所有列,可以将其设置为&*&。
比如,查询tb_chengji数据表中的所有列。代码如下:
select * from tb_
// 查询数据表中的所有数据
2)如果只查询一个表中的某一列或多列,可以直接输入列名,并以&,&分隔。代码如下:
select xuesheng,yuwen from tb_
// 查询数据表中xuesheng和yuwen列的数据
2. table_list――多表查询
指定查询的数据表。
既可以从一个数据表中查询,也可以从多个数据表中进行查询,多个数据表之间用&,&进行分隔,并且可以通过where子句使用连接运算来确定表之间的联系。
多表查询的sql语句格式如下:
select 表名.字段名 from 表1,表2... where 表1.字段=表2.字段 and 其它查询条件
例如,首先查看一下tb_chengji数据表中的数据记录。在上图有显示效果。
然后查看一下tb_info数据表中的数据记录。代码如下:
select * from tb_
下面从tb_chengji和tb_info数据表中查询yuwen大于等于100的数据记录。代码如下:
select tb_chengji.id,tb_chengji.xuesheng,xingbie,dizhi,yuwen,shuxue,yingyu from
tb_chengji,tb_info where tb_chengji.xuesheng=tb_info.xuesheng and tb_chengji.yuwen&=100;
在上面的SQL语句中,因为2个表都有id字段和xuesheng字段,为了告诉服务器要显示的是哪个表中的字段信息,所以要加上前缀。语法格式如下:
表名.字段名
tb_chengji.xuesheng=tb_info.xuesheng将表tb_chengji和tb_info连接起来,叫做等同连接。如果不使用tb_chengji.xuesheng=tb_info.xuesheng,那么产生的结果将是两个表的笛卡尔积,叫做全连接。
3. where条件语句
在使用查询语句时,比如要从很多的记录中查询出想要的记录,就需要一个查询的条件。只有设定了查询的条件,查询才有实际的意义。
设定查询条件应用的是where子句。
通过where子句,可以实现很多复杂的条件查询。在使用where子句时,需要使用一些比较运算符。常用的比较运算符如下表所示:
id is null
is not null
id is not null
id between 1 and 15
id in(3,4,5)
xuesheng not in(shi,li)
xuesheng like('shi%')
xuesheng not like('shi%')
常规表达式
xuesheng正则表达式
上表中列举的是where子句常用的比较运算符。示例中的id是记录的编号,xuesheng是表中的学生名。
例如,使用where子句,查询tb_chengji表,条件是xuesheng为李丽的数据记录。代码如下:
select * from tb_chengji where xuesheng='李丽';
提示:where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据。因此,在使用where子句时,条件中不能包含聚合函数来显示特定的行。
4. GROUP BY对结果分组
通过GROUP BY子句,可以将行数据划分成较小的组,以实现对记录进行分组查询。在与AVG()函数或SUM()函数等聚合函数一起使用时,GROUP BY子句能够发挥最大的作用。
GROUP BY子句可以将查询结果分组,并返回行的汇总信息。
在带有GROUP BY子句的查询语句中,在SELECT列表中指定的列要么是GROUP BY子句中指定的列,要么就包含在了聚合函数中。
查询语句的SELECT和GROUP BY、HAVING子句是聚合函数唯一出现的地方,因此,在where子句中不能使用聚合函数。
例如,在tb_chengji02数据表中。如下图所示:
就可以使用GROUP BY子句,按照xuesheng进行分组,求出每个学生的平均成绩。代码如下:
select xuesheng,avg(fenshu) from tb_chengji02
group by xuesheng是按学生分组,那么在xuesheng列中,相同名字的学生就会分为一组,然后计算出它们的平均成绩。
5. HAVING子句
HAVING子句的作用是筛选满足条件的组,即在分组之后过滤数据。在HAVING子句中经常包含聚合函数。可以使用HAVING条件显示特定的组,也可以使用多个分组标准进行分组。
当在GROUP BY子句中使用HAVING子句时,查询结果中只返回满足having条件的组。
例如,在tb_chengji02表中查询总成绩大于等于280的记录。代码如下:
select xuesheng,sum(fenshu) from tb_chengji02 group by xuesheng having sum(fenshu)&=280;
我们也可以在tb_chengji02表中查询张冬雪或者李丽的总成绩大于等于270的记录是否存在,如果存在,则显示出来。代码如下:
select xuesheng,sum(fenshu) from tb_chengji02 where xuesheng='张冬雪' or xuesheng='李丽' group by xuesheng having sum(fenshu)&=270;
6. DISTINCT在结果中去除重复行
使用DISTINCT关键字,可以去除结果中重复的行。
DISTINCT语句中SELECT显示的字段只能是DISTINCT指定的字段,其他字段是不能出现的。
例如,查询tb_chengji02表,并在结果中去掉xuesheng字段中的重复数据。代码如下:
select distinct xuesheng from tb_chengji02;
7. ORDER BY对结果进行排序
使用ORDER BY可以对查询的结果进行升序(ASC)或降序(DESC)排列,在默认情况下,ORDER BY按升序输出结果。如果要按降序排列可以使用DESC来实现。
在对含有null值的列进行排序时,如果按升序排列,null值将出现在最前面;如果按降序排列,null值将出现在最后面。
例如,查询tb_chengji表中的所有信息,按照&id&进行降序排列。代码如下:
select * from tb_chen
8. LIKE模糊查询
LIKE属于比较常用的比较运算符,通过它可以实现模糊查询。它有两种通配符:&%&和下划线&_&。
&%&可以匹配一个或多个字符,而&_&只能匹配一个字符。
例如,在tb_chengji表中查找所有第二个字符是&冬&的学生。代码如下:
select * from tb_chengji where xuesheng like('_冬%');
9. CONCAT联合多列
使用CONCAT函数可以联合多个字段,构成一个总的字符串。
例如,把tb_chengji表中的yuwen、shuxue和yingyu字段合并到一起,构成一个新的字符串。代码如下:
select id,xuesheng,concat(yuwen,":",shuxue,":",yingyu) as fenshu from tb_
10. LIMIT限定结果行数
LIMIT子句可以对查询结果的记录条数进行限定,控制它输出的行数。
例如,查询tb_chengji表,按照id字段降序排列,显示3条记录。代码如下:
select * from tb_chengji order by id desc limit 3;
使用LIMIT还可以从查询结果的中间部分取值。首先要定义两个参数,参数1是开始读取的第一条记录的编号(在查询结果中,第一个结果的记录编号是0,而不是1),参数2是要查询记录的个数。
select * from tb_chengji order by id desc limit 1,2;
11. 使用函数和表达式
在MySQL中,还可以使用表达式来计算各列的值,作为输出结果。表达式还可以包含一些函数。
例如,计算tb_chengji表中学生的总分数。代码如下:
select id,xuesheng,yuwen,shuxue,yingyu,sum(yuwen+shuxue+yingyu) as zongfen from tb_
select *,sum(yuwen+shuxue+yingyu) as zongfen from tb_
计算tb_chengji表中学生的三门平均分数。代码如下:
select *,format(avg(yuwen+shuxue+yingyu)/3),1) as pingjun feng from tb_
在对MySQL数据库进行操作时,有时候需要对数据库中的记录进行统计,例如求平均值、最小值或最大值等,这时可以使用MySQL中的统计函数。
常用的统计函数如下表所示:
avg(字段名)
获取指定列的平均值。
count(字段名)
如果指定了一个字段,则会统计出该字段中的非空记录。如果在前面增加DISTINCT,则会统计不同值的记录,相同的值当做一条记录。如果使用count(*),则统计包含空值的所有记录数。
min(字段名)
获取指定字段的最小值。
max(字段名)
获取指定字段的最大值。
std(字段名)
指定字段的标准背离值。
stdtev(字段名)
与std相同。
sum(字段名)
指定字段所有记录的总和。
除了使用函数之外,还可以使用算术运算符、字符串运算符以及逻辑运算符来构成表达式。
例如,计算数学成绩打八折之后的分数。代码如下:
select *,(shuxue * 0.8) as '80%' from tb_
精华推荐&&&&&&&&&&&&&&Copyright&
All Rights Reserved}

我要回帖

更多关于 mysql 函数返回值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信