Skip to content

database(DB), structured query language

SQLite

字数
1517 字
阅读时间
7 分钟

一、理论的学习

SQLite是一个很轻便的嵌入式数据库。


  1. 第一步是安装配置SQLite
  2. 系统环境变量和目录路径,命令提示符在任何位置使用sqlite3
  3. 数据库就是以.db为后缀的普通文件,使用命令sqlite3 mydate.db创建文件。

  • 建立表(CREATE TABLE)表是组成数据库存储数据的基本单位,由行和列组成。建立表时需要定义列的名称、数据类型和约束。
    • 一、语法结构

          CREATE TABLE [IF NOT EXISTS] 表名字 (
          列1名字 数据类型 [约束] [DFAULT 默认值],
          列2名字 数据类型 [约束],
      );
    • 二、SQLite特有的数据类型:SQLite使用动态类型。意味着数据存储时记录值本身的类型,而不是列定义的类型。列定义时可以指定五种类型亲和(Type Affinity),用来提高可读性和索引性能。

      1. INTEGER:整数
      2. REAL:浮点数
      3. TEXT:文本
      4. BLOB:二进制大对象
      5. MUMERIC:数字倾向
    • 三、常见的约束:

      1. NOT NULL:该列不能为空
      2. UNIQUE:该列的值必须唯一
      3. PRIMARY KEY:主键,唯一标识一行,隐含NOT NULL 和UNIQUE(在一个表中只能有一个)
      4. AUTOINCREMENT:
      5. DEFAULT:
      6. CHECK:插入或者更新时检查条件是否满足

二、指令简单目录

  • 创建文件指令:sqlite3 mydate.db
  • 查看已经被创建的表格指令:.table
  • 查看表结构指令:.schema mysid
  • 表所有行和列显示指令:SELECT * FROM mysid;

三、实践的角度

我准备用SQLite存角色数据。角色主要需要记录的信息有:名字、别名、性别、身高、外形、性格、特技、负面评价、职业;我在这个过程中出于需求自然而然地分出了单值字段和多值字段。

  • 单值字段:名字、性别、身高
  • 多值字段:别名、外形、性格、特技、负面评价、职业

(一)基于需求搭建表格结构

根据单值搭建demo表的结构,注明:表取名“mysid”

  1. CREATE TABLE mysid ( -> 新建表格 “mysid”
  2. id INTEGER PRIMARY KEY AUTOINCREMENT, -> 非手动的编号栏(1、2、3……)
  3. name TEXT NOT NULL, -> 不可以为空
  4. gender TEXT, -> 可以为空
  5. height TEXT -> 可以为空
  6. ); 创建后.table查看已经被创建的表格。.schema mysid查看表结构
INSERT INTO mysid (name,gender,height)
VALUES ('因益','未知','未知')
  • 操作时发现的错点:
    1. 双引号属于标识符,字符串使用单引号。

(二)插入数据

  • 插入数据时的两个方案:
    1. 指定列名INSERT INTO mysid (name,gender,height)
      • `VALUES ('','',''
      • );`
    2. 根据列数补全(四个)所有值
      • `INSERT INTO mysid
      • VALUES (NULL,'','',''注:NULL表示把之前的id列留空,自增机制自动填上正确的技术。
      • ); 把表里面所有行和列都显示出来的指令:SELECT * FROM mysid;

(三)删除数据

用稳妥的方式rowid删除,rowid是SQLite内部每一行自动分配的唯一编号。

  • DELETE FROM mysid WHERE rowid = 4准确删除想删的第4行 其他的删除方案
  • DELETE FROM mysid WHERE name = '因益' AND gender = '未知' AND rowid =2;表示删除目标为定位在name为因益,性别为未知的rowid为2的那一行。

(四)多字段方案

  • VALUES(NULL,'戚月泺','女','10月20日',167,55,NULL,'冷白','黑渐变白','紫','血型血统未知','罗酆域','暂无组织','吸取他人修为,符剑双修阵法略通','变异雷灵根','符簨和剑','做饰品','天生炉鼎'
  • ); VALUES(NULL,'商咲茗','女','4月5日',160,45,NULL,'白皙','墨青色','青色','O型、血统未知','漱月阁二师姐','漱月阁','符修,对阵法也颇有兴趣','水木灵根','符簨','看话本子、听八卦','穿越人士' ); VALUES(NULL,'茗清嘉','女','8月4日',162,49,NULL,'白皙','白发','玖红','兔族血统','灵虚境','灵虚境','主修阵法,兼攻言灵、召唤、用毒','冰灵根','暂无','调香、品茶','目盲(伪装,但视力确实不好)' );

(x1...> name TEXT, (x1...> gender TEXT, (x1...> birthday TEXT, (x1...> height REAL, (x1...> weight REAL, (x1...> bwh REAL, (x1...> skin TEXT, (x1...> hair TEXT, (x1...> eye TEXT, (x1...> ancestry TEXT, (x1...> nationality TEXT, (x1...> faction TEXT, (x1...> abilities TEXT, (x1...> attributes TEXT, (x1...> weapon TEXT, (x1...> hobbies TEXT, (x1...> specialties TEXT (x1...> );


四、具体实践

(一)项目《弱树》(ruoshu)

  1. 在本地文件夹(mydata)sqlite3 ruoshu.db为项目《弱树》建立sqlite库。
  2. 根据单值搭建ruoshu项目的第一张表,注明:表取名“roles”
  3. 序号、姓名、年龄、性别、身高、样貌、爱好、教育背景、工作状况、
    • CREATE TABLE roles ( -> 新建表格 “roles”
    • id INTEGER PRIMARY KEY AUTOINCREMENT, -> 非手动的编号栏(1、2、3……)
    • name TEXT NOT NULL, -> 不可以为空
    • age TEXT,
    • gender TEXT, -> 可以为空
    • height TEXT, -> 可以为空
    • appearance TEXT,
    • hobbies TEXT,
    • education TEXT,
    • work TEXT,
    • family TEXT
    • );
  4. 后续又单独添加新列——房间号:
    • ALTER TABLE roles ADD COLUMN room TEXT;
  5. 更新数据
    • UPDATE roles SET room = '202' WHERE name = '李知旭';`

SELECT name, gender FROM roles;


修改命令行的输出模式的指令:

  • .mode list
  • .mode column —— 按列对齐显示,也不带引号。
  • .mode markdown —— 以 Markdown 表格形式输出。
  • .mode box —— 带边框显示。

贡献者

The avatar of contributor named as G4OM-ES G4OM-ES

文件历史

撰写