SQLite | Select 语句

文章目录

  • 1. Select
    • 1.1 SELECT
    • 1.2 alias
    • 1.3 内置函数
    • 1.4 文字拼接
  • 参考资料

1. Select

本文将使用 rexon_metals.db 数据库,其中包含了 CUSTOMER,CUSTOMER_ORDER 以及 PRODUCT 三张表。

  • 使用Jupyter Notebook 运行 SQL 语句需安装 ipython-sql

  • %sql 以及 %%sql 为在 Notebook 中运行 SQL 语句,在 SQLite 命令行或 SQLite Stiduo 中不需要 %sql 或 %%sql

载入 SQL 以及连接 SQLite:

%load_ext sql
%sql sqlite:///DataBase/rexon_metals.db
'Connected: @DataBase/rexon_metals.db'

1.1 SELECT

使用 * 选取 CUSTOMER 表中的所有列:

%sql select * from CUSTOMER;
 * sqlite:///DataBase/rexon_metals.db
Done.
CUSTOMER_ID NAME REGION STREET_ADDRESS CITY STATE ZIP
1 LITE Industrial Southwest 729 Ravine Way Irving TX 75014
2 Rex Tooling Inc Southwest 6129 Collie Blvd Dallas TX 75201
3 Re-Barre Construction Southwest 9043 Windy Dr Irving TX 75032
4 Prairie Construction Southwest 264 Long Rd Moore OK 62104
5 Marsh Lane Metal Works Southeast 9143 Marsh Ln Avondale LA 79782

也可以指定选取某几列,如 CUSTOMER_ID, NAME

%sql select CUSTOMER_ID, NAME from CUSTOMER;
 * sqlite:///DataBase/rexon_metals.db
Done.
CUSTOMER_ID NAME
1 LITE Industrial
2 Rex Tooling Inc
3 Re-Barre Construction
4 Prairie Construction
5 Marsh Lane Metal Works

1.2 alias

SELECT 不仅可以简单的选取某几列数据,还可以对它们进行运算,如利用 PRODUCT 表中的 PRICE 计算相应的税后价格 TAXED_PRICE:

%%sql
select
PRODUCT_ID,
DESCRIPTION,
PRICE,
PRICE * 1.07 as TAXED_PRICE
from PRODUCT;
 * sqlite:///DataBase/rexon_metals.db
Done.
PRODUCT_ID DESCRIPTION PRICE TAXED_PRICE
1 Copper 7.51 8.0357
2 Aluminum 2.58 2.7606
3 Silver 15 16.05
4 Steel 12.31 13.171700000000001
5 Bronze 4 4.28
6 Duralumin 7.6 8.132
7 Solder 14.16 15.151200000000001
8 Stellite 13.31 14.241700000000002
9 Brass 4.75 5.0825000000000005
  • 当在 SQL 中对任何东西赋予变量名时(不论是alias, a column name, a table name 或者其他 entity),都应该使用下划线 (_) 作为占位符,如果使用空格的话,将会出现错误。

我们可以使用 别名(alias)对表达式赋予名字,也可以在查询中用 alias 做为已存在的列的列名。比如将 UNTAXED_PRICE 作为 PRICE 的 alias,但这并不会改变表中的列名,而是在执行 SELECT 语句时赋予了一个新的名字:

%%sql
select
PRODUCT_ID,
DESCRIPTION,
PRICE AS UNTAXED_PRICE,
PRICE * 1.07 as TAXED_PRICE
from PRODUCT;
 * sqlite:///DataBase/rexon_metals.db
Done.
PRODUCT_ID DESCRIPTION UNTAXED_PRICE TAXED_PRICE
1 Copper 7.51 8.0357
2 Aluminum 2.58 2.7606
3 Silver 15 16.05
4 Steel 12.31 13.171700000000001
5 Bronze 4 4.28
6 Duralumin 7.6 8.132
7 Solder 14.16 15.151200000000001
8 Stellite 13.31 14.241700000000002
9 Brass 4.75 5.0825000000000005

1.3 内置函数

每一个数据库平台都有内置函数(built-in-functions),SQLite 提供了 round() 函数来对数据进行四舍五入,如将 TAXED_PRICE 保留两位小数:

%%sql
select
PRODUCT_ID,
DESCRIPTION,
PRICE AS UNTAXED_PRICE,
round(PRICE * 1.07, 2) as TAXED_PRICE
from PRODUCT;
 * sqlite:///DataBase/rexon_metals.db
Done.
PRODUCT_ID DESCRIPTION UNTAXED_PRICE TAXED_PRICE
1 Copper 7.51 8.04
2 Aluminum 2.58 2.76
3 Silver 15 16.05
4 Steel 12.31 13.17
5 Bronze 4 4.28
6 Duralumin 7.6 8.13
7 Solder 14.16 15.15
8 Stellite 13.31 14.24
9 Brass 4.75 5.08
SQLite | Select 语句_第1张图片
图1 SQLite 内置函数

1.4 文字拼接

表达式不一定只对数字类型的数据起作用,也可以用与文字型(text)或者其他类型的数据。对于文字型数据,一个有用的命令就是 concatenation(联合),可以将两段数据联合到一起。

在 SQLite 中,这个联合操作符为 (||),可以将两边的数据联合到一起;举个例子,可以将 CUSTOMER 表中的 CITY 和 STATE 联合为一个 LOCAYION:

  • Concatenation 对任何的数据类型都适用(numbers, dates,…)
  • 很多数据库平台使用 (||) 来进行拼接,但 MySQL 使用 CONCAT() 函数
%%sql
select 
NAME,
CITY ||','|| STATE as LOCATION
from CUSTOMER;
 * sqlite:///DataBase/rexon_metals.db
Done.
NAME LOCATION
LITE Industrial Irving,TX
Rex Tooling Inc Dallas,TX
Re-Barre Construction Irving,TX
Prairie Construction Moore,OK
Marsh Lane Metal Works Avondale,LA

也可以将几个 fields 合成为一个单独的 SHIP_ADDRESS (邮件地址):

%%sql
select
NAME,
STREET_ADDRESS || ' ' || CITY || ',' || STATE || ' ' || ZIP as SHIP_ADDRESS
from CUSTOMER;
 * sqlite:///DataBase/rexon_metals.db
Done.
NAME SHIP_ADDRESS
LITE Industrial 729 Ravine Way Irving,TX 75014
Rex Tooling Inc 6129 Collie Blvd Dallas,TX 75201
Re-Barre Construction 9043 Windy Dr Irving,TX 75032
Prairie Construction 264 Long Rd Moore,OK 62104
Marsh Lane Metal Works 9143 Marsh Ln Avondale,LA 79782

参考资料

[1] Thomas Nield.Getting Started with SQL[M].US: O’Reilly, 2016: 19-28

相关文章:
SQL | 目录
SQLite | SQLite 与 Pandas 比较篇之一
SQLite | Select 语句
SQLite | Where 子句
SQLite | Group by 与 Order by 子句
SQLite | CASE 子句
SQLite | Join 语句
SQLite | 数据库设计与 Creat Table 语句
SQLite | Insert、Delete、Updata 与 Drop 语句

你可能感兴趣的:(#,SQLite,SQL)