プロが教える店舗&オフィスのセキュリティ対策術

PHPとMySQLを使った掲示板の作り方
作成講座①
https://biz.addisteria.com/bbs_creation1/
ですが
以上のWebページの内容が以下です。
---------------------------------------------------
データベースの中にテーブルを作る
データベースの中に、テーブル(testdate)を作っていきます。
データベース作成後に表示される画面で、テーブル名とカラム数を指定します。

右下の【実行】ボタンを押します。
ユーザー情報用のテーブルを作る
最初にユーザー情報用のテーブル【members】を作ります。
下記の6種類の情報をいれたいので、カラム数は6としておきます。
id 番号
name 名前
email メールアドレス
password パスワード
created 作成日時
modified 更新日時
-------------------------------------------------------
以上のWebページは、XAMPP作成用ですが、私はMAMPで作成中です。
それで
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
を全部ではないのですが参考にして以下としました。
mysql> CREATE TABLE testdate(id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30),
email VARCHAR(128),
password VARCHAR(50),
created DATETIME NOT,
modified, DATETIME NOT);
----------------------------------
以上ですが正解なのか不明ですが!
参考URLには
NAME VARCHAR(20) NOT NULL,
REGDATE DATETIME NOT NULL,
とNULL が2か所ありますが、NULL の使い方が分かりません?
他 以上ですがご指導ご鞭撻のほどをよろしくお願いいたします。

A 回答 (1件)

これは、実際に表定義できているのですか?


createed DATETIME NOT
は構文エラーになっていると思いますが?
(1)NOT NULL→NULLを格納できない。INSERT文で列を指定せず、値を格納しない場合は、DEFAULT句で値を格納しなかった時のディフォルトの値を指定しておく必要がある。
(2)NULLを指定 or NOT NULLを指定しない
→NULLを格納できる。INSERT文で値を格納しなかった列、または値としてNULLを指定した列には、NULLが格納される。
(3)例外
PRIMARY KEYを指定した列は、NOT NULLになる。
AUTO_INCREMENT列は、0またはNULLを格納する操作をすることで、自動採番できる。

すぐに思いつく、NULLを格納することの意味
(1)NULLは値が不定であることを示し、列 IS [NOT] NULL という条件以外では、真にも偽にもならない。
(2)列<>'a'といった比較条件などでは、NULLの行は不定で、検索対象にならない。
(3)数値演算や文字関数などでは、NULLを扱うと、結果もNULLになる。
(4)COUNT(列名)やAVG(列名)などの集合関数では、NULLは対象外。
→価格の決まっていない商品、追試を受ける予定がある学生がいる状況で、NULLの変わりに0を入れてたりすると、適切な平均を求めるのに工夫が必要になる。
    • good
    • 1
この回答へのお礼

詳しくご回答下さいまして有難うございました。
全部読みました。
 しかし 色々ありますね 冒頭の講座を進めることで
理解を深めたいと思います。テーブルを作成するだけでなんと
MAMP+コマンドプロンプトでは朝方~夕方までかかり 
以下が今のところ妥当だと思われます。
 3回講座が用意されていますので、使えそうでしたら、学習を
進めていきたいと思います。
今後ともよろしくお願いいたします。
mysql> create table testdate(id int auto_increment primary key,name varchar(30) not null,email varchar(128) null,password varchar(255) not null,created datetime default current_timestamp,modified datetime default current_timestamp on update current_timestamp);
Query OK, 0 rows affected (0.02 sec)"

お礼日時:2022/06/02 19:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!