zoukankan      html  css  js  c++  java
  • sqlite元数据

    sqlite数据库每个文件都是一个database,因此同一个文件内部不再划分database。sqlite没有提供像mysql那样的show tables;desc 表名类似的语句。许多数据库的元数据也是存储在一个表里面,mysql是这样,sqlite也是这样。在sqlite中,这个表的名字叫sql_master。

    查看表的内容

    select * from sqlite_master
    

    查看表的每列

    sqlite> pragma table_info(sqlite_master);
    0|type|text|0||0
    1|name|text|0||0
    2|tbl_name|text|0||0
    3|rootpage|integer|0||0
    4|sql|text|0||0
    

    sqlite_master表有5列:

    • type :可取值包括table,view,index
    • name:表名,视图名,索引名
    • tbl_name:表名,如果是索引,表示索引所对应的表
    • rootpage
    • sql : 创建数据库对象时的语句

    不管是表或视图还是索引,sql 字段是原先用 CREATE TABLE 、CREATE VIEW 或 CREATE INDEX 语句创建它们时的命令文本。对于自动创建的索引(用来实现 PRIMARY KEY 或 UNIQUE 约束),sql字段为NULL。

    SQLITE_MASTER 表是只读的。不能对它使用 UPDATE、INSERT 或 DELETE。 它会被 CREATE TABLE、CREATE INDEX、DROP TABLE 和 DROP INDEX 命令自动更新。

    关于sqlite的数据库元信息,知道sqlmaster和pragma table_info这两点就已经足够了。最后,来记忆一下sqlite常用语句。

    新增一列

    命令: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 '';

    删除一列

    sqlite不支持删除列,所以只能用另一种方式来实现删除列:先把想要的列复制到新表,然后把旧表删除,最后把新表重命名为旧表。
    create table B asselect y,z from A
    drop table ifexists A
    alter table Brename to A

    重命名一列

    sqlite不支持重命名列,所以只能用类似删除一列的方式:数据转移。

    参考资料

    https://blog.csdn.net/runtime233/article/details/52439881

  • 相关阅读:
    [NOIP模拟赛][贪心]奶牛晒衣服.
    BZOJ3750: [POI2015]Piecz
    BZOJ2348 [Baltic 2011]Plagiarism
    高精度乘法【高乘高
    codevs 1215 迷宫
    变量交换
    a+b问题与圆柱体表面积的计算
    算数表达式的练习
    [bzoj1070][SCOI2007]修车[ 网络流]
    [bzoj2502]清理雪道[上下界网络流]
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/9867932.html
Copyright © 2011-2022 走看看