用MySQL里的Rand()生成 不连续重复 的随机数年龄以及随机姓名字符串
用MySQL里的Rand()生成 不连续重复 的随机数年龄以及随机姓名字符串
前言:
RAND函数,返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。
一,朋友问题描述如下:
(1),有一个用户表,有id,用户的真实名字,年龄。
通过一段存储过程来实现向表里插入100数据,其中年龄随机
姓名
姓氏:’赵钱孙李周吴郑王’;,随机取出一个
名字:’一段文字字符串’,随机的取出一个字或者两个字
要求:随机的名字不能出现连续重复。
(2),然后我写出的代码如下:
-- 创建用户表,在project里
create table user1 (
id int not null primary key auto_increment,
name varchar(3) not null,
age tinyint not null
) charset utf8;
-- 创建存储过程
delimiter $$
create procedure pro3(num int)
begin
declare fname char(1);
declare name1 char(1);
declare name2 char(1);
declare fullname varchar(3);
declare age int;
declare i int default 1;
while i set fname = substring('赵钱孙李周吴郑王',floor(1+8*rand()),1); -- 姓
set name1 = substring('一二三四五六七八九十甲乙丙丁',floor(1+14*rand()),1); -- 抽一个字
set name2 = substring('一二三四五六七八九十甲乙丙丁',floor(1+14*rand()),1); -- 抽一个字
if round(rand())=0 then -- 创造一个局部变量fullname代表全名,随机确定是两个字还是三个字
set fullname = concat(fname,name1);
end if;
if round(rand())=1 then
set fullname = concat(fname,name1,name2);
end if;
set age = floor(20+31*rand()); -- 年龄为20-50的随机
insert into user1 values(null,fullname,age); -- 插入数据
set i = i + 1;
end while;
end
$$
delimiter ;
(3),执行结果
call pro3(100); -- 执行过程
出现的结果出乎意料,,出现了很多连续一样的姓名,执行结果如下:
mysql> select * from user1;
+-----+--------+-----+
| id | name | age |
+-----+--------+-----+
| 1 | 赵三 | 28 |
| 2 | 孙一四 | 50 |
| 3 | 郑丁九 | 42 |
| 4 | 王八 | 47 |
| 5 | 钱六 | 48 |
| 6 | 李五 | 26 |
| 7 | 李五 | 41 |
| 8 | 郑二三 | 22 |
| 9 | 孙七六 | 24 |
| 10 | 孙三 | 21 |
| 11 | 钱甲二 | 26 |
| 12 | 孙丙 | 42 |
| 13 | 孙丙 | 37 |
| 14 | 赵六丁 | 24 |
| 15 | 赵六丁 | 40 |
| 16 | 王十七 | 28 |
| 17 | 孙九 | 22 |
| 18 | 李二 | 23 |
| 19 | 李十 | 23 |
| 20 | 赵丁甲 | 50 |
| 21 | 钱一九 | 49 |
| 22 | 钱一九 | 22 |
| 23 | 钱一九 | 30 |
| 24 | 钱一九 | 30 |
| 25 | 孙五 | 46 |
| 26 | 吴三十 | 39 |
| 27 | 赵七二 | 50 |
| 28 | 赵七二 | 29 |
| 29 | 孙甲九 | 20 |
| 30 | 郑乙十 | 35 |
| 31 | 周一 | 50 |
| 32 | 吴甲七 | 50 |
| 33 | 李丁十 | 47 |
| 34 | 李丁十 | 29 |
| 35 | 李丁十 | 40 |
| 36 | 孙五 | 47 |
| 37 | 赵九丙 | 41 |
| 38 | 郑三八 | 43 |
| 39 | 钱七 | 37 |
| 40 | 钱二一 | 24 |
| 41 | 王七五 | 45 |
| 42 | 李十四 | 24 |
| 43 | 李十四 | 28 |
| 44 | 孙甲甲 | 49 |
| 45 | 郑五 | 38 |
| 46 | 赵甲 | 27 |
| 47 | 王三 | 39 |
| 48 | 王三 | 26 |
| 49 | 王三 | 22 |
| 50 | 王三 | 30 |
| 51 | 钱一九 | 44 |
| 52 | 赵四 | 30 |
| 53 | 王十九 | 50 |
| 54 | 王十九 | 34 |
| 55 | 王十九 | 40 |
| 56 | 周丙甲 | 20 |
| 57 | 孙十 | 47 |
| 58 | 王丙 | 32 |
| 59 | 王六 | 43 |
| 60 | 吴三甲 | 29 |
| 61 | 王乙 | 26 |
| 62 | 赵甲 | 46 |
| 63 | 赵甲 | 23 |
| 64 | 王八丙 | 25 |
| 65 | 王八丙 | 30 |
| 66 | 周乙六 | 50 |
| 67 | 吴五八 | 21 |
| 68 | 孙五 | 42 |
| 69 | 赵丙六 | 48 |
| 70 | 周三 | 48 |
| 71 | 周三 | 47 |
| 72 | 李乙 | 46 |
| 73 | 李乙 | 40 |
| 74 | 吴十五 | 45 |
| 75 | 赵十五 | 36 |
| 76 | 赵十五 | 25 |
| 77 | 李十 | 35 |
| 78 | 李甲 | 38 |
| 79 | 周三一 | 33 |
| 80 | 周三一 | 48 |
| 81 | 钱六六 | 33 |
| 82 | 钱六六 | 49 |
| 83 | 孙十六 | 36 |
| 84 | 王二甲 | 48 |
| 85 | 王二甲 | 39 |
| 86 | 王乙 | 30 |
| 87 | 郑三 | 21 |
| 88 | 赵二五 | 29 |
| 89 | 周丙丙 | 43 |
| 90 | 钱七乙 | 35 |
| 91 | 钱七乙 | 47 |
| 92 | 钱七乙 | 38 |
| 93 | 孙乙 | 29 |
| 94 | 周乙 | 32 |
| 95 | 郑乙十 | 46 |
| 96 | 郑乙十 | 37 |
| 97 | 吴八 | 46 |
| 98 | 吴十八 | 42 |
| 99 | 王乙四 | 30 |
| 100 | 吴九十 | 50 |
--------------------------------------分割线 --------------------------------------
Ubuntu 14.04下安装MySQL
《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF
Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL
Ubuntu 14.04下搭建MySQL主从服务器
Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群
Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb
MySQL-5.5.38通用二进制安装
--------------------------------------分割线 --------------------------------------

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

InnoDB使用redologs和undologs確保數據一致性和可靠性。 1.redologs記錄數據頁修改,確保崩潰恢復和事務持久性。 2.undologs記錄數據原始值,支持事務回滾和MVCC。

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。MySQL以其高性能、可扩展性和跨平台支持著称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

MySQL索引基数对查询性能有显著影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。
