mysql数据库安装库

CopyRight &copy
, All rights reserved.
数据恢复·紧急救援·联系我们:手机: 邮件:|MSN联系:> mysql其他函数DATABASE()返回当前的数据库名字。mysql>selectDATA
mysql其他函数DATABASE()返回当前的数据库名字。mysql>selectDATA
rabbit132316 & &
发布时间: & &
浏览:8 & &
回复:0 & &
悬赏:0.0希赛币
mysql 其他函数
DATABASE()
返回当前的数据库名字。
  mysql& select DATABASE(); -& 'test'
  如果没有当前的数据库,DATABASE()返回空字符串。
SYSTEM_USER()
SESSION_USER()
返回当前MySQL用户名。
  mysql& select USER(); -& 'davida@localhost'
  在MySQL 3.22.11或以后版本中,这包括用户名和客户主机名。你可以象这样只提取用户名部分(值是否包括主机名部分均可工作):
  mysql& select substring_index(USER(),"@",1); -& 'davida'
PASSWORD(str)
从纯文本口令str计算一个口令字符串。该函数被用于为了在user授权表的Password列中存储口令而加密MySQL口令。
  mysql& select PASSWORD('badpwd'); -& '7f4b'
  PASSWORD()加密是非可逆的。PASSWORD()不以与Unix口令加密的相同的方法执行口令加密。你不应该假定如果你的Unix 口令和你的MySQL口令是一样的,PASSWORD()将导致与在Unix口令文件存储的相同的加密值。见ENCRYPT()。
ENCRYPT(str[,salt])
使用Unix crypt()系统调用加密str。salt参数应该是一个有2个字符的字符串。(MySQL 3.22.16中,salt可以长于2个字符。)
  mysql& select ENCRYPT("hello"); -& 'VxuFAJXVARROc'
  如果crypt()在你的系统上不可用,ENCRYPT()总是返回NULL。ENCRYPT()只保留str起始8个字符而忽略所有其他,至少在某些系统上是这样。这将由底层的crypt()系统调用的行为决定。
ENCODE(str,pass_str)
使用pass_str作为口令加密str。为了解密结果,使用DECODE()。结果是一个二进制字符串,如果你想要在列中保存它,使用一个BLOB列类型。
DECODE(crypt_str,pass_str)
使用pass_str作为口令解密加密的字符串crypt_str。crypt_str应该是一个由ENCODE()返回的字符串。
MD5(string)
对字符串计算MD5校验和。值作为一个32长的十六进制数字被返回可以,例如用作哈希(hash)键。
  mysql& select MD5("testing") -& 'ae2b1fcad54fb22b8ed95575'
  这是一个“RSA数据安全公司的MD5消息摘要算法”。
LAST_INSERT_ID([expr])
返回被插入一个AUTO_INCREMENT列的最后一个自动产生的值。见20.4.29 mysql_insert_id()。
  mysql& select LAST_INSERT_ID(); -& 195
  产生的最后ID以每个连接为基础在服务器被维护,它不会被其他客户改变。如果你更新另外一个有非魔术值(即,不是NULL和不是0的一个值)的AUTO_INCREMENT列,它甚至不会被改变。如果expr作为一个参数在一个UPDATE子句的LAST_INSERT_ID()里面给出,那么参数值作为一个LAST_INSERT_ID()值被返回。这可以用来模仿顺序:首先创建表:
  mysql& create table sequence (id int not null); mysql& insert into sequence values (0);
  然后表能被用来产生顺序号,象这样:
  mysql& update sequence set id=LAST_INSERT_ID(id+1);
  你可以不调用LAST_INSERT_ID()而产生顺序,但是这样使用函数的实用程序在服务器上自动维护ID值作为最后自动产生的值。你可以检索新的ID值,就像你能读入正常MySQL中的任何正常的AUTO_INCREMENT值一样。例如,LAST_INSERT_ID()(没有一个参数 )将返回新ID。C API函数mysql_insert_id()也可被用来得到值。
FORMAT(X,D)
格式化数字X为类似于格式'#,###,###.##',四舍五入到D为小数。如果D为0,结果将没有小数点和小数部分。
  mysql& select FORMAT(, 4); -& '12,332.1235' mysql& select FORMAT(); -& '12,332.1000' mysql& select FORMAT(); -& '12,332'
返回表明MySQL服务器版本的一个字符串。
  mysql& select VERSION(); -& '3.22.19b-log'
GET_LOCK(str,timeout)
试图获得由字符串str给定的一个名字的锁定,第二个timeout为超时。如果锁定成功获得,返回1,如果尝试超时了,返回0,或如果发生一个错误,返回NULL(例如从存储器溢出或线程用mysqladmin kill被杀死)。当你执行RELEASE_LOCK()时、执行一个新的GET_LOCK()或线程终止时,一个锁定被释放。该函数可以用来实现应用锁或模拟记录锁,它阻止其他客户用同样名字的锁定请求;赞成一个给定的锁定字符串名字的客户可以使用字符串执行子协作建议的锁定。
  mysql& select GET_LOCK("lock1",10); -& 1 mysql& select GET_LOCK("lock2",10); -& 1 mysql& select RELEASE_LOCK("lock2"); -& 1 mysql& select RELEASE_LOCK("lock1"); -& NULL
  注意,第二个RELEASE_LOCK()调用返回NULL,因为锁"lock1"自动地被第二个GET_LOCK()调用释放。
