mysqlcnWord格式文档下载.docx

上传人:b****5 文档编号:21005559 上传时间:2023-01-26 格式:DOCX 页数:64 大小:58.34KB
下载 相关 举报
mysqlcnWord格式文档下载.docx_第1页
第1页 / 共64页
mysqlcnWord格式文档下载.docx_第2页
第2页 / 共64页
mysqlcnWord格式文档下载.docx_第3页
第3页 / 共64页
mysqlcnWord格式文档下载.docx_第4页
第4页 / 共64页
mysqlcnWord格式文档下载.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

mysqlcnWord格式文档下载.docx

《mysqlcnWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《mysqlcnWord格式文档下载.docx(64页珍藏版)》请在冰豆网上搜索。

mysqlcnWord格式文档下载.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1