スタートページJavascriptMySQL
MySQLの概要文法の基本(1)文法の基本(2)文法の基本(3)文法の基本(4)

文法の基本(1)データベースの生成・更新


ここでの MySQL のプログラム作成・実行方法

データベースの生成

# ========== データベースの生成
CREATE TABLE 売上表 (
  伝票番号     INT PRIMARY KEY,
  得意先コード INT,
  商品コード   INT,
  数量         INT
);
INSERT INTO 売上表  VALUES 
  (1001, 60, 100, 2),
  (1002, 70, 100, 2),
  (1003, 50, 200, 3),
  (1004, 50, 100, 1),
  (1005, 60, 200, 2),
  (1006, 50, 100, 3),
  (1007, 60, 100, 3),
  (1008, 60, 100, 2),
  (1009, 70, 100, 2),
  (1010, 50, 200, 3),
  (1011, 70, 100, 2),
  (1012, 50, 200, 3);
  
CREATE TABLE 得意先表 (
  得意先コード  INT PRIMARY KEY,
  得意先名      VARCHAR(20),
  得意先住所    VARCHAR(10)
);
INSERT INTO 得意先表  VALUES
  (50, '得意先A', '東京'),
  (60, '得意先B', '東京'),
  (70, '得意先C', '大阪');

CREATE TABLE 商品表 (
  商品コード  INT PRIMARY KEY,
  商品名      VARCHAR(20),
  単価        INT
);
INSERT INTO 商品表  VALUES
  (100, '商品1', 50),
  (200, '商品2', 30),
  (300, '商品3', 40);

データベースの創成 CREATE TABLE データベース名(列)

CREATE TABLE 得意先表 (
  得意先コード  INT PRIMARY KEY,
  得意先名      VARCHAR(20),
  得意先住所    VARCHAR(10)
);

列(フィールド)は、
  列名 型 属性
の形式で列挙します。

このデータベースに行を与えるとき、この型や属性に一致しないとエラーになります。

VARCHAR(M) 可変長文字列
M桁以内(M<=255)の文字列です。氏名や住所など桁数が不明の文字列にはこれを用います。
同様な型に TEXT(M) があります。M<=65,535の長い文字列を扱います。
CHAR(M) 固定長文字列
VARCHAR と同じですが、M桁より短い場合、右側に空白がつけられます。
桁揃えが必要なときに用いますが。通常は VARCHAR を用います。
INT (INTEGER) 整数
-2147483648~2147483647までとれるので、通常の整数に使うことができます。
コード類は本来は文字列ですが、先頭が0ではない9桁以内の数字からなるコード類は INT にできます。" " で囲む必要がないので便利です。
INT UNSIGNED 正数だけ>br> TINYINT(-128 〜 127), BIGINT(20桁)などもあります。
DECIMAL(M,D) 小数点型
全体でM桁、小数点以下D桁の数値です。誤差のない正確な小数ですので、事務処理での数量や金額などに積雪です。
FLOAT 浮動小数点数
科学技術計算に用いられます。1038 の数値が扱えますが、誤差が生じるので、有効桁数は7桁程度になります。
倍精度の DOUBLE もあります。10308 の数値が扱え、有効桁数は15桁になります。
BOOL 論理数
0/1, true/false だけです。

属性

NOT NILL
値が NUll であってはならない。
UNIQUE
同一の値があってはならない。ただし NULL は複数あってもよい。
PRIMARY KEY
NOT NULL と UNIQUE と合わせたもの。主キーに用いられる。

INDEX

指定した行を直接アクセスするために、主キーにインデクスを付けるのが効果的です。

PRIMARY KEY, UNIQUE での自動付加
PRIMARY KEY あるいは UNIQUE を与えた列には、自動的にインデクスが付けられます。
CREATE TABLE 中でのインデクス指定
CREATE TABLE 得意先表 (
  得意先コード  INT,
  得意先名      VARCHAR(20),
  得意先住所    VARCHAR(10).
  INDEX 得意先コード
);
CREATE INDEX
CREATE TABLE の外部でインデクスを設定します。
CREATE TABLE 得意先表 (
  ;
);
CREATE INDEX インデクス名 ON 得意先表 (得意先コード);
複数の列へのインデクス付け
列Aと列Bの結合列についてインデクスを設定するには、
  INDEX(列A, 列B)
とします。

データベースの行の更新

INSERT INTO 行の追加

一般形
    INSERT INTO データベース名
      (列名1, 列名2. …)    # データベースと同じ構成なら省略可能
      values (値1, 値2, …);
例 売上表に新行 (1013. 50, 100, 10) を追加する
    INSERT INTO 売上表
      values (1013. 50, 100, 10);

DELETE 行の削除

一般形
  DELETE FROM データベース名
      WHERE 条件文;

例 売上表から伝票番号 = 1010 の行を削除する。
  DELETE FROM 売上表
      WHERE 伝票番号 = 1010;

UPDATE SET 行の内容を変更

一般形
    UPDATE データベース名
      SET 変更列名1 = 値1,
          変更列名2 = 値2,
              ・・・
      WHERE 条件文;
例 売上表から 伝票番号 = 1011 の行を (1011, 70, 100, 10) に変更する,変更内容は 数量 = 10
    UPDATE 売上表
      SET 数量 = 10
      WHERE 伝票番号 = 1011;

テスト

INSERT INTO 売上表
  values (1013, 50, 100, 10);
DELETE FROM 売上表
  WHERE 伝票番号 = 1010;
UPDATE 売上表
  SET 数量 = 10
  WHERE 伝票番号 = 1011;

SELECT * FROM 売上表
  WHERE 伝票番号 &gy;= 1009;

次の結果が得られます。

伝票番号 得意先 商品  数量
     コード コード
  1009      70     100      2
                               ← 1010 が削除
  1011      70     100     10 ← 数量 = 10 に更新
  1012      50     200      3
  1013      50     100     10 ←  追加