sqlites_part2

本文介绍SQLite数据库中的表操作,包括创建、修改和删除表的方法。同时涵盖了SQLite支持的数据类型及DDL语句的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据库定义语言 DDL

在关系型数据库中,数据库中的表 Table、视图 View、索引 Index、关系 Relationship 和触发器 Trigger 等等,构成了数据库的架构 Schema。 在 SQL 语句中,专门有一些语句用来定义数据库架构,这些语句被称为“数据库定义语言”,即 DDL

SQLite 数据库引擎支持下列三种 DDL 语句:

  • CREATE
  • ALTER TABLE
  • DROP

其中,CREATE 语句用来创建表 Table、视图 View、索引 Index、关系 Relationship 和触发器 Trigger, DROP语句用来删除表 Table、视图 View、索引 Index、关系 Relationship 和触发器 Trigger, ALTER TABLE 语句用来改变表的结构。

今天这一篇只涉及到表的相关内容,视图、触发器等到后面再讲。

 

二、SQLite 中的数据类型

SQLite 数据库中的数据一般由以下几种常用的数据类型组成:

  • NULL - 空值
  • INTEGER - 有符号整数
  • REAL - 浮点数
  • TEXT - 文本字符串
  • BLOB - 二进制数据,如图片、声音等等

SQLite 也可以接受其他数据类型。

三、创建表 CREATE TABLE

首先,创建一个 test.db 数据库并进入 SQLite 命令行环境,还记得怎么做吗?

myqiao@ubuntu:~$ sqlite3 test.db
-- Loading resources from /home/myqiao/.sqliterc
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
sqlite> 

向上面这样,我们就在终端中创建了一个 test.db 数据库, 并且通过 .tables 命令查询数据库中的表,结果没有任何返回, 因为数据库本来就是空的嘛。

下面我们创建一个 Student 表,其中包含 Id、Name、Age 等字段.

sqlite> 
sqlite> CREATE TABLE Students(Id integer,Name text,age integer);
sqlite> .tables
Students
sqlite> .schema Students
CREATE TABLE Students(Id integer,Name text,age integer);
sqlite> 

向上面这样,一个 Students 表就被建立了,这回再运行 .tables 命令就有响应了, 系统告诉我们数据库中现在有一个 Students 表, 运行 .schema 命令,返回了我们创建这个表的 SQL 命令。

四、修改表 ALTER TABLE

SQLite 仅仅支持 ALTER TABLE 语句的一部分功能, 我们可以用 ALTER TABLE 语句来更改一个表的名字,也可向表中增加一个字段(列), 但是我们不能删除一个已经存在的字段,或者更改一个已经存在的字段的名称、数据类型、限定符等等。

  • 改变表名 - ALTER TABLE 旧表名 RENAME TO 新表名
  • 增加一列 - ALTER TABLE 表名 ADD COLUMN 列名 数据类型 限定符

下面我们来演示一下,将前面的 Students 表的名字改为 Teachers

sqlite> 
sqlite> .tables
Students
sqlite> ALTER TABLE Students RENAME TO Teachers;
sqlite> .tables
Teachers
sqlite> 

原来数据库中只有一个 Students 表,改名以后再运行 .tables 命令,发现 Students 表已经没了,现在变成了 Teachers 表。

下面改变 Teachers 表的结构,增加一个 Sex 列

sqlite> 
sqlite> .schema Teachers
CREATE TABLE "Teachers"(Id integer,Name text,age integer);
sqlite> ALTER TABLE Teachers ADD COLUMN Sex text;
sqlite> .schema Teachers
CREATE TABLE "Teachers"(Id integer,Name text,age integer, Sex text);
sqlite> 

五、删除表 DROP TABLE

删除一个表很简单,只要给出表名即可

  • 删除表 - DROP TABLE 表名

下面,我们将 test.db 中的 Teachers 表删除

sqlite> 
sqlite> .tables
Teachers
sqlite> DROP TABLE Teachers;
sqlite> .tables
sqlite> 

删除 Teachers 表后再运行 .tables 命令,发现数据库已经空了。


