Bird
Raised Fist0
Snowflakecloud~5 mins

Creating tables (permanent, temporary, transient) in Snowflake - Step-by-Step CLI Walkthrough

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
When you want to store data in Snowflake, you create tables. Tables can be permanent, temporary, or transient. Each type controls how long data stays and how it is managed.
When you need to save data permanently for long-term use and backup.
When you want to store data only during your session and discard it after.
When you want to keep data temporarily without fail-safe backup to save costs.
When you want to test data transformations without affecting permanent storage.
When you want to manage data lifecycle with different retention and recovery needs.
Commands
This command creates a permanent table named my_permanent_table that stores data permanently until you delete it.
Terminal
CREATE TABLE my_permanent_table (id INT, name STRING);
Expected OutputExpected
Query executed successfully.
This command creates a temporary table named my_temp_table that exists only during your session and is dropped automatically after.
Terminal
CREATE TEMPORARY TABLE my_temp_table (id INT, name STRING);
Expected OutputExpected
Query executed successfully.
This command creates a transient table named my_transient_table that stores data without fail-safe backup but persists beyond your session.
Terminal
CREATE TRANSIENT TABLE my_transient_table (id INT, name STRING);
Expected OutputExpected
Query executed successfully.
This command lists all tables starting with 'my_' and ending with '_table' so you can verify your tables were created.
Terminal
SHOW TABLES LIKE 'my\_%\_table';
Expected OutputExpected
created_on name database_name schema_name kind comment owner 2024-06-01 12:00:00.000 +0000 MY_PERMANENT_TABLE MY_DB PUBLIC TABLE 2024-06-01 12:00:00.000 +0000 MY_TEMP_TABLE MY_DB PUBLIC TEMPORARY 2024-06-01 12:00:00.000 +0000 MY_TRANSIENT_TABLE MY_DB PUBLIC TRANSIENT
Key Concept

If you remember nothing else, remember: permanent tables keep data forever, temporary tables last only during your session, and transient tables keep data without backup but beyond your session.

Common Mistakes
Creating a temporary table and expecting it to persist after the session ends.
Temporary tables are automatically dropped when your session ends, so data is lost.
Use permanent or transient tables if you want data to persist beyond your session.
Using transient tables without understanding they have no fail-safe backup.
Data in transient tables can be lost if accidentally deleted because fail-safe is disabled.
Use transient tables only when you can tolerate data loss and want to save storage costs.
Not specifying table type and assuming default is temporary.
The default table type is permanent, so data will persist and incur storage costs.
Explicitly specify TEMPORARY or TRANSIENT if you want those behaviors.
Summary
Use CREATE TABLE for permanent tables that store data indefinitely.
Use CREATE TEMPORARY TABLE for session-only tables that disappear after you disconnect.
Use CREATE TRANSIENT TABLE for tables that persist but skip fail-safe backup to save costs.
Verify table creation with SHOW TABLES command.

Practice

(1/5)
1. Which type of table in Snowflake is best suited for storing data that needs to persist permanently and be recoverable after accidental deletion?
easy
A. TEMPORARY table
B. PERMANENT table
C. TRANSIENT table
D. EXTERNAL table

Solution

  1. Step 1: Understand table types in Snowflake

    Permanent tables store data permanently and include fail-safe for recovery.
  2. Step 2: Compare with other table types

    Temporary tables last only for the session, and transient tables do not have fail-safe, so they are not recoverable after deletion.
  3. Final Answer:

    PERMANENT table -> Option B
  4. Quick Check:

    Permanent = long-term, recoverable [OK]
Hint: Permanent tables keep data safe and recoverable long-term [OK]
Common Mistakes:
  • Confusing transient with permanent tables
  • Thinking temporary tables persist beyond session
  • Assuming transient tables have fail-safe
2. Which of the following is the correct syntax to create a temporary table named session_data with columns id INT and value STRING in Snowflake?
easy
A. CREATE TABLE session_data TEMPORARY (id INT, value STRING);
B. CREATE TABLE TEMP session_data (id INT, value STRING);
C. CREATE TEMPORARY TABLE session_data (id INT, value STRING);
D. CREATE TEMP session_data (id INT, value STRING);

