附录C SQL语言参考本附录列出了M y S Q L数据库识别的S Q L的语法、操作符和函数。
C.1 MySQL的S Q L语句
M y S Q L有一些对S Q L语句的独有扩展,并且了解能利用的全部语法也很重要。
附录C SQL语言参考下载
290计计PHP3 程序设计
附录C SQL语言参考下载
292计计PHP3 程序设计
C.2 MySQL的操作符
和大多数计算机语言类似,M y S Q L识别多种操作符。下面为一个总结性的列表(见表C -1)。
(续)函数类型描述
A C O S(e x p r)数学返回e x p r的反余弦值
A S C I I(e x p r)字符串返回e x p r第一个字符的A S C I I值
A S I N(e x p r)数学返回e x p r的反正弦值
AT A N(e x p r)数学返回e x p r的反正切值
ATAN2(expr1, expr2)数学返回e x p r1、e x p r2的反正切值
AV G(e x p r)分组用于子句的组中,计算e x p r的平均值BENCHMARK(count, expr)杂项执行e x p r表达式c o u n t次,总返回0
B I N(e x p r)字符串返回对应e x p r二进制值的字符串
B I T_A N D(e x p r)分组用于子句的组中,找到e x p r中所有位的“与”
B I T_O R(e x p r)分组用于子句的组中,找到e x p r中所有位的“或”
C E I L I N G(e x p r)数学返回不小于e x p r的最小整数
C H A R(e x p r_l i s t)字符串返回将表达式解释成A S C I I值的字符串形式。表
达式列表77,121, 83, 81, '7 6'解释为“ M y S Q L”
C H A R_L E N G T H参看L E N G T H
C H A R A C T E R_L E N G T H参看L E N G T H
C O S(e x p r)数学返回e x p r的余弦值,e x p r是弧度值
CONV(N, from_base, to_base)字符串在不同的进制之间进行转换
C O N C A T (e x p r_l i s t)字符串返回列表中连接在一起组成所有表达的字符串
C O T(e x p r)数学返回e x p r的余切
C O U N T(e x p r)分组用于子句的分组中,计算s e l e c t获取的非空行的数
量
C U R R E N T_
D A TE( )日期/时间按照该函数的上下文是字符串还是数字,以
' Y Y Y Y- M M-D D'或' Y Y Y Y M M D D'的形式返回当前
的日期,可以使用C U R D A T E代替
C U R R E N T _
D AT E。参阅C U R R
E N T _ T I M E和
C U R R E N T_T I M E S T A M P
CURRENT_TIME( )日期/时间按照该函数的上下文是字符串还是数字,以
'HH:MM:SS ' 或' HHMMSS ' 的格式返回当前的时
间。可以使用C U R T I M E代替C U R R E N T_T I M E,
参看C U R R E N T_D A T E和C U R R E N T_T I M E S T A M P C U R R E N T_T I M E S T AMP( )日期/时间按照该函数的上下文是字符串还是数字,以
'Y Y Y Y-MM-DDHH:MM:SS '或'Y Y Y Y M M D D H H M M S S'
的格式返回当前的时间,可以使用N O W和
S Y S D A T E代替C U R R E N T_T I M E S T A M P。参考
C U R R E N T_
D A T E和C U R R
E N T_T I M E
D A TABASE( ) 杂项返回当前的数据库名字
D A T E_A D D(d a t e,I N T
E R VAL 日期/时间返回加上指定时间间隔之后的日期,详细用法expr type)参看M y S Q L文档。能使用A D D D A T E代替D A T E_
A D D。参看清单1 4-2中它的一个实例。参看D A T E_
S U B
D A TE_SUB(date, INTERVAL 日期/时间返回减去指定时间间隔之前的日期。详细用法参expr type)看M y S Q L文档。可以使用S U B D A T E代替D A T E_
S U B。参看D A T E_A D D
D A T E_F O R M A T (d a t e,f o r m a t)日期/时间按照f o r m a t格式将日期d a t e进行格式化,详细用法
参看M y S Q L文档。参看T I M E_F O R M A T
(续)函数类型描述
L O A D_F I L E(f i l e_n a m e)字符串返回f i l e_n a m e的内容
L O C A T E(e x p r, tar g e t[,p o s])字符串返回t a r g e t中第一次出现e x p r的位置,可以从p o s
开始查找。参看P O S I T I O N
L O G(e x p r)数学返回e x p r的自然对数值
L O G10(e x p r)数学返回以1 0为底的对数值
L O W E R(e x p r)字符串将e x p r的所有字母转变为小写并返回。可以使用
L C A S E代替L O W E R,参看U P P E R
L P A D(e x p r,length, pad_string)字符串返回从左边填补上l e n g t h长度的p a d_s t r i n g的字符
串。参看R PA D
LT R I M(e x p r)字符串返回去除前导空白字符的e x p r。参看RT R I M和
T R I M
M A K E_S E T(n,e x p r_l i s t)字符串,集合返回由e x p r_l i s t中对应于n中的位被设置的值组成
集合(逗号分隔的列表),例如,选择M A K E_S E T
(1|3, 'One',Two ', 'T h r e e')为'One, Three'
M A X(e x p r)分组用于分组子句中,以找出e x p r的最大值
M A X数学参看G R E A T E S T
M I D(e x p r, pos, length)字符串返回e x p r中开始于p o s的l e n g t h长的字符串
M I N(e x p r)分组用于分组子句中,以找出e x p r的最小值
M I N数学参看L E A S T
M I N U T E(t i m e)日期/时间返回时间的分钟数,范围从0~5 9
M O D(e x p r1,e x p r2)数学返回e x p r1被e x p r2除所余的模。可以使用expr1 %
e x p r2代替M O D函数
M O N T H(d a t e)日期/时间返回日期的月份号,范围从1~1 2
M O N T H N A M E(d a t e)日期/时间返回日期的月份名字
N O W参看C U R R E N T_T I M E S T A M P
O C T(e x p r)字符串返回表示e x p r的八进制值的字符串
O C T E T_L E N G T H参看L E N G T H
PASSWORD (plaintext) 杂项从p l a i n t e x t中计算密码字符串
P E R I O D_A D D(p e r i o d,m o n t h s)日期/时间返回加上p e r i o d之后的指定月份的Y Y Y Y M M形式
的字符串。p e r i o d为Y Y M M或Y Y Y Y M M形式
P E R I O D_D I F F(p e r i o d1,p e r i o d2)日期/时间返回p e r i o d1和p e r i o d2之间的月数,p e r i o d指定为
Y Y M M或Y Y Y Y M M
P I()数学返回p i值,大约是3 .141593
POSITION(expr IN targ e t)字符串返回expr在target第一次碰到的位置。参看LOCATE P O W E R(e x p r1,e x p r2)数学返回e x p r 1的e x p r 2次幂。可以使用P O W代替
P O W E R
Q U A R T E R(d a t e)日期/时间返回一年的季度数,范围为1 ~ 4
R A D I A N S(e x p r)数学将参数从度转为弧度
R A N D([e x p r])数学返回0和1之间的随机浮点数。如果提供了expr参数,
它用作随机数的种子。小心,不再在GROUP BY子
句内的字段使用带有R A N D的列
R E L E A S E_L O C K(l o c k_n a m e)杂项释放l o c k_n a m e锁,如果成功则返回真,如果当
前进程不能创建锁则为假,如果锁不存在则返回
N U L L
R E P E A T (e x p r, count)字符串返回e x p r重复c o u n t次的字符串
R E P L A C E(t a r get, string,字符串返回所有的s t r i n g被r e p l a c e m e n t替换之后的t a r g e t
r e p l a c e m e n t)字符串
(续)
函
数
类
型
描
述
R E V E R S E (e x p r )字符串返回e x p r 的反向字符串
R I G H T (e x p r , length)字符串返回e x p r 最右边的l e n g t h 个字符。参看L E F T , MID,和S U B S T R I N G
expr1 RLIKE expr2
字符串
如果两个字符串相似则返回真,能在表达式中使
用正则表达式(参看第9
章),R E G E X P 是其同义词,也可以使用NOT RLIKE ,参看L I K E
ROUND(expr [,decimals])数学返回expr 的四舍五入整数数值,可选保留的小数位R P A D (e x p r , lengthpad_string)字符串返回右填补p a d _s t r i n g 的l e n g t h 长的字符串。参看L PA D
RT R I M (e x p r )字符串返回删除了尾部的空白字符之后的字符串S E C O N D (t i m e )
日期/时间返回t i m e 时间的秒数,范围为0 ~ 59
S E C _T O_TIME( seconds)
日期/时间
将秒数转换为小时、分钟和秒,根据是用在字符串还是数字上下文中,使用'HH:MM:SS' 或
H H M M S S 的格式
S E S S I O N _U S E R ()参看U S E R
S I G N (e x p r )数学返回参数的符号,根据e x p r 的正负,返回- 1、0或1S I N (e x p r )数学返回e x p r 的正弦值,e x p r 单位为弧度
S O U N D E X (e x p r )字符串返回e x p r 的s o u n d e x 值。使用L E T T (S O U N D E X
(expr), 4)获取“标准”的s o u n d e x 字符串S P A C E (c o u n t )字符串返回由空格字符重复c o u n t 次的字符串S Q R T (e x p r )数学返回e x p r 的非负平方根
S T D D E V (e x p r )分组使用在分组子句中,以找出e x p r 的标准平均差。可以使用S T D 代替S T D D E V
S T R C M P (e x p r 1,e x p r 2)字符串比较两个字符串,如果字符串相等则返回0,- 1表示第一个较小,而1表示第二个较小
S U B S T R I N G (e x p r , pos, 字符串
返回e x p r 中的l e n g t h 长的字符串,可选从p o s 位置[ ,l e n g t h ])
开始
SUBSTRING(expr 字符串返回e x p r 最右边l e n g t h 长的字符串。这个记号来自FROM length)
于ANSI SQL 92。参看L E F T 、M I D 、R I G H T 和S U B S -T R I N G
S U B S T R I N G _I N D E X 字符串返回e x p r 中d e l i m i t e r 出现c o u n t 次之后的子字符串。( expr, delimeter, count)如果c o u n t 是负值,返回最后一个d e l i m i t e r 右边的所有字符串
S U M (e x p r )分组用在分组子句中,用于找出e x p r 的总数S Y S D A T E ()参看C U R R E N T _T I M E S T A M P S Y S T E M _U S E R ()参看U S E R
TA N (e x p r )
数学返回e x p r 的正切值,单位为弧度
T I M E _T O _S E C (t i m e )日期/时间将t i m e 转换为秒并返回。参看S E C _T O _T I M E TO _D A Y S (d a t e )
日期/时间返回从公元元年以来到d a t e 的天数
T I M E _F O R M A T(time, format)日期/时间按照f o r m a t 格式格式化时间。详细用法参看M y S Q L 手册参看D A T E _F O R M A T T R I M (e x p r )
字符串返回e x p r 去除前导和结尾空格的字符串
TRIM(LEADING [string]字符串从e
x p r 的前面移去s t r i n g 字符串并返回。可以在L E A -FROM expr)
D I N G 的位置上使用B O T H 或T R A I L I N G 。如果没有指定s t r i n g ,则移去空格
(续)函数类型描述T R U N C A T E数学返回保留e x p r2位的e x p r1
(expr1, expr2)
U N I X_T I M E S T AMP( [date])日期/时间如果未指定date, 返回从'1970-01-01 00:00:00'
(U n i x起始时间)至当前时间(G M T)的秒数。如
果指定了d a t e,那么就返回从U n i x起始时间至d a t e
的秒数。参看F R O M_U N I X T I M E U S E R()杂项返回当前的M y S Q L用户。也可以使用S Y S T E M_
USER 或S E S S I O N_U S E R
U P P E R(e x p r)字符串将e x p r所有的字符转变为大写并返回,也能用
U C A S E代替U P P E R。参看L O W E R WEEK(date [,first])日期/时间返回日期的周数,范围为0 ~52。星期天为一周的
第一天,如果f i r s t参数设置为1,则把星期一设置
为一周的第一天
W E E K D A Y (d a t e)日期/时间返回d a t e是星期几,0对应星期一
V E R S I O N()杂项返回M y S Q L版本
Y E A R(d a t e)日期/时间返回d a t e的年数,范围从1000 ~ 9999
M y S Q L的工具
M y S Q L的发布版本包含很多有用的工具(放在了/ u s r/l o c a l/m y s q l/b i n目录下)。下列清单起到提醒作用(清单C-1 ~ 清单C -8)。
? comp_err─这个程序产生指定语言的信息文件。
? isamchk─这个程序描述、检查和修复I S A M表,它也被用于对表进行优化。
清单C-1 isamchk─h e l p的显示结果(编辑过)
附录C SQL语言参考下载
序转换为M y S Q L 的C 程序。
? m y s q l ─M y S Q L 的命令行界面,它也提供了一个非交互的模式,因此M y S Q L 可能用在批文件中。清单C -3显示了可用的选项。
清单C-3 mysq ─h e l p 的显示结果(编辑过)
300
计计PHP3 程序设计
附录C SQL语言参考下载
重要,当用户权限改变的时候需要执行重载命令。
清单C-5 mysqladmin ─h e l p 的显示结果(编辑过)
302
计计PHP3 程序设计
? mysqlbug ─这个程序创建
M
y S Q L 中能用于报告b u g 的模板。
? m y s q l d u m p ─这个程序卸载出数据库的内容,将S Q L 语句写到S T D O U T 。如果将输出重定向到文件,就能得到一个文本版本的数据库。仅需要细微的改变,这些数据就能迁移到其他S Q L 数据库中。
清单C-6 mysqldump ─h e l p 的显示结果(编辑过)
附录C SQL语言参考下载
304计计PHP3 程序设计
清单
C-7 mysqlimport ─
h e l p 的显示结果(编辑过)
附录C SQL语言参考305
下载
306计计PHP3 程序设计
清单C-8 mysqlshow─h e l p的显示结果(编辑过)
? perror─这个程序提供对数字错误代码的简短描述。
? replace─这个程序使用一个字符串替换另一个,它被m s q l2m y s q l程序调用,但也可以直接使用它。