mysqlcnWord格式文档下载.docx
- 文档编号:21005559
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:64
- 大小:58.34KB
mysqlcnWord格式文档下载.docx
《mysqlcnWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《mysqlcnWord格式文档下载.docx(64页珍藏版)》请在冰豆网上搜索。
6.2.6.3字符串类型存储需求
∙6.3用于SELECT和WHERE子句的函数
o6.3用于SELECT和WHERE子句的函数
6.3.1无类型的特殊运算符和函数
6.3.1.1圆括号
6.3.1.2比较运算符
6.3.1.3逻辑运算符
6.3.1.4控制流函数
6.3.2字符串函数
6.3.2.1字符串比较函数
6.3.2.2字母大小写敏感性
6.3.3数字函数
6.3.3.1算术运算
6.3.3.2数学函数
6.3.4日期和时间函数
6.3.5Cast函数
6.3.6其它函数
6.3.6.1位函数
6.3.6.2辅助功能函数
6.3.7用于GROUPBY子句的函数
∙6.4数据操纵SELECT,INSERT,UPDATE,DELETE
o6.4数据操纵SELECT,INSERT,UPDATE,DELETE
6.4.1SELECT句法
6.4.1.1JOIN句法
6.4.1.2UNION句法
6.4.2HANDLER句法
6.4.3INSERT句法
6.4.3.1INSERT...SELECT句法
6.4.4INSERTDELAYED句法
6.4.5UPDATE句法
6.4.6DELETE句法
6.4.7TRUNCATE句法
6.4.8REPLACE句法
6.4.9LOADDATAINFILE句法
6.4.10DO句法
∙6.5数据定义CREATE、DROP、ALTER
o6.5数据定义CREATE、DROP、ALTER
6.5.1CREATEDATABASE句法
6.5.2DROPDATABASE句法
6.5.3CREATETABLE句法
6.5.3.1隐式的列定义变化
6.5.4ALTERTABLE句法
6.5.5RENAMETABLE句法
6.5.6DROPTABLE句法
6.5.7CREATEINDEX句法
6.5.8DROPINDEX句法
∙6.6基本的MySQL用户实用命令
o6.6基本的MySQL用户实用命令
6.6.1USE句法
6.6.2DESCRIBE句法(获得列的信息)
∙6.7MySQL事务与锁定命令
o6.7MySQL事务与锁定命令
6.7.1BEGIN/COMMIT/ROLLBACK句法
6.7.2LOCKTABLES/UNLOCKTABLES句法
6.7.3SETTRANSACTION句法
∙6.8MySQL全文搜索
o6.8MySQL全文搜索
6.8.1全文的限制
6.8.2微调MySQL全文搜索
6.8.3全文搜索TODO
∙6.9MySQL查询缓存
o6.9MySQL查询缓存
6.9.1查询缓存如何运作
6.9.2查询缓存设置
6.9.3在SELECT中的查询缓存选项
6.9.4查询缓存的状态和维护
MySQLReferenceManualforversion4.1.0-alpha.
6.3用于SELECT和WHERE子句的函数
一个SQL语句中的select_expression或where_definition可由任何使用了下面所描述函数的表达式组成。
包含NULL的表达式总是得出一个NULL值结果,除非表达式中的操作和函数在文档中有另外的说明。
注意:
在一个函数名和跟随它的括号之间必须不存在空格。
这有助于MySQL语法分析程序区分函数调用和对恰巧与函数同名表或列的引用。
然而,参数左右两边的空格却是允许的。
你可以强制MySQL接受函数名后存在空格的形式,这需要通过以--ansi选项启动mysqld,或在mysql_connect()中使用CLIENT_IGNORE_SPACE,但是,在这种情况下,所有的函数名均将成为保留字。
查看章节1.8.2以ANSI模式运行MySQL.
为了简洁,从mysql程序输出的例子以缩写的形式显示。
因此:
mysql>
SELECTMOD(29,9);
1rowsinset(0.00sec)
+-----------+
|mod(29,9)|
|2|
将被显示为这样:
->
2
6.3.1无类型的特殊运算符和函数
6.3.1.1圆括号
(...)
括号,使用它来强制一个表达式的计算顺序。
SELECT1+2*3;
7
SELECT(1+2)*3;
9
6.3.1.2比较运算符
比较运算符的结果是1(TRUE)、0(FALSE)或NULL。
这些函数可工作于数字和字符串上。
根据需要,字符串将会自动地被转换到数字,以及数字被转换成字符串(比如在Perl中)。
MySQL使用下列规则进行比较:
∙如果一个或两个参数是NULL,比较的结果是NULL,除了<
=>
运算符。
∙如果在一个比较操作中两个参数均是字符串,他们将作为字符串被比较。
∙如果两个参数均是整数,他们作为整数被比较。
∙十六进制值如果不与一个数字进行比较,那么它将当作一个二进制字符串。
∙如果参数之一是一个TIMESTAMP或DATETIME列,而另一参数是一个常数,在比较执行之前,这个常数被转换为一个时间戳。
这样做是为了对ODBC更友好。
∙在所有其它情况下,参数作为浮点(real)数字被比较。
缺省地,字符串使用当前字符集以忽略字母大小写的方式进行比较(缺省的字符集为ISO-8859-1Latin1,它对英语处理得很出色)。
下面的例子演示了对于比较操作字符串到数字的转换:
SELECT1>
'
6x'
;
0
SELECT7>
1
SELECT0>
x6'
SELECT0='
=
等于:
SELECT1=0;
SELECT'
0'
=0;
0.0'
0.01'
.01'
=0.01;
<
>
!
不等于:
<
SELECT.01<
zapp'
zappp'
小于或等于:
SELECT0.1<
=2;
小于:
SELECT2<
2;
大于或等于:
SELECT2>
大于:
NULL值安全等于:
SELECT1<
1,NULL<
NULL,1<
NULL;
110
ISNULL
ISNOTNULL
测试一个值是或不是NULL:
SELECT1ISNULL,0ISNULL,NULLISNULL;
001
SELECT1ISNOTNULL,0ISNOTNULL,NULLISNOTNULL;
为了能够与其它程序更好的工作,在使用ISNULL是MySQL支持下列额外选择性:
∙通过它,你可以找到最后插入的记录行:
∙SELECT*FROMtbl_nameWHEREauto_colISNULL
这个操作可以通过设置SQL_AUTO_IS_NULL=0来禁止。
查看章节5.5.6SET句法.
∙对于NOTNULL的DATE和DATETIME列,可以通过使用下列语句找到特殊的值0000-00-00:
∙SELECT*FROMtbl_nameWHEREdate_columnISNULL
这需要通过某些ODBC应用程序才能工作(因为ODBC不支持一个0000-00-00日期)
exprBETWEENminANDmax
如果expr大于或等于min,并且expr小于或等于max,BETWEEN返回1,否则返回0。
它等价于表达式(min<
=exprANDexpr<
=max),只要所有的参数均是相同的类型。
否则类型会依照上面的规则发生转换,但是应用于所有三个参数。
注意,在MySQL4.0.5之前,参数被转换到expr的类型。
SELECT1BETWEEN2AND3;
b'
BETWEEN'
a'
AND'
c'
SELECT2BETWEEN2AND'
3'
x-3'
exprNOTBETWEENminANDmax
等同于NOT(exprBETWEENminANDmax)。
exprIN(value,...)
如果expr是IN列表中的作一值,它将返回1,否则返回0。
如果所有的值均是常数,那么所有的值被依照expr的类型进行计算和排序。
然后以一个二进制搜索方式完成项目的搜索。
这就意味着,如果IN列表完全由常数组成,IN将是非常快的。
如果expr是一个字母大小写敏感的字符串表达式,字符串比较将以大小写敏感方式执行:
SELECT2IN(0,3,5,'
wefwf'
);
IN(0,3,5,'
从MySQL4.1开始(符合SQL-99标准),如果左手边的表达式是NULL,或者在列表中没有发现相匹配的值并且列表中的一个表达式是NULL,IN均返回NULL。
exprNOTIN(value,...)
等同于NOT(exprIN(value,...))。
ISNULL(expr)
如果expr是NULL,ISNULL()返回1,否则返回0:
SELECTISNULL(1+1);
SELECTISNULL(1/0);
注意,对NULL值使用=进行比较总是为false!
COALESCE(list)
返回列表中第一个非NULL的元素:
SELECTCOALESCE(NULL,1);
SELECTCOALESCE(NULL,NULL,NULL);
NULL
INTERVAL(N,N1,N2,N3,...)
Returns如果N<
N1返回0,如果N<
N2返回1,等等。
所有的参数均被当作整数。
为了函数能正确地工作,它要求N1<
N2<
N3<
...<
Nn。
这是因为它使用的是一个二进制的搜索(非常地快):
SELECTINTERVAL(23,1,15,17,30,44,200);
3
SELECTINTERVAL(10,1,10,100,1000);
SELECTINTERVAL(22,23,30,44,200);
如果以任何一个标准运算符(=,<
...,但除了LIKE)对一个忽略大小写的字符串进行比较,尾部的空白空间(空格、TAB和换行)均被忽略。
SELECT"
a"
="
A\n"
6.3.1.3逻辑运算符
在SQL中,所有的逻辑运算符返回的值均为TRUE、FALSE或NULL(未知)。
在MySQL中,它们由1(TRUE)、0(FALSE)和NULL实现。
这些大部分在不同的SQL数据库间是相同的,然而某些可能会以一个非零值返回TRUE。
NOT
逻辑非。
如果操作数为0,返回1;
如果操作数为非零,返回0;
如果操作数为NOTNULL,返回NULL。
SELECTNOT10;
SELECTNOT0;
SELECTNOTNULL;
SELECT!
(1+1);
1+1;
最后一个例子返回1,因为表达式是与(!
1)+1一样被计算的。
AND
&
逻辑与。
如果所有的操作数都是非零或非NULL的,返回1;
如果有一个或多个操作数为0,则返回0,只要操作数中有NULL返回值就为NULL。
SELECT1&
1;
0;
SELECT0&
SELECTNULL&
请注意,在MySQL4.0.5以前版本中,当遇到一个NULL时就停止计算,而不是继续进程检查可能存在的0。
这就意味着,在这些版本中,SELECT(NULLAND0)返回NULL,而不是0。
在4.0.5中,代码已被重新设计了,已便于在任何仍然使用优化情况下,返回值总是能如ANSI所规定的那样。
OR
||
逻辑或。
如果任何一个操作数是非零的,返回值为1,如果任一操作数为NULL,返回值为NULL,否则返回0。
SELECT1||1;
SELECT1||0;
SELECT0||0;
SELECT0||NULL;
SELECT1||NULL;
XOR
逻辑异或。
如果任一操作数为NULL,返回值为NULL。
对于非NULL的操作数,如果有奇数个非零的操作数,结果返回为1,否则返回0。
SELECT1XOR1;
SELECT1XOR0;
SELECT1XORNULL;
SELECT1XOR1XOR1;
aXORb算术相等于(aAND(NOTb))OR((NOTa)andb)。
XOR在MySQL4.0.2中被添加。
6.3.1.4控制流函数
IFNULL(expr1,expr2)
如果expr1为非NULL的,IFNULL()返回expr1,否则返回expr2。
IFNULL()返回一个数字或字符串值,这取决于它被使用的语境:
SELECTIFNULL(1,0);
SELECTIFNULL(NULL,10);
10
SELECTIFNULL(1/0,10);
SELECTIFNULL(1/0,'
yes'
在MySQL4.0.6和更新版本中,IFNULL(expr1,expr2)的默认返回值以STRING、REAL或INTEGER顺序更加'
general'
了两个表达式。
当你基于一个表达式创建一个表或在一个临时表中MySQL不得不存储一个从IFNULL()返回的值时,这个与较早MySQL版本的不同将更加值得注意。
CREATETABLEfooSELECTIFNULL(1,"
test"
)astest;
在MySQL4.0.6中,列'
test'
的类型为CHAR(4),然而在较早的版本中,你得到的却是BIGINT。
NULLIF(expr1,expr2)
如果expr1=expr2为真,返回NULL,否则返回expr1。
它等同于CASEWHENx=yTHENNULLELSExEND:
SELECTNULLIF(1,1);
SELECTNULLIF(1,2);
注意,如果参数不相等,在MySQL中,expr1被求值两次。
IF(expr1,expr2,expr3)
如果expr1为真(expr1<
0以及expr1<
NULL),那么IF()返回expr2,否则返回expr3。
IF()返回一个数字或字符串,这取决于它被使用的语境:
SELECTIF(1>
2,2,3);
SELECTIF(1<
2,'
'
no'
SELECTIF(STRCMP('
test1'
),'
如果expr2或expr3明确地为NULL,那么函数IF()的返回值类型为非NULL列的类型。
(这在选择在MySQL4.0.3中新加入)。
expr1是作为一个整数值被计算的,这就意味着,如果测试的是一个浮点型或字符串值,就必须进行比较操作:
SELECTIF(0.1,1,0);
SELECTIF(0.1<
0,1,0);
在上面第一种情况下,IF(0.1)返回0,是因为0.1被转换为一个整数值,返回IF(0)的测试结果。
这可能不是你所期望的。
在第二种情况下,比较测试原浮点数是否为一个非零值。
比较的结果被作为整数使用。
缺省的IF()返回值类型(当结果存储在临时表中时,这是非常重要的)在MySQL3.23中按下列方式确定:
表达式
返回值
表达式(expr2)或表达式(expr3)返回值为字符串
字符串
表达式(expr2)或表达式(expr3)返回值为浮点型值
浮点型
表达式(expr2)或表达式(expr3)返回值为整型
整型
如果表达式(expr2)和表达式(expr3)均是字符串,同时两个字符串均是忽略字母大小写的,那么返回值也是忽略字母大小写的(从MySQL3.23.51开始)。
CASEvalueWHEN[compare-value]THENresult[WHEN[compare-value]THENresult...][ELSEresult]END
CASEWHEN[condition]THENresult[WHEN[condition]THENresult...][ELSEresult]END
第一个形式当value=compare-value时返回result。
第二个形式当第一个为真值的condition出现时,返回该条件的结果。
如果没有匹配的结果值,那么ELSE后的结果将被返回。
如果没有ELSE部分,那么NULL被返回:
SELECTCASE1WHEN1THEN"
one"
WHEN2THEN"
two"
ELSE"
more"
END;
"
SELECTCASEWHEN1>
0THEN"
true"
false"
SELECTCA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mysqlcn