RELEASE_LOCK(str)
释放字符串str命名的通过GET_LOCK()获得的锁。如果锁被释放,返回1,如果锁没被这个线程锁定(在此情况下锁没被释放)返回0,并且如果命名的锁不存在,返回NULL。如果锁从来没有通过调用GET_LOCK()获得或如果它已经被释放了,锁将不存在。
BENCHMARK(count,expr)
BENCHMARK()函数重复countTimes次执行表达式expr,它可以用于计时MySQL处理表达式有多快。结果值总是0。意欲用于mysql客户,它报告查询的执行时间。
  mysql& select BENCHMARK(1000000,encode("hello","goodbye")); +----------------------------------------------+ | BENCHMARK(1000000,encode("hello","goodbye")) | +----------------------------------------------+ | 0 | +----------------------------------------------+ 1 row in set (4.74 sec)
  报告的时间是客户端的经过时间,不是在服务器端的CPU时间。执行BENCHMARK()若干次可能是明智的,并且注意服务器机器的负载有多重来解释结果。
与GROUP BY子句一起使用的函数
  如果你在不包含GROUP BY子句的一个语句中使用聚合函数,它等价于聚合所有行。
COUNT(expr)
返回由一个SELECT语句检索出来的行的非NULL值的数目。
  mysql& select student.student_name,COUNT(*) from student,course where student.student_id=course.student_id GROUP BY student_
  COUNT(*)在它返回的检索出来的行数目上有些不同,不管他们是否包含NULL值。如果SELECT从一个表检索,或没有检索出其他列并且没有WHERE子句,COUNT(*)被优化以便快速地返回。例如:
  mysql& select COUNT(*)
COUNT(DISTINCT expr,[expr...])
返回一个不同值的数目。
  mysql& select COUNT(DISTINCT results)
  在MySQL中,你可以通过给出一个表达式列表以得到不同的表达式组合的数目。在 ANSI SQL中,你可能必须在CODE(DISTINCT ..)内进行所有表达式的连接。
返回expr的平均值。
  mysql& select student_name, AVG(test_score) from student GROUP BY student_
返回expr的最小或最大值。MIN()和MAX()可以有一个字符串参数;在这种的情况下,他们返回最小或最大的字符串值。
  mysql& select student_name, MIN(test_score), MAX(test_score) from student GROUP BY student_
