草庐IT

SQLite3介绍及SQL语句详解(SQLite一)

Java.L 2023-07-17 原文

目录

一、SQLite3介绍

1.数据库存储数据

数据结构 数据仓库:

2.数据库数据类型

名称数据长度类型
int-2^31(-2,147,483,648) 到 2^31(2,147,483,647)整型数字
float-1.79E+308到1.79E+308可变精度的数字
real-3.04E+38到3.04E+38可变精度的数字
char最大长度为8000定长非Unicode的字符型数据
varchar最大长度为8000变长非Unicode的字符型数据
text最大长度为2^31-1(2G)变长非Unicode的字符型数据

3.window下qtcreator上编译sqlite3数据

在qt creator上创建c语言工程,并且在工程中添加数据代码

把数据代码拷贝到工程目录下在添加–把工程中的main.c里面的主函数名修改下main_test 避免冲突

如果是linux系统要在工程文件中添加 LIBS += -lpthread -ldl

二、SQL语句

数据通用语句 命令行语句结束要加;(分号)

以此为例:

varchar(256)varchar(256)textchar(32)
number(编号)name(姓名)address(地址)QQ
20200101张三广州911683830
20200102李四广州911683831

1.创建数据表格

create  table  表名( 字段名 数据类型  , 字段名 数据类型, 字段名  数据类型, 字段名  数据类型)

例:

create table student(number varchar(256), name varchar(256), address text, QQ char(32));

2.插入数据

insert into 表名  values('字段数据''字段数据''字段数据''字段数据' );

例:

insert into student values('20200101', '张三', '广州','911683830');
insert into student values('20200102', '李四', '广州','911683831');

3.查询数据

(1)查询

select  字段名...字段名  from  表名;

说明:字段名如果是多个可以用逗号隔开,如果是所有可以用星号*

例:

select * from student ;

select name, qq from student;

(2)条件查询

select  字段名...字段名  from  表名  where 条件;

例:

select * from student where address='广州';

select * from student where address like '广%';

条件里面的where address=‘广州’; 等于号表示必须一样, 如果是模糊查询address like ‘广%’;

(3)两个条件必须同时成立(与)-and

select  字段名...字段名  from  表名  where 条件 and 条件;

例:

select * from student where address like '广%' and  QQ like '%1';

(4)两个条件只要成立一个(或)-or

select  字段名...字段名  from  表名  where 条件 or 条件;

例:

select * from student where address like '广%' or  QQ like '%1';

4. 更新数据

update 表名 set 字段1=字段1, 字段2=字段2值… where 条件表达式;

例:、

update student set qq='199999999999' where name='岳飞';

5. 删除数据

delete  from 表名;//删除整个表数据,不会删除表格

delete  from 表名  where  条件;

例:

delete from student where number='20200103';

6.查询创建表命令

.schema 表名

例:

.schema student

7.alter添加字段

alter table 表名 add column 字段 类型 (default '默认值');

例:

alter table student add column age int ;

alter table student add column sex varchar(8) default '男' ;

8.pragma 查询表结构信息

pragma table_info(表名);

例:

pragma table_info(student);

9.创建带约束数据表

创建表格的时候设置字段约束

PRIMARY KEY主键,NOT NULL不能为NULL,UNIQUE唯一,DEFAULT默认值,ID INTEGER PRIMARY KEY AUTOINCREMENT id自动增长

以此表格为例:

idnamestatusonline
1led00
2led111
3led201

(1)创建数据表

create  table  device  (id  integer primary key autoincrement,
                         name  varchar(256) unique ,
                         status int not NULL default 0,
                         online int not NULL);

创建时加入条件(表不存在是创建):

create table if not exists device(id integer primary key autoincrement, 
                                  name varchar(256) unique, 
                                  status int default 0, 
                                  online int not NULL);

(2)插入数据

insert into device values(0,'led',0,0);

当主键或不可重复的字段出现重复时,插入失败

insert into device values(0,'led',0,0);
Error: UNIQUE constraint failed: device.id
insert into device values(1,'led',0,0);
Error: UNIQUE constraint failed: device.name

指定字段(列)插入–>没有指定的就可以用默认值

insert into device(name, online) values('led2',0);
insert into device(name, online) values('led3',0);

10.删除表

drop  table  表名

例:

drop table test;

