ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
テーブル作成と行追加を同時に行なう ( No.1 )
日時: 2008/06/21 14:20
名前: lightbox



基本構文
CREATE TABLE 表名
   [ ( 列リスト) ]
AS
   ( サブクエリー )
列リストを指定せずに、サブクエリーのSELECT 句で * のみを指定すると、同じフォーマットの 表が作成され、SELECT 文の結果となる行が全て追加されます ※ その際、制約は NOT NULL 制約しかコピーされません
create table 社員
 as
select * from 社員マスタ
空の表を作成したい場合は、副問合せの WHERE句の条件が一致しないようにします
create table 社員
 as
select * from 社員マスタ where 1 = 2
列名リストを指定すると制約やデフォルト値を設定可能です
create table 社員 (
	社員コード
	,氏名
	,フリガナ
	,支給額 default 0
	,primary key( 社員コード )
)
 as
select
	社員コード
	,氏名
	,フリガナ
	,NVL(給与,0)+NVL(手当,0)
from
	社員マスタ
列名型値型定数型名最大桁精度スケールNULL主キーデフォルト
1社員コード129adCharVARCHAR24N1
2氏名129adCharVARCHAR250
3フリガナ129adCharVARCHAR250
4支給額131adNumericNUMBER150
デフォルト値を持つ列は、insert 文で列リストで指定されない場合に その値が設定されます。 ↓支給額は、0 がセットされる
insert into "社員" (
	"社員コード" 
	,"氏名" 
	,"フリガナ" 
)
 values(
	'0051'
	,'浦岡 友也'
	,'ウラオカ トモヤ'
)
また、SQL 内で、その値をあらわすキーワードとして使用可能です
update "社員" set 
	"氏名" = '浦岡 友也'
	,"フリガナ" = 'ウラオカ トモヤ'
	,"支給額" = default
 where
 "社員コード" = '0051'