<think>嗯,用户想了解LVGL中各个组成部分的作用,比如LV_PART_MAIN、LV_PART_SCROLLBAR这些。首先,我需要回忆一下官方文档里的内容。记得之前看到过这些部分主要是用来设置不同部件的样式的。比如主区域是部件的主体部分,滚动条则是滚动相关的部分。 用户提到的各个部分,可能需要逐个解释。比如LV_PART_MAIN,应该是大部分部件的基础,像按钮的背景、标签的底色都属于这个部分。然后是滚动条,当部件有滚动功能时,滚动条的样式在这里设置。指示器可能用在滑块或者进度条上,显示当前值的位置。手柄部分比如滑块的拖动按钮,用户调整数值时会用到。 接下来是LV_PART_SELECTED,这可能用于列表或下拉框中被选中的项,改变选中项的背景色或文字颜色。LV_PART_ITEMS可能对应表格中的单元格或者列表中的各个项,每个项的样式可以单独设置。光标部分在输入框里出现,比如文本输入时的闪烁光标,这部分可以设置颜色和宽度。 还有LV_PART_CUSTOM_FIRST,这个应该是用户自定义部分的起点,允许开发者扩展自己的部件部分。而LV_PART_ANY可能是一个特殊的标识,用于匹配所有部分,方便全局样式的设置。 需要确认每个部分的具体应用场景,比如文本区域的各个组成部分,根据引用[2],主体、滚动条、选中文本、光标和占位符都是不同的部分。这里可能需要结合具体的部件例子来说明,比如滑块由主体、指示器和手柄组成。 同时,要注意引用的来源是否正确。比如引用[1]详细列出了各个部分的枚举值,引用[2]提到了文本区域的部件结构,这些都可以用来支持解释。另外,引用[4]中的translate_x属性可能和部件的位置调整有关,但当前问题主要关注各个部分的功能,可能不需要深入讨论样式属性。 用户可能还想知道如何在实际开发中使用这些部分,比如设置样式时选择正确的部分。比如,设置按钮按下时的样式,可能需要用到LV_STATE_PRESSED状态和对应的部分。这部分可以结合示例代码说明,但用户的问题主要是功能详解,可能不需要代码,但可以提到示例。 最后,生成相关问题时要考虑用户可能的后续疑问,比如如何自定义样式到不同部分,不同部件包含哪些部分,或者如何处理事件。确保问题覆盖用户可能感兴趣的扩展知识点。</think>### LVGL组成部分功能详解 #### 1. **LV_PART_MAIN(主体部分)** - **功能**:所有部件的核心区域,通常控制背景、边框、基础布局等属性。 - **用途**: - 按钮的背景、标签的底色、滑动条的轨道等[^1]。 - 文本输入框的基础区域(如占位符和未激活时的显示)[^2]。 - **示例**:设置按钮的圆角或背景色时,需作用于`LV_PART_MAIN`。 #### 2. **LV_PART_SCROLLBAR(滚动条)** - **功能**:控制滚动条的样式和交互逻辑。 - **用途**: - 列表(List)、页面(Page)等可滚动部件的滚动条。 - 支持动态调整滚动条宽度、颜色和透明度。 - **示例**:为下拉菜单的滚动条添加动画效果。 #### 3. **LV_PART_INDICATOR(指示器)** - **功能**:用于显示当前状态或进度。 - **用途**: - 进度条(Bar)的填充部分、开关(Switch)的激活状态标识。 - 滑块(Slider)的当前位置标记。 - **示例**:设置进度条的填充颜色或滑块的指示线宽度。 #### 4. **LV_PART_KNOB(手柄/旋钮)** - **功能**:用户交互的直接操作部件。 - **用途**: - 滑块(Slider)的拖动按钮、旋钮(Knob)的旋转部分。 - 支持自定义手柄形状(如圆形、方形)。 - **示例**:调整旋钮的尺寸或添加按压动画。 #### 5. **LV_PART_SELECTED(选中状态)** - **功能**:标记当前选中项或高亮区域。 - **用途**: - 表格(Table)的选中单元格、下拉列表(Dropdown)的已选选项。 - 文本输入框中被选中的文本区域。 - **示例**:修改选中文本的背景色或字体样式。 #### 6. **LV_PART_ITEMS(子项元素)** - **功能**:管理部件内重复生成的子元素。 - **用途**: - 列表(List)的每个选项、表格(Table)的单元格。 - 支持批量设置子项样式(如悬停效果)。 - **示例**:为列表项添加间隔线或悬停高亮。 #### 7. **LV_PART_CURSOR(光标)** - **功能**:控制输入设备的光标显示。 - **用途**: - 文本输入框(Textarea)的闪烁光标。 - 支持设置光标颜色、宽度和闪烁频率。 - **示例**:自定义光标的形状(如竖线或块状)。 #### 8. **LV_PART_CUSTOM_FIRST(自定义部分起点)** - **功能**:扩展自定义部件的专用区域。 - **用途**: - 开发者可为特定部件定义私有样式部分(如仪表盘刻度)。 - 需通过偏移值(如`LV_PART_CUSTOM_FIRST + n`)访问。 #### 9. **LV_PART_ANY(通用匹配)** - **功能**:匹配所有部件部分,用于全局样式设置。 - **用途**: - 批量修改所有部件的公共属性(如默认字体)[^1]。 - 谨慎使用,可能覆盖具体部件的特定样式。 --- ### 示例:文本输入框的组成部分[^2] ```c lv_obj_t *ta = lv_textarea_create(lv_scr_act()); // 设置主体背景色 lv_obj_set_style_bg_color(ta, lv_color_hex(0xEFEFEF), LV_PART_MAIN); // 设置滚动条宽度 lv_obj_set_style_width(ta, 5, LV_PART_SCROLLBAR); // 设置选中文本颜色 lv_obj_set_style_text_color(ta, lv_color_hex(0xFF0000), LV_PART_SELECTED); // 设置光标颜色 lv_obj_set_style_bg_color(ta, lv_color_hex(0x0000FF), LV_PART_CURSOR); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值