SQL语句

主键:数据库中每一条数据的唯一标识符!不能重复,不能为空!

SQL 语句 : 学会使用 CRUD(///) SQL 语句!


1.创建“表”语句

CREATE TABLE  IF NOT TEXTS "t_student" ("id" INTEGER PRIMARY KEY AUTOINCREMENT , "name" TEXT)


REATE TABLE "t_person" (
     " name" TEXT,
     "age" INTEGER,
     "height" REAL,
     "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT
)

2.删“表”语句

DROP TABLE  IF NOT TEXTS "t_student" ;

3.添加语句(插入数据)
INSERT INTO “t_student” (“name” , “age") VALUES (“lisi”,20);

4.更新数据 updata

UPDATE "t_person" SET age = "19";

5.删除数据
DELETE FROM "t_person" WHERE age ="19";

6.查询数据 *表示取所有字段, 如果不想查询全部,就加条件判断,SELECT name,age FROM "t_person"  WHERE name = "lisi";


SELECT name,age FROM "t_person" LIMIT 5,5;表示从第五个元素开始查询5条数据


7.条件判断语句(使用非常多)




在Xcode中使用sqlite3,步骤:

1.创建动态库  :libsqlist3.tbd

2.导入头文件:<sqlite3.h>

例子:


#import "ViewController.h"

#import <sqlite3.h>


@interface ViewController ()


@end


@implementation ViewController

{

    // 成员变量/数据库实例

    sqlite3 *_db;

}


- (void)viewDidLoad {

    [super viewDidLoad];

}


- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    NSLog(@"touchesBegan");

    

    // 利用 OC 代码模拟数据库操作!

    

    // 所有的关于数据库的操作函数,都是以 sqlite3 开头!

    

    // 1. 创建一个数据库文件(沙盒中!),并且利用sqlite3 函数打开这个数据库!

    

    // 2. 打开数据库成功之后,创建"",用来存储数据!

    

    // 3. ""中插入数据!

    

    // 4. 更新和删除表中的数据!

    

    // 5. 根据需求从表中取出数据(查询数据!).

    

    

    // Caches 文件路径

    NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;

    

    // 数据库文件路径

    NSString *filePath = [path stringByAppendingPathComponent:@"student.sqlite"];

    

    // 打开数据库

    // sqlite3 **ppDb : 数据库实例.

    int result = sqlite3_open(filePath.UTF8String, &_db);

    

    if (result == SQLITE_OK) {

        

        NSLog(@"数据库打开成功!");

        NSLog(@"%@",filePath);

        

        // 创建"",SQL语句!

        NSString *sql = @"CREATE TABLE IF NOT EXISTS \"t_student\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT , \"name\" TEXT ,\"age\" INTEGER ,\"score\" REAL);";

        

        char *errorMessage;

        

        // 执行 SQL 语句, ""

        int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errorMessage);

        

        if (result == SQLITE_OK) {

            

            NSLog(@"t_student 表创建成功!");

            

            // 插入数据!

            // [self insetIntoStudent];

            

            // 查询数据

            [self selectDataFromStusent];

            

        }else

        {

            NSLog(@"表创建失败");

            NSLog(@"errorMessage:%s",errorMessage);

        }

        

        

    }else

    {

        NSLog(@"数据库打开失败!");

    }

    

    

    //关闭数据库!

    sqlite3_close(_db);

}


// 查询数据!

-(void)selectDataFromStusent

{

    // 1. sql语句

    NSString *sql = @"SELECT name,age,score FROM \"t_student\" LIMIT 10,10;";

    

    // 2. 检查查询语句的合法性!

    

    // stmt :用来存放查询到的数据!

    sqlite3_stmt *stmt;

    

    // -1 /自动匹配长度!

    int result = sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stmt, NULL);

    

    if (result == SQLITE_OK) {

        

        NSLog(@"查询语句合法!");

        

        while (sqlite3_step(stmt) == SQLITE_ROW) {

            

           // NSLog(@"查询到一条数据!");

            

            // 取出查询到的数据!

            // 参数: 1. 查询到的数据存储的位置

            // 2. 取第几列的数据!

            const unsigned char *name = sqlite3_column_text(stmt, 0);

            

            int age = sqlite3_column_int(stmt, 1);

            

            double score = sqlite3_column_double(stmt, 2);

            

            NSLog(@"name:%s %d %.2f",name,age,score);

            

            // 服务器: 将这些数据写成 JSON 之后,放在服务器,然后利用网络访问!

            // 客户端: 将数据转换成模型数据,添加到数据源中,直接使用!

        }

        

        // 释放stmt

        sqlite3_finalize(stmt);

    

    }else

    {

        NSLog(@"查询语句不合法!");

    }

    // 3. 获得查询到的数据!

    

    

}


//            NSLog(@"查询到一条数据!");

//

//            // 取出查询到的数据!

//            // 参数: 1. 查询到的数据存储的位置

//            // 2. 取第几列的数据!

//            const unsigned char *name = sqlite3_column_text(stmt, 0);

//

//            int age = sqlite3_column_int(stmt, 1);

//

//            double score = sqlite3_column_double(stmt, 2);

//

//            NSLog(@"name:%s %d %.2f",name,age,score);


// 作业: 自己完成 删除 更新 数据!

// 删除: age > 30 并且 score < 80;

// age > 30 的数据 age 变成 28;


// 插入数据!

- (void)insetIntoStudent

{

    // 插入多条数据!

    

    for (int i = 0 ; i < 50; i++) {

        

        NSString *name = [NSString stringWithFormat:@"zhangsan%d",i];

        NSInteger age = arc4random()%30+20;

        NSInteger score = arc4random()%50+50;

        

        // 1. SQL 语句

//        NSString *sql = @" INSERT INTO \"t_student\" (\"name\",\"age\",\"score\") VALUES (\"lisi\",20,98);";

        

        NSString *sql = [NSString stringWithFormat:@"INSERT INTO \"t_student\" (\"name\",\"age\",\"score\") VALUES (\"%@\",%ld,%ld);",name,age,score];

        

        // 2. 执行 SQL 语句

        char *errorMessage;

        int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errorMessage);

        

        if (result == SQLITE_OK) {

            

            NSLog(@"数据插入成功!");

            

        }else

        {

            NSLog(@"数据插入失败! %s",errorMessage);

        }


    }

}


@end




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值