一、Sqlite
SQLite是一种轻型的、跨平台的关系型数据库管理系统,它没有独立的服务器进程,而是直接读写保存在磁盘上的数据库文件。
二、数据类型
数据类型 | 定义 |
---|---|
NULL | 表示该值为NULL值 |
INTEGER | 无符号整型值 |
REAL | 浮点值 |
TEXT | 文本字符串,存储使用的编码方式为UTF-8、UTF-16BE、UTF-16LE |
BLOB | 存储Blob数据,该类型数据和输入数据完全相同 |
smallint | 16位的整数 |
integer | 32位的整数 |
decimal(p,s) | 精确值p是指全部有几个十进制数,s是指小数点后可以有几位小数。如果没有特别指定,则系统会默认为p=5 s=0 |
float | 32位元的实数 |
double | 64位元的实数 |
char(n) | n长度的字串,n不能超过254 |
varchar(n) | 长度不固定且其最大长度为n的字串,n不能超过4000 |
graphic(n) | 和char(n)一样,不过其单位是两个字节,n不能超过127 |
vargraphic(n) | 可变长度且其最大长度为n的双字元字串,n不能超过2000 |
date | 包含了年份、月份、日期 |
time | 包含了小时、分钟、秒 |
timestamp | 包含了年、月、日、时、分、秒、千分之一秒 |
三、常见约束
SQLite 约束是在表中强制执行数据完整性的规则。约束可以用于强制执行单个列或多个列之间的复杂规则。
约束 | 描述 |
---|---|
NOT NULL | 该约束确保列中的值不为空。 |
UNIQUE | 该约束确保列中的所有值都是唯一的。 |
PRIMARY KEY | 该约束将列设置为主键,该列唯一标识表中的每一行。 |
FOREIGN KEY | 该约束用于关联两个表中的数据,并确保引用表中的每个值都存在于主表中。 |
CHECK | 该约束用于指定一个条件,该条件必须在列上成立。 |
四、基本语法
0.注释
--
注释:插入两个连续的短横线(--
)可以将该行剩余部分全部注释掉
SELECT * FROM students -- WHERE age > 18;
/* */
注释:在SQL语句中插入/*
和*/
之间的内容将被视为注释,下方id
不会被查询
SELECT /* id, */ name, age, grade FROM students;
1.进入shell模式
- 打开终端,执行下方语句
- 会启动 SQLite shell 并打开默认的数据库文件
sqlite3
- 也可以直接打开特定的数据库文件
- 如果该数据库不存在,则会自动创建该数据库(注意路径)
sqlite3 D:/sqlitefile/test.db
2.查看数据库命令
- 查看当前数据库连接的所有数据库及其别名
- SQLite 认为所有数据库都是
main
数据库的一部分。 - 在 SQLite 中,
main
是指当前连接的主要数据库,也是默认数据库的名称
.database
3.退出数据库
- 如果当前语句还未执行结束,执行退出依旧不能退出
.quit或.exit都可以
4.附加数据库到当前会话
- AS是取别名
建议在每个完整的sql语句后方都添加
;
,以确保 SQLite 正确解析每个语句或命令
ATTACH DATABASE 'D:/sqlitefile/test.db' AS test;
.databases
5.分离数据库
- Alias-Name 与之前使用 ATTACH 语句附加数据库时所用到的别名相同。
DETACH DATABASE 'Alias-Name';
6.创建表
- 语法
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
<