簡體   English   中英

如何在MySQL中創建函數以在表中添加元素?

[英]How can I create a function in MySQL for add elements in a table?

我想在這樣的表中添加元素:

Codigo  Name   Lastname   Date    Sex    Salary
1       name1  lastname1  random  random random
2       name2  lastname2  random  random random
3       name3  lastname3  random  random random
4       name4  lastname4  random  random random

日期是2000年至2015年之間的任意日期

性別是隨機布爾值1或0

薪水是500.00至5000.00之間的隨機浮動

那可能嗎? 我怎樣才能做到這一點? 我什至不知道該怎么做

CREATE OR REPLACE FUNCTION inserting(integer varying, character varying, character varying, date, boolean, float varying) RETURNS void
AS $$
begin
insert into trabajador(codigo, name, lastname, date, sex, salary) values ($1,$2,$3,$4,$5,$6);
end;
$$
LANGUAGE 'plpgsql';

使用rand()生成一個介於0和1之間的浮點數。然后,類似這樣的事情將生成您的隨機數據:

insert into yourtable values
( 1,
 'John',
 'Doe', 
 DATE_ADD('2000-01-01', INTERVAL (RAND()*15*365) DAY), 
 FLOOR(RAND()*10) % 2, 
 500+ROUND(RAND() * 4500,2)
);

SQL小提琴演示

這應該是一個過程,而不是一個函數,因為它不會返回任何東西。 然后在過程中使用WHILE循環插入許多行。

創造許多

DELIMITER $$
CREATE PROCEDURE inserting(rowcount INT)
BEGIN
    SET @i = 0;
    SET @codigo = (SELECT MAX(codigo)+1 FROM trabajador);
    WHILE @i < rowcount
    DO
        SET @name = CONCAT('name', @codigo);
        SET @lastname = CONCAT('lastname', @codigo);
        SET @date = DATE_ADD('2000-01-01', INTERVAL (RAND()*15*365) DAY);
        SET @sex = FLOOR(RAND() * 2);
        SET @salary = 500.0 + RAND() * 4500.0;
        INSERT INTO trabajador (codigo, name, lastname, date, sex, salary) 
            VALUES (@codigo, @name, @lastname, @data, @sec, @salary);
        SET @i = @i + 1;
        SET @codigo = @codigo + 1;
    END WHILE;
END;
$$
DELIMITER ;

要添加500行,請使用CALL inserting(500);

使用RAND()函數

CREATE TABLE tbl(Codigo INT(6) NOT NULL AUTO_INCREMENT PRIMARY KEY
                ,Name VARCHAR(25) NOT NULL
                ,LastName VARCHAR(25) NOT NULL
                ,Date DATE NOT NULL
                ,Sex BOOLEAN NOT NULL
                ,Salary FLOAT NOT NULL
                );

INSERT INTO tbl(Name, LastName, Date, Sex, Salary)
VALUES('name1',
       'lastname1',
       FROM_UNIXTIME(UNIX_TIMESTAMP('2000-01-01 00:00:00') + FLOOR(0 + (RAND() * 157680000))),
       FLOOR(RAND() * 10) % 2,
       FLOOR(RAND() * 5000) + 500);   

SQLFiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM