ねこさんとへびさんの新人技術ブログ

新人エンジニアのねこさんとへびさんの、技術向上のためのブログです。

Tips!複数のデータを一括挿入したい - マルチプルインサート

マルチプルインサート - 複数のデータを一括挿入したい

uid user_name age
1 hebisan 10
2 nekosan 5


上記のUSERテーブルにデータを追加したい場合、インサート文を実行すると追加出来ます。

INSERT INTO user (uid, user_name, age) values (3, 'kaeru', 99);
INSERT INTO user (uid, user_name, age) values (4, 'inu', 55);

実行してみましょう。増えました。

uid user_name age
1 hebisan 10
2 nekosan 5
3 kaerukun 99
4 inukun 55


上記の方法、数件なら別に問題がないのですが、件数が多いと実行速度が遅くなる場合があります。
(特にトランザクションをはっている場合は顕著に遅くなります)
そこで1行のクエリで複数行のデータを挿入する方法。その名もマルチプルインサート!
valuesの次に入力したいデータの値を連ねていきます。

INSERT INTO user (uid, user_name, age) values (5, 'iruka', 21), (6, 'usami', 34), (7, 'nezukichi', 48), (8, 'hamuhamu', 48);

ではまた実行してみましょう。うん増えてます。

uid user_name age
1 hebisan 10
2 nekosan 5
3 kaerukun 99
4 inukun 55
5 iruka 21
6 usami 34
7 nezukichi 48
8 hamuhamu 48

COMMITや、通常INSERT文が実行される過程で付属的に行われる処理が一度で済むため早くなるようです。
ただ無制限に登録できるわけではありません。
MySQLのクエリの長さには上限があります。
ので実装する時はエラー制御しておいたほうがいいですね。

上限の確認

show variables like 'max_allowed_packet';

上記のクエリを実行してみましょう。

Variable_name Value
max_allowed_packet 1048576

私の環境では1M(デフォルト)であることが判りました。

上限の変更
上限をするにはmy.cnfファイルを編集してMySQLを再起動します。
my.cnf

max_allowed_packet=16MB

(byへびさん)

参考
MySQL :: MySQL 5.6 リファレンスマニュアル :: B.5.2.10 パケットが大きすぎます

Rpt!乗鞍岳登ってみた

今日は乗鞍岳に登ってきました♪
目指すは主峰剣ヶ峰(けんがみね)
初心者が気楽に登れる…らしい畳平からのルートです。(私はどうやら初心者以下)

f:id:tksptan:20180711214425j:plain

 

畳平~肩ノ小屋まで
勾配の少ない整備された歩道から、風光明媚な景色が楽しめました。

f:id:tksptan:20180711221317j:plain

歩道はこんな感じで山とは思えないほど歩きやすい。

f:id:tksptan:20180711221404j:plain


剣ヶ峰口~蚕玉岳

ここからは登山っぽくなってきます。
ここからは、ほぼガレ(大きめの岩)とザレ(小さめの岩と砂)の道。
ザレの方が一見安全そうですが、下りもの凄く滑りやすいのと油断するのとで、案外ザレの方が危険と感じました。

f:id:tksptan:20180711222527j:plain

f:id:tksptan:20180711223255j:plain

残念ながら山頂付近はガスガス
本来はここから山頂の神社が目視できるそうだ。

f:id:tksptan:20180711223319j:plain

蚕玉岳~剣ヶ峰
山頂直前は急坂です。しかもガレです。
登りはまぁいいです。下りのことを考えてみて下さい。
初心者コースということで危険箇所はないと言う前提ですが…怖いわ。
でもみなさん凄いスピード(当社比)で降りていくので、へっぴり腰でトロトロ降りている自分が恥ずかしい。なんとかせにゃなぁ。

f:id:tksptan:20180711224115j:plain

そして到着!
雲が多くて遠くの山は見えないですけどガスが晴れてよかったです。

f:id:tksptan:20180711224730j:plain

f:id:tksptan:20180711224758j:plain

下山
狭い山頂でお昼を食べて撤収です~。
疲れはしないが怖い下山のほうが嫌い。はやく慣れて好きになりたい。
往路は富士見岳に寄り道して帰りました。

f:id:tksptan:20180711225228j:plain

左奥のピークが富士見岳の山頂です。

メモ
登山道にかかる雪渓は、先週末の大雨で溶けきっていたらしく出現しなかった。

(byへびさん)

 

100の目標

