SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

MySQL 編7 - テーブルクリア、テーブル定義変更、整合性制約定義、権限

■テーブルクリア

  ・テーブル中のデータだけを全て削除するには、delete 文を使用する。

delete from testm;

  ・但し、単純クリアが目的なら、この方法はレスポンス的に問題がある。
    トランザクション機能が働くので、全レコードのトランザクションバッファ
    への書き込みとコミットによる更新が行われる。
    何万件にも及ぶデータのクリアを delete 文でやると実用に耐えない。

  ・単純なテーブルクリアが目的の場合は、表切り捨て(truncate) を使用する
    と良い。この方が一瞬でクリアできる。

truncate table testm;

  ・思いきって、テーブル削除と再作成を利用する手もある。

drop table testm;
create table testm (
  key1           char(008),
  data1          int8,
  data2          int8,
  data3          int8
) type=InnoDB;

■テーブル定義変更(テーブル属性変更、列定義変更)

  ・データ項目の桁数が足りなくなったり、新たな項目を追加するのは alter
    文で簡単に行える。但し、列名の変更はできないようである。

  ・新たにテーブルに項目を追加(列の追加、フィールド追加、カラム追加)
    するには、次のようにする。

alter table testm add
  newdata1  int8
;

alter table testm add (
  newdata1  int8,
  newdata2  int8
);

  ・MySQL は列の削除が行える。

alter table testm drop
  newdata1
;

  ・既存のテーブル項目を変更するには(列変更)、次のようにする。
    但し、項目タイプの変更や桁数を少なくする場合は、該当項目にデータが
    セットされているとエラーになる場合がある。
    update 文で、該当項目を NULL にしたり、桁調整するか、
      データ退避
      テーブル削除
      テーブル再作成
      新形式にデータ編集
      データセットアップ
    を行う必要がある。

alter table testm modify
  data1     varchar(020)
;

■整合性制約定義、リレーション、リファレンス、外部キー

  ・データ項目に他のテーブルとのリレーションをとって、制約条件などを設定
    することができる。(constraints)
    制約追加は、create table 時、または、alter table で行う。

  ・列制約には、
      primary key  主キー制約(unique & not null)
      unique       一意キー制約(ユニーク項目、一意制約、ユニーク値、ユニークキー、ユニーク制約)
      not null     NOT ヌル制約
      check        チェック制約
      references   参照整合性制約(参照制約、外部整合性制約、外部制約キー)
    がある。
    not null 制約については、Oracle と構文が違うのか、alter table で変更
    できないようである。
    また、references 節約はサポートされていない。

alter table testm add unique (
  data1
);

alter table testm
  add constraint TESTM_JCSU check(data1 >= 0)
;

  ・MySQL では、制約単体の削除はできないようである。

■名前変更(テーブル名変更)

  ・テーブル名の変更は、次のようにする。

alter table testm rename to abc;

■ユーザ作成

  ・ユーザの作成は、次のようにする。(create user 構文はないようである。)

insert into user (Host, User, Password) values ('localhost', 'sak', PASSWORD('sak'));

  ・尚、パスワードを指定すると、なぜか認証不能になる。
    とりあえず、パスワードを削除するには、次のようにする。

update user set Password='' where Host = 'localhost' and User='sak';

  ・ユーザの削除は、次のようにする。

delete from user where Host = 'localhost' and User = 'sak';

■システム権限付与

  ・MySQL については、ロールが使用可能か不明である。
    権限の付与は、次のようにする。

grant 権限名, ...
  on オブジェクト, ...
  to public;
     |_ public
        group グループ名
        ユーザ名

  ・権限の取り消しは、次のようにする。

revoke 権限名, ...
  on オブジェクト名, ...
  from public;
       |_ public
          group グループ名
          ユーザ名

■ビュー作成

  ・MySQL には、create view はないようである。

■MySQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2024 Y.SAK