作者:和谐啄木鸟 | 2023-08-29 20:26
我希望检索表中的列列表.该数据库是SQLite的最新版本(3.6,我相信).我正在寻找使用SQL查询执行此操作的代码.与列相关的元数据的额外奖励积分(例如长度,数据类型等)
1> Bryan Kyle..: 您正在寻找的是数据字典.在sqlite中,通过查询sqlite_master表(或视图?)可以找到所有表的列表
sqlite> create table people (first_name varchar, last_name varchar, email_address varchar);
sqlite> select * from sqlite_master;
table|people|people|2|CREATE TABLE people (first_name varchar, last_name varchar, email_address varchar)
要获取列信息,您可以使用以下pragma table_info(table_name)
语句:
sqlite> pragma table_info(people);
0|first_name|varchar|0||0
1|last_name|varchar|0||0
2|email_address|varchar|0||0
有关pragma语句的更多信息,请参阅文档.
大!现在如何从命令行外部完成?这是如何从我自己的C程序中完成的?
@Nag,我认为SQLite应该将这些命令视为普通SQL,相应地处理它,并返回结果集.
2> ifightcrime..: 这是一个简单的方法:
.schema
@EhteshChoudhury不,它不应该,问题要求SQL查询,这不是一个. 这应该是答案. 3> inVader..: 这个问题已经过时了,但尚未提及以下内容.
在许多情况下,另一种方便的方法是打开标题:
sqlite> .headers on
然后,
sqlite> SELECT ... FROM table
将显示一个标题,显示输出顶部的所有选定字段(如果您选择SELECT*).
4> Majd Taby..: 进入你的sqlite shell:
$ sqlite3 path/to/db.sqlite3
然后才打
sqlite> .schema
你会得到一切.
5> 小智..: 这是一个SELECT语句,列出当前数据库中的所有表和列:
SELECT m.name as tableName,
p.name as columnName
FROM sqlite_master m
left outer join pragma_table_info((m.name)) p
on m.name <> p.name
order by tableName, columnName
;
6> lewdev..: 这是一个查询,其中列出了所有表及其列以及我可以根据OP请求获得的每列的所有元数据(作为奖励积分)。
SELECT
m.name AS table_name,
p.cid AS col_id,
p.name AS col_name,
p.type AS col_type,
p.pk AS col_is_pk,
p.dflt_value AS col_default_val,
p.[notnull] AS col_is_not_null
FROM sqlite_master m
LEFT OUTER JOIN pragma_table_info((m.name)) p
ON m.name <> p.name
WHERE m.type = 'table'
ORDER BY table_name, col_id
感谢@David Garoutte向我展示了如何开始pragma_table_info
查询工作。
运行此查询以查看所有表元数据:
SELECT * sqlite_master WHERE type = 'table'
推荐阅读
如何解决《香草javascript忽略第一个选项卡/单击》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《如何构造一个包含9个较小矩阵的矩阵》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《Docker:TLS握手超时》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《向后搜索时,libvlc_media_player_set_position失败》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《如何在visualstudio2013解决方案资源管理器中获取文件路径?》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《同步对象以确保完成所有任务》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《使.txt文件不可读/不可编辑》经验,为你挑选了5个好方法。 ...
[详细]
如何解决《从另一个JPanel类更改JFrames的面板》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《AndroidHorizontalRecyclerViewwrap_content》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《在哪种情况下我们想添加没有容器的片段?》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《Swift:如何使用顶点的四个按钮实现可调整大小的个性化uiview》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《如何使用"DockerQuickstartTerminal"启动另一个docker-machine?》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《如何使用angularjs在c#中调用API》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《为CSharpCompilation.Emit指定框架版本》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《"LOOP$"是什么意思?》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《将表中的值从数据库显示到下拉列表中》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《聚合物1嵌套dom-如果在dom-repeat内,则在数据更改时不更新》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《在ArrayListJava中查找元素》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《如何在Swift中获取图像文件大小?》经验,为你挑选了2个好方法。 ...
[详细]
如何解决《VisualStudio2015没有自动更新来更新1?》经验,为你挑选了1个好方法。 ...
[详细]