Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Sütun işlemleri

Son Güncelleme:Oct 10, 2026

MaxCompute, mevcut tablolardaki sütunları değiştirmenize olanak tanır. İş gereksinimlerinizi karşılamak için sütun ekleyebilir veya silebilir ve sütun veri türlerini değiştirebilirsiniz.

Komutlar

Aşağıdaki tabloda sütun işlemleri için kullanılan MaxCompute SQL komutları açıklanmaktadır.

Eylemler

Açıklama

Rol

Platform

Sütun veya açıklama ekleyin

Mevcut bölümlenmemiş veya bölümlenmiş bir tabloya sütunlar veya açıklamalar ekler.

Tablo üzerinde Alter iznine sahip kullanıcılar

Bu komutları aşağıdaki platformlarda çalıştırabilirsiniz:

Sütunları silin

Mevcut bölümlenmemiş veya bölümlenmiş bir tablodan sütunları siler.

Sütun veri türlerini değiştirin

Mevcut bir sütunun veri türünü değiştirir.

Sütun sırasını değiştirin

Bir tablodaki belirtilen bir sütunun sırasını ayarlar.

Sütun adını değiştirin

Mevcut bölümlenmemiş veya bölümlenmiş bir tablodaki bir sütunun adını değiştirir.

Sütun açıklamasını değiştirin

Mevcut bölümlenmemiş veya bölümlenmiş bir tablodaki bir sütunun açıklamasını değiştirir.

Sütun adını ve açıklamasını değiştirin

Mevcut bölümlenmemiş veya bölümlenmiş bir tablodaki bir sütunun adını ve açıklamasını aynı anda değiştirir.

Bir sütunun NOT NULL özelliğini değiştirin

Bölüm anahtarı olmayan bir sütunun NOT NULL özelliğini değiştirir.

Kullanım notları

Şema evrimi; karmaşık veri türlerine sahip sütunlar ekleme, sütunları silme, sütunların sırasını yeniden düzenleme ve sütun veri türlerini değiştirme gibi işlemleri içerir. Sütunların sırasını yeniden düzenlediğinizde, sütun ekleyip ardından sırasını değiştirdiğinizde veya sütunları sildiğinizde tablonun okuma ve yazma davranışı etkilenir ve aşağıdaki kısıtlamalar uygulanır:

  • İş türü MapReduce 1.0 ise Graph görevleri değiştirilen tablodan veri okuyamaz veya tabloya veri yazamaz.

  • CUPID işleri için yalnızca aşağıdaki Spark sürümleri tablodan veri okuyabilir. Tabloya veri yazamazsınız.

    • Spark-2.3.0-odps0.34.0

    • Spark-3.1.1-odps0.34.0

  • PAI işleri tablodan veri okuyabilir ancak tabloya veri yazamaz.

  • Hologres işleri için %1,3'ten önceki bir Hologres sürümü kullanıyorsanız, değiştirilen tabloya yabancı tablo olarak başvururken tablodan okuma veya tabloya yazma işlemi yapamazsınız.

  • Şema evriminden sonra CLONE TABLE desteklenmez.

  • Şema evrimi gerçekleştiyse Streaming Tunnel bir hata bildirir.

Sütun veya açıklama ekleyin