有关SQLite3介绍及SQL语句详解(SQLite一)的更多相关文章

  1. ruby - 如何在 Ruby 中向现有方法定义添加语句 - 2

    我注意到类定义,如果我打开classMyClass,并在不覆盖的情况下添加一些东西我仍然得到了之前定义的原始方法。添加的新语句扩充了现有语句。但是对于方法定义,我仍然想要与类定义相同的行为,但是当我打开defmy_method时似乎,def中的现有语句和end被覆盖了,我需要重写一遍。那么有什么方法可以使方法定义的行为与定义相同,类似于super,但不一定是子类? 最佳答案 我想您正在寻找alias_method:classAalias_method:old_func,:funcdeffuncold_func#similartoca

  2. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  3. Hive SQL 五大经典面试题 - 2

    目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类

  4. sql - 查询忽略时间戳日期的时间范围 - 2

    我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时

  5. ruby - ruby 乘法语句中星号中断语法前的空格 - 2

    在添加一些空格以使代码更具可读性时(与上面的代码对齐),我遇到了这个:classCdefx42endendm=C.new现在这将给出“错误数量的参数”:m.x*m.x这将给出“语法错误,意外的tSTAR,期待$end”:2/m.x*m.x这里的解析器到底发生了什么?我使用Ruby1.9.2和2.1.5进行了测试。 最佳答案 *用于运算符(42*42)和参数解包(myfun*[42,42])。当你这样做时:m.x*m.x2/m.x*m.xRuby将此解释为参数解包,而不是*运算符(即乘法)。如果您不熟悉它,参数解包(有时也称为“spl

  6. ruby - 有没有办法从 ruby​​ case 语句中访问表达式? - 2

    我想从then子句中访问c​​ase语句表达式,即food="cheese"casefoodwhen"dip"then"carrotsticks"when"cheese"then"#{expr}crackers"else"mayo"end在这种情况下,expr是食物的当前值(value)。在这种情况下,我知道,我可以简单地访问变量food,但是在某些情况下,该值可能无法再访问(array.shift等)。除了将expr移出到局部变量然后访问它之外,是否有直接访问caseexpr值的方法?罗亚附注我知道这个具体示例很简单,只是一个示例场景。 最佳答案

  7. ruby - 在 Ruby 的 if 语句中检查 bash 命令 - 2

    如何在Ruby的if语句中检查bash命令的返回值(true/false)。我想要这样的东西,if("/usr/bin/fswscell>/dev/null2>&1")has_afs="true"elsehas_afs="false"end它会提示以下错误含义,它总是返回true。(irb):5:warning:stringliteralincondition正确的语法是什么?更新:/usr/bin/fswscell寻找afs安装和运行状态。它会抛出这样的字符串,Thisworkstationbelongstocell如果afs没有运行,命令以状态1退出 最

  8. ruby - 变量赋值后的 if 语句 - 有多常见? - 2

    我最近与一位同事讨论了以下Ruby语法:value=ifa==0"foo"elsifa>42"bar"else"fizz"end我个人并没有看到太多这种逻辑,但我的同事指出,这实际上是一种相当普遍的Rubyism。我试着用谷歌搜索这个主题,但没有找到任何文章、页面或SO问题来讨论它,这让我相信这可能是一种非常实际的技术。然而,另一位同事发现语法令人困惑,而是将上面的逻辑写成这样:ifa==0value="foo"elsifa>42value="bar"elsevalue="fizz"end缺点是value=的重复声明和隐式elsenil的丢失,如果我们想使用它的话。这也感觉它与Ruby

  9. ruby - 当你有一个没有参数的 case 语句并且 when 子句是 lambda 时会发生什么? - 2

    这段代码没有像我预期的那样执行:casewhen->{false}then"why?"else"ThisiswhatIexpect"end#=>"why?"这也不是casewhen->(x){false}then"why?"else"ThisiswhatIexpect"end#=>"why?"第一个then子句在两种情况下都被执行,这意味着我提供给when子句的lambda没有被调用。我知道无论when子句的主题是什么,都应该调用大小写相等运算符===。我想知道当没有为case提供参数时,===的另一边会发生什么。我在想它可能是nil,但它不可能是:->{false}===nil#=>

  10. sql - 在 Rails Console for PostgreSQL 的表中显示数据 - 2

    我找到了这样的东西:Rails:Howtolistdatabasetables/objectsusingtheRailsconsole?这一行没问题:ActiveRecord::Base.connection.tables并返回所有表但是ActiveRecord::Base.connection.table_structure("users")产生错误:ActiveRecord::Base.connection.table_structure("projects")我认为table_structure不是Postgres方法。如何列出Postgres数据库的Rails控制台中表中的所有

随机推荐