初心者なのでCREATE TABLE文でテーブルを作ってからINSERT文で列を追加&値を1行目に入れた

CREATE TABLE文でテーブルを作成しようということで、前回はテーブルを構成する要素(COLUMN_NAMEなど)リストアップした。
そんで教科書であるスッキリわかるSQL入門を読みながら、実際にテーブルをSQL Editorで作ってみたのよね。

これ↑が、リストアップした項目を元に作った俺のテーブル!
コードは以下の通り。

create table 三重グルメ (
登録日 date,
店名 varchar(100),
郵便番号 CHAR(8),
住所 varchar(100),
電話番号 varchar(100),
最寄り駅 varchar(100) default ‘不明’,
鉄道会社名 varchar(100) default ‘不明’,
路線名 varchar(100) default ‘不明’,
最寄り駅から目的地への方角 varchar(100) default ‘不明’,
最寄り駅から目的地までの所要時間目安 varchar(100) default ‘不明’
)

なのです。ほんとは、

WordPressのシンタックスハイライトをプラグインなしで!prism.jsがオススメ! | ウェブタタン

とかで紹介されてる方法でシンタックスハイライトさせた方が見やすいだろうけど、ちょっと後回しということで。default、っていうのは、データを格納しなかった場合とかに、”フィールド”(行および列が交差した部分。フィールドに格納できる値は1つ。値を格納しないのもOKで、それをNULL値という。スタートアップオラクルマスター Bronze 11g SQL基礎Ⅰ)にデフォルト値をあらかじめ指定しておくためのキーワードらしいな。
そんで、できたテーブルはこんな感じね。

悪くない、いいぞ。
でも思ったんだが…肝心の、データが入っとらん。
DATEなんて、テーブルを作成した時の時間を自動で入れてくれるんじゃないの?
NULLABLEだのDATA_DEFAULTだのCOLUMN_IDだのCOMMENTSだの、特に指定してないカラム(列)が勝手に出来上がってる。

違うだろ~!本当に入れたいのはお店の名前とか、最寄り駅とか、そういう情報なんですよ。
まあ俺がコードにちゃんと書いてなかったのがダメなんだけど…テーブルを作成するので手一杯で、データ入れるのを忘れたのね。
そんで教科書を開くとあれだ、スッキリわかるSQL入門のp61に書いてたわ。
INSERT文を使えばいいのよ。いざ、入力。

insert into 三重グルメ
(登録日,店名,郵便番号,住所,電話番号,最寄り駅,鉄道会社名,路線名,最寄り駅から目的地への方角,最寄り駅から目的地までの所要時間目安)
values (‘2018-09-09′,’伊賀の里モクモク手づくりファーム御在所SA上り店’,’512-0906′,
‘三重県四日市市山之一色町1569-2’,’059-337-8110′,’山城駅’,’三岐鉄道’,
‘三岐鉄道三岐線’,’北’,’1790′,’徒歩25分以上’)

ごちゃごちゃしてるな~すると…

エラーが出てきた、何で?

次のコマンド行の開始中にエラーが発生しました : 1 –
insert into 三重グルメ
(登録日,店名,郵便番号,住所,電話番号,最寄り駅,鉄道会社名,路線名,最寄り駅から目的地への方角,最寄り駅から目的地までの所要時間目安)
values (‘2018-09-09′,’伊賀の里モクモク手づくりファーム御在所SA上り店’,’512-0906′,
‘三重県四日市市山之一色町1569-2’,’059-337-8110′,’山城駅’,’三岐鉄道’,
‘三岐鉄道三岐線’,’北’,’1790′,’徒歩25分以上’)
コマンド行 : 1 列 : 13 でのエラー
エラー・レポート –
SQLエラー: ORA-00913: 値の個数が多すぎます。
00913. 00000 – “too many values”
*Cause:
*Action:

too many values…value句は入れられる値の数が限られてるのか?
あっ、わかった。そもそも登録日,店名,郵便番号…こいつらは、列じゃなくて行(レコード)の項目だった。
列に値を入れたいんじゃなくて、行(レコード)に入れたいんだそもそも。
value句がいくつ入るかどうかという以前に、insertを使うのが違う気がする。
そんなわけで、教科書を読んでいくとp316に「ALTER TABLE文」が紹介されていて、これを使えば列を追加できるみたいだということがわかった。

新たな列「情報」を追加して、その列の行に、各項目の値を入れてこうと考えたのよ。

alter table 三重グルメ add 情報 varchar(100);

って入れてな。
すると…

なんじゃ、列に「情報」を入れられる文のはずなのに、なぜか行に追加されとる!
列じゃないじゃん!?って思ったけど。

どうやらこのSQL Editorというソフトの仕様なのか、「列」タブは列名とか、その列の型名とか、ほんとに列の情報に特化して載せてるっぽい。
隣りのタブの「データ」ってのをクリックすると、ちゃんと想像通りのテーブルが出来てくれてたな。

クセのあるソフトだな…。
まあ今日はとりあえずこれで、テーブルは作成できたってことでOKだ。
課題ができたな。

INSERTで各列に値をvalue句を使って入れようとしたら、10個全て入らなかった件。
1行目に値の一部は入ったものの、何行目という風に指定したわけではないので、このままだと1行目からしかデータを入れられない。任意の行と、列が交差するフィールドに的確に値を入れられていない件。

この2つについては、解決しないといけない。
Excelで作った大きいcsvデータをSQL Editor使ってインポートして、データを自由自在に操作できるように訓練した方がよさそうだな。

データの個数が少ない、こんなスケールの小さいことやってるんじゃあ、現場では何も役にも立たんからな、ほんとに。

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

トップページ(低価格ヒルズ)に戻る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です