RDBMS 毎の列メンテナンス

  列を一つ追加



MDB、SQLServer
  
alter table [列を追加するテーブル名]
	add
	[新しい列名] データ型
  

MySQL
  
alter table `列を追加するテーブル名`
	add 
	`新しい列名` データ型
  
MySQL では指定位置に列を追加できます
  
alter table `列を追加するテーブル名`
	add 
	`新しい列名` データ型 first
  
  
alter table `列を追加するテーブル名`
	add 
	`新しい列名` データ型 after 列名
  


Oracle
  
alter table "列を追加するテーブル名"
	add 
	"新しい列名" データ型
  

PostgreSQL
  
alter table "列を追加するテーブル名"
	add 
	"新しい列名" データ型
  



  一度に列を複数追加



MDB、SQLServer
  
alter table [列を追加するテーブル名]
	add 
	[新しい列名] データ型
	,[新しい列名2] データ型
  

MySQL
  
alter table `列を追加するテーブル名`
	add (
	`新しい列名` データ型
	,`新しい列名2` データ型
	)
  

Oracle
  
alter table "列を追加するテーブル名"
	add (
	"新しい列名" データ型
	,"新しい列名2" データ型
	)
  


PostgreSQLは未確認ですが、8.0.0より複数指定ができるようです。
マニュアル上の構文は以下のようになります

  
ALTER TABLE [ ONLY ] name [ * ]
    action [, ... ]
  



  列名変更

SQLServer
  
sp_rename 'テーブル名.変更前列名', '変更後列名', 'COLUMN'
  

MySQL
  
alter table `テーブル名` change `変更前列名` `変更後列名` 現在の型
  

PostgreSQL
  
alter table `テーブル名` rename `変更前列名` to `変更後列名`
  

Oracle
  
alter table `テーブル名` rename column `変更前列名` to `変更後列名`
  



  default 設定

SQLServer
  
【制約追加】
( カラム追加時の制約設定では、制約名は自動作成 )

ALTER TABLE [テーブル名]
ADD CONSTRAINT [制約名]
DEFAULT 値 FOR [列名]

【制約表示】
SELECT 
	(select text from syscomments where id = sys2.id) as default_value
	,sys1.name,sys1.crdate,sys2.name
 from
   sysobjects as sys1 INNER JOIN sysobjects as sys2
 on sys1.id = sys2.parent_obj
 where
   sys1.xtype = 'U' and sys2.xtype = 'D' 
 order by
   sys1.name

【制約削除】
alter table [テーブル名]
drop constraint [制約名]
  

MySQL
  
【追加】
ALTER TABLE `テーブル名` ALTER COLUMN `列名` SET DEFAULT 値

【削除】
ALTER TABLE `テーブル名` ALTER COLUMN `列名` DROP DEFAULT
  

PostgreSQL
  
【追加】
ALTER TABLE "テーブル名" ALTER COLUMN "列名" SET DEFAULT 値

【削除】
ALTER TABLE "テーブル名" ALTER COLUMN "列名" DROP DEFAULT
  

Oracle
  
【追加】
alter table "テーブル名"
modify "列名" default 値
  

※ Oracle 9i
DEFAULT 句を使用してデフォルトをNULL に変更することができますが、
デフォルト値を完全に削除することはできません。










  infoboard   管理者用   





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