TOP

このサイトは?

備忘録用のWikiです。主にWeb技術方面や、iOSやAndroidなどスマホアプリ開発周りをメモしています(する予定ですw)。

更新履歴

2016/04/10
デザインを変更しました。
2016/03/27
2001年ごろに執筆していた「Webプログラミング」を掲載しました。
2016/03/27
日本語が入ったURLを、英数字の文字列に変更しました。旧URLからはリダイレクトがかかります。
2016/03/22
さぼっていた更新を再開しました
2014/08/??
旧サイト(katsubemakito.net/cgiperl/)からの引越しを行いました

新着ページ

[SQL] 複数レコードを1回のINSERTでまとめて挿入する

構文

VALUESをカンマ(,)で区切って指定するだけです。

INSERT INTO `テーブル名` (id, name)
  VALUES   (1, 'foo')
         , (2, 'bar')
         , (3, 'hoge');

通常のINSERTと同様に、すべての列に順番通りデータを追加する場合はカラム名の記述は不要です。

INSERT INTO `テーブル名`
  VALUES   (1, 'foo')
         , (2, 'bar')
         , (3, 'hoge');

実行例

mysql> insert into test(id, name)
    -> values    (1, 'foo')
    ->         , (2, 'bar')
    ->         , (3, 'hoge');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from test;
+----+------+
| id | name |
+----+------+
|  1 | foo  |
|  2 | bar  |
|  3 | hoge |
+----+------+
3 rows in set (0.00 sec)

参考

関連書籍

2016/04/24 17:15 · 勝部麻季人

[SQL] レコードがなければINSERT、あればUPDATEする

ここではMySQLでの実行方法を取り上げます。

構文

INSERT句で、ON duplicate key updateを利用することで実現できます。

INSERT INTO `テーブル名` (id, name) 
  VALUES (1, 'りんご')
ON duplicate KEY UPDATE
    id   = 1
  , name = 'ぱんだ';

ここでは次のようなテーブルを想定しています。 id列がプライマリとなりますので、idが重複するINSERT文の場合はUPDATEが実行されます。

mysql> desc test;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(64) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

実行例

mysql> select * from test;
+----+---------+
| id | name    |
+----+---------+
|  1 | foobar  |
|  2 | katsube |
+----+---------+

mysql> INSERT INTO test (id, name) VALUES ( 1, "りんご") ON duplicate key update id=1, name="ぱんだ";                                                

mysql> select * from test;
+----+---------+
| id | name    |
+----+---------+
|  1 | ぱんだ   |
|  2 | katsube |
+----+---------+

参考

関連書籍

2016/04/23 05:20 · 勝部麻季人

[Git] リポジトリのクローンを作成する

実行例

コマンドは git clone [リポジトリURI] [出力先ディレクトリ名] です。

$ git clone ssh://username@repos.mi53.net:10022/var/repos/test.git test
Cloning into 'test'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.

上記例でいうtestディレクトリにはリポジトリに登録されているファイル群と、.gitディレクトリが作成されます。

$ ls -a test
.  ..  .git  hello.txt

 対応プロトコル

Gitがサポートしているプロトコルは以下です。

プロトコル フォーマット 備考
ssh ssh://[user@]host.xz[:port]/path/to/repo.git ssh://katsube@example.com/var/repos/repo.git  
http (https) http[s]://host.xz[:port]/path/to/repo.git/ http://example.com/var/repos/repo.git  
git git://host.xz[:port]/path/to/repo.git/ git://example.com/var/repos/repo.git 標準では暗号化されません
file file:///path/to/repo.git/
/path/to/repo.git/
~/path/to/repo.git/
file://var/repos/repo.git ローカルのファイル参照用
ftp (ftps)ftp[s]://host.xz[:port]/path/to/repo.git/ ※推奨されません
rsyncrsync://host.xz/path/to/repo.git/ ※推奨されません

参考

関連書籍

濱野 純(Junio C Hamano)
ISBN 4798023809
¥ 21,356

大塚 弘記
ISBN 477416366X
¥ 2,786

池田 尚史, 藤倉 和明, 井上 史彰
ISBN 4774164283
¥ 2,894

failed to fetch data: unkown error

2016/04/18 21:19 · 勝部麻季人

[Git]ブランチをマージする

ブランチAで作成/変更した内容を、ブランチBに反映(結合、統合)することをマージと言います。

git merge

コマンドはgit merge [統合したいブランチ名] になります。

以下の例ではdevelopブランチで作成した内容を、masterブランチに反映しています。

$ git checkout master
$ git merge develop
Merge made by the 'recursive' strategy.
 conf.php       |  9 ++-------
 model/base.php | 57 +++++++++++++++++++++++++++++++++++----------------------
 2 files changed, 37 insertions(+), 29 deletions(-)

最後にpushしてリモートに送信すれば作業完了です。

git rebase

gitには git merge の他に git rebase と呼ばれるコマンドがあり、こちらでも同様に作成・変更した内容をマージすることが可能です。ファイルに与えられる影響だけ見るとmergeもrebaseも変わりありません。では何が違うのでしょうか?

※ToDo あとで図を交えて追記する

トラブルシューティング

更新が衝突したら?

※ToDo あとで追記する

参考

関連書籍

濱野 純(Junio C Hamano)
ISBN 4798023809
¥ 21,356

大塚 弘記
ISBN 477416366X
¥ 2,786

池田 尚史, 藤倉 和明, 井上 史彰
ISBN 4774164283
¥ 2,894

failed to fetch data: unkown error