すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB for MySQL:SELECTとしてテーブルを作成する (CTAS)

最終更新日:Jun 12, 2024

AnalyticDB for MySQLでは、CREATE TABLEステートメントを実行してテーブルを作成したり、create table AS SELECT (CTAS) ステートメントを実行してクエリされたデータを新しいテーブルに書き込むことができます。

構文

CREATE TABLE [存在しない場合] <table_name> [table_definition]
[IGNORE | REPLACE] [AS] <query_statement> 
説明

デフォルトでは、CTASステートメントはCREATE TABLEステートメントと同じ方法で使用され、これらの2つのテーブル作成メソッドは同じ構文を共有します。 たとえば、テーブルの作成に使用されるステートメントに関係なく、インデックスはテーブルの各列に対して自動的に作成されます。

パラメーター

パラメーター

説明

table_name

テーブルの名前。

テーブル名は1 ~ 127文字で、英数字、アンダースコア (_) を使用できます。 テーブル名は、英字またはアンダースコア (_) で始まる必要があります。

異なるデータベース間で同じ名前を共有するテーブルを区別するには、db_name.table_name形式でテーブル名を指定します。

存在しない場合

table_nameで指定されたテーブルが存在するかどうかを判断します。 テーブルが存在する場合、テーブルは作成されません。

無視

オプションです。 新しいレコードがテーブルに書き込まれる前に、システムは、新しいレコードと同じ主キーを持つ既存のレコードがテーブルに含まれているかどうかを確認します。 一致が見つかった場合、新しいレコードはテーブルに書き込まれません。

交換

オプションです。 新しいレコードがテーブルに書き込まれる前に、システムは、新しいレコードと同じ主キーを持つ既存のレコードがテーブルに含まれているかどうかを確認します。 一致が見つかった場合、新しいレコードは既存のレコードを上書きします。

次の例では、customerテーブルからnew_customerという名前のテーブルが作成されます。 次のコードは、customerテーブルのスキーマを示しています。

テーブルの顧客を作成する (
customer_id bigint NOT NULL COMMENT 'Customer ID' 、customer_name varchar NOT NULL COMMENT 'Customer name' 、phone_num bigint NOT NULLコメント '電話番号' 、city_name varchar NOT NULL COMMENT 'City' 、sex int NOT NULL COMMENT 'Gender' 、id_number varchar NOT NULLコメント「IDカード番号」、home_address varchar NOT NULL COMMENT「ホームアドレス」、office_address varchar NOT NULL COMMENT 'オフィスアドレス' 、age int NOT NULL COMMENT 'Age' 、login_time timestamp NOT NULL COMMENT 'ログオン時間' 、PRIMARYキー (login_time,customer_id,phone_num)
 )
ハッシュによる分布 (customer_id)
PARTITION BY VALUE(DATE_FORMAT(login_time, '% Y % m % d')) LIFECYCLE 30
コメント '顧客情報テーブル'; 

例 1

customerテーブルからすべての列のデータを読み取り、new_customerテーブルにデータを書き込み、new_customerテーブルがcustomerテーブルと同じ列名とデータ型を持つようにします。 例:

CREATE TABLE new_customer
AS
SELECT * 顧客から; 

例 2

customerテーブルからcustomer_id列とcustomer_name列のデータを読み取り、new_customerテーブルに書き込みます。 例:

CREATE TABLE new_customer
AS
SELECT customer_id, customer_name
顧客から; 

例 3

customerテーブルからcustomer_id列とlogin_time列のデータを読み取り、new_customerテーブルに書き込みます。 new_customerテーブルで、customer_id列とlogin_time列を主キーとして、customer_id列を配布キーとして定義します。 例:

CREATE TABLE new_customer (
  PRIMARYキー (customer_id,login_time) 
  ハッシュによる配布 (customer_id)
AS
SELECT customer_id, login_time
顧客から; 

例 4

customerテーブルからcustomer_id列とlogin_time列のデータを読み取り、new_customerテーブルに書き込みます。 new_customerテーブルで、customer_id列とlogin_time列を主キーとして、customer_id列を配布キーとして定義します。 次に、login_time列のデータ型を変更します。 例:

CREATE TABLE new_customer (
  login_timeの日付、 
  PRIMARYキー (customer_id,login_time) 
  ハッシュによる配布 (customer_id)
AS
SELECT customer_id, login_time
顧客から; 

例 5

customer_idcustomer_namelogin_timeの各列のデータをcustomerテーブルから読み取り、new_customerテーブルに書き込みます。 new_customerテーブルで、customer_id列を転置インデックス列として定義します。 例:

CREATE TABLE new_customer (
  INDEX a_idx (customer_id)
AS
SELECT customer_id、customer_name、login_time
顧客から;