SQL Lesson 3_V2_1.1.0
SQL Lesson 3_V2_1.1.0
• SQL AVG
• SQL COUNT
• SQL MAX
• SQL MIN
• SQL SUM
• SQLITE IMPORT .CSV
• SQLITE EXPORT .CSV
Today’s Objectives
--- Two
• UPDATE DATA IN
PYTHON
• DELETE DATA IN
PYTHON
• SELECT DATA IN
PYTHON
• REVIEW OF SQL
SESSION
SQLITE FUNCTIONS
FUNCTIONS – 函数
什么是函数 ?
在编程中,函数是一段代码的集合,是用来实现某一项特定的功能(通常是一项计算)的代码段
函数有输入变量和输出变量
SQLITE 中常用的函数:
The AVG function is an aggregate function that calculates the average value
of all non-NULL values within a group.
CREATE TABLE avg_tests (val);
The AVG function is an aggregate function that calculates the average value
of all non-NULL values within a group.
SELECT rowid,val
FROM avg_tests;
SELECT
avg(val)
FROM
avg_tests
WHERE
rowid < 5;
SELECT
avg(val)
FROM
avg_tests;
SQL AVG()
AVG([ALL | DISTINCT] expression);
The AVG function is an aggregate function that calculates the average value
of all non-NULL values within a group.
SELECT
avg(val)
FROM
avg_tests;
SELECT
avg(DISTINCT val)
FROM
avg_tests;
SQL AVG()
AVG([ALL | DISTINCT] expression);
The AVG function is an aggregate function that calculates the average value
of all non-NULL values within a group.
Another example:
SELECT
avg(milliseconds)
FROM
tracks;
SQL AVG()
AVG([ALL | DISTINCT] expression);
The AVG function is an aggregate function that calculates the average value
of all non-NULL values within a group.
SQLite AVG function with GROUP BY clause:
SELECT
albumid,
avg(milliseconds)
FROM
tracks
GROUP BY
albumid;
SQL AVG()
AVG([ALL | DISTINCT] expression);
The AVG function is an aggregate function that calculates the average value
of all non-NULL values within a group.
SQLite AVG function with INNER JOIN clause example:
SELECT
tracks.albumid,
title,
round(avg(milliseconds), 2) avg_length
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
tracks.albumid;
SQL AVG()
AVG([ALL | DISTINCT] expression);
The AVG function is an aggregate function that calculates the average value
of all non-NULL values within a group.
SELECT
tracks.albumid,
title,
round(avg(milliseconds),2) avg_leng
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
tracks.albumid
HAVING
avg_leng BETWEEN 100000 AND 200000;
SQL COUNT()
SQL 的 COUNT 函数用于返回一组非空变量的个数统计。
COUNT(*) 用于返回一张表中所有行的计数。
SQL Count()
COUNT([ALL | DISTINCT] expression);
SELECT
count(*)
FROM
tracks
WHERE
albumid = 10;
SQL Count()
COUNT([ALL | DISTINCT] expression);
MAX([ALL|DISTINCT] expression);
注意:
1. MAX 函数会自动忽略 NULL 值
2. DISTINCT 关键字不作用
3. 因为同一个 column 可以存储不同类型的 data ,包括 integer,real, text, blob 等,在使用
MAX 函数的时候,如果是可以识别的 text ,函数会转换成对应的数值,其他一律视为 0 。(参见
datatype 讲解)
SQL Max()
MAX([ALL|DISTINCT] expression);
For example, you can use the MAX function to find the best item in terms of
price, rate, etc., or to find the highest item within its group.
-- biggest tracks
SELECT
MAX(bytes)
FROM
tracks;
SQL Max()
下面我们来看一下复杂的 query 语句中 MAX 函数的用法
SELECT
trackid,
name,
bytes
FROM
tracks
WHERE
bytes = (SELECT max(bytes) FROM tracks);
程序首先执行括号中的 select 语
句 , 将 tracks 表 中 最 大 的
bytes 选 出 来 , 然 后 以 此 作 为
constraint , 执 行 外 层 的
select 语句
SQL Max()
MAX 函数与 GROUP BY 相结合的用法
SELECT
albumid,
MAX(bytes)
FROM
tracks
GROUP BY
albumid;
SQL Max()
MAX 函数与 HAVING 相结合的用法
SELECT
albumid,
max(bytes)
FROM
tracks
GROUP BY
albumid
HAVING MAX(bytes) > 6000000;
SQLITE MIN
SQLITE 的 MIN 函数用于返回一个 group 中所有变量的最小值。其用法与注意事项与 MAX 类似。
MIN([ALL|DISTINCT] expression);
SQL Min()
MIN 函数的用法实例
SELECT
min(Milliseconds)
FROM
tracks;
SQL Min()
下面我们来看一下复杂的 query 语句中 MIN 函数的用法
SELECT
trackid,
name,
milliseconds
FROM
tracks
WHERE
milliseconds = (SELECT min(Milliseconds) FROM tracks);
SUM([ALL|DISTINCT] expression);
注意:
1. 如果 sum 所作用的组中,有任意一个浮点数,那么结果就是浮点型
1. 打开 Jupyter Notebook
3. 学会使用 cd 命令到达想要的工作目录
SQLITE - PYTHON
import sqlite3
from sqlite3 import Error
引入 python 中自带的 sqlite3 模块
def create_connection():
""" create a database connection to a SQLite database """
try:
conn = sqlite3.connect('chinook.db')
print(sqlite3.version)
except Error as e:
print(e)
finally:
conn.close()
SQLITE - PYTHON
• 如果我们想要在 SQLITE 中直接添加表格,如,我们尝试建立以下两个表格 projects 和 tasks
-- tasks table
CREATE TABLE IF NOT EXISTS tasks (
id integer PRIMARY KEY,
name text NOT NULL,
priority integer,
project_id integer NOT NULL,
status_id integer NOT NULL,
begin_date text NOT NULL,
end_date text NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects (id)
);
SQLITE - PYTHON
那么如何在 python 中来建立表格呢?如下
def main():
database = ”chinook.db"
# tasks
task_1 = ('Analyze the requirements of the app', 1, 1, project_id, '2015-01-01', '2015-01-02')
task_2 = ('Confirm with user about the top requirements', 1, 1, project_id, '2015-01-03', '2015-01-05')
# create tasks
create_task(conn, task_1)
create_task(conn, task_2)
UPDATE
UPDATE 语句的调用,与 INSERT 非常类似
def main():
database = " chinook.db"
def delete_all_tasks(conn):
sql = 'DELETE FROM tasks'
cur = conn.cursor()
cur.execute(sql)
DELETE
下面我们来写主函数
def main():
database = ”chinook.db"
def select_all_tasks(conn):
cur = conn.cursor()
cur.execute("SELECT * FROM tasks")
rows = cur.fetchall()
rows = cur.fetchall()
def main():
database = ”chinook.db"