龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > MySQL 技术 >

与MSSQL对比学习MYSQL的心得(六)--函数(5)

时间:2014-08-05 02:12来源:网络整理 作者:网络 点击:
分享到:
CHARSET(STR)返回字符串str自变量的字符集 SELECT CHARSET('abc') ,CHARSET(CONVERT('abc' USING latin1)),CHARSET(VERSION()) CHARSET('abc')返回系统默认的字符集utf8; CHARSET(CONVERT('

CHARSET(STR)返回字符串str自变量的字符集

SELECT  CHARSET('abc') ,CHARSET(CONVERT('abc' USING latin1)),CHARSET(VERSION())


CHARSET('abc')返回系统默认的字符集utf8;

CHARSET(CONVERT('abc' USING latin1))返回的字符集为latin1;

VERSION()返回的字符串使用utf8字符集,因此CHARSET返回结果为utf8

8、COLLATION(str)返回字符串str的字符排列方式

SELECT  COLLATION(_latin2 'abc'),COLLATION(CONVERT('abc' USING utf8))


可以看到,使用不同字符集时字符串的排列方式不同

9、获取最后一个自动生成的ID值的函数

LAST_INSERT_ID()自动返回最后一个INSERT或UPDATE为AUTO_INCREMENT列设置的第一个发生的值

 

(1)一次插入一条记录

首先创建表worker,其ID字段带有AUTO_INCREMENT约束

CREATE TABLE worker(
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
NAME VARCHAR(30)
)

分别单独向表worker插入2条记录

INSERT INTO worker VALUES(NULL,'jimmy');
INSERT INTO worker VALUES(NULL,'tom')

SELECT * FROM worker

查看已经插入的数据可以发现,最后一条插入的记录的ID字段值为2,使用LAST_INSERT_ID()查看最后自动生成的ID值

SELECT LAST_INSERT_ID()


 
 可以看到,一次插入一条记录时,返回值为最后一条插入记录的ID值

(2)一次同时插入多条记录

 接下来,向表中插入多条记录

INSERT INTO worker VALUES(NULL,'kevin'),(NULL,'michal'),(NULL,'nick')

查询已经插入的记录

SELECT * FROM worker 

可以看到最后一条记录的ID字段值为5,使用LAST_INSERT_ID()查看最后自动生成的ID值

SELECT LAST_INSERT_ID()

结果显示,ID字段值不是5而是3,这是为什麽呢?

在向数据表插入一条记录时,LAST_INSERT_ID()返回带有AUTO_INCREMENT约束的字段最新生成的值2;继续向表

中同时添加3条记录,这时候因为当使用一条INSERT语句插入多个行时,LAST_INSERT_ID只返回插入的第一行数据

时产生的值,在这里为第3条记录。之所以这样,是因为这使依靠其他服务器复制同样的INSERT语句变得简单

TIPS:LAST_INSERT_ID是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回表b中的ID值

这里跟SQLSERVER不一样

使用下面脚本来测试,无论使用方式一还是方式二,当前的LAST_INSERT_ID都是最后一个值

CREATE TABLE [dbo].[aaa](
  [a] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
  [name] [nvarchar](50) NOT NULL
) ON [PRIMARY]
 

USE [sss]



SELECT * FROM [dbo].[aaa]

INSERT INTO [dbo].[aaa]
    ( [name] )
VALUES ( N'sdfsdf' -- name - nvarchar(50)
     )
SELECT * FROM [dbo].[aaa]

INSERT INTO [dbo].[aaa]
    ( [name] )
VALUES ( N'sdf969' -- name - nvarchar(50)
     ),('lkjj96'),('565656')

SELECT IDENT_CURRENT('aaa')

SELECT * FROM [dbo].[aaa]


加密函数

1、加密函数PASSWORD(STR)

PASSWORD(STR)从原文密码str计算并返回加密后的密码字符串,当参数为NULL时,返回NULL

SELECT PASSWORD('NEWPWD')


MYSQL将PASSWORD函数加密后的密码保存到用户权限表中

TIPS:PASSWOR()函数在MYSQL服务器的鉴定系统中使用;不应将他用在个人应用程序中,PASSWORD()函数加密是单向的(不可逆)

PASSWORD执行密码加密与UNIX中密码加密方式不同

2、加密函数MD5(str)

MD5(str)为字符串算出一个MD5 128比特校验和。该值以32位十六进制数字的二进制字符串形式返回,若参数为NULL,则会返回NULL

SELECT MD5('123')


 
3、加密函数ENCODE(str,pswd_str)

精彩图集

赞助商链接