DDL Operations
Generate DDL statements from the context menu.
Access: Right-click table → Templates
Available Operations
| Operation | What It Does | Cost |
|---|---|---|
| CREATE TABLE (DDL) | Generate full schema DDL | Free |
| SELECT | Query template | Query |
| INSERT INTO | Insert template | Query |
| COPY TABLE | Copy structure + data | Query |
| CLONE TABLE | Lightweight copy (metadata only) | Free |
| TRUNCATE | Delete all rows, keep schema | Free |
| ALTER OPTIONS | Modify table settings | Free |
| RENAME | Change table name | Free |
| DROP | Delete table | Free |
COPY vs CLONE
COPY: Duplicates data (slow, costs query charges)
CREATE TABLE `project.dataset.table_copy` AS
SELECT * FROM `project.dataset.table`
CLONE: Metadata-only, copy-on-write (instant, free)
CREATE TABLE `project.dataset.table_clone`
CLONE `project.dataset.table`
Use CLONE for backups, testing, staging environments.
Common Patterns
Backup with expiration:
CREATE TABLE `project.dataset.table_backup_20250110`
CLONE `project.dataset.table`
OPTIONS(expiration_timestamp = TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 30 DAY))
Clone at specific time:
CREATE TABLE `project.dataset.table_clone`
CLONE `project.dataset.table`
FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
Recover from TRUNCATE:
INSERT INTO `project.dataset.table`
SELECT * FROM `project.dataset.table`
FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
ALTER OPTIONS
ALTER TABLE `project.dataset.table`
SET OPTIONS(
description = "Updated description",
expiration_timestamp = TIMESTAMP("2025-12-31"),
labels = [("env", "prod")],
max_time_travel_hours = 168
)
Permissions Required
- CREATE:
bigquery.tables.create - DROP:
bigquery.tables.delete - ALTER:
bigquery.tables.update