OPERATORS
Logical
SELECT 1=1, 1<1, 1>1, 1<=1, 1>=1;
?column? | ?column? | ?column? | ?column? | ?column?
----------+----------+----------+----------+----------
t | f | f | t | t
SELECT 1<>1;
?column?
----------
f
SELECT 1 = 1 or 1 = 2 ;
?column?
----------
t
select 1 / 0;
-- ERROR: division by zero
Pattern Matching
SELECT * FROM actors WHERE last_name LIKE '%son%';
first_name | last_name | gender | date_of_birth
------------+-------------+--------+---------------------
Woody | Harrelson | M | 1961-07-23
Samuel | Jackson | M | 1948-12-21
Lina | Leandersson | F | 1995-09-27
Jack | Nicholson | M | 1937-04-22
Mykelti | Williamson | M | 1957-03-04
Luke | Wilson | M | 1971-09-21
Owen | Wilson | M | 1968-11-18
Patrick | Wilson | M | 1973-07-03
-- ILIKE
-- to ignore the case
SELECT * FROM actors WHERE last_name ILIKE '__i%';
first_name | last_name | gender | date_of_birth
------------+-----------+--------+---------------------
Hiroki | Doi | M | 1999-08-10
Alec | Guiness | M | 1914-04-02
Rumi | Hiiragi | F | 1987-08-01
Miyu | Irino | M | 1988-02-19
Keira | Knightley | F | 1985-03-26
Vivien | Leigh | F | 1913-11-05
Yasmin | Paige | F | 1991-06-24
Tilda | Swinton | F | 1960-11-05
Robin | Wright | F | 1966-04-08
select 'hello' like 'hello';
select 'hello' like 'h%';
select 'hello' like '%e%';
select 'hello' like '%lo';
select 'hello' like '_ello';
select 'hello' like '__llo';
select 'hello' like '%ll_';
?column? | ?column? | ?column? | ?column? | ?column? | ?column? | ?column?
----------+----------+----------+----------+----------+----------+----------
t | t | t | t | t | t | t
-- like with length of characters
select * from table where name like '____';
Tips
- When using
AND
and OR
in sample SQL
statement, use brackets to differentiate between statements
AND
operator is processed before OR operator
SQL
treats AND
operator like multiplication and OR
like divide
Fetch
-- OFFSET start { ROW | ROWS }
-- FETCH { FIRST | NEXT } { ROW_COUNT } { ROWS|ROW } ONLY
SELECT
*
FROM movies
fetch first row only ;
movie_id | movie_name | movie_length | movie_lang | release_date | age_certificate | director_id
----------+--------------------+--------------+------------+--------------+-----------------+-------------
1 | A Clockwork Orange | 112 | English | 1972-02-02 | 18 | 13
SELECT
*
FROM movies
offset 3
fetch next 10 row only ;
movie_id | movie_name | movie_length | movie_lang | release_date | age_certificate | director_id
----------+-------------------------------+--------------+------------+--------------+-----------------+-------------
4 | Blade Runner | 121 | English | 1982-06-25 | 15 | 27
5 | Chungking Express | 113 | Chinese | 1996-08-03 | 15 | 35
6 | City of God | 145 | Portuguese | 2003-01-17 | 18 | 20
7 | City of Men | 140 | Portuguese | 2008-02-29 | 15 | 22
8 | Cold Fish | 108 | Japanese | 2010-09-12 | 18 | 30
9 | Crouching Tiger Hidden Dragon | 139 | Chinese | 2000-07-06 | 12 | 15
10 | Eyes Wide Shut | 130 | English | 1999-07-16 | 18 | 13
11 | Forrest Gump | 119 | English | 1994-07-06 | PG | 36
12 | Gladiator | 165 | English | 2000-05-05 | 15 | 27
13 | Gone with the Wind | 123 | English | 1939-12-15 | PG | 8
IS NULL or IS NOT NULL
select * from actors where date_of_birth is null;
first_name | last_name | gender | date_of_birth
------------+-----------+--------+---------------
Xian | Gao | M |