Xano Documentation
  • 👋Welcome to Xano!
  • 🌟Frequently Asked Questions
  • 🔐Security & Compliance (Trust Center)
  • 🙏Feature Requests
  • 💔Known Issues
  • Before You Begin
    • Using These Docs
    • Where should I start?
    • Set Up a Free Xano Account
    • Key Concepts
    • The Development Life Cycle
    • Navigating Xano
    • Plans & Pricing
  • The Database
    • Designing your Database
    • Database Basics
      • Using the Xano Database
      • Field Types
      • Relationships
      • Database Views
      • Export and Sharing
      • Data Sources
    • Migrating your Data
      • Airtable to Xano
      • Supabase to Xano
      • CSV Import & Export
    • Database Performance and Maintenance
      • Storage
      • Indexing
      • Maintenance
      • Schema Versioning
  • 🛠️The Function Stack
    • Building with Visual Development
      • APIs
        • Swagger (OpenAPI Documentation)
      • Custom Functions
        • Async Functions
      • Background Tasks
      • Triggers
      • Middleware
      • Configuring Expressions
      • Working with Data
    • Functions
      • AI Tools
      • Database Requests
        • Query All Records
          • External Filtering Examples
        • Get Record
        • Add Record
        • Edit Record
        • Add or Edit Record
        • Patch Record
        • Delete Record
        • Bulk Operations
        • Database Transaction
        • External Database Query
        • Direct Database Query
        • Get Database Schema
      • Data Manipulation
        • Create Variable
        • Update Variable
        • Conditional
        • Switch
        • Loops
        • Math
        • Arrays
        • Objects
        • Text
      • Security
      • APIs & Lambdas
        • Realtime Functions
        • External API Request
        • Lambda Functions
      • Data Caching (Redis)
      • Custom Functions
      • Utility Functions
      • File Storage
      • Cloud Services
    • Filters
      • Manipulation
      • Math
      • Timestamp
      • Text
      • Array
      • Transform
      • Conversion
      • Comparison
      • Security
    • Data Types
      • Text
      • Expression
      • Array
      • Object
      • Integer
      • Decimal
      • Boolean
      • Timestamp
      • Null
    • Environment Variables
    • Additional Features
      • Response Caching
  • Testing and Debugging
    • Testing and Debugging Function Stacks
    • Unit Tests
    • Test Suites
  • CI/CD
  • File Storage
    • File Storage in Xano
    • Private File Storage
  • Realtime
    • Realtime in Xano
    • Channel Permissions
    • Realtime in Webflow
  • Maintenance, Monitoring, and Logging
    • Statement Explorer
    • Request History
    • Instance Dashboard
      • Memory Usage
  • Building Backend Features
    • User Authentication & User Data
      • Separating User Data
      • Restricting Access (RBAC)
      • OAuth (SSO)
    • Webhooks
    • Messaging
    • Emails
    • Custom Report Generation
    • Fuzzy Search
    • Chatbots
  • Xano Features
    • Snippets
    • Instance Settings
      • Release Track Preferences
      • Static IP (Outgoing)
      • Change Server Region
      • Direct Database Connector
      • Backup and Restore
      • Security Policy
    • Advanced Back-end Features
      • Xano Link
      • Developer API (Deprecated)
    • Metadata API
      • Master Metadata API
      • Tables and Schema
      • Content
      • Search
      • File
      • Request History
      • Workspace Import and Export
      • Token Scopes Reference
  • Xano AI
    • Building a Backend Using AI
    • Get Started Assistant
    • AI Database Assistant
    • AI Lambda Assistant
    • AI SQL Assistant
    • API Request Assistant
    • Template Engine
    • Streaming APIs
  • AI Tools
    • MCP Servers
      • Connecting Clients
      • MCP Functions
  • Xano Transform
    • Using Xano Transform
  • Xano Actions
    • What are Actions?
    • Browse Actions
  • Team Collaboration
    • Realtime Collaboration
    • Managing Team Members
    • Branching & Merging
    • Role-based Access Control (RBAC)
  • Agencies
    • Xano for Agencies
    • Agency Features
      • Agency Dashboard
      • Client Invite
      • Transfer Ownership
      • Agency Profile
      • Commission
      • Private Marketplace
  • Enterprise
    • Xano for Enterprise
    • Enterprise Features
      • Microservices
      • Tenant Center
      • Compliance Center
      • Security Policy
      • Instance Activity
      • Deployment
      • RBAC (Role-based Access Control)
      • Xano Link
  • Your Xano Account
    • Account Page
    • Billing
    • Referrals & Commissions
  • Troubleshooting & Support
    • Error Reference
    • Troubleshooting Performance
      • When a single workflow feels slow
      • When everything feels slow
      • RAM Usage
      • Function Stack Performance
    • Getting Help
      • Granting Access
      • Community Code of Conduct
      • Community Content Modification Policy
  • Special Pricing
    • Students & Education
    • Non-Profits
  • Security
    • Best Practices