Mevcut bölümlenmemiş veya bölümlenmiş bir tabloya sütunlar veya açıklamalar ekleyebilirsiniz. Kısıtlamalar hakkında daha fazla bilgi için bkz. Kullanım notları. MaxCompute STRUCT türündeki sütunların eklenmesini destekler; örneğin STRUCT<x: STRING, y: BIGINT> ve MAP<STRING, STRUCT<x: DOUBLE, y: DOUBLE>>.

  • Ön koşullar

    Şema evrimini etkinleştirmek için setproject odps.schema.evolution.enable=true; komutunu çalıştırın.

    • İzinler: Bu proje düzeyinde bir özelliktir. Bu komutu çalıştırmak için proje sahibi olmanız veya proje düzeyinde Super_Administrator ya da Admin rolüne sahip olmanız gerekir. Daha fazla bilgi için bkz. Bir kullanıcıya yerleşik yönetim rolü atayın.

    • Etkin olma süresi: Değişiklik yaklaşık 10 dakika içinde etkili olur.

  • Sözdizimi

    ALTER TABLE <table_name> 
      ADD COLUMNS [IF NOT EXISTS]
      (<col_name1> <type1> COMMENT ['<col_comment>']
      [, <col_name2> <type2> COMMENT '<col_comment>'...]
      );
  • Parametreler


    Parametre


    Gerekli


    Açıklama


    table_name


    Evet


    Değiştirilecek tablonun adı. Yeni sütunlar tablonun sonuna eklenir.


    col_name


    Evet


    Yeni sütunun adı.


    type


    Evet


    Yeni sütunun veri türü.


    col_comment


    Hayır


    Yeni sütun için açıklama.

  • Örnekler

    • Örnek 1: sale_detail tablosuna iki sütun ekleyin.

      ALTER TABLE sale_detail ADD COLUMNS IF NOT EXISTS(customer_name STRING, education BIGINT);
    • Örnek 2: sale_detail tablosuna açıklamalı iki sütun ekleyin.

      ALTER TABLE sale_detail ADD COLUMNS (customer_name STRING COMMENT 'Customer', education BIGINT COMMENT 'Education' );
    • Örnek 3: sale_detail tablosuna karmaşık bir veri türünde sütun ekleyin.

      ALTER TABLE sale_detail ADD COLUMNS (region_info struct<province:string, area:string>);
    • Örnek 4: Zaten var olan bir sütunu eklemek için IF NOT EXISTS kullanırsanız komut sütunu tekrar eklemeden başarı mesajı döndürür.

      -- The statement is successful, but the ID column is not repeatedly added.
      ALTER TABLE sale_detail ADD COLUMNS IF NOT EXISTS(id bigint);
    • Örnek 5: Delta tablosuna bir sütun ekleyin.

      CREATE TABLE delta_table_test (pk BIGINT NOT NULL PRIMARY KEY, val BIGINT) 
        TBLPROPERTIES ("transactional"="true");
        
      ALTER TABLE delta_table_test ADD COLUMNS (val2 bigint);

Sütunları silin

Mevcut bölümlenmemiş veya bölümlenmiş bir tablodan bir veya daha fazla sütun silebilirsiniz. Kısıtlamalar hakkında daha fazla bilgi için bkz. Kullanım notları.

  • Ön koşullar

    Şema evrimini etkinleştirmek için setproject odps.schema.evolution.enable=true; komutunu çalıştırın.

    • İzinler: Bu proje düzeyinde bir özelliktir. Bu komutu çalıştırmak için proje sahibi olmanız veya proje düzeyinde Super_Administrator ya da Admin rolüne sahip olmanız gerekir. Daha fazla bilgi için bkz. Bir kullanıcıya yerleşik yönetim rolü atayın.

    • Etkin olma süresi: Değişiklik yaklaşık 10 dakika içinde etkili olur.

  • Sözdizimi

    -- Delete a single column.
    ALTER TABLE <table_name> DROP COLUMN <col_name>;
    
    -- Delete multiple columns.
    ALTER TABLE <table_name> DROP COLUMNS <col_name1>[, <col_name2>...];
  • Parametreler

    • table_name: Gerekli. Değiştirilecek tablonun adı.

    • col_name: Gerekli. Silinecek sütunun adı.

  • Örnekler

    -- Example 1: Delete the customer_id column from the sale_detail table.
    ALTER TABLE sale_detail DROP COLUMNS customer_id;
    
    -- Example 2: Delete the shop_name and total_price columns from the sale_detail table.
    ALTER TABLE sale_detail DROP COLUMNS shop_name, total_price;

Sütun veri türlerini değiştirin

