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/ -----------------------------------
  • 相关阅读:
    request.getParameter() 、 request.getInputStream()和request.getReader() 使用体会
    HTTP之Content-Length
    关于spring3中No Session found for current thread!and Transaction的配置和管理(转)
    Java数据类型和MySql数据类型对应一览
    Spring MVC 解读——View,ViewResolver(转)
    LeetCode 441. Arranging Coins
    LeetCode 415. Add Strings
    LeetCode 400. Nth Digit
    LeetCode 367. Valid Perfect Square
    LeetCode 326. Power of Three
  • 原文地址:https://www.cnblogs.com/nhdlb/p/14292248.html
Copyright © 2011-2022 走看看