Song Jiaming | 09 Jun 2020
    
Disclaimer: This is just a summary of common syntax used in SQL
Create, Insert, Select, Update, Delete
CREATE TABLE TABLE_NAME (
    column1 integer primary key NOT NULL,
    column2 varchar(30),
    column3 char(2)
);INSERT INTO TABLE_NAME (column1, column2, column3)
VALUES 
    (1, 'varchar1', 'A1'),
    (2, 'varchar2', 'A2');SELECT * FROM TABLE_NAME;
SELECT column1, column2 FROM TABLE_NAME WHERE condition;UPDATE TABLE_NAME
SET column1 = value1, column2 = value2, ...
WHERE condition;DELETE FROM TABLE_NAME WHERE condition;
# Delete the whole table:
DELETE FROM TABLE_NAME;
DROP TABLE TABLE_NAME;SELECT statment by using: String patterns, ranges or sets of valuesSELECT column1 FROM TABLE_NAME WHERE column1 LIKE string_pattern;SELECT column1 FROM TABLE_NAME WHERE column1 > value1 AND column1 < value2;
SELECT column1 FROM TABLE_NAME WHERE column1 Between value1 AND value2;SELECT column1 FROM TABLE_NAME WHERE column1 = 'value1' OR column1 = 'value2';
SELECT column1 FROM TABLE_NAME WHERE column1 IN ('value1', 'value2');SELECT column1 FROM TABLE_NAME ORDER BY column1;
SELECT column1, column2 FROM TABLE_NAME ORDER BY 2; # 2 means order by column2SELECT DISTINCT(column1) FROM TABLE_NAME;
#OR
SELECT UNIQUE(column1) FROM TABLE_NAME;SELECT column1, COUNT(column1) as count  #name this COUNT(Column1) column as count
FROM TABLE_NAME 
GROUP BY column1-Filter groupby result by count. HAVING Clause works only with GROUP BY clause
SELECT column1, COUNT(column1) as count  #name this COUNT(Column1) column as count
FROM TABLE_NAME 
GROUP BY column1 HAVING COUNT(column1) > 2SELECT SUM(PRICE) as SUM_OF_PRICE FROM MARKET;
SELECT AVG(PRICE / QUANTITY) FROM MARKET where type='meat;SELECT ROUND(PRICE) FROM MARKET;
SELECT LENGTH(TYPE) FROM MARKET; # length of each value in "TYPE" column
SELECT UCASE(TYPE) FROM MARKET;
SELECT * from MARKET where LCASE(TYPE) = 'meat';
SELECT DISTINCT(UCASE(ANIMAL)) from MARKET;SELECT COUNT(*) FROM MARKET WHERE MONTH(SALEDATE) = '05';
SELECT (SALEDATE + 3 DAYS) FROM MARKET;
SELECT (CURRENT_DATE - SALEDATE) FROM MARKET;SELECT column1, column2, (select AVG(column3) from TABLE_NAME) as avg_col3
FROM TABLE_NAME;SELECT * 
FROM (SELECT column1, column2, column3 FROM TABLE_NAME) AS NEW_TABLE;Ways to access multiple tables in the same query:
SELECT * FROM TABLE1 
WHERE column1 IN (SELECT column1 FROM TABLE2);
SELECT * FROM TABLE!
WHERE column1 IN (SELECT column1 FROM TABLE2 WHERE column2 = 'value2');SELECT * FROM TABLE1, TABLE2;We can limit the result set:
SELECT * FROM TABLE1, TABLE2
WHERE TABLE1.column1 = Table2.column2;
SELECT * FROM TABLE1 A, TABLE2 B
WHERE A.column1 = B.column2;
SELECT A.column1, B.column2
FROM TABLE1 A, TABLE2 B
WHERE A.column1 = B.column2;SELECT A.column1, A.column2, A.id, B.column1, B.id 
FROM TABLE1 A INNER JOIN TABLE2 B ON A.id = B.id;
SELECT A.column1, B.column2, C.column3
From TABLE1 A
	INNER JOIN TABLE2 B ON B.id = A.id
	INNER JOIN TABLE3 C on C.id2 = B.id2;SELECT A.column1, A.column2, A.id, B.column1, B.id 
FROM TABLE1 A LEFT JOIN TABLE2 B ON A.id = B.id;- Right Outer Join: Takes all rows from the right table and the matching rows from left table
SELECT A.column1, A.column2, A.id, B.column1, B.id 
FROM TABLE1 A RIGHT JOIN TABLE2 B ON A.id = B.id;- Full Outer Join: All rows from 2 tables
SELECT A.column1, A.column2, A.id, B.column1, B.id 
FROM TABLE1 A FULL JOIN TABLE2 B ON A.id = B.id;from dbmodule import connect
# create connection object
connection_db = connect('databasename', 'username', 'pswd')
# Create a cursor object
cursor = connect_db.cursor()
# Run queries
cursor.execute('select * from mytabel')
results = cursor.fetchall()
# Free resources
cursor.close()
connection_db.close()
import pandas as pd
import db_module
# create connection object
connection_db = db_module.connection(...)
df = pandas.read_sql('SELECT * FROM TABLE_NAME', connection_db)
%% sql # the whole block will be interpreted as a sql query
%sql # the single line will be interpreted as a sql query
SELECT TABSCHEMA, TABNAME, CREATE_TIME
FROM syscat.tables WHERE TABSCHEMA = 'xxx';
SELECT * FROM syscat.columns WHERE tabname = 'DOGS';