Powered by GitBook
On this page
  • Create a Database Table
  • Navigating the Table View
  • Adding a new field
  • Field Options
  • Adding Data
  • Generate Test Data using AI
  • Adding Data Manually
  • Additional Table Settings

Was this helpful?

  1. The Database
  2. Database Basics

Using the Xano Database

Last updated 17 days ago

Was this helpful?

Hint

Use the to create and update tables for you!

Create a Database Table

1

Head to the database

Click in the left hand menu.

2

Add a new table

Click in the top right corner.

Choose Import Data to , or Enter Data Manually to start with an empty table where you can add your own data later, or generate sample data automatically.

If you're just starting out, we'd recommend choosing Enter Data Manually and using the sample data generator. You can always import data later.

In the panel that opens, give your table a and a

3

Give your table a name and a description.

When naming your table, it's considered best practice to use camelCase for multiple words, and to not use plurals in the table name. For example, a table of dog breeds would be named dogBreed

The description is just for you to make notes on what this table will contain, notable data constraints, or any other information you'd like to store.

4

Choose your primary key type.

The primary key is the ID of each record. Xano offers two types of primary keys to choose from.

When should you use Sequential, and when should you use UUID?

When designing your database structure in Xano, choosing the right identifier type is an important decision. Here's a straightforward guide to help you decide:

Sequential IDs are best for:

  • Performance-sensitive operations - they're faster to index and query

  • Human-friendly references - easier to communicate ("Please check record #42")

  • Storage efficiency - they consume less space in your database

  • When chronological order matters - the sequence reveals creation order

  • Single-database applications where centralized ID generation works well

  • Systems that benefit from predictable numbering patterns

Common use cases: Customer IDs, order numbers, ticket systems, invoice numbers, internal record tracking

UUIDs are best for:

  • Distributed systems where multiple services create records independently

  • Data synchronization across different databases or systems

  • Preventing ID guessing or enumeration attacks

  • Frontend-first workflows where IDs need to be generated before server contact

  • Multi-region deployments with separate databases

  • When you don't want to expose information about record counts

  • Scenarios where data privacy is paramount

Common use cases: User accounts in modern applications, cross-system record tracking, session management, event logging in distributed architectures

Please note that there is no support for converting tables to / from different primary key types. However, this can be done with a manual migration to a new table.

Sequential (1, 2, 3...)

A sequential identifier is just a sequence of whole numbers (1, 2, 3, etc...).

Think of sequential IDs like numbered tickets at a deli counter. They start at 1 and count up one by one (2, 3, 4...). Just like how the first customer gets ticket #1, the first row in your database gets ID #1. This system is straightforward but requires coordination - just as you can't have two deli counters giving out the same numbers (it would confuse customers), you need to ensure you're not creating duplicate IDs across different parts of your system.

UUID

A UUID is like the serial number on your electronics - something like "550e8400-e29b-41d4-a716-446655440000". It's longer and looks random, similar to how no two iPhone serial numbers are alike, even if they were made in different factories. This makes UUIDs particularly useful when you have data coming from multiple sources or need to merge databases - you don't have to worry about ID conflicts, just like how Apple doesn't need to check with Samsung about what serial numbers they're using.

Some users feel that using UUIDs is also more secure. UUIDs do provide some security benefits through obscurity - you can't easily guess other valid IDs by simply incrementing a number. If a website shows you order #1234, you might guess that order #1235 exists. But if you see order 550e8400-e29b-41d4-a716-446655440000, you can't easily guess other valid orders.

However, it's crucial to understand that using UUIDs is not a replacement for proper security measures. You should never rely on the difficulty of guessing IDs as your only security mechanism. Proper authentication and authorization should be in place regardless of ID type.

5

Add some tags.

Tags in Xano can be applied to any object (tables, APIs, functions, etc...) and are used to easily find related objects when searching your workspace.

6

Choose to add basic CRUD endpoints.

Xano can provide you with some standard pre-built APIs for basic operations against this table. If you choose this option, you'll also want to supply an API Group for those endpoints to live in. You can always choose to generate these endpoints later, too.

7

Confirm your choices.

Once you've confirmed all of your settings are as you want them to be, click Add Table.


Navigating the Table View

Let's start with the top control bar.

Just below the control bar, you'll see your database records.

Use your mouse or arrow keys to navigate between records and individual cells.

To modify data, just select the cell and make your desired changes. They will be saved automatically.


When Working in Large Tables

Making changes to your schema, such as renaming or adding fields in a extremely large table requires significant server resources. Please contact support if you encounter any issues.

After you've selected your desired field type, you will be presented with a number of options. You can review each one of them and what they mean below.

Setting
Required?
Description

Name

The name of the field you are creating

Description

Add additional details here

Data Structure

