7.1. Overview

|   7.1. Overview    |                  |                  |                  |                                       |
|:------------------:|------------------|------------------|------------------|---------------------------------------|
|[Prev](queries.html)|[Up](queries.html)|Chapter 7. Queries|[Home](index.html)| [Next](queries-table-expressions.html)|

---

## 7.1. Overview

 The process of retrieving or the command to retrieve data from a database is called a *query*. In SQL the [`SELECT`](sql-select.html) command is used to specify queries. The general syntax of the `SELECT` command is

```
[WITH with_queries] SELECT select_list FROM table_expression [sort_specification]

```

 The following sections describe the details of the select list, the table expression, and the sort specification. `WITH` queries are treated last since they are an advanced feature.

 A simple kind of query has the form:

```
SELECT * FROM table1;

```

 Assuming that there is a table called `table1`, this command would retrieve all rows and all user-defined columns from `table1`. (The method of retrieval depends on the client application. For example, the psql program will display an ASCII-art table on the screen, while client libraries will offer functions to extract individual values from the query result.) The select list specification `*` means all columns that the table expression happens to provide. A select list can also select a subset of the available columns or make calculations using the columns. For example, if `table1` has columns named `a`, `b`, and `c` (and perhaps others) you can make the following query:

```
SELECT a, b + c FROM table1;

```

 (assuming that `b` and `c` are of a numerical data type). See [Section 7.3](queries-select-lists.html) for more details.

`FROM table1` is a simple kind of table expression: it reads just one table. In general, table expressions can be complex constructs of base tables, joins, and subqueries. But you can also omit the table expression entirely and use the `SELECT` command as a calculator:

```
SELECT 3 * 4;

```

 This is more useful if the expressions in the select list return varying results. For example, you could call a function this way:

```
SELECT random();

```

---

|[Prev](queries.html)|[Up](queries.html)| [Next](queries-table-expressions.html)|
|:-------------------|:----------------:|--------------------------------------:|
| Chapter 7. Queries |[Home](index.html)|         7.2. Table Expressions        |

 // \<![CDATA[ \<-- For SVG support if ('WebSocket' in window) { (function() { function refreshCSS() { var sheets = [].slice.call(document.getElementsByTagName("link")); var head = document.getElementsByTagName("head")[0]; for (var i = 0; i \< sheets.length; ++i) { var elem = sheets[i]; head.removeChild(elem); var rel = elem.rel; if (elem.href && typeof rel != "string" || rel.length == 0 || rel.toLowerCase() == "stylesheet") { var url = elem.href.replace(/(&|\\?)\_cacheOverride=\\d+/, ''); elem.href = url + (url.indexOf('?') \>= 0 ? '&' : '?') + '\_cacheOverride=' + (new Date().valueOf()); } head.appendChild(elem); } } var protocol = window.location.protocol === 'http:' ? 'ws://' : 'wss://'; var address = protocol + window.location.host + window.location.pathname + '/ws'; var socket = new WebSocket(address); socket.onmessage = function(msg) { if (msg.data == 'reload') window.location.reload(); else if (msg.data == 'refreshcss') refreshCSS(); }; console.log('Live reload enabled.'); })(); } // ]]\>