writing in progress
Structured Query Language is a programming language useful in handling structured data and is a standard of ANSI since 1986. Please read the Wikipedia page for further information.
Transaction is a statement to control process and data manipulation and permit to validate or invalidate the data processing. The acceptance of the transaction is a commit and the reject of the transation is a rollback . The best practice is to not use autocommit .
| Operator | Description | Exemple |
|---|---|---|
| = | equal | name = 'my name' |
| <> | not equal | name <> 'my name' |
| != | not equal | name != 'my name' |
| > | superior | age > 18 |
| >= | superior or equal | age >= 18 |
| < | inferior | age < 18 |
| <= | inferior or equal | age <= 18 |
| IN | is in a list of | firstname IN ('Charles', 'Elisabeth') |
| BETWEEN | is between two values | age BETWEEN 13 and 19 |
| LIKE | is like something % replace many letters ? replace one letter |
fistname LIKE '%sab?th' |
| IS NULL | is null | firstname IS NULL |
| IS NOT NULL | is nul null | firstname IS NOT NULL |
| Operator | Description | Exemple |
|---|---|---|
| NOT | boolean NOT | NOT a |
| OR | boolean OR | a OR b |
| NOT OR | boolean NOT OR | NOT a OR b |
| AND | boolean AND | a AND b |
| NOT AND | boolean NOT AND | NOT a AND b |
| XOR | boolean Exclusive OR doesn't exists |
(a AND NOT b) OR (b AND NOT a) |
More information about Boolean Algebra
The SELECT instruction performs to get information from the database.
SELECT T.column0, T.column1, ..., T.columnN FROM tableName TThe WHERE instruction performs add some conditions to SELECT some information from the database.
SELECT T.column0, T.column1, ..., T.columnN FROM tableName T
WHERE T.column0 like '%data%'The INSERT instruction performs adds data in the database.
INSERT INTO tableName(column0, T.column1, ..., T.columnN)
VALUES ('data0', 'data1', ..., 'dataN')The UPDATE instruction performs modify data in the database.
UPDATE tableName
SET column1='data1', ..., columnN='dataN'
WHERE column0='data0'The DELETE instruction performs remove data in the database.
DELETE FROM tableName
WHERE column0='data0'The MERGE instruction performs a massive insert or update operation very fastly in opposition to the amount of data that will be processed.
The JOINs instructions performs to associate different tables of the database. T here are many joins that shoud be seen like mathematic assembly.
SELECT A.*, B.* FROM tableA A
INNER JOIN tableB B ON A.key=B.key SELECT A.*, B.* FROM tableA A
LEFT JOIN tableB B ON A.key=B.key SELECT A.*, B.* FROM tableA A
LEFT OUTER JOIN tableB B ON A.key=B.key SELECT A.*, B.* FROM tableA A
RIGHT JOIN tableB B ON A.key=B.key SELECT A.*, B.* FROM tableA A
RIGHT OUTER JOIN tableB B ON A.key=B.key SELECT A.*, B.* FROM tableA A
FULL OUTER JOIN tableB B ON A.key=B.key SELECT A.*, B.* FROM tableA A
FULL OUTER JOIN tableB B ON A.key=B.key
WHERE A.key IS NULL OR B.key IS NULL The GROUP BY instruction performs to use some aggregate function like: avg, count, min, max, ... you have to use grouping.
Here we count the number of person with the sage age.
SELECT age, count(userId)
FROM t_user
GROUP BY ageTo add a condition on grouped data
SELECT age, count(userId) as nbPerson
FROM t_user
GROUP BY age
HAVING age >= 18The RANK OVER ... PARTITION BY instruction performs to add another processing in the same query.
Here we compute the rank of personne with the sage age (maximun first).
SELECT age, count(userId),
RANK() OVER (
PARTITION BY age
ORDER BY count(userId) DESC) AS age_rank
FROM t_user
GROUP BY ageThe truncate command erase all the content of a table and it shoudn't be rollbacked.
TRUNCATE TABLE tableNameThe WITH instruction is used to split complex business request to have a easier and most readable request.
-- this query permits to set in a same row, the current and the previous stock (lag function)
with update_diff as (
SELECT
sku, avail_stock, update_date,
-- stock from the previous row
lag(avail_stock) over(partition by sku order by sku, updatedDate) as prev_stock
FROM T_STORE
ORDER BY
-- order is mandatory to apply "lag" function (SQL-2022 standard)
sku, updatedDate
)
-- sample request implements a basic count for sku that the stock had evolve
SELECT count(*)
FROM
update_diff
WHERE
avail_stock <> prev_stock