Mevcut bir sütunun veri türünü değiştirebilirsiniz. Kısıtlamalar hakkında daha fazla bilgi için bkz. Kullanım notları.

  • Ön koşullar

    Şema evrimini etkinleştirmek için setproject odps.schema.evolution.enable=true; komutunu çalıştırın.

    • İzinler: Bu proje düzeyinde bir özelliktir. Bu komutu çalıştırmak için proje sahibi olmanız veya proje düzeyinde Super_Administrator ya da Admin rolüne sahip olmanız gerekir. Daha fazla bilgi için bkz. Bir kullanıcıya yerleşik yönetim rolü atayın.

    • Etkin olma süresi: Değişiklik yaklaşık 10 dakika içinde etkili olur.

  • Sözdizimi

    ALTER TABLE <table_name> CHANGE [COLUMN] <old_column_name> <new_column_name> <new_data_type>;
  • Parametreler


    Parametre


    Gerekli


    Açıklama


    table_name


    Evet


    Sütunu içeren tablonun adı.


    old_column_name


    Evet


    Değiştirilecek sütunun adı.


    new_column_name


    Evet

    Sütunun yeni adı.

    old_column_name ile new_column_name aynı olabilir; bu durum sütun adının değiştirilmediğini gösterir. Ancak new_column_name, old_column_name dışındaki herhangi bir sütun adıyla aynı olamaz.


    new_data_type


    Evet


    Sütun için yeni veri türü.

  • Örnek

    -- Change the data type of the id field in the sale_detail table from BIGINT to STRING.
    ALTER TABLE sale_detail CHANGE COLUMN id id STRING;
  • Desteklenen veri türü dönüşümleri

    Not

    Y dönüşümün desteklendiğini gösterir. N dönüşümün desteklenmediğini gösterir. - dönüşümün uygulanamadığını gösterir. Y() parantez içindeki koşul karşılandığında dönüşümün desteklendiğini gösterir.

    Data type conversion table

Sütun sırasını değiştirin

Mevcut bölümlenmemiş veya bölümlenmiş bir tablodaki sütun sırasını değiştirebilirsiniz. Kısıtlamalar hakkında daha fazla bilgi için bkz. Kullanım notları.

  • Ön koşullar

    Şema evrimini etkinleştirmek için setproject odps.schema.evolution.enable=true; komutunu çalıştırın.

    • İzinler: Bu proje düzeyinde bir özelliktir. Bu komutu çalıştırmak için proje sahibi olmanız veya proje düzeyinde Super_Administrator ya da Admin rolüne sahip olmanız gerekir. Daha fazla bilgi için bkz. Bir kullanıcıya yerleşik yönetim rolü atayın.

    • Etkin olma süresi: Değişiklik yaklaşık 10 dakika içinde etkili olur.

  • Sözdizimi

    ALTER TABLE <table_name> CHANGE <old_column_name> <new_column_name> <column_type> AFTER <column_name>;
  • Parametreler


    Parametre


    Gerekli


    Açıklama


    table_name


    Evet


    Değiştirilecek tablonun adı.


    old_column_name


    Evet


    Taşınacak sütunun adı.


    new_col_name


    Evet

    Sütunun yeni adı.

    new_col_name ile old_column_name aynı olabilir; bu durum sütun adının değiştirilmediğini gösterir. Ancak new_col_name, old_column_name dışındaki herhangi bir sütun adıyla aynı olamaz.


    column_type


    Evet


    Sütunun orijinal veri türü. Bu değiştirilemez.


    column_name


    Evet


    Yeniden sıralanacak sütunu column_name öğesinden sonra taşır.

  • Örnekler

    -- Change the name of the customer column in the sale_detail table to customer_id and move it after the total_price column.
    ALTER TABLE sale_detail CHANGE customer customer_id STRING AFTER total_price;
    
    -- Move the customer_id column in the sale_detail table after the total_price column without changing the column name.
    ALTER TABLE sale_detail CHANGE customer_id customer_id STRING AFTER total_price;

Sütun adını değiştirin

Mevcut bölümlenmemiş veya bölümlenmiş bir tablodaki bir sütunun adını değiştirebilirsiniz.

  • Sözdizimi

    ALTER TABLE <table_name> CHANGE COLUMN <old_col_name> RENAME TO <new_col_name>;
  • Parametreler


    Parametre


    Gerekli


    Açıklama


    table_name


    Evet


    Değiştirilecek tablonun adı.


    old_col_name


    Evet


    Sütunun geçerli adı. Sütun mevcut olmalıdır.


    new_col_name


    Evet


    Sütun için yeni ad. Sütun adı tablo içinde benzersiz olmalıdır.

  • Örnek

    -- Rename the customer_name column in the sale_detail table to customer.
    ALTER TABLE sale_detail CHANGE COLUMN customer_name RENAME TO customer;

Sütun açıklamasını değiştirin

