PHPでMySQLデータベースを作成

データベースには1つ以上のテーブルが含まれています。

データベースの作成

CREATE DATABASE文はMySQLでデータベースを作成するために使用されます。

文法

CREATE DATABASE database_name

上記の文を実行するために、PHPがmysql_query()関数を使用する必要があります。この関数はMySQL接続にクエリやコマンドを送信するために使用されます。

以下の例では、"my_db"という名前のデータベースを作成しています:

<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('接続できません: ' . mysql_error());
  }
if (mysql_query("CREATE DATABASE my_db",$con))
  {
  echo "データベース作成成功";
  }
else
  {
  echo "データベース作成エラー: " . mysql_error();
  }
mysql_close($con);
?>

テーブルの作成

CREATE TABLEはMySQLでデータベーステーブルを作成するために使用されます。

文法

CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
.......
)

このコマンドを実行するために、mysql_query()関数にCREATE TABLE文を追加する必要があります。

以下の例では、"Persons"という名前のテーブルを作成する方法を示しています。このテーブルには3つの列があり、列名は"FirstName"、"LastName"、および"Age"です:

<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('接続できません: ' . mysql_error());
  }
// データベースの作成
if (mysql_query("CREATE DATABASE my_db",$con))
  {
  echo "データベース作成成功";
  }
else
  {
  echo "データベース作成エラー: " . mysql_error();
  }
// my_db データベース内にテーブルを作成
mysql_select_db("my_db", $con);
$sql = "CREATE TABLE Persons 
(
FirstName varchar(15),
LastName varchar(15),
Age int
)";
mysql_query($sql,$con);
mysql_close($con);
?>

重要事項:テーブルを作成する前に、まずデータベースを選択する必要があります。mysql_select_db()関数を使用してデータベースを選択します。

注記:varchar型のデータベースフィールドを作成する場合、必ずそのフィールドの最大長を指定する必要があります。例:varchar(15)

MySQL データ型

以下に使用できるさまざまな MySQL データ型:

数値データ型 説明
  • int(size)
  • smallint(size)
  • tinyint(size)
  • mediumint(size)
  • bigint(size)
整数のみをサポートしています。sizeパラメータで数値の最大値を指定します。
  • decimal(size,d)
  • double(size,d)
  • float(size,d)

小数を含む数値をサポートしています。

sizeパラメータで数値の最大値を指定します。dパラメータで小数点の右側の数値の最大値を指定します。

テキストデータ型 説明
char(size)

固定長文字列をサポートしています。(アルファベット、数字および特殊記号を含むことができます)。

sizeパラメータで固定長を指定します。

varchar(size)

可変長文字列をサポートしています。(アルファベット、数字および特殊記号を含むことができます)。

sizeパラメータで最大長を指定します。

tinytext 可変長文字列をサポートしています。最大長は 255 文字です。
  • text
  • blob
可変長文字列をサポートしています。最大長は 65535 文字です。
  • mediumtext
  • mediumblob
可変長文字列をサポートしています。最大長は 16777215 文字です。
  • longtext
  • longblob
可変長文字列をサポートしています。最大長は 4294967295 文字です。
日付データ型 説明
  • 日付(yyyy-mm-dd)
  • 日時(yyyy-mm-dd hh:mm:ss)
  • タイムスタンプ(yyyymmddhhmmss)
  • 時間(hh:mm:ss)
日付または時間をサポート
その他のデータ型 説明
enum(value1,value2,ect) ENUM は ENUMERATED リストの略です。括弧内に最大 65535 個の値を入れることができます。
set SET は ENUM に似ていますが、SET は最大 64 個のリスト項目を持ち、複数の choice を保持できます

主キーと自動増分フィールド

各テーブルには主キーフィールドが一つなければなりません。

主キーはテーブル内の行を一意に識別するために使用されます。テーブル内の各主キー値は一意でなければなりません。さらに、主キーフィールドは空であってはなりません。これは、データベースエンジンがレコードを特定するために値が必要だからです。

主キーフィールドは常に索引に記録される必要があります。このルールには例外はありません。主キーフィールドに対して索引を設定する必要があります。これにより、データベースエンジンが迅速にキー値を持つ行を特定できます。

以下の例では、personID フィールドを主キーフィールドとして設定しています。主キーフィールドは通常 ID 号として使用され、AUTO_INCREMENT が設定されています。AUTO_INCREMENT は新しいレコードが追加されるたびに、そのフィールドの値を順次増加させます。主キーフィールドが空でないことを確保するために、NOT NULL 設定を追加する必要があります。

$sql = "CREATE TABLE Persons 
(
personID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(personID),
FirstName varchar(15),
LastName varchar(15),
Age int
)";
mysql_query($sql,$con);