Single - Each record will only store one value in this field. This is the more common selection. List - Each record can hold multiple values in this field. For example, if this was a table of authors, we might have a field that can store multiple books for each author.

Allow Nullable Values

A null value is similar to an empty value in that it represents "nothing is here", but it's still an actual value written to the record. Useful if you need to specifically check whether or not that field has data stored.

Format

For some field types, you can specify a format. This does not change the actual data being stored and is only used to enable easier viewing and editing for you inside of the table view.

Default Value

When adding new records, you can automatically populate a default value Note: If your field allows nullable values, they will auto-apply null to new records as a default value. Adding 'null' to the default value field manually will be processed as text and have unintended results.

Note

The settings listed below only impact your API endpoints that utilize the feature. This means that it is possible to make changes that break these rules via the database table view.

Setting
Required?
Description

Required

Determines whether or not this field is required when adding a record

Sensitive Data

Hide the contents of this field from certain areas, such as request history

Column Visibility

Public - The field will be available as an input Private - This field will not appear in inputs Internal - Hide this field from API inputs and responses

Custom Rules & Filters

See below.

Custom Rules & Filters

For each field, you can apply various rules and filters to ensure that the data is stored in the format that you expect.

Filter Name
Purpose

min

Enforces a minimum number of required characters

max

Enforces a maximum number of required characters

startsWith

Enforces a prefix

endsWith

Enforces a suffix

prevent

Blacklists phrases

lower

Stores the value in all lowercase

upper

Stores the value in all uppercase

alphaOk

Whitelist certain alphanumeric characters

digitOk

Whitelist certain numbers

ok

Whitelist certain characters

pattern

Enforce a


Right-click on the header of a field to access field-related settings and make adjustments to the options already detailed above, as well as some additional controls.

Please note that renaming a field should be handled with care, as it may impact any function steps that reference that field.

Xano will attempt to convert the data in the column to the new data type, but because of potential variations between data types, and the specific data being converted, this may not always be successful. It is always recommended to create a new column instead.

Deleting a column is irreversible. Proceed with caution.


Generate Test Data using AI

This option is located at the bottom of your database records — so, if you have no records, you should see it right at the top.

The record generation will look at the name and the data type for each of your fields and try to auto-suggest what they should be filled with.

You can click on one of those data types to change what that field is populated with, or specific settings related to that data type.

In the bottom-right corner, you can change the number of records generated, up to 100 at a time.

When you're ready, click "Generate" and you should see your new sample data populated. You can always generate more records if you'd like.

Hint

Want to clear out all of the sample data? There's a quick "Clear All Records" shortcut in the upper-right settings menu. This will delete all records in the table in one swing.

Adding Data Manually

The record will be created using any default values you've specified in the field options, and you can click on each cell to fill it in manually.


Setting Name
Description

Authentication

Security

Change the table .

Versions

Triggers

Access your .

Auto-complete

Access your settings.

Clear all records

Deletes all records in the table. You can also choose to reset the primary ID back to 1 on tables that use a sequential ID.

Clone table

Cloning copies the table schema. Cloning does not copy existing data.

Export data

Export your table data using the current view as a CSV

Import data

Navigation Controls
Searching, Filtering, and Sorting
Tools and Advanced Controls

Select one or more records by checking these boxes

Open a card view of the selected record

Add a new field

Adding a new field

Click the to add a new field, and choose the you want to add from the panel that opens.

Field Options

Rename this field

You can click when viewing a database table to open Referenced By and view any database operations that utilize that column first to understand where changes need to be made. In the screenshot below, we know we want to update the name column, so we can use Referenced By to find where it's used beforehand.

Access field settings (the options detailed earlier in this document)

Make a copy of this column

Insert a new column directly after the selected column

Reorder your database fields. This does not impact how the data is returned in your function stacks.

Change the data type of the column

Delete the column

Adding Data

After you've created your database , you can generate some sample data to use right away by clicking

Click at the bottom of your existing records (if any) to add a new record.

You can also click to open up the card view and fil in multiple, or all fields at once when creating a new record.

Additional Table Settings

Click to access table settings after creation, including both settings detailed earlier in this document, as well as some additional options.

Determines whether or not this table is used for .

Xano maintains a version history of your table schema. You can roll back to a previous version of your schema if you've made changes that you want to undo. Note: This does not change the data in your table, only the fields. If you need to restore a backup of your table data, see .

Import records from a CSV

Table name, ID, description, and tags

Go back to your list of database tables.

Refresh the list of records

Change the

Search for specific records

Filter your records by certain conditions, such as "all records with an ID greater than 100"

Sort your database records

Hide database fields from view

Cut, Copy, Paste, Undo, and Redo

Show

Show

Review available keyboard shortcuts for the database view

🧭
🔎
🧰
➕
⚙️
🔢
⚙️
user authentication
this document
📖
Learn More
✨
👨‍🏭
ℹ️
AI Database Assistant
import data from a CSV file
type of field