データベースの中にテーブルを作成したい。
Q&A
Closed
解決したいこと
テーブルの中に写真のようなカラムを入れたいのですがエラーが起きてしまいます。以下のように記入したのですが、'Field'にシンボル名が不記入問エラーが出てしまいました。どのようにすれば良いのか教えていただきませんか?
Q&A
Closed
テーブルの中に写真のようなカラムを入れたいのですがエラーが起きてしまいます。以下のように記入したのですが、'Field'にシンボル名が不記入問エラーが出てしまいました。どのようにすれば良いのか教えていただきませんか?
根本的にテーブルの構造認識に誤りがあるので、
SQLを実行する前にDBのテーブルについて
分かりやすい資料を探して学習されることをお勧めします。
途中まで記述したSQLを掲載するので、
実行しようとしたSQLと見比べてどこが違うのか確認してみてください。
(途中までしか記述してありませんので、そのまま実行しても
写真のような表にはならない点、ご注意ください/実行できない状態ですが…)
参考資料を貼っておくので、
制約の定義やオプションについては調べながら試してみてください。
また、MySQLでは可能ですが、
テーブルのカラム名に日本語を使用することはお勧めしません。
create table 社員情報 (
id INTEGER(11) NOT NULL,
name VARCHAR(255) NOT NULL,
・
・
・
(略)
);
■参考資料
@jankenpon0205
Questioner
お忙しい中回答して頂きありがとうございます。
再度やり直してみたのですが、これで写真のようになるでしょうか?
create table 社員情報(
id int(11) PRIMARY KEY AUTO_INCREMENT,
`名前` varchar(255) NOT NULL,
`マイナンバー` varchar(20)DEFAULT NULL,
`生年月日` date NOT NULL,
`住所1` varchar(255) NOT NULL,
`住所2` varchar(255) NOT NULL,
`契約形態` varchar(255) NOT NULL,
`入社年月日` date DEFAULT NULL,
`退社年月日` date DEFAULT NULL,
`データ作成年月日` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP(),
`データ更新年月日` timestamp NOT NULL DEFAULT current_timestamp() on update current_timestamp
);
質問に掲載されている写真の構造と同様のテーブルが作成されます。
動作はするのですが
個人的に気になるポイント2点申し上げます。
(本質的な部分ではなく恐縮ですが)
(1)SQL中にカラム名・テーブル名を除いた予約語(create table等)に
大文字・小文字が混在していることで可読性が低下しています。
(2)「);」のインデントが揃っていない。
■補足
ブラウザ上でSQLを実行できるサービスがあるので、
こちらで動作確認をすることもできます。
※但し、テーブルの状態を記憶してくれないので、
DDLとDMLを同時に記述する必要があります。
既存のコードを削除してから
以下を貼り付けて「実行」ボタンを押下することで
構造を確認できます。
CREATE TABLE 社員情報 (
id INTEGER (11) PRIMARY KEY AUTO_INCREMENT,
`名前` varchar (255) NOT NULL,
`マイナンバー` varchar (20) DEFAULT NULL,
`生年月日` DATE NOT NULL,
`住所1` VARCHAR(255) NOT NULL,
`住所2` VARCHAR(255) NOT NULL,
`契約形態` VARCHAR(255) NOT NULL,
`入社年月日` DATE DEFAULT NULL,
`退社年月日` DATE DEFAULT NULL,
`データ作成年月日` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
`データ更新年月日` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP
);
DESCRIBE 社員情報;
@jankenpon0205
Questioner
ありがとうございます。
勉強になりました!
問題無いようでしたら本質問をクローズしてください。