①、②は「paiza.io」の制御のお話で当方専門外なので、他の詳しい方に譲ります。
(実際、ローカルにMySQLをインストールし、A5:SQLなどのツールでSELECT文を発行すると意識せずとも初期設定でカラム名は表示されますし)
③についてのみ回答します。
質問者様はNULLの場合は、
「空白文字」を出力したいということをおっしゃってると思いますが、
以下の2点の工夫が必要です。
(MySQLだったら2点目は考慮せずに動くかもしれませんが・・・)
1.NULLの場合には代替値を返却できる関数を利用する
2.DATE型自体には空白文字はないので型を文字列型に統一する意味でキャストを行う
今回のようなカラムごとに固有の処理を行う場合は、
SELECT * FROM テーブル名のような記載はできません。
前提としてカラム名を直接指定するSELECT文に置き換えましょう。
では先ず1.ですが、
MySQLにも標準SQL関数の1つである、COALESCE関数が実装されています。
この関数は最初にNULLとならない値を返すという機能なので、
下記のようにするとカラム1がNULLの場合に「hoge」という文字が返却されるようになります。
COALESCE(カラム1, 'hoge')
似たような機能として、
IFNULL関数というものがMySQLには存在しますが、
ベンダ独自実装で他のDBMSには存在しないため、
COALESCEの利用をお勧めします。
次に2.についてですが、
COALESCE関数では一般的には出力する型を統一しなければならないというルールがあるので、
そのルールに則ってやる必要があります。
つまる所、日付型を文字列型にキャストしましょうというお話です。
以上を踏まえて、
出力されている日付フォーマットを変更せずに、でもNULLの場合は空白文字を出力したい場合は以下のようになります。
SQL
1-- EndDateのみを要望通り出力するクエリ
2SELECT
3 -- AS以降はカラム別名を指定。
4 -- 今回はこうしないとカラム名が「COALESCE(b.EndDate, '')」みたいになる
5 COALESCE(DATE_FORMAT(b.EndDate, '%Y-%m-%d'), '') AS EndDate
6FROM
7 BelongTo b
8;
ご参考までに。