返回expr的和。注意,如果返回的集合没有行,它返回NULL!
STDDEV(expr)
返回expr标准差(deviation)。这是对 ANSI SQL 的扩展。该函数的形式STDDEV()是提供与Oracle的兼容性。
BIT_OR(expr)
返回expr里所有位的位或。计算用 64 位(BIGINT)精度进行。
BIT_AND(expr)
返回expr里所有位的位与。计算用 64 位(BIGINT)精度进行。
  MySQL扩展了GROUP BY的用法。你可以不出现在的GROUP BY部分的SELECT表达式中使用列或计算,这表示这个组的任何可能值。你可以使用它是性能更好,避免在不必要的项目上排序和分组。例如,你在下列查询中不需要在customer.name上聚合:
  mysql& select order.custid,customer.name,max(payments) from order,customer where order.custid = customer.custid GROUP BY order.
  在 ANSI SQL中,你将必须将customer.name加到GROUP BY子句。在MySQL中,名字是冗余的。
  如果你从GROUP BY部分省略的列在组中不是唯一的,不要使用这个功能。
  在某些情况下,你可以使用MIN()和MAX()获得一个特定的列值,即使它不是唯一的。下例给出从包含sort列中最小值的行的column值:
  substr(MIN(concat(sort,space(6-length(sort)),column),7,length(column)))
  注意,如果你正在使用MySQL 3.22(或更早)或如果你正在试图遵从ANSI SQL,你不能在GROUP BY或ORDER BY子句中使用表达式。你可以通过使用表达式的一个别名解决此限制:
  mysql& SELECT id,FLOOR(value/100) AS val FROM tbl_name GROUP BY id,val ORDER BY
  在MySQL3.23中,你可以这样做:
  mysql& SELECT id,FLOOR(value/100) FROM tbl_name ORDER BY RAND();
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&是时候放弃MySQL的五大理由
发表于 11:54|
摘要:在信息技术快速发展的时代,淘汰与被淘汰是常有的事。以往最受欢迎的开源数据库MySQL由于性能、管理等方面的问题,遭到强大对手的挤压,已不再是开发者手中的宠儿了,本文详述了放弃使用MySQL的五大理由。
MySQL目前仍然是受欢迎的开源数据库,但是近些年来它已经慢慢失宠了——这很正常。下面来看看放弃使用MySQL数据库的五个较实际的理由。追溯到2008年,当以大约一亿美元收购MySQL AB的时候,MySQL迅速成长为大受欢迎的数据库。然而第二年,Oracle接管了Sun,。MySQL的用户和开发者开始质疑开源数据库的命运,与此同时他们开始寻找替代品。转眼到了2013年:Oracle并没有消灭这个昔日的竞争对手,MySQL仍然是最受欢迎的开源数据库。可是MySQL的知名度正在下滑,因为它已经失去了诱惑力,各种可行的数据库替代品也正在崭露头角。让我们来看看不再使用前开源数据库MySQL的五大理由。1. MySQL不如其它关系型数据库管理系统那样成熟MySQL起初并不是一个RDBMS(关系型数据库管理系统),只是后来改变方向添加了更多的功能。时间久的、更成熟的RDBMS仍然被认为。如果你想要一个功能丰富的RDBMS,你可以选择PostgreSQL或者是一些闭源的数据库系统,例如Oracle或Microsoft SQL Server。PostgreSQL的贡献者Selena Deckelmann表示:对于需要关系型数据库的Web开发人员来说,Postgres看起来是新项目的不二选择。“通过加入和特性,Postgres也可能成为NoSQL的默认选择”Selena说。2. MySQL是开源的...但只有近似而已严格来说,MySQL是一个开源数据库,但是在实践当中,已经感觉不到了。在Oracle的保护伞下,MySQL现在有专利权和源模块。“理论上,MySQL仍然很活跃,但是Oracle的脚步深陷开发进程之中,拒绝发布关于bug的测试案例,而且MySQL的安全补丁已经在代码上加强控制,并输送大量的开源开发人员到新的领域。”Paula Rooney在她的ZDNet文章里作出解释。其实有很多开源替代品可以选择。MariaDB是MySQL的一个分支,仍然是“真正的开源。”一位MariaDB的开发人员说:“MariaDB的所有代码都是在GPL,LPGL或BSD下面发行的。MariaDB并没有如你在里所看到的那些闭源模块。事实上,在MySQL 5.5&Enterprise Edition里的所有的闭源特性都可以在MariaDB开源版本里找到。”3. MySQL的性能无法与竞争对手相提并论MariaDB的博客为MySQL和MariaDB的对比提供了详细的基准测试结果,尽管对比结果很接近,但是。PostgreSQL的贡献者Selena Deckelmann说让Postgres更有吸引力,原因有几个,其中包括缩放功能。“可以说他们是Postgres最大的服务器托管环境,为你的Apps自动处理扩展,支持出色的附加组件,使你在找出DevOps本地情况之前更容易试用各种功能。”她解释道,“他们只宣布支持PVL8——允许你在数据库里运行JavaScript,并能更好的利用9.2和更高版本的JSON&datetype。”4. MySQL是Oracle所有的,而不是社区驱动的很显然,在被Oracle接管之后,MySQL并没有改变发展方向,但是,因为目前属于Oracle的事实让一些开发者感到不安。“可能最糟糕的是,。” MySQL和MariaDB创始人Michael “Monty” Widenius如是说。Widenius指出,Oracle不会接受补丁或提供一个公共的路线图。他说,“没办法和MySQL的开发人员讨论怎样执行一些事情或者怎样让当前的代码运作。”如果一个开源项目的开发数据库和你有关,Widenius会向你推荐MariaDB,因为它是基于MySQL建立的,并且提供了更多新特性、速度和稳定性,而且更安全。5. 越来越多的强劲对手2013年6月在波士顿举行的峰会上,。取而代之的是Red Hat将和MariaDB同上一条船。Slackware Linux 2013年3月宣布将MySQL转移向MariaDB,而且。在2013年4月,Wikimedia基金会宣布Wikipedia网站()采用MariaDB。Wikimedia Foundation Site架构师Asher&Feldman解释称,MariaDB的优化程序增强功能和Percona的XtraDB功能设置是作出。“作为自由文化运动的支持者,我认为这是同等重要的。”Wikimedia Foundation强烈倾向于自由软件开发项目,包括一个在无偿授权和企业版本之间没有分叉代码库的项目。”他补充到,“我们欢迎并支持MariaDB Foundation作为一个非盈利组织,尤其是在自由和开放的MySQL数据库相关社区方面。”Steven J. Vaughan-Nichols是一个科技记者(这里作为),提到,不管你怎么看待Oracle或开源vs.专有软件,MariaDB在世界最繁忙的Web站点之一的优秀性能正在吸引人们的注意力,不管你正在使用的是Linux、Apache、MySQL还是PHP/Python/Perl(LAMP)软件堆栈。这些海量数据有什么作用呢,技术型公司知道那些忠实的用户不会放弃MySQL的。MySQL不再是唯一的了不起的数据库解决方案。相比之下,MySQL正面临着巨大的挑战——甲骨文免费版、真正的开源产物MariaDB、不断争宠的PostgreSQL RDBMS和。如果你还没有放弃MySQL,这里有充足的理由供你重新考虑。如果你不支持放弃MySQL的观点,那么请阅读Andy Patrizio的文章理由,然后再做决定也不迟。 & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & (责编/王果)原文:
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章

我要回帖

更多关于 mysql数据库学习 的文章

 

随机推荐