iOS - 关于移动端SQLite,你想清楚的都有彩民之家

2019-09-20 06:11 来源:未知

MySQL基本回顾操作

前些天我创设了叁个数据表,表的内容如下:

mysql> select * from gubeiqing_table;
 ---------- ----- 
| name     | age |
 ---------- ----- 
| gbq      | 21  |
| zhangsan | 20  |
| lisi     | 22  |
 ---------- ----- 
3 rows in set (0.00 sec)

笔者昨日急需对那么些数量遵照年龄进行四个升序排序。

mysql> select * from gubeiqing_table order by age ASC;
 ---------- ----- 
| name     | age |
 ---------- ----- 
| zhangsan | 20  |
| gbq      | 21  |
| lisi     | 22  |
 ---------- ----- 
3 rows in set (0.00 sec)

能够看到未来的数据库已经根据升序的主意开展排序了。
order by是用来排序的,ASC是升序排序,DESC是降序排序。

当今本身有二个这样的数据表。

mysql> select * from gubeiqing_table;
 ---------- ----- 
| name     | age |
 ---------- ----- 
| gbq      | 21  |
| zhangsan | 20  |
| lisi     | 22  |
| zhangsi  | 21  |
| lisan    | 22  |
 ---------- ----- 
5 rows in set (0.00 sec)

自个儿想知道这么些数目表里有何年龄段。

mysql> select age from gubeiqing_table group by age;
 ----- 
| age |
 ----- 
| 21  |
| 20  |
| 22  |
 ----- 
3 rows in set (0.00 sec)

首先从数据表中寻找age字段,接着通过group by将近几来纪分组。
还足以计算近几来纪分别有个别许人。

mysql> select age,count(*) from gubeiqing_table group by age;
 ----- ---------- 
| age | count(*) |
 ----- ---------- 
| 21  |        2 |
| 20  |        1 |
| 22  |        2 |
 ----- ---------- 
3 rows in set (0.00 sec)

接着学一下共同查询,使用UNIONUNION用于连接八个以上的SELECT说话的结果组合到一个结实群集中,七个SELECT语句会删除重复的多寡。。

mysql> show tables;
 --------------------- 
| Tables_in_gubeiqing |
 --------------------- 
| gbq                 |
| gubeiqing_table     |
 --------------------- 
2 rows in set (0.00 sec)

mysql> select * from gbq;
 ------ ----- 
| name | age |
 ------ ----- 
| qaz  | 20  |
| wsx  | 23  |
| edc  | 21  |
 ------ ----- 
3 rows in set (0.00 sec)

mysql> select * from gubeiqing_table;
 ---------- ----- 
| name     | age |
 ---------- ----- 
| gbq      | 21  |
| zhangsan | 20  |
| lisi     | 22  |
| zhangsi  | 21  |
| lisan    | 22  |
 ---------- ----- 
5 rows in set (0.00 sec)

本人未来想查看八个表

mysql> select age from gbq
    -> union
    -> select age from gubeiqing_table;
 ----- 
| age |
 ----- 
| 20  |
| 23  |
| 21  |
| 22  |
 ----- 
4 rows in set (0.00 sec)

当今来看的是全体的值,可是并非那个字段所以的值。用UNION看样子的是去重今后的有着值,假若不想去重那么要动用UNION ALL

mysql> select age from gbq
    -> union all
    -> select age from gubeiqing_table;
 ----- 
| age |
 ----- 
| 20  |
| 23  |
| 21  |
| 21  |
| 20  |
| 22  |
| 21  |
| 22  |
 ----- 
8 rows in set (0.00 sec)

这样就观看了全方位的值。
诸君大佬不介意的话我只想要一点流量。个体博客

如图:

布置记录

INSERT [INTO] tbl_name [(col_name,...)] {VALUES|VALUE} ({expr|DEFAULT},...),(...),...

  首先,创立一个简约的数据表

彩民之家高手论坛 1

  即使轻松col_name,则意味全体的字段根据顺序依次赋值。因为id字段是全自动编号的,该字段能够赋值为NULL或DEFAULT

彩民之家高手论坛 2

彩民之家高手论坛 3

  通过逗号分隔,能够一回性写入多条记下;况且,值能够运用表明式表示

