SQLlite

SQLlite

​ SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。

一、什么是 SQLite

​ SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,不需要在系统中配置。

​ 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。

二、SQLite的优势

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

三、SQLite命令

1.常用指令
  1. .open filename --打开文件
  2. .show --显示SQLite 命令提示符的默认设置
  3. .q --退出
  4. .databases --显示数据库(注:显示打开的数据库)
  5. .help --帮助
  6. .dump --导入导出数据库
  7. .tables --查看表
2.数据类型
存储类描述
NULL值是一个 NULL 值。
INTEGER值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。
REAL值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。
TEXT值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
BLOB值是一个 blob 数据,完全根据它的输入存储。
3.DDL–操作数据库
1.创建数据库:
	sqlite3 DatabaseName.db
	eg:  sqlite3 testDB.db(创建一个testDB的数据库)
2.删除数据库:
	rm DatabaseName.db(直接删除创建出来的文件即可)
	eg: rm testDB.db(删除创建出来的数据库文件)
4.DML–操作表
1.创建表
	CREATE TABLE database_name.table_name(
   column1 datatype  PRIMARY KEY(one or more columns),
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);
	eg: CREATE TABLE student(id int priamy key not null,name text, age Integer, salary real);
2.删除表
	DROP TABLE database_name.table_name;
	eg: DROP TABLE	student;
3.插入语句:
	INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
VALUES (value1, value2, value3,...valueN);
	eg1: INSERT INTO student values(1,"qiyihao",23,5000.50);(按照表结构插入数据)
	eg2: INSERT INTO student (id,name,age) values(2,"zhao",22);(按照表结构中指定字段插入数据)
4.查询语句:
	SELECT column1, column2, columnN FROM table_name;(查询指定列)
	SELECT * FROM table_name;(查询所有)
	eg1: SELECT id, age, age FROM student;
	eg2: SELECT * FROM student;
5.更新语句:
	UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
	
	eg: UPDATE student 
	SET age = 22, name = "qiyihao"
    WHERE id = 1 ;
6.删除语句:
	DELETE FROM table_name
WHERE [condition];
	
	eg: DELETE FROM student
WHERE id = 1;

	DELETE FROM table_name;(清空表中所有数据)
	eg: DELETE FROM student;
5.格式化输出指令

(1).schema (查看表中详细信息)

(2)格式化输出

	a.非格式化输出      select * from user_relation;

在这里插入图片描述

 	b.格式输出      	
					.header on
					.mode column
					.select * from user_relation;

在这里插入图片描述

(3)查看表结构

1.查看数据库中所有表结构
					select * from sqlite_master ;
2.查看数据库中指定表结构
					select * from sqlite_master where type = "table" and name = "student";
03-25
### 关于 SQLite 数据库的使用指南 SQLite 是一种轻量级的关系型数据库管理系统,适合嵌入式应用和小型项目开发。以下是关于 SQLite 的一些核心概念及其使用的详细介绍。 #### 1. 权限管理的特点 SQLite 的权限管理功能相对简单,不像 MySQL 或 PostgreSQL 那样提供复杂的用户角色管理和细粒度访问控制。因此,在需要高级权限管理的应用场景中,建议评估是否切换至更强大的数据库系统[^1]。 #### 2. 版本控制与集成 对于 SQLite 数据库文件,可以将其纳入版本控制系统(如 Git),以便跟踪其结构变化或初始化脚本的历史记录。通过这种方式,团队成员能够协同维护数据库模式并减少冲突风险。 #### 3. 基础操作流程 当完成一系列数据库读写请求之后,务必调用 `sqlite3_close()` 函数释放资源以及断开连接。这是确保程序稳定性的重要一步。下面是一个简单的 C 语言代码片段展示如何安全地关闭 SQLite 连接: ```c #include <sqlite3.h> void close_database(sqlite3 *db) { if (sqlite3_close(db) != SQLITE_OK) { fprintf(stderr, "Database did not close cleanly\n"); } } ``` 上述函数定义了一个用于优雅退出的方法,并检查是否存在错误情况发生[^2]。 #### 4. React Native 中预加载 SQLite 数据库实例化过程 如果目标是在移动应用程序框架比如 React Native 下快速启动带有预先填充数据集的服务,则可以通过如下方式实现: - 构建一个名为 `your_mobile.db` 的 SQLite 文件,其中包含了所有的基础资料条目; - 接着按照官方文档指示将此 `.db` 资源复制粘贴进入 Android/iOS 平台特定目录路径之下[^3]; 这样做的好处在于减少了首次运行期间网络延迟或者冗长的数据迁移时间消耗。 --- ### 提供一段 Python 示例演示基本 CRUD 功能 这里给出一段基于 Python 的例子来说明怎样执行常见的增删改查命令: ```python import sqlite3 def create_connection(): conn = None; try: conn = sqlite3.connect('example.db') # 创建一个新的数据库 example.db 如果它不存在的话 print(f'Successfully connected to the database.') except Error as e: print(e) return conn def insert_data(conn): sql_insert_query = """ INSERT INTO projects(name,start_date,end_date) VALUES(?,?,?) """ project_details = ('My First Project', '2023-09-01', '2023-12-31') cur = conn.cursor() cur.execute(sql_insert_query, project_details) conn.commit() if __name__ == '__main__': connection = create_connection() if connection is not None: insert_data(connection) connection.close() ``` 以上脚本展示了建立链接、插入新纪录的过程最后记得总是要结束会话以防止内存泄漏等问题出现。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值