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つのテーブル作成メソッドは同じ構文を共有します。 たとえば、テーブルの作成に使用されるステートメントに関係なく、インデックスはテーブルの各列に対して自動的に作成されます。
パラメーター
パラメーター | 説明 |
| テーブルの名前。 テーブル名は1 ~ 127文字で、英数字、アンダースコア (_) を使用できます。 テーブル名は、英字またはアンダースコア (_) で始まる必要があります。 異なるデータベース間で同じ名前を共有するテーブルを区別するには、 |
|
|
| オプションです。 新しいレコードがテーブルに書き込まれる前に、システムは、新しいレコードと同じ主キーを持つ既存のレコードがテーブルに含まれているかどうかを確認します。 一致が見つかった場合、新しいレコードはテーブルに書き込まれません。 |
| オプションです。 新しいレコードがテーブルに書き込まれる前に、システムは、新しいレコードと同じ主キーを持つ既存のレコードがテーブルに含まれているかどうかを確認します。 一致が見つかった場合、新しいレコードは既存のレコードを上書きします。 |
例
次の例では、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_id
、customer_name
、login_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
顧客から;