SQLite Select 语句
前面我们已经向 company 表中添加了 7 条员工数据,现在我们想查看我们插入的数据是什么样的,要怎么操作呢?
SQLite 的 SELECT 语句可以从表中获取数据,并以结果表的形式返回数据
这种结果表也被称为结果集
语法
SQLite SELECT 语句的基本语法如下
SELECT column1, column2, columnN FROM table_name;
这里的 column1, column2...是表的字段,他们的值即是我们要获取的
如果你想获取所有可用的字段,那么这条语句还可以省略成:
SELECT * FROM table_name;
*
号表示获取所有的字段
范例
在上一章节中我们往 company 表中插入了如下的数据:
id name age address salary ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
现在我们使用 SELECT 语句获取并显示所有这些记录。
sqlite> SELECT * FROM company; 1|Paul|32|California|20000.0 2|Allen|25|Texas|15000.0 3|Teddy|23|Norway|20000.0 4|Mark|25|Rich-Mond |65000.0 5|David|27|Texas|85000.0 6|Kim|22|South-Hall|45000.0 7|James|24|Houston|10000.0 sqlite>
看到数据都黏在一起了,不方便查看。
可以通过点命令设置正确的格式化输出,点命令如下。
sqlite>.header on sqlite>.mode column
现在再执行查询就会非常容易阅读了
sqlite> SELECT * FROM company; id name age address salary ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
如果只想获取某几个指定的字段
如果我们只想获取 company 中的 id, name 和 salary 字段 则可以使用下面的查询语句
sqlite> SELECT id,name,salary FROM company; id name salary ---------- ---------- ---------- 1 Paul 20000.0 2 Allen 15000.0 3 Teddy 20000.0 4 Mark 65000.0 5 David 85000.0 6 Kim 45000.0 7 James 10000.0 sqlite>
设置输出列的宽度
有时,.mode column 可能会因为要显示的列的默认宽度不够导致数据被截断。 此时,可以使用 .width num, num.... 命令设置显示列的宽度。
如下所示:
sqlite>.width 10, 20, 10 sqlite>SELECT * FROM company; id name age address salary ---------- -------------------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
上面的 .width 命令设置第一列的宽度为 10,第二列的宽度为 20,第三列的宽度为 10
Schema 信息
因为所有的 点命令 只能在 SQLite 交互命令行中使用。
我们用其它语言操作 SQLite 时,就没法使用 .database ,.table,.schema 命令了
幸运的是,SQLite 把所有数据库,表,表结构信息存储在了 sqlite_master 表中 我们只需要使用 SELECT 就可以列出所有信息了。
列出数据库中创建的表:
sqlite> SELECT tbl_name FROM sqlite_master WHERE type = 'table'; tbl_name ---------- company department Run Time: real 0.000 user 0.000158 sys 0.000143
列出 company 表的完整信息
sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'company'; sql ----------------------------------------------------------------- CREATE TABLE company ( id INT PRIMARY KEY NOT NULL, name TEXT NOT NULL, age INT NOT NULL, address CHAR(50), salary REAL ) Run Time: real 0.001 user 0.000151 sys 0.000136