読者です 読者をやめる 読者になる 読者になる

Engineer as a Lifestyle @tenkoma

tenkoma's testing blog

初めてのSQL読書メモ

制約(constraint)(出てきた順)

  • 主キー制約(primary-key constraint)
  • 検査制約(check constraint)
  • 外部キー制約(foreign-key constraint)
    • Insertなど実行時、制約が適用されるのはMysqlの場合、InnoDBストレージエンジンのみ

その他のメモ

  • テーブルの主キーにはidとか付けるけど、外部キーにすることも考えると、prefixを付けた方がいいかもしれない。たとえばpersonテーブルならperson_idといった感じで。
  • ORDER BY節を指定しない場合データの順番は保証されない
  • enumデータ型に違反するデータのUPDATEは、警告は出るが、SQL文は実行され、フィールドの値は空文字になる
  • 日付型のデフォルトフォーマットに違反するデータのUPDATEも、警告は出るが、SQL文は実行され、日付は'0000-00-00'に設定される

初めてのSQL

MySQLユーティティの使えるコマンド

MySQLユーティリティ(シェルっぽいもの)のhelpを見て使えそうなものを列挙
e,G,s,!,p,Rなんかは使える

~/.my.cnfを設定してプロンプトなどをカスタマイズ!

[mysql]
prompt=(\u@\h)[\d]>\_
pager=less -N -S

とすると、結果セットの表示にlessが使えるし、プロンプトのカスタマイズができる。以下表示例

(lrngsql@localhost)[bank]> show tables;
      1 +----------------+
      2 | Tables_in_bank |
      3 +----------------+
      4 | account        | 
      5 | branch         | 
      6 | business       | 
      7 | customer       | 
      8 | department     | 
      9 | employee       | 
     10 | individual     | 
     11 | officer        | 
     12 | product        | 
     13 | product_type   | 
     14 | transaction    | 
     15 +----------------+
11 rows in set (0.01 sec)

結果セットに行番号が表示されている。一行の表示が多すぎる場合は折り返されないので、「←jk→」で移動。「q」mysqlプロンプトに戻る