彩民之家高手论坛 4

  数据库并从未布尔类型BOOLEAN,假设申明类型为BOOLEAN,则会被改造为TINYINT类型,true调换为1,false调换为0

彩民之家高手论坛 5

 

方法二

INSERT [INTO] tb1_name SET col_name={expr|DEFAULT},...

  与第一种方法的区分在于,此办法能够使用子查询(SubQuery),以及贰回性只能插入一条记下

彩民之家高手论坛 6

 

方法三

INSERT [INTO] tb1_name [(col_name,...)] SELECT ...

  此方法能够将查询结果插入到指定数据表

 

SELECT *FROM T_Person1ORDER BY name ASC,age DESC;

结果管理

[GROUP BY {col_name | position} [ASC | DESC],...]

  查询结果分组(GROUP BY)的参数中,ASC是升序,是暗中认可的;DESC是降序

彩民之家高手论坛 7

  col_name代表字段名,position以数字代表职分,如1意味着SELECT语句中率先次面世的字段

彩民之家高手论坛 8

分组条件

[HAVING where_condition]

  在设置分组(HAVING)时,应当要保管分组条件(where_condition)要么是聚合函数(max,min,avg,count,sum),要么个中的字段必需是SELECT中的三个询问字段,不然会报错

彩民之家高手论坛 9

分组排序

[ORDER BY {col_name | expo | position}  [ASC | DESC],...]

  能够应用分组排序(order by)对查询结果实行排序

彩民之家高手论坛 10

  同期能够用多少个标准来排序,按输入顺序来拓宽开始时期级的选料

彩民之家高手论坛 11

限制结果

[LIMIT {[offset,] row_count | row_count OFFSET offset}]

  限制查询结果(LIMIT)暗中认可景况下,重返全数查找到的结果

彩民之家高手论坛 12

  假设LIMIT前面唯有二个数字,表示从第一条起首回到,并再次来到相应数字个数的记录

彩民之家高手论坛 13

  SELECT语句暗中同意从0起头编号,假设想从第三条开头回来,则须求offset参数和row_count参数一同利用

彩民之家高手论坛 14

【补充】

INSERT [INTO] tbl_name [(col_name,...] SELECT ...

  与一上马介绍的插入记录的措施不相同,未来这种方法能够将寻找的结果存款和储蓄到钦定的数据表

彩民之家高手论坛 15

<br />更新七个字段

履新记录

UPDATE [LOW_PRIORITY][IGNORE] table_reference SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]...[WHERE where_condition]

  能够贰次革新多条记下;当省略WHERE条件时,全部记录的值将会更新

  上边将全部人的年华府扩展5岁

彩民之家高手论坛 16

  下边将全体人的岁数更新为本来年龄减去其id值,将全部人的性别改成0

彩民之家高手论坛 17

  上面将富有id值为偶数的人的年华加10岁

彩民之家高手论坛 18

 

SELECT *FROM T_Person1ORDER BY age DESCLIMIT 10;

查询表达式

