SAK 図書館
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 編資料