テーブル作成後の定義変更のSQL

ITコーディネータのシュウです。 空_1

ぽかぽか天気、あったかそうでしょ!

  <自己紹介>

10年前、「ITコーディネータは、真に経営に役立つIT利活用に向け、経営者の立場に立った助言・支援を行い、IT経営を実現する人材です。」という紹介にあるような人材となるべく、高額のセミナーに参加し(ただし会社に出してもらったのだけど)、必死になって新しいことを勉強した日々。。。
ITCのホームページ:http://www.itc.or.jp

けれども、ずっと委託業務で他の会社に常駐しての仕事だったため、ITコーディネータを前面に出すような仕事は一切なく、システムの開発とデータベースからのデータの抽出・分析などの仕事をする毎日でした。 ただ、資格を継続するのも実は大変なんですね。

過去3年間で30ポイントを取っていることが継続の条件ですが、セミナー代金や資格更新料など、経費もかかっちゃいます。

  自己紹介はこれくらいにして・・・

it-coordinator①-1

せっかくなので、システムの開発とデータベースからのデータの抽出・分析などの仕事で学んだ内容を、少し整理しようと思っています。

<本日の題材>
【テーブル作成後の定義変更の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ツールで変更できますし、実際の運用では、項目名の変更を後から行うことはあまりないとは思いますが。

今日は以上まで

にほんブログ村 IT技術ブログへ
にほんブログ村

主にSQLについて書いていきたいと思います。