--- title: SELECT | Datasquirel docs description: Read data from a table using SELECT queries in Datasquirel page_title: SELECT page_description: Retrieve rows from your tables using SQL SELECT statements. --- ## Overview `SELECT` retrieves rows from one or more tables. It is the most frequently used SQL statement. ## Basic Syntax ```sql SELECT column1, column2 FROM table_name WHERE condition ORDER BY column1 ASC LIMIT 10; ``` ## Examples ### Get All Rows ```sql SELECT * FROM users; ``` ### Select Specific Columns ```sql SELECT id, name, email FROM users; ``` ### Filter with WHERE ```sql SELECT * FROM posts WHERE is_published = 1; ``` ### Multiple Conditions ```sql SELECT * FROM posts WHERE is_published = 1 AND category = 'technology'; ``` ### Sorting ```sql SELECT * FROM posts ORDER BY created_at DESC; ``` ### Pagination ```sql SELECT * FROM posts ORDER BY created_at DESC LIMIT 10 OFFSET 20; ``` `LIMIT` caps the number of rows returned. `OFFSET` skips the first N rows — useful for pagination (page 3 with 10 items per page = `LIMIT 10 OFFSET 20`). ### JOIN ```sql SELECT posts.id, posts.title, users.name AS author FROM posts JOIN users ON posts.user_id = users.id WHERE posts.is_published = 1 ORDER BY posts.created_at DESC; ``` ### Aggregation ```sql SELECT category, COUNT(*) AS total FROM posts GROUP BY category ORDER BY total DESC; ``` ## Using SELECT via the API For simple reads, use the [CRUD GET endpoint](/docs/api-reference/crud/get) — it handles filtering, sorting, and pagination through query parameters without writing raw SQL. For complex queries (JOINs, aggregations, subqueries), use the [SQL API](/docs/api-reference/sql/options): ```javascript const result = await datasquirel.api.sql({ key: process.env.DATASQUIREL_API_KEY, params: { query: "SELECT posts.id, posts.title, users.name AS author FROM posts JOIN users ON posts.user_id = users.id WHERE posts.is_published = 1 ORDER BY posts.created_at DESC LIMIT 20", }, }); ```