ぽかぽか天気、あったかそうでしょ!
<自己紹介>
10年前、「ITコーディネータは、真に経営に役立つIT利活用に向け、経営者の立場に立った助言・支援を行い、IT経営を実現する人材です。」という紹介にあるような人材となるべく、高額のセミナーに参加し(ただし会社に出してもらったのだけど)、必死になって新しいことを勉強した日々。。。
ITCのホームページ:http://www.itc.or.jp
けれども、ずっと委託業務で他の会社に常駐しての仕事だったため、ITコーディネータを前面に出すような仕事は一切なく、システムの開発とデータベースからのデータの抽出・分析などの仕事をする毎日でした。 ただ、資格を継続するのも実は大変なんですね。
過去3年間で30ポイントを取っていることが継続の条件ですが、セミナー代金や資格更新料など、経費もかかっちゃいます。
自己紹介はこれくらいにして・・・
せっかくなので、システムの開発とデータベースからのデータの抽出・分析などの仕事で学んだ内容を、少し整理しようと思っています。
<本日の題材>
【テーブル作成後の定義変更のSQL】
仕事によってOracle、SQL Serverを使うことがよくありますが、テーブル作成後の定義変更の仕方が、OracleとSQL ServerなどRDBによって微妙に異なるため、ときにすぐに思い出せなくて困ってしまうことがあります。
それで、ちょっと覚書の意味もあわせてまとめてみます。
【項目の追加】
Oracle:
ALTER TABLE テーブル名 ADD (列名 列定義);
SQL Server:
ALTER TABLE テーブル名 ADD 列名 列定義;
例)追加する項目が複数の場合
Oracle:
ALTER TABLE 社員マスタ ADD (性別 VARCHAR2(4), 備考 VARCHAR2(100));
SQL Server:
ALTER TABLE 社員マスタ ADD 性別 VARCHAR(4), 備考 VARCHAR(100);
追加する項目にNOT NULL制約をつけて、デフォルト値を設定したい場合
例)test_tabテーブルにcol_a という数値項目をNOT NULL制約(デフォルト値 0)をつける
Oracle:
ALTER TABLE test_tab ADD (col_a NUMBER(4) DEFAULT 0 NOT NULL);
SQL Server:
ALTER TABLE test_tab ADD col_a INT DEFAULT 0 NOT NULL;
【列定義の変更】
Oracle: ALTER TABLE テーブル名 MODIFY (列名 列定義); SQL Server: ALTER TABLE テーブル名 ALTER COLUMN 列名 列定義;
例)文字項目の桁数を増やす場合(社員名を40バイトから50バイトに変更)
Oracle:
ALTER TABLE 社員マスタ MODIFY (社員名 VARCHAR2(50));
SQL Server:
ALTER TABLE 社員マスタ ALTER COLUMN 社員名 VARCHAR(50);
【項目の削除】
Oracle: ALTER TABLE テーブル名 DROP (列名);
SQL Server: ALTER TABLE テーブル名 DROP COLUMN 列名;
例)社員マスタに「性別」「備考」の削除
Oracle: ALTER TABLE 社員マスタ DROP (性別, 備考);
SQL Server: ALTER TABLE 社員マスタ DROP COLUMN 性別, 備考;
【項目名の変更】
Oracle:
ALTER TABLE テーブル名 RENAME COLUMN 列名 TO 新列名;
SQL Server:
sp_rename @objname='テーブル名.元項目名', @newname='新項目名', @objtype='COLUMN';
例) 社員マスタの「備考」という項目名を「備考1」という名前に変更する。
Oracle:
ALTER TABLE 社員マスタ RENAME COLUMN 備考 TO 備考1;
SQL Server:
sp_rename @objname='dbo.社員マスタ.備考', @newname='備考1', @objtype='COLUMN';
※ただし、SQLServerではManagement StudioなどのGUIツールで変更できますし、実際の運用では、項目名の変更を後から行うことはあまりないとは思いますが。
今日は以上まで
にほんブログ村