...
Getting Started with SQL
Structured Query Language (SQL) is used to manage relational databases and perform various operations on the data in them. There are many different dialects of SQL, and whilst they are broadly similar, the more advanced dialects, like that used in PostgreSQL, offer additional functions.
pgAdmin has a query window to use for interaction with the database with user-defined SQL. You can access it through the Tools menu or the right-click menu.
The query window is divided into three areas:
an input pane for writing queries
an output pane to receive results
a scratch pad for making notes
The query windows allows the user to:
execute a query and see the results in the results pane
execute a query and save results to a text file
save a query as SQL
open a saved query
...
pgAdmin includes some standard scripts and functions that are available by right-clicking on table name. These allow you to view all, or a subset of the data in a table, or construct common SQL scripts.
...
Querying data
A simple query might return a sub-set of the data held within the database. In English there are multiple ways of posing a question, whereas in SQL you need to be specific about the language you use and the precise columns, tables, schemas and databases you are referring to. To generate a list of names of all the Parishes and their areas in hectares within the county of Surrey, the SQL query needed might look like this:
SELECT name, hectares
FROM boundaryline.parish
WHERE file_name = 'SURREY_COUNTY';
Note keywords or statements like SELECT, FROM and WHERE are not case case sensitive, but by convention we use uppercase for all SQL keywords in order to make queries easier to read. Queries can be composed as a single line, or spread over a number of lines to ease reading. A semicolon ( ; ) is used to signal to PostgreSQL the end of an SQL statement.
Single quotes contain string values e.g. name = ‘Epsom’. Only use these with string data types such as text and character varying.
String values are case sensitive so SELECT * FROM general settlement WHERE name like 'Epsom';
and SELECT * FROM general settlement WHERE name like 'ePsOm';
will produce different results. If the string itself includes a quote, replace the single quotes with $$, e.g. name = $$St. David's$$
Double quotes must enclose database object names that:
include a space
use upper case characters
use ‘special’ characters like punctuation
are a reserved SQL word
SELECT
The most basic form of the SELECT statement retrieves data from a single table. The syntax is as follows
SELECT
[select_list]FROM
[table_name];
[select_list] can be a single column or a list of columns, where a comma is used to separate the individual columns. To return all columns of the table, use an asterisk ( * ) in place of [select_list]. The [select_list] may also contain an expressions or literal values.
The FROM clause specifies the name of the table from which you want to select data
The SELECT statement can extended by including additional clauses:
Select distinct rows using
DISTINCT
operator.Sort rows using
ORDER BY
clause.Filter rows using
WHERE
clause.Select a subset of rows from a table using
LIMIT
orFETCH
clause.Group rows into groups using
GROUP BY
clause.Filter groups using
HAVING
clause.Join with other tables using joins such as
INNER JOIN
,LEFT JOIN
,FULL OUTER JOIN
,CROSS JOIN
clauses.Perform set operations using
UNION
,INTERSECT
, andEXCEPT
.
Retrieve data from a table
Info |
---|
|
SELECT DISTINCT
The DISTINCT clause is used in a SELECT statement to remove duplicate values. It can be applied to one or more columns in a table.
Retrieve unique values from a table
Info |
---|
|
Sorting results
The ORDER BY clause allows you to sort rows returned by a SELECT clause in ascending or descending order using ASC or DESC options. It is possible to sort based on multiple columns by separating expressions with a comma.
Sort data
Info |
---|
|
WHERE
The syntax of the WHERE clause can be used to return records that satisfy a specified condition. The condition must evaluate as true or false with only records where condition is true to be included within the result set. The following comparison and logical operators may be used to form the condition. Logical operators can be used to combine additional WHERE clauses.
Operator | Description | Operator | Description | Operator | Description |
---|---|---|---|---|---|
= | Equal | <> or != | Not equal | Return true if a value is between a range of values | |
> | Greater than | AND | Logical operator AND | Return true if a value matches a pattern | |
< | Less than | OR | Logical operator OR | Return true if a value is NULL | |
>= | Greater than or equal | Return true if a value matches any value in a list | NOT | Negate the result of other operators | |
<= | Less than or equal |
Identify records that meet conditions
Info |
---|
|
SQL in QGIS
QGIS can be used as an alternative interface to pgAdmin for running SQL queries.
Display the distribution of data
Info |
---|
|
...