[{"data":1,"prerenderedAt":486},["ShallowReactive",2],{"\u002Fother_memorandum\u002Fsql":3},{"id":4,"title":5,"body":6,"date":477,"description":478,"draft":479,"extension":480,"meta":481,"navigation":294,"path":482,"seo":483,"stem":484,"__hash__":485},"blog\u002F900.other_memorandum\u002F03.sql.md","SQLを扱う",{"type":7,"value":8,"toc":465},"minimark",[9,14,23,39,43,62,71,75,82,91,95,102,111,137,150,153,159,164,177,186,190,197,206,228,237,240,253,257,260,267,273,308,314,320,366,372,378,407,413,419,434,440,446,461],[10,11,13],"h2",{"id":12},"単一のキーをprimary-keyに設定する","単一のキーをPRIMARY KEYに設定する",[15,16,17,18,22],"p",{},"テーブルを作成する際に、主キーにしたいカラム名の直後に",[19,20,21],"code",{},"PRIMARY KEY","と指定する。",[24,25,30],"pre",{"className":26,"code":27,"language":28,"meta":29,"style":29},"language-sql shiki shiki-themes github-light","create table user(id int primary key, name text);\n","sql","",[19,31,32],{"__ignoreMap":29},[33,34,37],"span",{"class":35,"line":36},"line",1,[33,38,27],{},[10,40,42],{"id":41},"複数のキーをprimary-keyに設定する","複数のキーをPRIMARY KEYに設定する",[15,44,45,46,50,51,53,54,57,58,61],{},"複数のカラムを組み合わせて主キーにする場合（",[47,48,49],"strong",{},"複合主キー","）は、単一のキーの場合とは書き方が異なり、テーブル定義の最後に",[19,52,21],{},"節を追加する。\n括弧内に主キーに設定したいカラム名をカンマ区切りで記述します。例えば、",[19,55,56],{},"id","と",[19,59,60],{},"subId","を主キーに設定する場合は以下。",[24,63,65],{"className":26,"code":64,"language":28,"meta":29,"style":29},"create table user(id int, subId int, value text, ..., PRIMARY KEY(id, subId));\n",[19,66,67],{"__ignoreMap":29},[33,68,69],{"class":35,"line":36},[33,70,64],{},[10,72,74],{"id":73},"テーブルを内部結合する-inner-join","テーブルを内部結合する (INNER JOIN)",[15,76,77,78,81],{},"内部結合は、",[47,79,80],{},"結合条件に合致するレコードのみ","を結果として出力する。",[24,83,85],{"className":26,"code":84,"language":28,"meta":29,"style":29},"SELECT * FROM table_a INNER JOIN table_b ON table_a.id = table_b.id\n",[19,86,87],{"__ignoreMap":29},[33,88,89],{"class":35,"line":36},[33,90,84],{},[10,92,94],{"id":93},"テーブルを外部結合する-outer-join","テーブルを外部結合する (OUTER JOIN)",[15,96,97,98,101],{},"外部結合は、結合条件に合致しないレコードも",[19,99,100],{},"NULL","として出力する結合方法。\nすべてのデータを一覧として表示したい場合などに使われる。",[24,103,105],{"className":26,"code":104,"language":28,"meta":29,"style":29},"SELECT * FROM table_a LEFT JOIN table_b ON table_a.id = table_b.id\n",[19,106,107],{"__ignoreMap":29},[33,108,109],{"class":35,"line":36},[33,110,104],{},[15,112,113,114,117,118,121,122,125,126,129,130,133,134,136],{},"上記の例は",[47,115,116],{},"左外部結合","（",[19,119,120],{},"LEFT JOIN","または",[19,123,124],{},"LEFT OUTER JOIN","）。\n結合の基準となる左側のテーブル（",[19,127,128],{},"table_a","）のすべてのレコードが結果に含まれ、\n右側のテーブル（",[19,131,132],{},"table_b","）に対応するレコードがない場合は",[19,135,100],{},"が返される。",[15,138,139,140,117,143,146,147,149],{},"外部結合には",[47,141,142],{},"右外部結合",[19,144,145],{},"RIGHT JOIN","）もありますが、基本的には",[19,148,120],{},"を使用すれば、テーブルの順番を入れ替えることで同じ結果が得られる。",[10,151,152],{"id":152},"テーブルに新しいカラムを追加する",[15,154,155,158],{},[19,156,157],{},"ALTER TABLE","文を使う。",[160,161,163],"h3",{"id":162},"サンプル1-シンプルなalter文","サンプル1: シンプルなALTER文",[15,165,166,169,170,169,173,176],{},[19,167,168],{},"テーブル名","、",[19,171,172],{},"カラム名",[19,174,175],{},"型","を適切な値に置き換えて使用します。",[24,178,180],{"className":26,"code":179,"language":28,"meta":29,"style":29},"alter table テーブル名 add column カラム名 型;\n",[19,181,182],{"__ignoreMap":29},[33,183,184],{"class":35,"line":36},[33,185,179],{},[160,187,189],{"id":188},"サンプル2-デフォルト値付き","サンプル2: デフォルト値付き",[15,191,192,193,196],{},"新しいカラムにデフォルト値を設定したい場合は、",[19,194,195],{},"DEFAULT","節を追加します。",[24,198,200],{"className":26,"code":199,"language":28,"meta":29,"style":29},"alter table テーブル名 add column カラム名 型 default 初期値;\n",[19,201,202],{"__ignoreMap":29},[33,203,204],{"class":35,"line":36},[33,205,199],{},[15,207,208,211,212,215,216,219,220,223,224,227],{},[47,209,210],{},"例:"," ",[19,213,214],{},"user","テーブルに",[19,217,218],{},"age","カラムを",[19,221,222],{},"INT","型で追加し、デフォルト値を",[19,225,226],{},"18","に設定する場合",[24,229,231],{"className":26,"code":230,"language":28,"meta":29,"style":29},"alter table user add column age int default 18;\n",[19,232,233],{"__ignoreMap":29},[33,234,235],{"class":35,"line":36},[33,236,230],{},[160,238,239],{"id":239},"参考",[241,242,243],"ul",{},[244,245,246],"li",{},[247,248,252],"a",{"href":249,"rel":250},"http:\u002F\u002Fandroidhacker.blog94.fc2.com\u002Fblog-entry-63.html",[251],"nofollow","ど素人のAndroidアプリ開発入門 - カラムの追加",[10,254,256],{"id":255},"sql上でビット演算する","SQL上でビット演算する",[15,258,259],{},"SQLで利用可能なビット演算子は以下。",[261,262,264],"h4",{"id":263},"論理積-and",[47,265,266],{},"論理積 (AND)",[15,268,269,272],{},[19,270,271],{},"&","を使って、2つの値のビットごとの論理積を計算できる。",[24,274,276],{"className":26,"code":275,"language":28,"meta":29,"style":29},"-- 1 & 1 -> 1\nselect 1 & 1;\n\n-- 1 & 0 -> 0\nselect 1 & 0;\n",[19,277,278,283,289,296,302],{"__ignoreMap":29},[33,279,280],{"class":35,"line":36},[33,281,282],{},"-- 1 & 1 -> 1\n",[33,284,286],{"class":35,"line":285},2,[33,287,288],{},"select 1 & 1;\n",[33,290,292],{"class":35,"line":291},3,[33,293,295],{"emptyLinePlaceholder":294},true,"\n",[33,297,299],{"class":35,"line":298},4,[33,300,301],{},"-- 1 & 0 -> 0\n",[33,303,305],{"class":35,"line":304},5,[33,306,307],{},"select 1 & 0;\n",[261,309,311],{"id":310},"論理和-or",[47,312,313],{},"論理和 (OR)",[15,315,316,319],{},[19,317,318],{},"|","を使って、2つの値のビットごとの論理和を計算できる。",[24,321,323],{"className":26,"code":322,"language":28,"meta":29,"style":29},"-- 1 | 1 -> 1\nselect 1 | 1;\n\n-- 1 | 0 -> 1\nselect 1 | 0;\n\n-- 0 | 0 -> 0\nselect 0 | 0;\n",[19,324,325,330,335,339,344,349,354,360],{"__ignoreMap":29},[33,326,327],{"class":35,"line":36},[33,328,329],{},"-- 1 | 1 -> 1\n",[33,331,332],{"class":35,"line":285},[33,333,334],{},"select 1 | 1;\n",[33,336,337],{"class":35,"line":291},[33,338,295],{"emptyLinePlaceholder":294},[33,340,341],{"class":35,"line":298},[33,342,343],{},"-- 1 | 0 -> 1\n",[33,345,346],{"class":35,"line":304},[33,347,348],{},"select 1 | 0;\n",[33,350,352],{"class":35,"line":351},6,[33,353,295],{"emptyLinePlaceholder":294},[33,355,357],{"class":35,"line":356},7,[33,358,359],{},"-- 0 | 0 -> 0\n",[33,361,363],{"class":35,"line":362},8,[33,364,365],{},"select 0 | 0;\n",[261,367,369],{"id":368},"反転-not",[47,370,371],{},"反転 (NOT)",[15,373,374,377],{},[19,375,376],{},"~","を使って、値のすべてのビットを反転する。",[24,379,381],{"className":26,"code":380,"language":28,"meta":29,"style":29},"-- ~0 -> -1\nselect ~0;\n\n-- ~1 -> 0\nselect ~1;\n",[19,382,383,388,393,397,402],{"__ignoreMap":29},[33,384,385],{"class":35,"line":36},[33,386,387],{},"-- ~0 -> -1\n",[33,389,390],{"class":35,"line":285},[33,391,392],{},"select ~0;\n",[33,394,395],{"class":35,"line":291},[33,396,295],{"emptyLinePlaceholder":294},[33,398,399],{"class":35,"line":298},[33,400,401],{},"-- ~1 -> 0\n",[33,403,404],{"class":35,"line":304},[33,405,406],{},"select ~1;\n",[261,408,410],{"id":409},"左シフト-left-shift",[47,411,412],{},"左シフト (LEFT SHIFT)",[15,414,415,418],{},[19,416,417],{},"\u003C\u003C","を使って、指定したビット数だけ左にシフトする。",[24,420,422],{"className":26,"code":421,"language":28,"meta":29,"style":29},"-- 1 \u003C\u003C 2 -> 4 (2進数の01が100になる)\nselect 1 \u003C\u003C 2;\n",[19,423,424,429],{"__ignoreMap":29},[33,425,426],{"class":35,"line":36},[33,427,428],{},"-- 1 \u003C\u003C 2 -> 4 (2進数の01が100になる)\n",[33,430,431],{"class":35,"line":285},[33,432,433],{},"select 1 \u003C\u003C 2;\n",[261,435,437],{"id":436},"右シフト-right-shift",[47,438,439],{},"右シフト (RIGHT SHIFT)",[15,441,442,445],{},[19,443,444],{},">>","を使って、指定したビット数だけ右にシフトする。",[24,447,449],{"className":26,"code":448,"language":28,"meta":29,"style":29},"-- 4 >> 1 -> 2 (2進数の100が10になる)\nselect 4 >> 1;\n",[19,450,451,456],{"__ignoreMap":29},[33,452,453],{"class":35,"line":36},[33,454,455],{},"-- 4 >> 1 -> 2 (2進数の100が10になる)\n",[33,457,458],{"class":35,"line":285},[33,459,460],{},"select 4 >> 1;\n",[462,463,464],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":29,"searchDepth":285,"depth":285,"links":466},[467,468,469,470,471,476],{"id":12,"depth":285,"text":13},{"id":41,"depth":285,"text":42},{"id":73,"depth":285,"text":74},{"id":93,"depth":285,"text":94},{"id":152,"depth":285,"text":152,"children":472},[473,474,475],{"id":162,"depth":291,"text":163},{"id":188,"depth":291,"text":189},{"id":239,"depth":291,"text":239},{"id":255,"depth":285,"text":256},"2025-09-08T07:00:00+09:00","SQLに関するTIPSを紹介します。",false,"md",{},"\u002Fother_memorandum\u002Fsql",{"title":5,"description":478},"900.other_memorandum\u002F03.sql","bR5yvRXqVHETz6oWbRWc2MvH8cJxMj_4kKpw0kXD8fg",1781530000548]