xml地图|网站地图|网站标签 [设为首页] [加入收藏]
与MSSQL对比学习MYSQL的心得,安装MySQL后include目录
分类:数据库

1、求余函数MOD返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,他返回除法运算后的精确余数

最近在研究C++连接数据库的问题。

MySql noinstall-5.1.xx-win32 配置1、解压mysql-noinstall-5.1.xx-win32.zip 到你喜欢的目录,例如:d:phpmysql

SELECT MOD

安装了MySQL后,在其安装目录下的include文件夹并没有找到libmysql.lib.

2、在根目录d:phpmysql中有五个配置信息文件:

2、四舍五入函数TRUNCATE

这个经过研究,发现是由于在安装MySQL的时候,

my-small.ini my-medium.ini my-large.ini my-huge.ini my-innodb-heavy-4G.ini

TRUNCATE返回被舍去至小数点后y位的数字x。若y的值为0,则结果不带有小数点或不带有小数部分。

没有勾选 develop component这一选项悲剧的是哥使用的是WampServer集成安装mysql,

假设我的内存是1G的,我选择了my-huge.ini,选择其中一个适合你自己机子的配置文件。

若y设为负数,则截去x小数点左边起第y位开始后面所有低位的值。

安装过程并没有具体配置选择。

3、编辑my.ini,在[mysqld]的“port=3306”下面增加如下两句:

SELECT TRUNCATE

最后,只能手动安装另外的MySQL,再合并到WampServer中了。

注意,在Windows中路径名中使用斜杠“/”而不是反斜杠“”。 如果使用反斜杠“”,那么必须双写它们“\”。

TRUNCATE保留小数点后一位数字,返回值为1.3

# 安装目录的路径 # 设置mysql数据库的数据的存放目录,必须是data,或者是\xxxdata

TIPS:ROUND函数在截取值的时候会四舍五入,而TRUNCATE直接截取值,并不进行四舍五入

basedir="E:/by8/MySQL/"

3、求余函数HEX函数

# 设置mysql数据库的数据的存放目录datadir="F:/by8/MySQL/Data/"

有以下的代码可以演示HEX和UNHEX的功能:

# 设置mysql服务器的字符集default-character-set = utf8

SELECT HEX

# 默认的存储引擎default-storage-engine = MYISAM

查询的结果为:746869732069732061207465737420737472

移动“E:by8mysqldata”目录到“F:by8MySQLData”。

SELECT UNHEX('746869732069732061207465737420737472')

在[mysql]下面新增:default-character-set = utf8

查询的结果为:this is a test str

修改以下几句为:max_allowed_packet = 32M sort_buffer_size = 4M (MySQL 5.0.15 my-medium.ini默认为512K)

计算字符串字符数的函数

max_allowed_packet 参数说明:参数的作用是,用来控制其通信缓冲区的最大长度。

1、CHAR_LENGTH返回值为字符串str所包含的字符个数。一个多字节字符算作一个单字符

sort_buffer_size 参数说明:查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。

SELECT CHAR_LENGTH

4、安装服务:"E:by8mysqlbinmysqld" --install Mysql --defaults-file="E:by8Mysqlmy.ini"

2、合并字符串函数CONCAT_WS

5、启动服务:net start mysql

CONCAT_WS,CONCAT_WS代表CONCAT with Separator,是CONCAT()函数的特殊形式。

这样mysql就安装好了。你任务管理器当中可以看到mysqld-nt.exe这个进程。说明您的mysql已经安装好了。并成功的启动了。

第一个参数x是其他参数的分隔符,分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是

6、为匿名用户设置密码:

其他参数。如果分隔符为NULL,则结果为NULL。函数会忽略任何分隔符参数后的NULL值。

%myd_dir%binmysqladmin.exe -uroot -ptoor password "%my_newpwd%"

SELECT CONCAT_WS('-','1st','2nd','3rd'),CONCAT_WS

刚开始安装好的mysql登录密码是空密码:

CONCAT_WS('-','1st','2nd','3rd')使用分隔符‘-'将3个字符串连接成一个字符串,结果为“1st-2nd-3rd”;

C:Documents and SettingsAdministrator>e:E:>cd by8E:by8>cd mysqlE:by8Mysql>cd binE:by8Mysqlbin>mysql -uroot -pEnter password: //这里直接按回车,不需要输入密码的。mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || test |+--------------------+3 rows in set

CONCAT_WS因为第二个值为NULL,所以第二个值不会出现在结果里

为了安全,我们这里修改下刚安装的mysql数据库的root用户的密码 。操作命令如下:

3、替换字符串的函数INSERT

mysql> use mysqlDatabase changedmysql> update user set password=password where user="root";Query OK, 2 rows affected Rows matched: 2 Changed: 2 Warnings: 0

INSERT函数跟SQLSERVER里的STUFF()函数的功能是一样的,这里不作介绍了

mysql> exit //退出

4、填充字符串的函数LPAD和RPAD

就这样我把root的密码修改为了123456。

LPAD返回字符串s1,其左边由字符串s2填补到len字符串长度。假如s1的长度大于len,则返回值被缩短至len字符。

还有中修改密码的方法是利用msyqladmin这个命令确认可以登录我们退出mysql格式:mysqladmin -u用户名 -p旧密码 password 新密码>exit>mysqladmin -uroot -password 123456//我们这里把mysql root的原来的空密码修改成123456,因为原来root没有密码,所以-p 就密码这项就可以省略了。为了让大家印象更深刻些,我们这里再把已经修改过的密码1234560修改成为 123456命令:mysqladmin -uroot -p123456 password 1234

LPAD函数功能跟SQLSERVER里的 REPLACE()相似,不过功能更加强大