勉強会レポのほうで毎回書いていますが、ねこへび勉強会の最終目標は「目標管理システム(仮)」を作ることです。
そこで実際にどんなデータを登録したいのかをイメージできるよう、先に目標をたててみることにしました。
要求定義レベルで、「100の目標をたてて、1つ達成するごとにLv1アップするようにしたい」と決まっています。

へびさんの100の目標

語学

1. TOEIC500点
2. TOEIC550点
3. TOEIC600点
4. 書籍「中学英語 レベル別問題集」2周目
5. 書籍「究めろ!リスニング解答力 TOEIC TEST」読了
6. 書籍「キクタン」読了
7. 書籍「中国語の文法書」読了
8. NHKゴガク まいにち中国語ラジオ講座 7月~3月 すべて聴く
9. Instagram開設。英語or中国語で日本の紹介をする。24本。
10. 英語ニュースを読む 24本
11. 中国語ニュースを読む 24本
12. 単語テストシート(CSV)を作成する format:日,英,中 500単語
13. 単語テストシート(CSV)を作成する format:日,英,中 1000単語
14. 単語テストシート(CSV)を作成する format:日,英,中 3000単語

技術

15. WordPress 公式サイトのチュートリアルを一読する
16. WordPress 勉強会でLTトークを2回する
17. WordPress『Outdoor Begginer』というブログ(サイト)を作成する
18. WordPress プラグインを3本作成する
19. WordPress AOuthを使った認証についてまとめる
20. CakePHP 公式サイトのチュートリアルを一読する
21. CakePHP 単語テストWEBアプリを作る
22. CakePHP 目標管理システム を作る(ねこへび勉強会)
23. 速習!JavaScriptを最後まで書く
24. Vue.js 公式サイト ガイド欄を一読する
25. 地図 Maps JavaScript API チュートリアルを一読する
26. 地図 Yahoo! JavaScriptマップAPIを使ってみる
27. 地図 国土地理院地図を表示する
28. 地図 GIS 勉強法を考える
29. 地図 同僚の作ったプログラムを読む(5時間)
30. 天気予報APIを使った何かを作る
31. Dockerでランプ環境を作る
32. DockerでSwift環境を作る
33. MySQL 8についてレポートを書く
34. MySQLレプリケーションを作成する
35. RDBMS パフォーマンスについてのレポートを書く
36. 漢のコンピュータ道の記事を10本読む
37. N予備校 スマートフォンアプリコース 終わらせる
38. ドットインストールiPhoneアプリ開発入門を視聴する
39. ドットインストールSwift 3入門を無料公開分、視聴する
40. iPhoneアプリを作成する
41. Progate 無料分全部 終わらせる
42. HTML5 MozillaHTML5項目を一読する
43. WebDriverについての紹介ブログを読む
44. WEBアプリ セキュリティについてのレポートを書く
45. 興味のあるジャンルのスライドを5本読む
46. 興味のあるジャンルのスライドを20本読む
47. 興味のあるジャンルのスライドを50本読む
48. 書籍「エンジニアのためのWordPress開発入門」読了
49. 書籍「リーダブルコード」読了
50. 書籍「体系的に学ぶ 安全なWebアプリケーションの作り方」読了
51. 書籍「初めての自動テスト ―Webシステムのための自動テスト基礎」読了
52. 書籍「絶対に挫折しない iPhoneアプリ開発「超」入門」読了
53. 書籍「SQLアンチパターン」読了
54. CCENT合格
55. CCENT問題集 一冊やる

数学

56. 数学ハイパーテキスト 数Aの範囲をやる
57. チャート式 数学A 終わらせる
58. 折り紙 折り方を10個覚える
59. 折り紙 折り方を30個覚える
60. 折り紙 折り方を50個覚える

登山

61. ハイキング 15回(近所の里山OK)
62. ハイキング 30回(近所の里山OK)
63. 読図講習に参加する
64. オンライン応急処置講習を受ける
65. 山頂でドリップコーヒーを飲む
66. 山頂でバーナーを使って調理する
67, 富士山登頂

運動

68. 5km走る(歩いたり休まずに)
69. 10km走る
70. 15km走る
71. 450分何かしら運動
72. 1350分何かしら運動
73. 2700分何かしら運動
74. 5400分何かしら運動
75. ヨガを始める

美容・健康
76. 5キロ痩せる
77. 握力測定器を買う
78. ネイルをする
79. 美容に良い食事を研究する

生活・習慣
80. 96万円貯金する
81. 資産運用を始める(外貨預金、ニーサなど)
82. ブログを60本書く
83. 副収入をつくる
84. 家計簿をつける

