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 column2
SELECT 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) > 2
SELECT 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';