PS:MYSQL记录用户名和密码的两张表为:

SELECT LPAD('hello',4,'??'),LPAD('hello',10,'??')

user.MYD和user.MYI,备份下他们,以后就不用为重装改密码麻烦了

字符串“hello”长度大于4,不需要填充,因此LPAD('hello',4,'??')只返回被缩短的长度为4的子串

字符串“hello”长度小于10,LPAD('hello',10,'??')返回结果为“?????hello”,左侧填充“?”,长度为10

5、RPAD返回字符串s1,其右边被字符串s2填补至len字符长度。假如字符串s1的长度大于len,则返回值被缩短到len字符长度

SELECT RPAD

字符串“hello”长度大于4,不需要填充,因此RPAD只返回被缩短的长度为4的子串"hell"

6、删除空格的函数TRIM删除字符串s两侧的空格

MYSQL这里比SQLSERVER方便,SQLSERVER要删除两边的空格,需要使用: SELECT LTRIM

SELECT TRIM

删除指定字符串的函数TRIM

7、TRIM删除字符串s中两端所有的子字符串s1。s1为可选项,在未指定情况下,删除空格

SELECT TRIM('xy' FROM 'xyxboxyokxxyxy')

'xyxboxyokxxyxy'两端的重复字符串“xy”,而中间的“xy”并不删除,结果为

8、重复生成字符串的函数REPEAT

这个函数跟SQLSERVER里的REPLICATE()函数是一样的,参数个数都是一样的,这里不作介绍了

9、比较字符串大小的函数STRCMP

STRCMP若所有的字符串均相同,则返回0;若根据当前分类次序,第一个参数小于第二个,则返回-1,其他情况返回1

SELECT STRCMP ,STRCMP,STRCMP

“txt”小于“txt2”,因此 STRCMP 返回结果为-1

STRCMP返回结果为1

“txt”与“txt”相等,因此STRCMP返回结果为0

10、匹配子串开始位置的函数

LOCATE、POSITION、INSTR3个函数作用相同,返回子字符串str1在字符串str中的开始位置

这三个函数跟SQLSERVER里的CHARINDEX()函数功能类似

SELECT LOCATE,POSITION ,INSTR

子字符串“ball”在字符串“football”中从第5个字母位置开始,因此3个函数返回结果都为5

11、返回指定位置的字符串的函数

ELT(N,字符串1,字符串2,字符串3,...,),若N=1,则返回值为字符串1,若N=2,则返回值为字符串2,以此类推。

若N小于1或大于参数的数目,则返回值为NULL

SELECT ELT,ELT

由结果可以看到,ELT返回第3个位置的字符串“3rd”;指定返回字符串位置超出参数个数,返回NULL

12、返回指定字符串位置的函数FIELD

FIELD返回字符串s在列表s1,s2,......中第一次出现的位置,在找不到s的情况下,返回值为0。

如果s为NULL,则返回值为0,原因是NULL不能同任何值进行同等比较。

SELECT FIELD('hi','hihi','hey','hi','bas') AS coll,FIELD('hi','hihi','lo','hilo','foo') AS col2

FIELD('hi','hihi','hey','hi','bas')函数中字符串hi出现在列表的第3个字符串位置,因此返回结果为3

FIELD('hi','hihi','lo','hilo','foo') 列表中没有字符串hi,因此返回结果为0

13、返回子串位置的函数FIND_IN_SET

FIND_IN_SET返回字符串s1在字符串列表s2中出现的位置,字符串列表是一个由多个逗号

‘,'分开的字符串组成的列表。如果s1不在s2或s2为空字符串,则返回值为0。如果任意一个参数为NULL,则返回值为NULL。

这个函数在第一个参数包含一个逗号‘,'时将无法正常运行。

SELECT FIND_IN_SET('hi','hihi,hey,hi,bas')

虽然FIND_IN_SET和FIELD两个函数格式不同,但作用类似,都可以返回指定字符串在字符串列表中的位置

14、选取字符串的函数MAKE_SET

MAKE_SET返回由x的二进制数指定的相应位的字符串组成的字符串,s1对应比特1,s2对应比特01以此类推。

s1,s2...中的NULL值不会被添加到结果中。

SELECT MAKE_SET AS col1,MAKE_SET(1|4,'hello','nice','world') AS col2

1的二进制值为0001,4的二进制值为0100,1与4进行异或操作之后的二进制值为0101,从右到左第一位和第三位为1。

MAKE_SET返回第一个字符串

MAKE_SET(1|4,'hello','nice','world') 返回从左端开始第一和第三个字符串组成的字符串

日期和时间函数

1、获取当前日期的函数和获取当前时间的函数

CURDATE、CURRENT_TIMESTAMP、SYSDATE()

以上函数都是返回当前日期和时间值,MYSQL的函数数量的确比SQLSERVER多很多,SQLSERVER获取当前时间和日期用的

函数是: SELECT GETDATE()

SELECT NOW()

返回UTC日期的函数和返回UTC时间的函数

MYSQL里返回UTC日期和时间是分开的,而SQLSERVER里是一起的

SELECT GETUTCDATE()

SELECT UTC_DATE

2、获取月份的函数MONTHNAME

MONTHNAME函数返回日期date对应月份的英文全名

SELECT MONTHNAME

3、获取季度、分钟和秒钟的函数

本文由澳门新葡亰手机版发布于数据库,转载请注明出处:与MSSQL对比学习MYSQL的心得,安装MySQL后include目录

上一篇:查询缓存的可行方法_Mysql_脚本之家 下一篇:存储过程中执行动态SQL语句的方法_Mysql_脚本之家
猜你喜欢
热门排行
精彩图文