zoukankan      html  css  js  c++  java
  • Sqlite3:Sqlite3命令行Linux操作

    1.查看sqlite版本

    [istester@ietester.com idoxu]$ sqlite3 -version

    2.进入sqlite后台操作

    指定一个完整文件的路径名,打开或者创建数据库(文件不存在,则创建),同时进入sqlite后台操作程序。

    [istester@ietester.com idoxu]$ sqlite3 dome.db

    3.查看所有数据库

    #查看所有数据库
    sqlite>.database

    4.查看所有表

    #查看所有表
    sqlite>.table

    5.查看所有表的创建语句

    #查看所有表的建表语句
    sqlite>.schema

    6.查看某个表的创建语句

    #查看某表的建表语句
    sqlite>.schema table_name

    7.增删改查命令

    1)建立数据表

    create table table_name(field1 type1, field2 type1, ...);

    table_name是要创建数据表名称,fieldx是数据表内字段名称,typex则是字段类型。
    例,建立一个简单的学生信息表,它包含学号与姓名等学生信息:

    create table student_istester(stu_no interger primary key, name text);

    2)添加数据记录

    insert into table_name(field1, field2, ...) values(val1, val2, ...);

    values为需要存入字段的值。
    例,往学生信息表添加数据:

    insert into student_istester(stu_no, name) values(0001, alex);

    3)修改数据记录

    update table_name set field1=val1, field2=val2 where expression;

    where是sql语句中用于条件判断的命令,expression为判断表达式
    例,修改学生信息表学号为0001的数据记录:

    update student_istester set stu_no=0001, name=hence where stu_no=0001;

    4)删除数据记录

    delete from table_name [where expression];

    不加判断条件则清空表所有数据记录。
    例,删除学生信息表学号为0001的数据记录:

    delete from student_istester where stu_no=0001;

    5)查询数据记录
    select指令基本格式:

    select columns from table_name [where expression];

    a: 查询输出所有数据记录

    select * from table_name;

    b: 限制输出数据记录数量

    select * from table_name limit val;

    c: 升序输出数据记录

    select * from table_name order by field asc;

    d: 降序输出数据记录

    select * from table_name order by field desc;

    e: 条件查询

    select * from table_name where expression;
    
    select * from table_name where field in ('val1', 'val2', 'val3');
    
    select * from table_name where field between val1 and val2;

    f: 查询记录数目

    select count (*) from table_name;

    g: 区分列数据

    select distinct field from table_name;

    有一些字段的值可能会重复出现,distinct去掉重复项,将列中各字段值单个列出。

    6)建立索引
    当说数据表存在大量记录,索引有助于加快查找数据表速度。

    create index index_name on table_name(field);

    例,针对学生表stu_no字段,建立一个索引:

    create index student_index on student_table(stu_no);

    建立完成后,sqlite3在对该字段查询时,会自动使用该索引。

    7)删除数据表或索引

    drop table table_name;
    
    drop index index_name;

    注意:

    指定INTEGER PRIMARY KEY AUTOINCREMENT 和不指定自增长字段用rowid有什么区别:

    Sqlite中,一个自增长字段定义为INTEGER PRIMARY KEY AUTOINCREMENT,那么在插入一个新数据时,只需要将这个字段的值指定为NULL,即可由引擎自动设定其值,引擎会设定为最大的rowid+1。当然,也可以设置为非NULL的数字来自己指定这个值,但这样就必须自己小心,不要引起冲突。当这个rowid的值大于所能表达的最大值 9223372036854775807 (3.0及以后版本的rowid最大值)后,rowid的新值会这个最大数之前随机找一个没被使用了的值。所以在rowid达到最大值前,rowid的值是严格单调增加的。
    INTEGER PRIMARY KEY AUTOINCREMENT 自增长字段的算法与rowid稍微有些不同。
     第一,在达到最大值后,rowid会找已被删除的字段对应的rowid作为新值,而自增长字段则会丢出一个SQLITE_FULL的错误。
     第二,自增长字段在增加新值时,是找一个从没被使用过的rowid作为新值,而rowid则是找最大已存在的rowid+1。这里对应用的影响会比较大,尤其是一些对id值有依赖的元记录,只适合使用自增长字段而不能用rowid。

    附录建表语句:

    drop table test;
    create table test (
        [tkid]            integer PRIMARY KEY autoincrement,                -- 设置主键
        [tktype]          int default 0,
        [tableid]         varchar (50),
        [createdate]      datetime default (datetime('now', 'localtime'))    -- 时间
    );

    文章转载至:https://www.jianshu.com/p/385965563b12

    ----------------------------------- 作者:怒吼的萝卜 链接:http://www.cnblogs.com/nhdlb/ -----------------------------------
  • 相关阅读:
    31天重构学习笔记9. 提取接口
    31天重构学习笔记4. 降低方法
    31天重构学习笔记8. 使用委派代替继承
    31天重构学习笔记11. 使用策略类
    31天重构学习笔记12. 分解依赖
    MyCat:第八章:MyCAT In Action中文版
    HDU 2041 超级楼梯
    CSU 1487 未覆盖顶点数量
    HDU 1712 ACboy needs your help
    HDU 2034 人见人爱AB
  • 原文地址:https://www.cnblogs.com/nhdlb/p/14292248.html
Copyright © 2011-2022 走看看