教養
85. 生物 高校教科書を買ってきて読む
86. 地学 高校教科書を買ってきて読む
87. 憲法の基本書を読み返す
88. 民法の基本書を読み返す
89. 刑法の基本書を読み返す
90. 技術語学、雑誌以外のジャンルの本を15冊読む
91. 映画を30本見る
92. 絵を描き始める-アナログ
93. 将棋 こまお 勝つ
94. 手芸をする

その他
95. はてなブックマークの あとで読むを100減らす
96. はてなブックマークの あとで読むを400減らす
97. 中国旅行
98. 駐車の練習を合計5時間やる
99. 大町、安曇野、諏訪、上田、白馬にそれぞれ一回ずつ行く
100. ライティング向上のため、コタツ記事をランダムに抽出したネタで40本書く

どうでしょうか(笑)
チャレンジ半分、基礎固め半分ぐらいです。
できるだけ具体的な目標にしてみましたが、目標というよりやることリストですね。
これをねこさんにも作ってもらって、二人であーだこーだ言いながらシステムの仕様を固めていきたいです。
(へびさん)

Rpt!第五回 ねこへび勉強会

本日は第五回目のねこへび勉強会でした。

勉強会のテーマは

ねこさんが主体になって目標管理のWEBシステムを作ること

です。
今月から月一の勉強会の他に、毎週水曜日に1時間、オンライン勉強会もすることにしました。

今回の勉強会でやったこと

開発環境の準備

目標管理システムはPHPで作成します。
開発環境はローカルマシンにXAMPPの最新版をインストールして、それを使うことにしました。
XAMPPとはウェブアプリケーションの実行に必要な、PHPPerlMariaDBApacheなどのソフトウェアを一括インストールして、特に設定をいじらなくてもそのまま動かすことのできるパッケージです。
扱いやすく初心者でも簡単。
なんも考えずにポチポチしていくだけでも出来る。(ポート被りがない限りは)

[手順]
1.以下からWindows向けのXAMPP最新版をダウンロード
https://www.apachefriends.org/jp/index.html

2.XAMPPインストール

3.コントロールパネルの説明
コントロールパネルでApatchMariaDBを起動する

4.確認
ブラウザのアドレスバーに http://localhost/ と打ち込んで、XAMPPのindexページが表示されることを確認

5.PHPファイルを作成し、ブラウザに表示する

  • PHPファイルはhtdocs以下に配置すること
  • Hello Hebisan! と出力してもらう

6.phpmyadmin経由でDBにアクセスする

Progateの紹介

オンラインプログラミング講座のProgateのアカウント取得
余裕があれば「SQL」を終わらせること

感想

ちょっとだけ進んだ気がした

tkstudy.hateblo.jp

(byへびさん)

Tips!別テーブルからレコードを抽出しインサートする - MySQL

別テーブルのレコードを抽出し一括登録する

VALUES句の代わりにSELECT句を使用する。
INTO句で指定したカラムの数と、SELECT文で表示するカラム数を一致させること

INSERT INTO table1 (column1, column2, column3)
SELECT column4, column5, column6
FROM table2
WHERE ...


Ex.
ユーザーがカートに入っている商品を購入したら、カートの中身をもとに購入ログのレコードを挿入する場合。

cartテーブル

id ユーザーID 商品コード 個数 サイズ ステータス
1 1102 PD0001 3 S wait
2 1102 ZA0021 1 S cancel
3 325 ZA0199 1 S cancel

purchase_logテーブル

id ユーザーID 商品コード 個数 サイズ

※各テーブルのidカラムがkeyであり、autoincrementが設定されている


以下のSQLを実行すると

INSERT INTO purchase_log (user_id, product_cd, num, size)
SELECT user_id, product_cd, purchase_num, size
FROM cart
WHERE  user_id = 1102 AND status = 'wait';

条件にマッチするレコードがpurchase_logテーブルに挿入される
purchase_logテーブル

id ユーザーID 商品コード 個数 サイズ
1 1102 PD0001 3 S

Memo!Windows 10 で管理者権限なしでhostsファイルを書き換える方法

権限エラーでhostsファイルの更新が出来ない時の対処方法

hostsファイルの場所
C:\Windows\System32\drivers\etc\hosts

このhostsファイルを更新しようとすると権限エラーで失敗してしまう時は、以下の手順を試す。

1. hostsファイルを編集権限のあるフォルダにコピーして(例えばデスクトップなど)、編集・保存する。
2. 1.のファイルを元の場所にペーストする。
3. 2.でアラートが表示されても構わず「続行」を選択する

するとhostsファイルの内容を書き換えることができる。