<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="topic_template.xsl"?>
<topic>
<category>Statement</category>
<classification>SQL-DDL</classification>
<ref_entry>CREATE DOMAIN</ref_entry>
<creator date="2004/04/25 00:00:00">T.Hayashi</creator>
<modified />
<definition>新規のドメインを作成します。</definition>
<structure>
  <sql>
   <syn>CREATE</syn><syn>DOMAIN</syn><var>domain_name</var><option>AS</option><clause>data_type</clause><br />
   <option>DEFAULT<selgroup><item>literal </item><item>NULL </item><item>USER </item><item>CURRENT_USER</item><item>CURRENT_ROLE</item></selgroup></option><br />
   <option>NOT NULL</option><br />
   <option>CHECK <clause>domain_check_clause</clause></option><br />
   <option>COLLATE <var>collation_order</var></option>;<br />
  </sql>
  <clausenote>
    <left><clause>dom_search_condition</clause></left>
    <right>
     <selgroup>
      <sp />
      <item><syn>VALUE</syn><expr>operator</expr><clause refer="no">value</clause></item><br />
      <item><syn>VALUE</syn><option><syn>NOT</syn></option>
       <syn>BETWEEN</syn><clause refer="no">value</clause>
       <syn>AND</syn><clause refer="no">value</clause></item><br />
      <item><syn>VALUE</syn><option><syn>NOT</syn></option>
       <syn>LIKE</syn><clause refer="no">value</clause>
       <option><syn>ESCAPE</syn><clause refer="no">value</clause></option></item><br />
      <item><syn>VALUE</syn><option><syn>NOT</syn></option><syn>IN</syn>
       <args>
        <a><clause refer="no">value</clause></a>
        <option>
         <a><clause refer="no">value</clause></a>
         <a><variablelength /></a>
        </option></args></item><br />
      <item><syn>VALUE</syn>IS<option><syn>NOT</syn></option><syn>NULL</syn></item><br />
      <item><syn>VALUE</syn><option><syn>NOT</syn></option>
       <syn>CONTAINING</syn><clause refer="no">value</clause></item><br />
      <item>
       <syn>VALUE</syn>
       <option><syn>NOT</syn></option><syn>STARTING</syn>
       <option><syn>WITH</syn></option><clause refer="no">value</clause></item><br />
      <item><args><a><clause>dom_search_condition</clause></a></args></item><br />
      <item><syn>NOT</syn><clause>dom_search_condition</clause></item><br />
      <item><clause>dom_search_condition</clause><syn>OR</syn><clause>dom_search_condition</clause></item><br />
      <item><clause>dom_search_condition</clause><syn>AND</syn><clause>dom_search_condition</clause></item><br />
     </selgroup>
    </right>
  </clausenote>
  <exprnote>
    <left><expr>operator</expr></left>
    <right>
     <selgroup>
      <sp />
      <item><syn>=</syn></item>
      <item><syn>&lt;</syn></item>
      <item><syn>&gt;</syn></item>
      <item><syn>&lt;=</syn></item>
      <item><syn>&gt;=</syn></item>
      <item><syn>!&lt;</syn></item>
      <item><syn>!&gt;</syn></item>
      <item><syn>&lt;&gt;</syn></item>
      <item><syn>!=</syn></item>
      <sp />
     </selgroup>
    </right>
  </exprnote>
</structure>
<arguments>
  <argument>
  <name><var>domain_name</var></name>
  <description>ドメイン名</description>
  </argument>
  <argument>
  <name>SET DEFAULT</name>
  <description>値が入力されていないときのカラムのデフォルト値を指定します。
  <list>
  <row><item><var>literal</var></item><description>指定された文字列、数値、日時が入ります。<br />リテラル値に'TODAY'を指定すると今日の日付が、'NOW'を指定すると現在の時刻が挿入されます。また、'YESTERDAY'と'TOMORROW'もそれぞれ、昨日と明日の日付が挿入されます。また、current_dateとcurrent_time、current_timestampも使用することが出来ます。</description></row>
  <row><item>NULL</item><description>NULLが入ります。</description></row>
  <row><item>USER</item><description>現在のユーザー名が入ります。<br />項目はデフォルトと互換のあるテキストタイプでなければなりません。</description></row>
  <row><item>CURRENT_USER</item><description>SQL規格で USER にあたります（厳密に現在のユーザー）。USER を越える優位性はありません。</description></row>
  <row><item>CURRENT_ROLE</item><description>現在のユーザーのロール名が入ります。</description></row>
  </list>
  <note type="memo">カラムレベルで設定したデフォルトの方をドメインレベルで設定したデフォルトより優先します。</note>
  </description>
  </argument>
  <argument>
  <name>TYPE <var>data_type</var></name>
  <description>ドメインのデータ型を指定します。</description>
  </argument>
</arguments>
<description>CREATE DOMAIN文は、新しいドメインを作成します。ドメインとは列の雛形であり、<keyword name="sql_create_table">CREATE TABLE</keyword>文や<keyword name="sql_alter_table">ALTER TABLE</keyword>文で列のデータ型として指定できるものです。<br />ドメインを作成して、列のデータ型とすることで各テーブルの列定義を簡素化すると共に共通化することが出来、設計や変更が容易になります。</description>
<examples>
 <example>
  <description>Boolean型として利用できるドメインを作成。</description>
  <samplecode>CREATE DOMAIN dom_bool AS CHAR(1) 
  CHARACTER SET ASCII
  DEFAULT 'F'
  CHECK(VALUE='T' OR VALUE='F') NOT NULL;
  </samplecode>
 </example>
</examples>
<see_also>
 <keyword name="sql_alter_domain">ALTER DOMAIN</keyword>
 <keyword name="sql_drop_domain">DROP DOMNAIN</keyword>
</see_also>
</topic>