Solution

  1. Step 1: Recall Snowflake syntax for temporary tables

    The correct keyword is TEMPORARY placed right after CREATE and before TABLE.
  2. Step 2: Check each option's syntax

    CREATE TEMPORARY TABLE session_data (id INT, value STRING); uses correct order and keywords. Options A, B, and C use incorrect or unsupported syntax.
  3. Final Answer:

    CREATE TEMPORARY TABLE session_data (id INT, value STRING); -> Option C
  4. Quick Check:

    CREATE TEMPORARY TABLE = correct syntax [OK]
Hint: Use CREATE TEMPORARY TABLE for temporary tables [OK]
Common Mistakes:
  • Using TEMP instead of TEMPORARY
  • Placing TEMPORARY after table name
  • Omitting TABLE keyword
3. What will be the result of the following Snowflake SQL commands?
CREATE TRANSIENT TABLE temp_cost (item STRING, price NUMBER);
INSERT INTO temp_cost VALUES ('apple', 1.2);
SELECT * FROM temp_cost;
medium
A. Syntax error due to TRANSIENT keyword
B. Error: Table does not exist
C. Empty result set
D. [{'item': 'apple', 'price': 1.2}]

Solution

  1. Step 1: Understand transient table behavior

    Transient tables behave like permanent tables but without fail-safe. They accept inserts and can be queried normally.
  2. Step 2: Analyze the commands

    The table is created, a row is inserted, and then selected. No errors or empty results expected.
  3. Final Answer:

    [{'item': 'apple', 'price': 1.2}] -> Option D
  4. Quick Check:

    Transient tables store and return inserted data [OK]
Hint: Transient tables act like permanent but no fail-safe [OK]
Common Mistakes:
  • Thinking transient tables cannot store data
  • Expecting syntax error with TRANSIENT keyword
  • Assuming transient tables auto-delete data immediately
4. You run the following command in Snowflake:
CREATE TEMPORARY TABLE temp_users (user_id INT, name STRING);

Later, you try to query temp_users in a new session but get an error. What is the most likely cause?
medium
A. Temporary tables only exist during the session they were created in
B. Syntax error in table creation
C. Transient tables cannot be queried
D. Table was dropped manually

Solution

  1. Step 1: Recall temporary table lifecycle

    Temporary tables exist only for the duration of the session that created them.
  2. Step 2: Understand session behavior

    Querying in a new session fails because the temporary table no longer exists.
  3. Final Answer:

    Temporary tables only exist during the session they were created in -> Option A
  4. Quick Check:

    Temporary = session-only lifespan [OK]
Hint: Temp tables vanish after session ends [OK]
Common Mistakes:
  • Assuming temp tables persist across sessions
  • Confusing transient with temporary tables
  • Ignoring session scope of temporary tables
5. You want to create a table in Snowflake that stores temporary data across sessions but does not use fail-safe to reduce storage costs. Which table type and creation statement should you use?
hard
A. CREATE TRANSIENT TABLE cost_savings (id INT, amount NUMBER);
B. CREATE TEMPORARY TABLE cost_savings (id INT, amount NUMBER);
C. CREATE PERMANENT TABLE cost_savings (id INT, amount NUMBER);
D. CREATE EXTERNAL TABLE cost_savings (id INT, amount NUMBER);

Solution

  1. Step 1: Identify table types and fail-safe behavior

    Transient tables do not have fail-safe, reducing storage costs but keep data beyond session.
  2. Step 2: Match requirement with table type

    Temporary tables are session-only, permanent tables have fail-safe, external tables are for external data.
  3. Final Answer:

    CREATE TRANSIENT TABLE cost_savings (id INT, amount NUMBER); -> Option A
  4. Quick Check:

    Transient = no fail-safe, cost-saving [OK]
Hint: Use transient tables to save costs without fail-safe [OK]
Common Mistakes:
  • Choosing temporary tables which expire after session
  • Using permanent tables with fail-safe enabled
  • Confusing external tables with transient