zoukankan      html  css  js  c++  java
  • IOS SQLLite操作(一)

    iOS应用数据存取的常用方式

    •XML属性列表 —— PList
    •NSKeyedArchiver 归档
    •Preference(偏好设置)
    SQLite3
    •Core Data
     

    DDL语句

    •创表
    CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2, …);
    CREATE TABLE if not exists 表名 (字段名1 字段类型1, 字段名2 字段类型2, …);
    create table t_person (id integer, name text, age inetger);
     
    •删表
    drop table 表名;
    drop table t_person;
     

    字段类型

    •SQLite将数据值的存储划分为以下几种存储类型:
    •NULL: 表示该值为NULL值
    •INTEGER: 无符号整型值
    •REAL: 浮点值
    •TEXT: 文本字符串
    •BLOB: 二进制数据(比如文件)
     
    •实际上SQLite是无类型的,建表时声明或不声明类型都可以,也就意味着创表语句可以这么写:
    create table t_student(name, age);
     
    •注意:为了保持良好的编程规范,方便程序员之间的交流,编写建表语句的时候最好加上每个字段的具体类型
     
     

    DML语句

    •插入数据(insert)
    insert into 表名(字段1, 字段2, …) values(字段1的值, 字段2的值, …);
    insert into t_person(name, age) values(‘mj’, 10);
    •注意:数据库中的字符串内容应该用单引号’括住
     
    •更新数据(update)
    update 表名 set 字段1 = 字段1的值, 字段2 = 字段2的值, … ;
    update t_person set name = ‘jack’, age = 20;
    •注意:这里会将t_person表中所有记录的name都改为jack,age都改为20
     
    •删除数据(delete)
    delete from 表名;
    delete from t_person;
    •注意:这里会将t_person表中所有记录都删掉
     
     

    条件语句  

    •如果只想更新或者删除某些固定的记录,那就必须在DML语句后加上一些条件
    •条件语句的格式如下:
    where 字段 = 某个值 and 字段 > 某个值;  // and相当于 &&
    where 字段 = 某个值 or 字段 = 某个值;   // or相当于 ||
     
    •实例
    •将年龄大于10并且姓名不等于jack的记录年龄都改为5
    update t_person set age = 5 where age > 10 and name != ‘jack’;
    •删除年龄小于等于10或者年龄大于30的记录
    delete from t_person where age <= 10 or age > 30;
     

    DQL语句

    •DQL语句就是查询语句,格式如下:
    select 字段1, 字段2, … from 表名;
    select name, age from t_peron;
     
    •如果想查询所有的字段可以用:
    select * from 表名;
    select * from t_person;
     
    •也可以添加条件语句
    select * from t_person where age > 10;
     
    •计算记录的数量可以用count(字段)或者count(*)
    select count(*) from t_person;
    select count(age) from t_person where height < 1.66;
     

    排序

    •查询出来的结果可以用order by进行排序
    select * from t_person order by 字段;
    select * from t_person order by age;
     
    •默认是按照升序排序(由小到大),也可以变为降序(由大到小)
    select * from t_person order by age desc; // 降序
    select * from t_person order by age asc;  // 升序(默认)
     
    •也可以用多个字段进行排序
    select * from t_person order by age asc,height desc;
    先按照年龄排序(升序),年龄相等就按照身高排序(降序)
     

    限制查询数量

    select * from 表名 limit 数值1, 数值2;
    select * from t_person limit 4, 8;
    •上面的语句,可以这么理解:
    •跳过最前面4条语句,然后取8条记录
     
    •limit常用来做分页查询,比如每页固定显示6条数据,那么每一页应该这样取数据:
    第1页:limit 0, 6
    第2页:limit 6, 6
    第3页:limit 12, 6
    第n页:limit 6*(n-1), 6
     
    select * from t_person limit 7;
    •表示取最前面的7条记录
     

    简单约束

    •建表的时候可以给特定的字段 设置 一些约束条件
    1:用not null指定字段的值不能为null
    2:用unique指定字段的值必须唯一
    3:用default指定字段的默认值
     
    CREATE TABLE t_student (id integer, name text NOT NULL UNIQUE, age integer NOT NULL DEFAULT 1);
    1:name字段不能为NULL,并且唯一
    2:age字段不能为NULL,并且默认为1
     

    主键约束(PK)

    •当t_person中有些记录的name属性和age属性都一样时,那么就没法区分这些数据,造成数据库的记录不唯一,这样就不方便管理数据
    •良好的数据库编程规范应该是要保证每条记录的唯一性,为此,增加了主键约束
     
    •主键是用来唯一地标识某一条记录的,可以是一个字段或多个字段
    •比如t_person可以增加一个id字段作为主键,相当于人的身份证
     
    •主键的设计原则:
    1:主键应当是对用户没有意义的
    2:永远也不要更新主键
    3:主键不应包含动态变化的数据
    4:主键应当由计算机自动生成
     
    •在创表的时候用primary key声明一个主键
    CREATE TABLE t_student (id integer PRIMARY KEY,name text,age integer);
     
    •只要声明为primary key,就说明是一个主键字段,主键字段默认就包含了not null 和 unique 两个约束
     
    •如果想要让主键自动增长(integer类型),应该增加autoincrement
    CREATE TABLE t_student (id integer PRIMARY KEY AUTOINCREMENT,name text,age integer);
     

    外键约束(FK)

    •外键约束可以用来建立表与表之间的联系
    •新建一个外键
    CREATE TABLE t_student (id integer PRIMARY KEY AUTOINCREMENT,name text,age integer,book_id integer REFERENCES t_book(id));
     
    t_student表中有一个外键book_id引用着t_book的主键id
     
     
     
     
     
  • 相关阅读:
    Asp.Net基础 9.Web开发原则
    JavaScript – 1.事件 + 2.变量 + 3.判断变量初始化 + 4.函数的声明 + 5.匿名函数
    DOM – 3.window对象的属性
    Dom – 1.window对象事件 + 2.body、document对象的事件
    faint
    开会
    it's over
    so funny
    no topic
    震惊:有良医生揭无良献血内幕!
  • 原文地址:https://www.cnblogs.com/Rmeo/p/4167100.html
Copyright © 2011-2022 走看看