一、newid是什么
MySQL中的newid(或者称为UUID)是唯一标识符,它用于在数据库中创建全局唯一的值。newid经常用于作为主键和唯一标识符的默认值。
使用仅对象标识符(UUID)会有一个明显的优点,就是可以在客户端生成记录,而不需要向服务器插入数据以获取新的对象标识符。因此,它较为高效。但其缺点是,其并不是适用于组合键,因为过程的结果是随机的且不可排序的。
newid是由MySQL特定算法和MAC地址(物理网卡地址)以及时间戳三个元素合成一个UUID(36个字符,32字符和4个’-‘符号)实现的。这使得生成的ID通常是唯一且不可预测的。因为在某个服务器上生成两个相同的newid的概率太小,几乎可以忽略不计。
二、newid的优点
1、newid是一个全球唯一的标识符,可以作为表中的主键。
2、不需要在数据库中插入数据即可生成newid。
3、由于newid是随机生成的,因此可以最大的提高数据的随机性,保证数据的安全性和唯一性。
三、使用newid的场景
1、应用需要在本地和远程生成唯一标识符。例如,客户端和服务端生成不同的newid。
2、需要在SQL Server中创建数据库表联结。
3、需要在SQL Server中判断当前是否已有数据存在,避免出现重复数据。
4、需要为已存在的数据项提供唯一标识符。
四、实际代码
CREATE TABLE `student` ( `id` char(36) NOT NULL DEFAULT newid(), `name` varchar(50) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
以上代码创建了一个名为`student`的表,其中`id`作为主键,使用newid作为默认值。
在insert语句中,可以不使用id字段,由MySQL自动为其生成新的newid值:
INSERT INTO `student` (`name`, `age`) VALUES ('张三', 18);
以上语句将会自动生成一个全球唯一的id值。
五、总结
newid作为全球唯一的标识符,具有极高的安全性和随机性。它不需要在数据库中插入数据,就可以生成唯一的ID值,使用场景十分广泛。在实际开发中,我们应该结合应用需求和系统环境来选择使用newid还是其他生成ID的方式。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/270416.html