未経験・初心者向け「SQL鬼練12〜CREATE TABLE文を使ったテーブルの新規作成〜」

ここでは、初心者から実践的に学べるプログラミングスクール「ウェブカツ!!」PHP・MySQL部入門またはWEBサービス部を受講している生徒の方向けにさらに「SQL」についての理解度を上げるため特訓をしていきます。

ここからは、WEBサービス部から初めて出てくる内容を元に特訓をするので、まだWEBサービス部を1周見ていない人は見てからにしてください。

出題の回答は全て「SQL言語」を使って答えてください。

DBソフトの種類によってSQL言語は微妙に違いますが(と言っても基本の書き方はどれも同じなのでどのDBでも使える知識です)、ここでは「MySQL」を元にしたSQLの書き方を特訓していきます。

必ず実際にMySQLを動かしてphpMyAdminから問題のテーブルを作成してSQLを実行(「SQL」というタブから行えます)しましょう。(じゃないと練習にならないので)

鬼練12:テーブルつくんのめんどくない?

毎回、毎回、テーブル作らせやがって。

そうは思いませんか?

そう思ってもらいたいんです。

だって、

管理画面からわざわざ作る必要ないんだもん。

仕様書

下記要件に従ってSQLを記述してください。

下記の構造のテーブル「users」をphpMyAdminから「SQL文」を使って作成してください。

 

ヒント

テーブルを今まで新たに作るにはphpMyAdminから手で一個一個カラムや項目を入力して作りましたね。

初心者には最初はそれが分かりやすいんですが、大抵の現場じゃそんな事やりません。

phpMyAdminで操作しているほとんどは、内部で「SQL文」を生成してただ実行してるだけなんです。

phpMyAdminさんがあなたの操作を元にSQL文ちゃんと作ってくれてるってことですね。

 

なので、今回は「テーブルを新規作成する」という操作もちゃんとSQL文で書いてみましょう。

もちろん、sql文を書き慣れてないとGUI(管理画面から)で操作する方が楽に感じるんですが、それだと複数人で開発する際などに困った事が起こります。

 

複数人でローカル環境で開発をする場合、当たり前ですがそれぞれのローカル環境にDBを用意して、皆同じテーブルを作る必要がありますね?

10人いたら、10人それぞれ作らなきゃいけないわけです。

しかも、テーブルは一回作って終わりなことはほとんどないですよね。

サービスが絶えず成長するにつれてテーブルも増えたり、カラムも増減したり、構造が変わりますから。

 

その度に

 

「○○テーブルの○○カラムを削除し、○○カラムの名前を変更し、○○カラムをNOT NULLからNULL値でも大丈夫なように変更してください。

操作方法は、カラムの○○項目を〜〜〜」

 

と周知させるんでしょうか?

めんどっ。

めんどいっすよね、それ。

まぁ、エンジニアなら操作方法まで説明せずとも「このカラムNULL許容する形(カラムを空のままINSERT出来るってこと)に変更になったから〜」で分かりますけどね。

 

それよりも、まずその現場のリーダーなり誰かがまずその変更や新規作成のSQL文を書いて

 

「このSQLを各自流しといてください(実行してくださいって意味)」

 

って方が楽ですよね。

 

しかも、GUIで操作する場合のデメリットは

 

操作の内容が記録されない

 

ってことです。

あとあとで「どこをどう変えたんだっけ?」というのが分からなくなります。

当の本人が記憶しておくしかないわけですね。

人間って忘れる生き物なのに?

(ここらへんの話はLaravel部やRubyonRails部でやってるのでみてみてください)

 

それよりかは、「SQL文」という形で残しておけばあとあとで何が変更されたか、作られたのかが分かりますね。

そのSQL文を保存しとけば、今回の鬼練のように新たにまたテーブルを1から作り直すときにSQLを一発流すだけで完成です。効率いいですよね。

 

では、今回のそのテーブルを新規作成するSQL文は?というと

 

「CREATE文」

 

というものを使います。

CREATE文はDB内の色々なものを作る時に使うものなので、その中でも

 

「CREATE TABLE文」

 

を使えばいいんです。

あとはググってみましょうね。

 

答え

では、それぞれのテーブルのSQL文の答えです。

わかってると思いますが、改行してみやすくしてるだけで、改行はしてもしなくてもいいです。

このSQL文をphpMyAdminのSQLタブから流してやるだけですね。

 

書き方ですが、

という書き方になります。

カラムが複数あるなら「,(カンマ)」でどんどん繋げてあげるだけですね。

 

最後の

に関しては、もうおまじないだと思ってください。

今は「INNODB」という内部のエンジンを使う事以外まずないですし、文字コードもUTF-8が当たり前なので。

 

idカラムの場合

という形でオプションを色々つけてますね。

 

オプションの順番は決まってないのでどの順番でも大丈夫です。(確か、いくつかは順番決まってたようなきがするけど忘れた)

オプションも大文字でも小文字でもいいですが、みやすいように大文字で書いているだけです。

オプションの名前は決まっているので、決まった名前でつけてやる必要があります。

MySQLでテーブル作成をする「CREATE TABLE」

 

INT型はVARCHAR型と違って、カッコをつけて「(11)」というように数字を指定しなくても勝手に「int(11)」でテーブルが作られます。

 

これで、今後テーブルを毎回作る面倒さから解放されましたね。

え、やっぱ管理画面でポチポチした方が楽だって?

そりゃそうだ。慣れてないだけだもの。