zoukankan      html  css  js  c++  java
  • sqlite的基本方法

     1、

    1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。
    2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项
    3.一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。
    4.一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。
    5.用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。
    6.SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。
     
     
    primary key 唯一且非空。
    Autoinc   自动增长  
    建表
    Create Table "main"."Student"
    SQL:
    CREATE  TABLE "main"."Student"
    ("stuID" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "stuName" VARCHAR(20), "stupswd" VARCHAR(20))
     
    添加
    INSERT INTO "main"."Student" ("stuName","stupswd") VALUES (?1,?2)
    Parameters:
    param 1 (text): tian
    param 2 (text): asdfggh
     
    删除
    Delete 1 records from Student  where stuid=1
     
    UPDATE "main"."Student"
    SET "stuName" = ?1 WHERE  "stuID" = 1
    Parameters:
    param 1 (text): tian
     
     
     
    --创建数据库
    create database  ios
    --使用数据库
    use  ios
    --创建数据表
    create table student
    (
        stuid int primary key autoincrement,
        stuname varchar(20),
        stupwd varchar(20)
    )
    --查询所有信息
    select * from student
     
    --增加信息
    insert into student(stuname,stupwd)
    values ('lisi','123456')
    --修改
    update student set stuname = '李四'
    where stuid = 1
    update student set stuname = '李四',stupwd='Sd123'
    where stuid = 1
    --删除
    delete from student where stuid=1
     
    返回信息  对表信息的反馈
     
     
     
    创建数据表
    create table class
    (
       cid  integer  primary key  autoincrement    ,
       cname varchar(20)
    )
    查询语句
    select * from class
    增加语句
    insert into class (cname) values('IOS实训班')
    修改语句
    update class set cname='物联网'  where cid=2
    删除语句
    delete from class where cid=2
    查询表中的记录数
    select count(*) from class
    select count(*) from class where cname='数据库'
    select * from class where cname='数据库'
    select cid from class where cname='数据库'
    select cid,cname from class where cname='数据库'
    select cid,cname from class where cid>=5 and cid<=9
    select cid,cname from class where cid   between 5 and 9
    select cid,cname from class where cid   in(5,6,7,8,9)
    降序排列
    select * from class  order by cid  desc
    升序排列
    select * from class  order by cid   asc
    select * from class  where cname='数据库'  order by cid  desc
    select * from class  where cname like  '%库'  order by cid  desc
    select * from class  where cname like  '数_库'  order by cid  desc
    分组
    select count(*) from class group by cname
    select count(*)   count  from class group by cname  order by count desc
     
    外键
    create table class
    (
    cid integer primary key autoincrement,
    cname varchar(20),
    schid int ,
    foreign key(schid) references sch(schid)
    )
            
    主外键
    create table class
    (
         cid integer primary key autoincrement,
         cname  varchar(20)
    )
    create table student
    (
        stuid integer primary key autoincrement,
        stuname varchar(20),
        stupwd varchar(20),
        stuaddr varchar(200),
        cid  int ,
       foreign key (cid) references class(cid)
    )
    增加
    insert into student(stuname,stupwd,stuaddr,cid)values('zhangsan','123','aaa',1)
    联合查询
    select * from class,student  where class.cid=student.cid
    左外连接
    select s.stuid,s.stuname,s.stupwd,s.stuaddr,c.cid
     from class  c,student  s  where c.cid=s.cid
    select s.stuid,s.stuname,s.stupwd,s.stuaddr,c.cid
     from class  c  left  join    student  s  on c.cid=s.cid
     
    交叉连接
    select s.stuid,s.stuname,s.stupwd,s.stuaddr,c.cid
     from student s  cross  join    class  c
     
    创建视图
    create view  v_class_student
    as
    select s.stuid,s.stuname,s.stupwd,s.stuaddr,c.cid
     from student s  left  join    class  c  on  s.cid=c.cid
     
    查询视图
    select * from   v_class_student where stuid=1
    登录查询语句
    select count( *) from student  where stuname='zhangsan' and stupwd='123456'
    select stupwd from student where stuid=1 and stuname='zhangsan'
    三表联合查询
    select   stu.stuname,c.cname,s.sname  from school   s  left join class   c   on   s.sid=c.sid   left join student  stu  on stu.cid=c.cid
    select * from student stu,class c,school s
     where  stu.cid=c.cid  and s.sid=c.sid
     
    select stu.stuname,c.cname,s.sname from student stu,class c,school s
     where  stu.cid=c.cid  and s.sid=c.sid
     
    select stu.stuname,c.cname,s.sname from student stu left join   class c
     on stu.cid=c.cid   left join school s  on s.sid=c.sid
    select * from student where cid  in
     (select cid from class  where cname='php')
     
    select * from student where cid  in
     (select cid from class  where sid  in
    (select sid from school where sname='myschool'))
     
    update  student set stuname='qq' ,stuaddr='bj'
    ,stupwd='123456789' where stuid=1
    删除数据表
    drop table student
     
    先删除子表  再删除 主表

    #import "ViewController.h"

    @interface ViewController ()

    @end

    @implementation ViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

    //    [self login];

    //    [self Add];

        [self showAll];

        

    }

    //显示数据表中的所有信息

    -(void)showAll

    {

        NSLog(@"显示数据");

    //    数据库

        sqlite3 *db;

    //    数据库文件存储路径

        NSString *path =[[NSBundle mainBundle] pathForResource:@"sasa" ofType:@"sqlite"];

    //    根据指定的数据库文件路径 打开数据库

     int result = sqlite3_open([path UTF8String], &db);

    //    创建执行命令对象

        sqlite3_stmt *stmt;

    //    打开数据库成功

        if (result==SQLITE_OK) {

            NSLog(@"连接成功");

    //        执行预处理命令

            int rst=sqlite3_prepare_v2(db, "select * from student", -1, &stmt, nil);

            

            if (rst==SQLITE_OK) {

    //            循环遍历数据表中整型列的信息

                while (sqlite3_step(stmt)==SQLITE_ROW) {

                    int stuid=sqlite3_column_int(stmt, 0);

                    NSLog(@"stuid is %d",stuid);

    //                获取数据表中 字符型的列信息

                    

                    NSLog(@"%@",[NSString stringWithFormat:@"%s",sqlite3_column_text(stmt, 1)]);

                    NSLog(@"%@",[NSString stringWithFormat:@"%s",sqlite3_column_text(stmt, 2)]);

                    

                }

                

            }

        }

        

    }

    -(void)login

    {

        sqlite3 *db;

        

        sqlite3_stmt *stmt;

        sqlite3_open([[[NSBundle mainBundle]pathForResource:@"sasa" ofType:@"sqlite"]UTF8String],&db );

    //    通过 ? 充当站位符

        int rst =sqlite3_prepare_v2(db, "select * from student where stuname=? and stupwd =? ", -1, &stmt, nil);

    //    绑定数据信息 注意 : 1 表示的是 ? 的位置

        sqlite3_bind_text(stmt, 1, "lisi", -1, nil);

        sqlite3_bind_text(stmt, 2, "1234", -1, nil);

        

        if (rst==SQLITE_OK) {

            if (SQLITE_ROW==sqlite3_step(stmt)) {

                NSLog(@"login ok");

            }

            else

            {

                NSLog(@"sorry");

            }

        }

        

    }

    -(void)Add

    {

        sqlite3 *db;

        

        sqlite3_stmt *stmt;

        sqlite3_open([[[NSBundle mainBundle]pathForResource:@"sasa" ofType:@"sqlite"]UTF8String],&db );

        int rst=sqlite3_prepare_v2(db, "insert into student (stuname,stupwd)values(?,?) ", -1, &stmt, nil);

        

        sqlite3_bind_text(stmt, 1, "lisi", -1, nil);

        sqlite3_bind_text(stmt, 2 , "lisi", -1, nil);

        if (rst==SQLITE_OK) {

    //        判断是否增加成功

           if (SQLITE_DONE==sqlite3_step(stmt))

                {

                    NSLog(@"ADD ok");

            

               }

               else

                {

            NSLog(@"add sorry");

                }

            }

    }

  • 相关阅读:
    MySQL-EXPLAIN执行计划字段解释
    MySQL-EXPLAIN执行计划Extra解释
    HTTP与HTTPS的区别
    【面试】Java中sleep和wait的区别
    Nginx之前后端分离(入门)
    玩程序 之 一 . 字符串处理工具(可通过C#脚本扩展)
    C#实现下载功能,可用于软件自动更新
    对c#剪切板Clipboard占用的问题一点解决方法
    C# 制作 仪表
    C#使用自定义字体(从文件获取)
  • 原文地址:https://www.cnblogs.com/tianlianghong/p/5308934.html
Copyright © 2011-2022 走看看