我想创建一个存储过程来在‘Video’表中插入随机数据.我已经为UserProfile表生成了30,000条记录数据.

注意:用户名是视频表中的FK元素.

CREATE TABLE UserProfile 
(
  Username VARCHAR(45)  NOT NULL  ,
  UserPassword VARCHAR(45)  NOT NULL  ,
  Email VARCHAR(45)  NOT NULL  ,
  FName VARCHAR(45)  NOT NULL  ,
  LName VARCHAR(45)  NOT NULL  ,
  Birthdate DATE   ,
  Genger VARCHAR(10)  NOT NULL  ,
  ZipCode INT    ,
  Image VARCHAR(50)      ,

  PRIMARY KEY(Username)
);
GO

CREATE TABLE Video 
(
  VideoId INT  NOT NULL DEFAULT 1000 ,
  Username VARCHAR(45)  NOT NULL  ,
  VideoName VARCHAR(160)  NOT NULL  ,
  UploadTime DATE    ,
  TotalViews INT    ,
  Thumbnail VARCHAR(100)      ,

  PRIMARY KEY(VideoId),
  FOREIGN KEY(Username)
    REFERENCES UserProfile(Username)
);
GO

推荐答案

生成随机数据并不太困难,即使在SQL中也是如此

例如,从userprofile表中获取随机用户名.

BEGIN
-- get a random row from a table
DECLARE @username VARCHAR(50)
SELECT @username = [Username] FROM (
    SELECT ROW_NUMBER() OVER(ORDER BY [Username]) [row], [Username]
    FROM [UserProfile]
) t 
WHERE t.row = 1 + (SELECT CAST(RAND() * COUNT(*) as INT) FROM [UserProfile])

print(@username)
END

要生成一个随机整数...

BEGIN
-- get a random integer between 3 and 7 (3 + 5 - 1)
DECLARE @totalviews INT
SELECT @totalviews = CAST(RAND() * 5 + 3 as INT)
print(@totalviews)
END

要生成随机varchar字符串,请执行以下操作

BEGIN
-- get a random varchar ascii char 32 to 128
DECLARE @videoname VARCHAR(160)
DECLARE @length INT
SELECT @videoname = ''
SET @length = CAST(RAND() * 160 as INT)
WHILE @length <> 0
    BEGIN
    SELECT @videoname = @videoname + CHAR(CAST(RAND() * 96 + 32 as INT))
    SET @length = @length - 1
    END
print(@videoname)
END

最后是一次随机约会

BEGIN
-- get a random datetime +/- 365 days
DECLARE @uploadtime DATETIME
SET @uploadtime = GETDATE() + (365 * 2 * RAND() - 365)
print(@uploadtime)
END

Database相关问答推荐

prisma 中的隐式或显式多对多关系

如何使用 Gramex FormHandler 动态(在运行时)创建或更改数据库模式

MySQL FIND_IN_SET 的对面

您如何使两个相关但独立的系统保持同步?

如何将 Grails 3.0 连接到我的本地 Mysql 数据库

Postgres pg_dump 每次都以不同的顺序转储数据库

Java 数据库连接池(BoneCP vs DBPool vs c3p0)

如何找到 Oracle 数据库的 URL?

PHP - 数据库抽象层使用静态类与单例对象?

我需要在这个 Django 模型中添加一个 db_index 吗?

更改列名 Rails

在内存中创建 SQLite 数据库

谁有维基数据库?

如何将 Android 手机上的 SQLite 数据库与服务器上的 MySQL 数据库同步?

如何从 PostgreSQL 数据库中的文本文件加载数据?

在 postgresql 中将 varchar 列升级为枚举类型

如何动态更改 Ruby on Rails 中所有模型的 Active Record 数据库?

MySQL中的eq_ref和ref类型是什么意思解释

数据库触发器的命名约定

使用 Django 的复合/复合主/唯一键