IOS SQLite语法基础,iossqlite语法
分享SQLite语句的基础知识,是很基础的部分,只涉及”增”,”删”,”改”,”查”4个语法.不涉及表链接等内容.以后我会更新表链接的随笔.
github上有一个SQL的Demo,包含增删改查. UI如图: url: —
>
1 #import <sqlite3.h> 2 3 @interface ViewController () 4 5
@property (assign,nonatomic)sqlite3 * database; 6 7 @end 8 9
@implementation ViewController 10 11 @synthesize database;
创建一个学生表格,表格中有ID,name,age三个属性,ID是主键.
创建表格 : create table if not exists t_student (id integer primary
key autoincrement, name text, age integer)”
create table : 创建一个表格. if not exists : 如果没有被创建过.
t_student : 表格名字. id integer : ID integer类型(整数). primary key :
主键. autoincreament : 自动+1. name text : name 类型(字符串) age
integer类型(整数).
1 //把文本框转换成C语言
2 const char * name = [_text1.text UTF8String];//名字
3 const char * age = [_text2.text UTF8String];//年龄
4 //增加一行语句
5 char * sql = "insert into t_student (name, age) values (?,?)";
6 /**
7 sqlite 操作二进制数据需要用一个辅助的数据类型:sqlite3_stmt * 。
8 这个数据类型 记录了一个“sql语句”。为什么我把 “sql语句” 用双引号引起来?因为你可以把 sqlite3_stmt * 所表示的内容看成是 sql语句,但是实际上它不是我们所熟知的sql语句。它是一个已经把sql语句解析了的、用sqlite自己标记记录的内部数据结构。
9 */
10 sqlite3_stmt * stmt;
11
12 //这里要执行sqlite语句了 (数据库,SQL语句,-1,&stmt,NULL); 增删改查都是用这一句代码
13 //不同的地方就是sql语句的不同,sqlite3_bind_text()中的值不同而已.
14 int result = sqlite3_prepare_v2(database, sql, -1, &stmt, NULL);
15 if (result == SQLITE_OK) {
16 sqlite3_bind_text(stmt, 1, name, -1, NULL);
17 sqlite3_bind_text(stmt, 2, age, -1, NULL);
18 }
19 else {
20 NSLog(@"准备失败");
21 }
22 //检验是否操作完成
23 if (sqlite3_step(stmt) == SQLITE_DONE) {
24 NSLog(@"操作完成");
25 }
26 else {
27 NSLog(@"操作失败");
28 }
29 //每次调用sqlite3_prepare 函数sqlite 会重新开辟sqlite3_stmt空间,
30 //所以在使用同一个sqlite3_stmt 指针再次调用sqlite3_prepare 前
31 //需要调用sqlite3_finalize先释放空间
32 sqlite3_finalize(stmt);
向数据库中插入对象: insert into t_student (name, age) values (?,?)
insert into t_student : 向表t_student中插入数据. (name, age) :
数据名. values (?,?) : 值(值1,值2).
1 //把文本框转换成C语言
2 const char * name = "张三";//名字
3 const char * age = "20";//年龄
4 //增加一行语句
5 char * sql = "insert into t_student (name, age) values (?,?)";
6 sqlite3_stmt * stmt;
7 int result = sqlite3_prepare_v2(database, sql, -1, &stmt, NULL);
8 if (result == SQLITE_OK) {
9 sqlite3_bind_text(stmt, 1, name, -1, NULL);
10 sqlite3_bind_text(stmt, 2, age, -1, NULL);
11 }
12 else {
13 NSLog(@"准备失败");
14 }
15 //检验是否操作完成
16 if (sqlite3_step(stmt) == SQLITE_DONE) {
17 NSLog(@"操作完成");
18 }
19 else {
20 NSLog(@"操作失败");
21 }
22 //每次调用sqlite3_prepare 函数sqlite 会重新开辟sqlite3_stmt空间,
23 //所以在使用同一个sqlite3_stmt 指针再次调用sqlite3_prepare 前
24 //需要调用sqlite3_finalize先释放空间
25 sqlite3_finalize(stmt);
删除数据库中的对象 : delete from t_student where id = ?
delete from t_sudent : 删除t_student表格中的 删除id = ? 的数据 .
1 int a = [_text1.text intValue];
2 sqlite3_stmt * stmt;
3 char * sql = "delete from t_student where id = ?";
4 int result = sqlite3_prepare_v2(database, sql , -1, &stmt, NULL);
5 if (result == SQLITE_OK) {
6 result = sqlite3_bind_int(stmt, 1, a);
7 if (result == SQLITE_OK) {
8 result = sqlite3_step(stmt);
9 if (result == SQLITE_DONE) {
10 NSLog(@"删除成功");
11 }
12 else {
13 NSLog(@"删除失败");
14 }
15 }
16 }
17 else {
18 NSLog(@"删除失败");
19 }
20
21 sqlite3_finalize(stmt);
更改数据 : update t_student set name = ? where id = ?
update t_student : 更新表格. set name = : 设置名字为. id =
多少的数据.
就是修改id = ? 的名字.
1 const char * ID = [_text1.text UTF8String];
2 const char * newname = [_text2.text UTF8String];
3 sqlite3_stmt * stmt;
4 char * sql = "update t_student set name = ? where id = ?";
5 int result = sqlite3_prepare_v2(database, sql , -1, &stmt, NULL);
6 if (result == SQLITE_OK) {
7 result = sqlite3_bind_text(stmt, 1, newname, -1, NULL);
8 result = sqlite3_bind_text(stmt, 2, ID, -1, NULL);
9 if (result != SQLITE_OK) {
10 NSLog(@"更新数据有问题");
11 }
12 if (sqlite3_step(stmt) != SQLITE_DONE) {
13 NSLog(@"更新数据不成功");
14 }
15 }
16 else {
17 NSLog(@"修改数据失败");
18 }
19 sqlite3_finalize(stmt);
查询数据库中的所有数据 select id , name , age from t_student
select : 查询. id,name,age : ID,名字,年龄 这三个属性. from
t_student : 从t_student这个表格中
1 char * sql = "select id , name , age from t_student";
2 sqlite3_stmt * stmt;
3 int result = sqlite3_prepare_v2(database, sql , -1, &stmt, NULL);
4 if (result == SQLITE_OK) {
5 //sqlite3_step(stmt) == SQLITE_ROW 查询时使用
6 while (sqlite3_step(stmt) == SQLITE_ROW) {
7 int ID = sqlite3_column_int(stmt, 0);
8 char * name = (char *)sqlite3_column_text(stmt, 1);
9 NSString * strName = [NSString stringWithUTF8String:name];
10 int age = sqlite3_column_int(stmt, 2);
11 NSLog(@"%d,%@,%d",ID,strName,age);
12 }
13 }
14 sqlite3_finalize(stmt);
SQLite语法基础,iossqlite语法
分享SQLite语句的基础知识,是很基础的部分,只涉及”增”,”删”,”改”,”查”4个语法.不涉及表链接等内容.以后我会更…
分享SQLite语句的基础知识,是很基础的部分,只涉及”增”,”删”,”改”,”查”4个语法.不涉及表链接等内容.以后我会更新表链接的随笔.
SQLite数据库(一):基本操作
SQLite
是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。
其特点是高度便携、使用方便、结构紧凑、高效、可靠。
与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下 –
只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。如果您正在寻找一个嵌入式数据库项目或解决方案,SQLite是绝对值得考虑。
github上有一个SQL的Demo,包含增删改查. UI如图: url: —
>
目录
SQLite数据库(一):基本操作… 1
目录… 1
一、SQLite介绍… 2
1. 什么是SQLite. 2
2. 什么是数据库… 2
3. 数据库是如何存储数据的… 2
4. 数据库存储数据的步骤… 2
5. Navicat 2
6. 如何在程序运行过程中操作数据库中的数据… 3
7. SQL语句的种类… 3
二、表—创,查,显示,删除… 3
1. 安装… 3
2. 创建创建首个 SQLite 数据库… 4
3. 创建表:… 4
4. 修改表结构(列,视图,索引)… 5
5. 查看创建的表… 6
6. 删除创建的表… 6
7. 设置格式化查询结果:… 6
三、其他 SQLite 输出命令… 6
四、字段类型… 7
五、数据:插入、更新、删除… 8
1. 数据—插入(一行叫记录)… 8
2. 更新数据… 8
3. 删除数据… 8
六、条件语句… 9
七、DQL语句:数据查询显示… 9
1. 精确查找… 9
2. 模糊查询… 9
八、起别名… 10
九、计算记录的数量… 10
十、排序… 10
十一、limit 11
十二、简单约束… 11
十三、主键… 12
十四、外键约束… 12
一、SQLite介绍
使用SQLite,首先要手动导入libsqlite3.tbd库. 点击工程 —- Build
Phases —- Link Binary With Libraries 点击 + 号,输入libsqlite3.
你会发现两个库libsqlite3.tbd 和 libsqlite3.0.tbd ,导入其中任意一个即可.
这两个库有什么区别呢? 你可以把 libsqlite3.0.tbd
看做是一个快捷方式, libsqlite3.tbd 是真正的库.
1. 什么是SQLite
SQLite是一款轻型的嵌入式数据库。
它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快。
2. 什么是数据库
1) 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库
2) 数据库可以分为2大种类。
关系型数据库(主流)和 对象型数据库
3) 常用关系型数据库
PC端:Oracle、MySQL、SQL Server、Access、DB2、Sybase
嵌入式\移动客户端:SQLite
3. 数据库是如何存储数据的
数据库的存储结构和excel很像,以表(table)为单位。
使用SQLite之前,你需要先了解一些SQL语句.这里就写一些简单的语句,详细的语法还要认真学习才能掌握.
4. 数据库存储数据的步骤
1) 新建一张表(table)
2) 添加多个字段(column,列,属性)
3) 添加多行记录(row.record,每行存放多个字段对应的值)
SQLite使用的是C语言.iOS开发要转成char类型
5. Navicat
Navicat是一款著名的数据库管理软件,支持大部分主流数据库(包括SQLite)
使用前,导入sqlite3头文件,定义一个数据库
6. 如何在程序运行过程中操作数据库中的数据
1) 那得先学会使用SQL语句。
2) SQL(structured query language):结构化查询语言
3)
SQL是一种对关系型数据库中的数据进行定义和操作的语言。SQL语言简洁,语法简单,好学好用
4)
SQL中的常用关键字:有select、insert、update、delete、from、create、where、
desc、 order、by、group、table、alter、view、index等等
5) 数据库中不可以使用关键字来命名表、字段
1 #import <sqlite3.h>
2
3 @interface ViewController ()
4
5 @property (assign,nonatomic)sqlite3 * database;
6
7 @end
8
9 @implementation ViewController
10
11 @synthesize database;
7. SQL语句的种类
- 数据定义语句(DDL:Data Definition Language)
包括create和drop等操作
在数据库中创建新表或删除表(create table或 drop table)
- 数据操作语句(DML:Data Manipulation Language)
包括insert、update、delete等操作
上面的3种操作分别用于添加、修改、删除表中的数据
- 数据查询语句(DQL:Data Query Language)
可以用于查询获得表中的数据
关键字select是DQL(也是所有SQL)用得最多的操作
其他DQL常用的关键字有where,order by,group by和having
二、表—创,查,显示,删除
创建一个学生表格,表格中有ID,name,age三个属性,ID是主键.
1. 安装
1)进入 SQL 下载页面:
2)下载 Windows 下的预编译二进制文件包:
sqlite-shell-win32-x86-<build#>.zip |
注意: <build#> 是 sqlite 的编译版本号
将 zip 文件解压到你的磁盘,并将解压后的目录添加到系统的 PATH
变量中,以方便在命令行中执行 sqlite 命令。
可选: 如果你计划发布基于 sqlite
数据库的应用程序,你还需要下载源码以便编译和利用其 API
sqlite-amalgamation-<build#>.zip |
SQLite on Linux
在 多个 Linux 发行版提供了方便的命令来获取 SQLite:
1) /* For Debian or Ubuntu /*
2) $ sudo apt-get install sqlite3 sqlite3-dev
3) /* For RedHat, CentOS, or Fedora/*
4) $ yum install SQLite3 sqlite3-dev
创建表格 : create table if not exists t_student (id integer primary
key autoincrement, name text, age integer)”
2. 创建创建首个 SQLite 数据库
现在你已经安装了 SQLite
数据库,接下来我们创建首个数据库。在命令行窗口中输入如下命令来创建一个名为
test.db 的数据库
~$aqlite3
sqlite3 test.db