Mevcut bölümlenmemiş veya bölümlenmiş bir tablodaki bir sütunun açıklamasını değiştirebilirsiniz.

  • Sözdizimi

    ALTER TABLE <table_name> CHANGE COLUMN <col_name> COMMENT '<col_comment>';
  • Parametreler


    Parametre


    Gerekli


    Açıklama


    table_name


    Evet


    Değiştirilecek tablonun adı.


    col_name


    Evet


    Açıklamasını değiştirmek istediğiniz sütunun adı. Sütun mevcut olmalıdır.


    col_comment


    Evet


    Yeni açıklama. Geçerli bir dize olmalı ve maksimum uzunluğu 1.024 bayttır.

  • Örnek

    -- Change the comment of the customer column in the sale_detail0113 table.
    ALTER TABLE sale_detail0113 CHANGE COLUMN customer COMMENT 'customer';

Sütun adını ve açıklamasını değiştirin

Bölümlenmemiş veya bölümlenmiş bir tablodaki bir sütunun adını ve açıklamasını değiştirebilirsiniz.

  • Sözdizimi

    ALTER TABLE <table_name> CHANGE COLUMN <old_col_name> <new_col_name> <column_type> COMMENT '<col_comment>';
  • Parametreler


    Parametre


    Gerekli


    Açıklama


    table_name


    Evet


    Değiştirilecek tablonun adı.


    old_col_name


    Evet


    Değiştirilecek sütunun geçerli adı. Sütun mevcut olmalıdır.


    new_col_name


    Evet


    Sütun için yeni ad. Sütun adı tablo içinde benzersiz olmalıdır.


    column_type


    Evet


    Sütunun veri türü.


    col_comment


    İsteğe bağlı


    Yeni açıklama. Maksimum uzunluk 1.024 bayttır.

  • Örnek

    -- Change the name of the customer column in the sale_detail table to customer_newname and change its comment to 'customer'.
    ALTER TABLE sale_detail CHANGE COLUMN customer customer_newname STRING COMMENT 'customer';

Bir sütunun NOT NULL özelliğini değiştirin

Bölüm anahtarı olmayan bir sütunun NOT NULL özelliğini değiştirebilirsiniz. Örneğin, bölüm anahtarı olmayan bir sütun NULL değerlere izin vermeyecek şekilde tanımlandıysa bu komutu kullanarak NULL değerlere izin verecek şekilde değiştirebilirsiniz.

Bu işlem geri alınamaz: NULL değerlere izin verdikten sonra bir sütunu tekrar NULL değerlere izin vermeyecek şekilde değiştiremezsiniz.

  • Nullable özelliğini görüntülemek ve sütunun NULL değerlere izin verip vermediğini belirlemek için DESC EXTENDED table_name; komutunu çalıştırın:

    • Nullable değeri true ise NULL değerlere izin verilir.

    • Nullable değeri false ise NULL değerlere izin verilmez.

  • Sözdizimi

    ALTER TABLE <table_name> CHANGE COLUMN <old_col_name> NULL;
  • Parametreler


    Parametre


    Gerekli


    Açıklama


    table_name


    Evet


    Değiştirilecek tablonun adı.


    old_col_name


    Evet


    Değiştirilecek bölüm anahtarı olmayan sütunun adı. Sütun mevcut olmalıdır.

  • Örnek

    -- Create a partitioned table in which the id column cannot be NULL.
    CREATE TABLE null_test(id INT NOT NULL, name STRING) PARTITIONED BY (ds string);
    
    -- View table properties.
    DESC EXTENDED null_test;
    -- The following result is returned:
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | id       | int    |       |               | false    | NULL         |              |
    | name     | string |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Partition Columns:                                                                 |
    +------------------------------------------------------------------------------------+
    | ds              | string     |                                                     |
    +------------------------------------------------------------------------------------+
    
    -- Allow the id column to be NULL.
    ALTER TABLE null_test CHANGE COLUMN id NULL;
    -- View table properties.
    DESC EXTENDED null_test;
    -- The following result is returned:
    +------------------------------------------------------------------------------------+
    | Native Columns:                                                                    |
    +------------------------------------------------------------------------------------+
    | Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
    +------------------------------------------------------------------------------------+
    | id       | int    |       |               | true     | NULL         |              |
    | name     | string |       |               | true     | NULL         |              |
    +------------------------------------------------------------------------------------+
    | Partition Columns:                                                                 |
    +------------------------------------------------------------------------------------+
    | ds              | string     |                                                     |
    +------------------------------------------------------------------------------------+

Başvurular

Tablo işlemleri hakkında daha fazla bilgi için aşağıdaki konulara bakın: