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 編資料