SELECT select_expr [,select_expr...]
[
FROM tbl_references
[WHERE where_condition]
[GROUP BY {col_name | position} [ASC | DESC],...]
[HAVING where_condition]
[ORDER BY {col_name | expo | position}  [ASC | DESC],...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
]

  查询表达式的每一个表达式表示想要查找的一列,必需有至少二个。三个列之间以色列德国语逗号分开

彩民之家高手论坛 19

  查询表达式的依次能够和原表中字段的次第不雷同

彩民之家高手论坛 20

  在行使多表连接时,恐怕会现出差异的表中存在名称同样的字段,假如一向写字段,分不清到底是哪张数据表的字段。在字段名前增加数据表能够辨别出专项于哪张数据表

彩民之家高手论坛 21

  星号*号表示全体的列。tbl_name.*能够代表命名表的具有列

彩民之家高手论坛 22

  查询表明式能够使用[AS] alias_name为其授予外号,外号可用于GROUP BY, OLX570DEEvoque BY, HAVING字句

彩民之家高手论坛 23

  [注意]在行使查询表明式设置小名查询,AS能够动用,也能够不选拔。但假如不选取,恐怕会油但是生二义性意况

SELECT id username FROM users;

  mysql会把上面的说话解析为username作为id的小名

 

SELECT * FROM T_Person1 WHERE age>20 LIMIT 10;

前方的话

  本文将详细介绍mysql关于记录的增加和删除改查

 

ALTER TABLE 表名 ADD 字段名 字段类型;

去除记录

DELETE FROM tbl_name [WHERE where_condition]

彩民之家高手论坛 24

  [注意]删除某条记下后,再插入一条新的笔录,自动编号不会补到删除记录的数码上,而是基于原有记录最大编号继续追加

彩民之家高手论坛 25

 

彩民之家高手论坛 26立异之后

SELECT COUNT FROM 表名;

DQL(Data Query Language)数据查询语言关键字:Select,同一时间也是使用频率最高的查询数据SELECT 字段名,... FROM 表名;

INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;

<br />上面依据age字段实行降序

<br />

彩民之家高手论坛 27删除之后

INSERT INTO T_Person1 VALUES;INSERT INTO T_Person1 VALUES;

其有时候就必要主键:PRIMARY KEY,所以我们要修改大家的创设表的讲话修饰主键的秘籍有三种:

SQLite的 WHERE 子句用于钦命从三个表或多少个表中获取数据的准绳。假使餍足给定的标准,即为真时,则从表中重回特定的值。您能够使用 WHERE 子句来过滤记录,只得到须要的笔录。SQLite的运算符有各类:算数、相比较、逻辑以及位运算符算数运算符:

当今大家完全能够不用管理ID那个字段,并且未来每一条数据都以独一的。

SELECT COUNT FROM T_Person1;
DELETE FROM T_Person1 WHERE name='gg';

彩民之家高手论坛 28字段外号

DROP TABLE 表名;
CREATE TABLE IF NOT EXISTS T_Person1( id INTEGER, name TEXT, age INTEGER, PRIMARY KEY ;

彩民之家高手论坛 29执行了5次之后

如图:根据age升序

SELECT age,name FROM T_Person1;

给表起别称:

  加法 - 把运算符两边的值相加 a   b 将得到 30- 减法 - 左操作数减去右操作数 a - b 将得到 -10* 乘法 - 把运算符两边的值相乘 a * b 将得到 200/ 除法 - 左操作数除以右操作数 b / a 将得到 2% 取模 - 左操作数除以右操作数后得到的余数 b % a will give 0
  • 方法一:

多表查询:先创设一个T_Person2表,然后插入一下数量

<br />

一个Action

UPDATE T_Person1 set name='bb',age=28 WHERE id=9;

<br />如图:

Limit常用来对数码开展分页,例如每页固定呈现n条数据

写别称的法子还应该有一种,但是不推荐,直接加个空格

<br />然后数据表中数据如下:

SELECT name as xingming, age as nianling FROM T_Person1 WHERE age>25;
UPDATE T_Person1 SET name='qq';执行这行语句后会发现所有的名字都变成了qq

未插入字段从前的表:

<br />

询问多个字段: 这里字段的输入顺序就和显示的列名数据一致

彩民之家高手论坛 30五个字段

INSERT INTO T_Person1  VALUES('xiaoming',35);提示:Affected rows : 1, Time: 0.00sec

<br />查询有多条数据:

SELECT * FROM T_Person1 WHERE age>22;

<br />先插入一下数目进去

<br />

如图:根据name升序,在根据age升序

SELECT 字段... FORM 表名 LIMIT a,b;a:表示跳过多少条数据b:从a之后开始取多少条数据

<br />

位运算符:

彩民之家高手论坛 31检索age大于20的数据,取十条彩民之家高手论坛 32

<br />文中部分比较简单的语句实在没比较分行分的那么明亮,只是作者为了能令人观看起来更为有益于,有写作者也从未进行分行,可是阅读起来应当依旧相比轻松的。OK,假诺您百折不挠看完了,希望或多或少能给你带来一些小小协助。笔者写那个也花了某个岁月,要是能令你复习只怕有幸让您更理解SQLite的话,就不枉费这几个时间了。

SELECT name,age FROM T_Person1 WHERE name='ab';

SQLite,是一款轻型的数据库,是遵从ACID的关系型数据库管理种类,它含有在三个相持小的C库中。它是D.RichardHipp创设的公有领域项目。它的统一希图目的是嵌入式的,并且近日早已在众多嵌入式产品中选拔了它,它占用能源足够的低,在嵌入式设备中,也许只须要几百K的内部存款和储蓄器就够了。它亦可援救Windows/Linux/Unix等等主流的操作系统,同有的时候候能够跟相当多程序语言相结合,例如Tcl、C#、PHP、Java等,还恐怕有ODBC接口,同样比起Mysql、PostgreSQL那四款开源的社会风气盛名数据库管理连串来说,它的管理速度比她们都快。

CREATE TABLE IF NOT EXISTS T_Person1( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);

OK,通过地点的代码大家就足以明白怎么着对点名的数目实行更新了,上边大家大约的说下删除内定数据.

现行反革命我们不想见到那么多数据,假诺大家只展现age

<br />OK,在填写了数据之后,大家起初查找

今天我们要哪些知道客商试行了什么样操作?使用join

如图:

OK,必要总是要变来变去的,那年大家想查询年龄当先二十四岁的数额,况且出示全数的信息

SELECT * FROM T_Person1 LIMIT 20,10;

<br />更新之后如图:

CREATE TABLE IF NOT EXISTS T_Person( id INTEGER, name TEXT, age INTEGER);

OK,通过地方的语句大家成功了只对第叁个名字叫ff的人立异数据,不过今后自己想对第四个姓名称为ee举行翻新,就很狼狈了,数据库中有多少个姓名都叫ee的还要年龄都以19岁,到了那边大家定义id为独一的法力就发挥出来了,此时大家只须要创新钦赐id就可以

彩民之家高手论坛 33履新数据之后

  • 更新数据
INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;
DELETE FROM T_Person1;执行完上面语句之后查看打印:Affected rows : 4, Time: 0.00sec 影响了四行数据
SELECT name xingming,age nianling FROM T_Person2;

彩民之家高手论坛 34搜寻之后

彩民之家高手论坛 35检索

<br />

UPDATE T_Person1 set name='qq',age=20;

<br />然后能够见见表数据如下:

彩民之家高手论坛 36除去之后

彩民之家高手论坛 37条件查询二

彩民之家高手论坛 38对比

那规范看犹如并未有毛病,然则结合实际情况来看,倘使那是三个班级的数目,作者不希望笔者的学员连名字都未曾,这一个不像话。

 AND AND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在。 BETWEEN BETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值。 EXISTS EXISTS 运算符用于在满足一定条件的指定表中搜索行的存在。 IN IN 运算符用于把某个值与一系列指定列表的值进行比较。 NOT IN IN 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。 LIKE LIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较。 GLOB GLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。 NOT NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。**它是否定运算符。** OR OR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件。 IS NULL NULL 运算符用于把某个值与 NULL 值进行比较。 IS IS 运算符与 = 相似。 IS NOT IS NOT 运算符与 != 相似。 || 连接两个不同的字符串,得到一个新的字符串。 UNIQUE UNIQUE 运算符搜索指定表中的每一行,确保唯一性。

彩民之家高手论坛 39那一年如何区分?

雄起雌伏上边的表,今年老师分配任务啦,给每一个人100块的运行资金,然后二个月后来翻开他们是让100块造成了0块依旧成为了更加多,那一年上边就来话了,你给本身增添七个字段进去,保存他们的资财额度。但是那几个需求在项目初始之初是不曾虚构到的,那就比较坑爹了,原来的数据库文件的剧情不可能去除,又要新增加三个字段……愁死笔者了。方法有成千上万种,这里不作介绍了只是来介绍一下动态增加字段这一个艺术

  • 第1页:... LIMIT 0,10;
  • 第2页:... LIMIT 10,10;
  • 第3页:... LIMIT 20,10;
  • ...
  • 第n页:... LIMIT 10*,10;
INSERT INTO 表名 VALUES;

要是有一个Person 表,设计如下:

IF NOT EXISTS : 如果不存在上面创建的语句翻译就是:创建一个表,如果不存在的话就创建
SQLITE_API const unsigned char *SQLITE_STDCALL sqlite3_column_text(sqlite3_stmt*, int iCol);
  • 删除表

如图:

 1、INTEGER - 整形 2、blob - 二进制 3、real - 浮点型 4、text - 字符串 5、NULL - 空

在地点的代码中我们曾经到位了对数据库的翻新,不过却不是大家想要的结果,上面的是对全体数据库都开展了履新,假使我们只想对某些数据更新改什么化解吗?前边会讲到

<br />上边是实践了5次的事后的表:

因而三个图相比,开掘抽取来的数码确实是合情合理的。

SELECT one.name as one_name,one.age as one_age FROM T_Person1 as one WHERE age>25;
  • 插入数据
SELECT * FROM T_Person1;在这里*代表通配符,所有的字段

<br />通过写上ASC来证实:

<br />然后大家想找名称为ab的人,不要突显id

<br />OK,进一步扩充难度,小编要拿走age>20的前方10条数据

在网络乞请的时候大家经常能够向服务器表明,从哪一页最先,取多少条,类似那样子的操作很频仍。

  • 方法二:

<br />再度查看表:

OK,到此处完美消除了在此以前的标题

<br />

彩民之家高手论坛 40

INSERT INTO T_Person1  VALUES;

<br />

彩民之家高手论坛 41数码表图

彩民之家高手论坛 42插入数据

下一场大家再一次执行下面的讲话

彩民之家高手论坛 43别名

SELECT age FROM T_Person1;

检索

彩民之家高手论坛 44安顿了一条姓名称为空、年龄是35的数据

<br />表:

如图:

SELECT one.name as one_name, one.age as one_age, two.name as two_name, two.age as two_age FROM T_Person1 as one, T_Person2 as two WHERE one.age>30 AND two.age>30;

<br />

CREATE TABLE T_Person( id INTEGER PRIMARY KEY, name TEXT, age INTEGER);
CREATE TABLE 表名 (字段名 字段类型,字段名1 字段类型1,...);

能够一时把表或列重命名叫另三个名字,那被堪称别名。使用表别称是指在三个一定的 SQLite 语句中重命名表。重命名是有的时候的改动,在数据库中实际的表的名目不会变动。列小名用来为有个别特定的 SQLite 语春神命名表中的列。

<br />

SELECT COUNT FROM T_Person1;

彩民之家高手论坛 45五个字段排序

彩民之家高手论坛 46标准查询

UPDATE 表名 SET 字段名=值,...;

如图:

DDL(Data Definition Language):数据定义语言,用来创立数据库中的各样对象-----表、视图、索引、同义词、聚簇等

彩民之家高手论坛 47立异理解后

彩民之家高手论坛 48未插入在此以前

<br />若是本身想删除多条数据吧?举例删除20岁以上的

彩民之家高手论坛 49单个字段排序

透过上边包车型地铁刺探大家就知道怎样插入数据,而且安装字段了。

彩民之家高手论坛 50一名不文

如图:

快快查询有稍许条数据仍然查询有个别字段有微微条数据

其中

<br />最后我们在贯彻一个基于name升序,age降序的先别焦急,因为大家数据库中绝非一样姓名的,所以大家先插入两条数据插入数据

<br />在打听了WHERE之后呢大家就可以对数据库举行点名某条删除、更新等操作了先向数据库中 插入一些数量

<br />代码:取10条数据,从0开始

那年,T_Person1里面某些字段T_Person2里面也可能有,就想多个班级内部的字段都有姓名,年龄等数码。小名这年就足以很方便的界别

<br />此时查看表如下:

<br />现在我们就足以所行无忌的实行下面这条插入语句了

终极厚着脸皮求个尊崇,那是自家最大的引力。前边会更新怎么样在Swift3.0的中利用。

  • 去除数据

彩民之家高手论坛 51age

<br />如果大家数据库中一贯不那么多的景色下,就能把剩余的全方位都抽取来比方:T_Person1中大家只有23条数据,在地方检索出来过推行:

SELECT * FROM T_Person2 ORDER BY name,age;

<br />为此笔者特地的又运维了二回

SELECT * FROM T_Person1 LIMIT 10;

彩民之家高手论坛 52招来如图

<br />举例:每页取10条数据

彩民之家高手论坛 53单个字段

DROP TABLE T_Person;

如图:

插入一个字段:money

以此时候我们就已经到位了对DML的学习,然而那一个还缺乏,举例大家立异数据的时候是对总体表张开创新,删除也是把全路表实行删除,假诺大家想对点名的数量开展操作,我们须求上学八个新的第一字:WHERE 条件

ORDER BY,用于对数据开展排序思虑这么一种意况,当你把数据音讯输入进去,而数据笔者是无规律的,这一年你供给排序,举例:name、age字段来排序。DESC : 降序ASC:升序

<br />然后大家来查阅一下表:

<br />不过在少数景况下依然会有不周详的地点,比方上面这条插入语句:

<br />检索age字段条数:

  • 1、占用能源低
  • 2、速度快
  • 3、与其余数据库比较,更适配移动平台、嵌入式平台
ALTER TABLE T_Person1 ADD money real DEFAULT 100.0;

DML(Data Manipulation Language)数据库操作语句:关键字有insert,update,delete分别对应:插入、更新、删除

由此地方的话语我们开采在不写明是哪些排序的景色下暗许是升序,也正是ASC

<br />

CREATE TABLE IF NOT EXISTS T_Person2( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER DEFAULT 20, money REAL DEFAULT 100.0);INSERT INTO T_Person2  VALUES('asdf',28);INSERT INTO T_Person2  VALUES('hsdfg',25);INSERT INTO T_Person2  VALUES('afdfb',24);INSERT INTO T_Person2  VALUES('dfasdf',22);INSERT INTO T_Person2  VALUES('ffdfd',23);INSERT INTO T_Person2  VALUES('yfdft',28);INSERT INTO T_Person2  VALUES('ocvi',21);INSERT INTO T_Person2  VALUES('qwvc',33);INSERT INTO T_Person2  VALUES('gvcvf',19);INSERT INTO T_Person2  VALUES('kcvcl',18);INSERT INTO T_Person2  VALUES;INSERT INTO T_Person2  VALUES('rvcdst',25);INSERT INTO T_Person2  VALUES('tr43',28);INSERT INTO T_Person2  VALUES('qwgh',26);INSERT INTO T_Person2  VALUES('xgfdx',24);INSERT INTO T_Person2  VALUES('hfgzx',25);INSERT INTO T_Person2  VALUES('mgfhn',24);INSERT INTO T_Person2  VALUES('vhgb',25);

如图:

彩民之家高手论坛 54limit 20,10

彩民之家高手论坛 55limit

<br />

INSERT INTO T_Person1  VALUES;在现实生活中我们可能会遇到这样一种情况:在一个班里,有可能有两个人的姓名完全一致,这个时候我们就需要进行区分,就像每个人都有一个身份证号,且唯一

正如运算符

== 检查两个操作数的值是否相等,如果相等则条件为真。  不为真。= 检查两个操作数的值是否相等,如果相等则条件为真。  不为真。!= 检查两个操作数的值是否相等,如果不相等则条件为真。  为真。<> 检查两个操作数的值是否相等,如果不相等则条件为真。 (a <> b) 为真。>> 检查左操作数的值是否大于右操作数的值,如果是则条件为真。  不为真。< 检查左操作数的值是否小于右操作数的值,如果是则条件为真。  为真。>= 检查左操作数的值是否大于等于右操作数的值,如果是则条件为真。 (a >= b) 不为真。<= 检查左操作数的值是否小于等于右操作数的值,如果是则条件为真。 (a <= b) 为真。!< 检查左操作数的值是否不小于右操作数的值,如果是则条件为真。 (a !< b) 为假。!> 检查左操作数的值是否不大于右操作数的值,如果是则条件为真。 (a !> b) 为真。

如图

倘令你看来了此处,那么恭喜您,你早已领悟了什么样创造/删除表,以及对表的增删改查,相同的时间还询问了WHERE条件语句,到那边基本上你早就足以团结管理数据库了。

CREATE TABLE T_Person1 ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER DEFAULT 15);

彩民之家高手论坛 56数据表如图

INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;INSERT INTO T_Person1  VALUES;

彩民之家高手论坛 57如图

<br />多个字段排序

诸如:给字段起外号

比方你正在上厕所,忽地有个人就步入把您赶出去了,占了您的坑,此时的你势必是在暴怒状态,正常的应当是:先看下里面有未有人,有人了就换叁个,没人然后在进入占三个坑……所以大家须要看清一下是不是足以插入这么些字段

<br />

从地点的结果可以看到,id不可能长久以来,那怎么样手艺担保ID分化样,又不输入id这一个性子呢?因为人输入,大概会存在错误,交给机器做最佳。于是大家要用到个新的要害字:AUTOINCREMENT 自增所以大家还要在改造二遍创制语句:

下一场没有错,又要使用多个新的严重性字:NOT NULL 不为空

Select * from 表一 join 表二 on 关联条件 where 筛选条件多个筛选条件中用 AND 分隔

于是乎大家得以吸取四个公式:m:每回取多少n:页m*,m

<br />

由此上述代码大家就可以创立叁个表了,不过只要在试行一遍地点的说话, 就能够发掘报错了,错误:文件已存在Error : table T_Person already exists据此大家创立的时候必要推断表是或不是存在于是有了下边包车型地铁创制语句:

<br />然后大家插入数据:

经过地方的方法会重回给大家多个C字符串数组判别那些数组是或不是有值,假如有了就不能够插入了

若是您足足留神,你就意识了明日有多人名字都叫ff了,假设本人今后只想对第贰个姓名称叫ff的人立异数据我们能够这样子写:

然后大家在介绍四个性情:DEFAULT 暗中同意值使用方式就是在字段名后边

彩民之家高手论坛 58age降序

SELECT * FROM T_Person2 ORDER BY age;

如图:

<br />CREATE TABLE T_Person(id INTEGER, name TEXT,age INTEGER);在这里我们通常有两种书写格式,假设语句不是很长的情况下,可以写成一行,但是如果语句过长就不利于阅读,所以有了下面的格式:CREATE TABLE T_Person( id INTEGER, name TEXT, age INTEGER);
& 与| 或p q p & q p | q0 0 0 00 1 0 11 1 1 11 0 0 1

<br />如图:

<br />

以此时候就能够报错:提醒大家名字无法为空

UPDATE T_Person1 set name='ff',age=20 WHERE name='bb';表示我要更新一个姓名叫做bb的人数据,并且把他的名字设置为qq、年龄设置为20岁Affected rows : 1, Time: 0.00sec 提示已经影响了一条数据

如图所示

<br />表如下:

彩民之家高手论坛 59基于age实行排序,取前边十条

age INTEGER DEFAULT 15表示定义了一个age 字段 默认是15
SELECT *FROM T_Person2ORDER BY age DESC;

<br />

<br />然后我们再来看表

<br />于是大家要写成:

INSERT INTO T_Person1  VALUES;

<br />

SELECT * FROM T_Person2 ORDER BY name ASC,age ASC;

<br />如图:

彩民之家高手论坛 60布署之后

<br />然后我们在一块排序提取数额:

彩民之家高手论坛 61表别名

如图:

select * from //查找所有字段 Person as p join Action as a //把表关联 on p.user_id=a.user_id // 关联的字段where p.user_id = 'xxx' //筛选的条件select p.name, a.action from //只显示 name 和 action Person as p join Action as a //把表关联 on p.user_id=a.user_id // 关联的字段where p.user_id = 'xxx' and a.action = 'xxxxx' //筛选的条件

如图

<br />这一年我们再度试行插入语句

如图:

相比较查看数据是或不是正确

DELETE FROM 表名;

彩民之家高手论坛 62数据图

CREATE TABLE T_Person1 ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER);

<br />

逻辑运算符:

接下来再一次更新表的创办语句:

DELETE FROM T_Person1 WHERE age>20;Affected rows : 4, Time: 0.00sec 影响了四行,应该是删除了四行,我们查看更新之后的表
Error : duplicate column name: money提示说有两个都叫money的列了
字段名 类型 描述
user_id text 主键
action text 动作

如图:

<br />然后呈未来的数目如下:

  • 创建表
INSERT INTO T_Person1  VALUES;错误提示:Error : NOT NULL constraint failed: T_Person1.name
字段名 类型 描述
user_id text 用户主键
name text 用户姓名

<br />那年大家的开创表语句如下:

彩民之家高手论坛 63更新数据之后

UPDATE T_Person1 set name='ee',age=19 WHERE name='ff' AND age=20;

<br />

INSERT INTO T_Person1 (id,name,age) VALUES(1,'zs',20);.第一次:Affected rows : 1, Time: 0.00sec第二次:Error : UNIQUE constraint failed: T_Person1.id
TAG标签: MySQL iOS 都有 你想
版权声明:本文由彩民之家高手论坛发布于彩民之家高手论坛,转载请注明出处:iOS - 关于移动端SQLite,你想清楚的都有彩民之家