This page has instructions for making SQL selection queries against CockroachDB from various programming languages.
Before you begin
Before reading this page, do the following:
- Create a CockroachDB Standard cluster or start a local cluster.
- Install a Driver or ORM Framework.
- Connect to the database.
- Insert data that you now want to run queries against.
When running under the default SERIALIZABLE
isolation level, your application should use a retry loop to handle transaction retry errors that can occur under contention.
Simple selects
SELECT id, balance from accounts;
For more information about how to use the built-in SQL client, see the cockroach sql
reference docs.
// 'db' is an open database connection rows, err := db.Query("SELECT id, balance FROM accounts") if err != nil { log.Fatal(err) } defer rows.Close() fmt.Println("Initial balances:") for rows.Next() { var id, balance int if err := rows.Scan(&id, &balance); err != nil { log.Fatal(err) } fmt.Printf("%d %d\n", id, balance) }
For complete examples, see:
// ds is an org.postgresql.ds.PGSimpleDataSource try (Connection connection = ds.getConnection()) { Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT id, balance FROM accounts"); while (rs.next()) { int id = rs.getInt(1); int bal = rs.getInt(2); System.out.printf("ID: %10s\nBalance: %5s\n", id, bal); } rs.close(); } catch (SQLException e) { System.out.printf("sql state = [%s]\ncause = [%s]\nmessage = [%s]\n", e.getSQLState(), e.getCause(), e.getMessage()); }
For complete examples, see:
# conn is a psycopg2 connection with conn.cursor() as cur: cur.execute("SELECT id, balance FROM accounts") rows = cur.fetchall() for row in rows: print([str(cell) for cell in row])
For complete examples, see:
Order results
To order the results of a query, use an ORDER BY
clause.
For example:
SELECT * FROM bank ORDER BY balance;
id | balance | payload -----+---------+------------------------------------------------------------------------------------------------------- 0 | -500 | initial-dTqnRurXztAPkykhZWvsCmeJkMwRNcJAvTlNbgUEYfagEQJaHmfPsquKZUBOGwpAjPtATpGXFJkrtQCEJODSlmQctvyh 1 | -499 | initial-PCLGABqTvrtRNyhAyOhQdyLfVtCmRykQJSsdwqUFABkPOMQayVEhiAwzZKHpJUiNmVaWYZnReMKfONZvRKbTETaIDccE 2 | -498 | initial-VNfyUJHfCmMeAUoTgoSVvnByDyvpHNPHDfVoNWdXBFQpwMOBgNVtNijyTjmecvFqyeLHlDbIBRrbCzSeiHWSLmWbhIvh 3 | -497 | initial-llflzsVuQYUlfwlyoaqjdwKUNgNFVgvlnINeOUUVyfxyvmOiAelxqkTBfpBBziYVHgQLLEuCazSXmURnXBlCCfsOqeji 4 | -496 | initial-rmGzVVucMqbYnBaccWilErbWvcatqBsWSXvrbxYUUEhmOnccXzvqcsGuMVJNBjmzKErJzEzzfCzNTmLQqhkrDUxdgqDD (5 rows)
For reference documentation and more examples, see the ORDER BY
syntax page.
Limit results
To limit the results of a query, use a LIMIT
clause.
For example:
SELECT * FROM bank LIMIT 5;
id | balance | payload -----+---------+------------------------------------------------------------------------------------------------------- 0 | 0 | initial-dTqnRurXztAPkykhZWvsCmeJkMwRNcJAvTlNbgUEYfagEQJaHmfPsquKZUBOGwpAjPtATpGXFJkrtQCEJODSlmQctvyh 1 | 0 | initial-PCLGABqTvrtRNyhAyOhQdyLfVtCmRykQJSsdwqUFABkPOMQayVEhiAwzZKHpJUiNmVaWYZnReMKfONZvRKbTETaIDccE 2 | 0 | initial-VNfyUJHfCmMeAUoTgoSVvnByDyvpHNPHDfVoNWdXBFQpwMOBgNVtNijyTjmecvFqyeLHlDbIBRrbCzSeiHWSLmWbhIvh 3 | 0 | initial-llflzsVuQYUlfwlyoaqjdwKUNgNFVgvlnINeOUUVyfxyvmOiAelxqkTBfpBBziYVHgQLLEuCazSXmURnXBlCCfsOqeji 4 | 0 | initial-rmGzVVucMqbYnBaccWilErbWvcatqBsWSXvrbxYUUEhmOnccXzvqcsGuMVJNBjmzKErJzEzzfCzNTmLQqhkrDUxdgqDD (5 rows)
For reference documentation and more examples, see the LIMIT
/OFFSET
syntax page.
Joins
The syntax for a selection query with a two-way join is shown below.
SELECT a.col1, b.col1 FROM some_table AS a JOIN some_other_table AS b ON a.id = b.id WHERE a.col2 > 100 AND a.col3 > now() ORDER BY a.col2 DESC LIMIT 25;
Join performance can be a big factor in your application's performance. For more information about how to make sure your SQL performs well, see Optimize Statement Performance.
See also
Reference information related to this task:
Other common tasks: