またフィールド数の少ないT01Prefecture(都道府県マスター)を例に、MySQLデータベースでの検索、追加、更新、削除を一通り体験しました。ここまで来たらあとは基本的なSQLはAccessとほとんど同じです。
このMySQL初心者入門講座で使っているデータベースと、Access SQL初心者入門講座のデータベースは、構造やデータは同じように設計しているので、SQL文がそのまま使えます。
MySQLはAccessに比べると学び始めるまでの準備が面倒ですが、一度環境を整えると同じように操作できます。プログラミング言語からデータベースを操作する場合も、MySQLとAccessではほんの数行変更するだけです。
SQLの基本的なことはAccess SQL初心者入門講座に詳しくまとめているので、利用してください。
以下の図のように「SQL SELECT文の基礎」から始めてください。
Accessの画面部分は無視して、SQL文とその解説を参考にします。ただしMySQLとAccessで異なる部分もありますので以下にまとめます。
【ワイルドカード】
あいまい検索に利用するワイルドカードが異なります。
Accessの場合
・「?」 任意の1文字
・「*」 0個以上の文字列
MySQLの場合
・「_」 任意の1文字
・「%」 0個以上の文字列
【フィールド名の変更】
AccessのT08Detailsテーブルでは「NOTE」になっていますが、MySQLでは「MEMO」に変更しました。
T08Details NOTE → MEMO
したがって以下の例のようにSQL文のフィールド名が変更になります。
Accessの場合
INSERT INTO T08Details(SLIP_CD,GOODS_CD,AMOUNT,[NOTE]) VALUES(24,1,2,'あああ');
MySQLの場合
INSERT INTO T08Details(SLIP_CD,GOODS_CD,AMOUNT,MEMO) VALUES(24,1,2,'あああ');
【文字の連結】
文字の連結はAccessの場合「&」を使いますが、MySQLの場合は「CONCAT関数」を使うところが異なります。
Accessの場合
SELECT SLIP_CD, SLIP_DATE, T07Slip.CST_CD, CST_NAME, SEX, "〒" & ZIP_CODE & " " & PREF_NAME & CITY_NAME & TOWN_NAME & ADDRESS AS ADDRESS2
FROM T07Slip,T04Customer,T05Sex,T03Town,T02City,T01Prefecture
WHERE T07Slip.CST_CD = T04Customer.CST_CD
AND T04Customer.SEX_CD = T05Sex.SEX_CD
AND T04Customer.TOWN_CD = T03Town.TOWN_CD
AND T03Town.CITY_CD = T02City.CITY_CD
AND T02City.PREF_CD = T01Prefecture.PREF_CD
ORDER BY T07Slip.SLIP_CD;
MySQLの場合
SELECT SLIP_CD, SLIP_DATE, T07Slip.CST_CD, CST_NAME, SEX, CONCAT('〒', ZIP_CODE, ' ', PREF_NAME, CITY_NAME, TOWN_NAME, ADDRESS) AS ADDRESS2
FROM T07Slip,T04Customer,T05Sex,T03Town,T02City,T01Prefecture
WHERE T07Slip.CST_CD = T04Customer.CST_CD
AND T04Customer.SEX_CD = T05Sex.SEX_CD
AND T04Customer.TOWN_CD = T03Town.TOWN_CD
AND T03Town.CITY_CD = T02City.CITY_CD
AND T02City.PREF_CD = T01Prefecture.PREF_CD
ORDER BY T07Slip.SLIP_CD;
*CONCAT関数は引数を連結した結果の文字列を返します。
*MySQLでは「;」を「\G」にするとレコードが縦に表示されます。
データベースごとに独自の機能があり、SQL文は全て共通というわけにはいきませんが、基本は同じです。MySQL独自の機能については中級で解説します。