This is the recommended endpoint for reading and modifying data in SeaTable. It supports SELECT, INSERT, UPDATE, and DELETE — giving you full access to filter, sort, group, join, and aggregate data in a single request. It works seamlessly across both normal and big data storage and returns column metadata alongside the results.
SQL syntax is case insensitive and most common functions work as expected — including now(), round(), upper(), trim(), abs(), and many more. Some functions use SeaTable-specific names (e.g. mid() instead of SUBSTR(), concatenate() instead of CONCAT()). See the function reference for the complete list and a MySQL/MariaDB equivalents table.
Example queries for a table Contacts with columns Name, Age, City:
SELECT * FROM Contacts WHERE Age >= 18 ORDER BY Name LIMIT 100SELECT City, COUNT(*), AVG(Age) FROM Contacts GROUP BY CitySELECT DISTINCT City FROM ContactsUPDATE Contacts SET City = 'Berlin' WHERE Name = 'Alice'DELETE FROM Contacts WHERE Age < 18SELECT * FROM Contacts WHERE Name = ? AND Age = ?(parameterized query)
For the complete SQL reference, see the SeaTable Developer Manual:
- SELECT — retrieve, filter, sort, group, and join rows
- INSERT — append rows (big data storage only)
- UPDATE — modify rows
- DELETE — remove rows
- Functions — all supported functions and MySQL/MariaDB equivalents
- Limitations — column writability, NULL handling, list types
Avoid SQL injection
Use
?placeholders in your SQL statement and pass the actual values via theparametersarray. This protects against SQL injection. Example:SELECT * FROM T WHERE Name = ? AND Age = ?withparameters: ["Alice", 30].
Limits
- Default: 100 rows. Maximum: 10,000 rows. Use
LIMITandOFFSETto paginate.- Link columns return a maximum of 50 linked records per row.
- INSERT only works with bases that have big data storage enabled.
Key restrictions
- Functions and expressions are not supported in
UPDATE SETorINSERT VALUES— only constant values are allowed.JOINkeyword is not supported — use implicit joins:SELECT ... FROM T1, T2 WHERE T1.col = T2.col.- Subqueries and
UNIONare not supported.SELECTuses column names by default. Setconvert_keystofalseto get column keys instead.
