SQLの窓

2016年05月31日


DB のデータを簡単に沢山作る方法は inner join

ページ処理のテストを行う為に、元を 7 件として、56 件のデータに増やす方法です。それぞれの SQL は、RDBMS 毎に動作するように書き換えれば実行可能です。

元のテーブル

既に 7 件のテストデータがあり、phpMyAdmin でエクスポートしています。phpMyAdmin はたいていのレンタルサーバで用意されていると思いますし、最新(4.6.2/php5.5以上)をダウンロードして解凍してアップロードするだけで動作します( PHP6 の場合は、最新の phpMyAdmin は動作しないようでした。Windows PC でも普通に動きます )
CREATE TABLE IF NOT EXISTS `board` (
  `row_no` serial,
  `body` varchar(1000),
  `subject` varchar(200),
  `from` varchar(20),
  `pdate` datetime,
  `cdate` datetime,
  primary key(`row_no`)
)

※ row_no は自動採番列です

データ

以下はエクスポートしたデータです。
-- phpMyAdmin SQL Dump
-- version 4.4.15.5
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: 2016 年 5 月 28 日 13:26
-- サーバのバージョン: 5.6.17
-- PHP Version: 5.4.13

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `lightbox`
--

--
-- 挿入前にテーブルを空にする `board`
--

TRUNCATE TABLE `board`;
--
-- テーブルのデータのダンプ `board`
--

INSERT INTO `board` (`row_no`, `body`, `subject`, `from`, `pdate`, `cdate`) VALUES
(3, '「日本と米国が力を合わせて、世界の人々に希望を生み出すともしびとなる」。安倍晋三首相は27日、オバマ米大統領とともに訪れた広島市の平和記念公園で、強固な日米同盟をアピールした。昨年4月、米上下両院合同会議での演説で先の大戦への「痛切な反省」を表明した首相からは、今回のオバマ氏の広島訪問を、日米関係を新たな段階に進める節目にしたい思惑が透けて見える。', '<伊勢志摩サミット>閉幕 親密な日米 首相腐心', '毎日新聞', '2016-05-28 13:15:04', '2016-05-09 11:52:51'),
(10, '電子コミック販売サイト「漫画onWeb」や電子書籍取次サービス「電書バト」などを運営する漫画家の佐藤秀峰さんは、2月に伝書バトが実施した、電子コミック131冊を各11円で販売するセールの効果で、2月の売り上げ総額が3億円を超えたことを明らかにした。売り上げトップだった佐藤さん本人には、1億3000万円以上の印税が入ったという。', '電子コミック「11円」セールで売り上げ3億円超 トップ作家に印税1億3000万円 「常識打ち破る数字」', 'ITmedia ニュース', '2016-05-28 13:22:37', '2016-05-14 20:07:14'),
(11, 'タカタ製エアバッグの欠陥問題で、国土交通省は27日、火薬の劣化を防ぐ乾燥剤が入っていないエアバッグについて、新たに約700万台がリコール(回収・無償修理)対象になると明らかにした。\r\n\r\nメーカー各社に順次リコールを求め、2018年度末までに改修を済ませたいとしている。\r\n\r\n一連の問題では、国内で延べ約1259万台がリコールされており、対象は2000万台規模に達することになる。\r\n', 'リコール2000万台規模に=新たに700万台、タカタ製エアバッグ', '時事通信', '2016-05-28 13:18:36', '2016-05-14 20:08:07'),
(12, '酒の行き過ぎた安売りに待ったをかける規制は、大手スーパーやディスカウント店などの安値攻勢で経営が苦しくなった「町の酒屋さん」を救済する狙いがある。だが、厳しい罰則を恐れて、業者が萎縮し、健全な価格競争まで妨げてしまうリスクもはらんでいる。', '改正酒税法成立 量販店萎縮、価格形成ゆがみも', '産経新聞', '2016-05-28 13:17:26', '2016-05-14 20:08:11'),
(14, '広島の原爆資料館はオバマ米大統領が訪れた後の27日夜に記者会見し、オバマ氏が佐々木禎子さんの折り鶴や資料などを見て、自身も4羽の折り鶴を資料館に寄贈したと説明した。佐々木禎子さんは、原爆症で12歳で亡くなり、「原爆の子の像」のモデルとして知られている。政府関係者によると、大統領が自ら折ったもので、小中学生に手渡したという。志賀賢治館長は「感慨深げな表情で、岸田文雄外相の説明を聞いていた。視察時間は短く残念だったが、伝えたかったことを伝えられたのではないか」と語った。', '<米大統領広島訪問>オバマ氏、4羽の折り鶴 その思いは…', '毎日新聞', '2016-05-28 13:16:09', '2016-05-09 11:52:51'),
(21, '日立製作所は27日、中国・広州市の高層ビル「広州周大福金融中心」向けに受注したエレベーターが分速1200メートル(時速72キロ)を記録し、世界最高速度を達成したと発表した。14日に行った走行試験で世界最高速度を達成。今秋の稼働に向け、据え付けや調整作業を進めている。', '日立、エレベーターの最高速度達成', 'SankeiBiz', '2016-05-28 13:19:27', '2016-05-14 20:08:07'),
(22, 'レンタルビデオ店「TSUTAYA(ツタヤ)」を運営するカルチュア・コンビニエンス・クラブ(CCC)と民泊仲介サイト世界最大手の米Airbnb(エアビーアンドビー)が27日、事業提携を発表した。訪日観光客の増加で宿泊ニーズが高まる中、「ツタヤ」や「Tポイント」を展開するCCCのノウハウで日本市場を開拓し、一般住宅に有償で客を泊める民泊サービスの定着を目指す。', '米民泊サイト最大手が日本進出でツタヤと提携 外国人の訪日客に照準', '産経新聞', '2016-05-28 13:20:24', '2016-05-28 13:20:24');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


inner join で増殖して追加

inner join で条件を書かなければ、n 行あれば、n x n 行の結果を返します。その際、同じ表を a と b で別名定義して自己結合させます。

結果の行は、board の 定義に合わせて a 表のみから取得して、row_no は 自動採番なので null as row_no として先頭に作成します。

その結果をさらに board に insert する事によって、row_no は、新しく自動採番された行として挿入されます。その結果 a( 最初の行数 ) + n( 元の行数 ) * n( 元の行数 ) の行を登録する事になります。
insert into board
select
	null as row_no,a.body,a.subject,a.from,a.pdate,a.cdate
	from board a
inner join `board` b
もう一回すると 3192 件になるので、これ以上は注意して実行する必要があります。

乱数関数で日付データのみ、ばらつかせる

ここではさほど厳密にバラつかせる必要は無かったので、時間部分に適用しています。
※ PIPES_AS_CONCAT は、文字列結合に Oracle と同じ || を使用可能にする設定です。
SET sql_mode='PIPES_AS_CONCAT';

update board set pdate = cast('2016/05/28 0' || truncate(Rand()*10,0) || ':00' as datetime)



【MySQLの最新記事】
posted by lightbox at 2016-05-31 19:36 | MySQL | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり