SQLite查看所有表名及字段名以及替他的操作


1.   查询与判断表

查询sqlite中所有表,可用如下sql语句。原理是,sqlite中有一个内建表sqlite_master,这个表中存储这所有自建表的表名称等信息。
select name fromsqlite_master where type='table' order by name;
我们可以通过如下语句查看这个内建表的所有记录
select * fromsqlite_master;
由此可以进一步引申:判断指定的表是否存在,可以用如下语句:
selectcount(*)  from sqlite_master wheretype='table' and name = 'yourtablename';
其中yourtablename表示你要判断的表名,如果查询结果大于0,表示该表存在于数据库中,否则不存在。
2.   查询与判断列

通过以下语句可查询出某个表的所有字段信息
PRAGMA  table_info([tablename])
比如:我想查看表catalog的所有列信息,可以用下述代码,结果如图所示:
PRAGMA table_info(catalog)
3.   Sqlite中新增、删除、重命名列

3.1   新增一列

方法:使用sql命令
命令:ALTER  TABLE   table-name ADD COLUMN  column-namecolumn-type
例如:在student表中添加一列名为name,类型为varchar:
alter table student add column name varchar;
 alter table catalog add column xxx1 char(20) default '';
3.2   删除一列

方法:由于drop命令在sqlite中不可用于删除列,
alter table student drop column name // 该行在SQlite中不能用,SQlite不支持drop
可采用如下思路,类似于swap()函数的过程。
比如我有表A,A中有x、y、z三列。我要将表A中的x列删掉。那么,
第1步,新建一个表B,B中含有y、z两个字段,且类型与A中的y、z类型相同。
第2步,将A中的所有y、z两列的值拷贝到B中。
上面两步使用一句命令即可完成
create table B asselect y,z from A
注意,如果A中y的类型为char,则上面create命令会在B中创建类型为TEXT的y列。即char类型会被改变。
第3步,将A表删除
drop table ifexists A
第4步,将B重命名为A
alter table Brename to A
3.3   重命名一列

方法:与删除一列相同,在sqlite中alter同样无法重命名一列。如果想重命名,那么思路与删除一列相同。
4.   Sqlite中新增、删除、重命名表

Sql语句在3.2中已有。整理如下。
4.1   新增表

create table A(id char(20),channeltext,name text,primary key (id))
create table B as select y,z from A
4.2   删除表

drop table if exists A
4.3   重命名表

alter table B rename to A

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Python 获取 SQLite3 数据库的表名字段名,你可以按照以下步骤进行操作: 1. 导入 `sqlite3` 模块: ```python import sqlite3 ``` 2. 连接到数据库: ```python conn = sqlite3.connect('your_database.db') ``` 将 `'your_database.db'` 替换为你的数据库文件路径。 3. 创建一个游标对象: ```python cursor = conn.cursor() ``` 4. 获取所有表名: ```python cursor.execute("SELECT name FROM sqlite_master WHERE type='table'") tables = cursor.fetchall() ``` 5. 遍历表名并获取每个字段名: ```python for table in tables: table_name = table[0] cursor.execute(f"PRAGMA table_info({table_name})") columns = cursor.fetchall() # 打印表名 print(f"表名: {table_name}") # 打印字段名 for column in columns: column_name = column[1] print(f"字段名: {column_name}") print() # 用于分隔每个的输出 ``` 6. 关闭游标和数据库连接: ```python cursor.close() conn.close() ``` 完整的代码示例: ```python import sqlite3 conn = sqlite3.connect('your_database.db') cursor = conn.cursor() cursor.execute("SELECT name FROM sqlite_master WHERE type='table'") tables = cursor.fetchall() for table in tables: table_name = table[0] cursor.execute(f"PRAGMA table_info({table_name})") columns = cursor.fetchall() print(f"表名: {table_name}") for column in columns: column_name = column[1] print(f"字段名: {column_name}") print() cursor.close() conn.close() ``` 记得将 `'your_database.db'` 替换为你实际的数据库文件路径。这段代码将输出数据库中每个表名字段名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值