iOS-データ格納方式
5313 ワード
1 iOSにおけるデータ格納方式
1>小さなデータを格納し、元のパスに上書きして格納
Plist(NSArrayNSDictionaryのみ)Preference(お気に入り設定NSUserDefaults standardUserDefaults)
NSCoding (NSKeyedArchiver\NSkeyedUnarchiver)
2>大量のデータの保存
SQLite 3純C言語、軽量レベル、検索速度が速いCore Data OC言語
2 SQLite
1>SQLiteとは
SQLiteは軽量な組み込みデータベースです.リソースの消費量が非常に低く、組み込みデバイスでは数百Kのメモリだけで十分かもしれません.Mysql、PostgreSQLの2つの有名なデータベースよりも処理速度が速いです.
2>フィールドタイプ
SQLiteデータは、integer:整数値real:浮動小数点値text:テキスト文字列blob:バイナリデータ(ファイルなど)に分けられます.実際にSQLiteは無タイプです.integerタイプと宣言しても、文字列テキスト(プライマリ・キーを除く)を格納して表を作成するときにどのタイプを宣言するか、タイプを宣言しなくてもいいです.つまり、創表文はcreate table t_と書くことができます.student(name, age);
3>削除テーブルの作成
1)テーブルの作成
create table if not existsテーブル名(フィールド名1フィールドタイプ1、フィールド名2フィールドタイプ2,...);
eg:create table t_student (id integer, name text, age inetger, score real) ;
2)テーブルの削除
drop table if existsテーブル名;
eg:drop table t_student ;
4>CRUD(添削改ざん文)
1)データの追加
Insert intoテーブル名(フィールド1,フィールド2,...)values(フィールド1の値,フィールド2の値,...);
eg:insert into t_student (name, age) values (‘mj’, 10) ;//データベース内の文字列の内容は、単一引用符で囲む必要があります.
2)データの削除
delete fromテーブル名;
eg:delete from t_student ;//上記の例では、t_studentテーブルのすべてのレコードを削除
3)データの更新
updateテーブル名setフィールド1=フィールド1の値、フィールド2=フィールド2の値、...;eg:update t_student set name = ‘jack’, age = 20 ;//テーブル内のすべてのレコードのnameをjackに変更し、ageを20に変更します.
4)データの検索
selectフィールド1、フィールド2(または*)fromテーブル名whereフィールド名=値
eg:select name, age from t_student ; select * from t_student ;
5>条件文
特定の固定レコードのみを更新または削除する場合は、DML文の後に条件文の一般的なフォーマットwhereフィールド=値を追加する必要があります.//2つの=whereフィールドisの値は使用できません.//is=whereフィールドに相当!=値;whereフィールドis not値;//is not相当!=whereフィールド>値;whereフィールド1=値andフィールド2>値;//andはC言語の&&whereフィールド1=ある値orフィールド2=ある値に相当する.//or C言語に相当する
6>別名
別名再テーブル接続クエリーは便利です
1)フォーマット(フィールドとテーブルの両方に別名を付けることができる)selectフィールド1別名、フィールド2別名、...fromテーブル名別名;selectフィールド1エイリアス、フィールド2 asエイリアス、...fromテーブル名asエイリアス;(別名はフィールドの後ろに直接書くことができ、asを省略する)select別名.フィールド1、別名.フィールド2,...fromテーブル名別名;
eg:select name myname, age myage from t_student ;
select s.name, s.age from t_student s ; t_をあげるstudentテーブルにはsという別名があり、sを利用してテーブルのフィールドを参照します.
7>レコード数の計算
select count(フィールド)fromテーブル名;select count(*)fromテーブル名;eg:select count (age) from t_student ; select count ( * ) from t_student where score >= 60;
8>並べ替え
デフォルトは昇順
select * from t_student order by age ;
select * from t_student order by age desc ;//降順select*from t_student order by age asc ;//昇順(デフォルト)
複数のフィールドでselect*from t_をソートすることもできますstudent order by age asc, height desc ;まず年齢順(昇順)、年齢が等しい場合は身長順(降順)
9>コンストレイント
1>単純拘束
not null:指定フィールドの値はnull uniqueではありません:指定フィールドの値は一意である必要がありますdefault:指定フィールドのデフォルト値
eg:create table t_student (id integer, name text not null unique, age integer not null default 1) ;
2>プライマリ・キー制約
プライマリ・キー(Primary Key、PKと略称する)は、あるレコード、例えばt_を一意に識別するために使用される.studentは、1つのidフィールドをプライマリ・キーとして追加することができ、ヒトのアイデンティティ・プライマリ・キーに相当するフィールドは、1つのフィールドまたは複数のフィールドであってもよい.すなわち、1つのテーブルに複数のプライマリ・キーが存在してもよいが、好ましくは1つのみである
1)設計原則
プライマリ・キーは、ユーザーにとって意味のない永遠に更新しないでください.プライマリ・キーには動的な変化を含まないデータ・プライマリ・キーは、コンピュータによって自動的に生成されます.
プライマリ・キーを自動的に成長させるには(integerタイプでなければなりません)、autoincrementcreate table t_を追加する必要があります.student (id integer primary key autoincrement, name text, age integer) ;
3>外部キーコンストレイント
外部キー制約を使用して、テーブルとテーブルの関連付けを確立できます.通常、マルチプロパティのテーブルが別のテーブルのプライマリ・キーを参照します.外部キーの一般的な状況は、1つのテーブルのフィールドで、別のテーブルのプライマリキーフィールドを参照して新しい外部キーcreate table t_を作成することです.student (id integer primary key autoincrement, name text, age integer, class_id integer, constraint fk_student_class foreign key (class) references t_class (id));
constraint fk_student_class foreign key
(class) t_student class
references
t_class (id)
t_studentテーブルにはfk_というテーブルがありますt_student_class_id_t_class_idの外部キーという外部キーの役割はt_studentテーブルのclass_idフィールド参照t_classテーブルのidフィールド
外部キーコンストレイントにはカスケードという機能もあります
10>テーブル接続クエリー
1)ネストされたクエリー
SELECT id FROM t_food_type WHERE name = ' '; // ID
SELECT * From t_food WHERE food_type_id = (SELECT id FROM t_food_type WHERE name = ' ' );// ID
2)マルチテーブルクエリ
SELECT * from t_food, food_type_id; //
// ID ( )
SELECT * From t_food f,t_food_type tf WHERE f.food_type_id = tf.id
//
SELECT * From t_food f,t_food_type tf WHERE f.food_type_id = tf.id AND tf.name = ‘ ‘;
11>limit
limitを使用すると、クエリー結果の数を正確に制御できます.たとえば、毎回10個のデータselect*fromテーブル名limit数値1、数値2のみをクエリーします.
limitはよくページングクエリーに使用されます.例えば、各ページに5つのデータが固定表示されている場合は、このようにデータの1ページ目:limit 0,5 2ページ目:limit 5,5 3ページ目:limit 10,5...nページ目:limit 5*(n-1)、5
eg:
select * from t_student limit 4, 8 ;
: 4 , 8
select * from t_student limit 7 ;
select * from t_student limit 0, 7 ;
7
12>ファジイクエリ
1)LIKEを使用=
2)ファジイクエリ文字のフォーマット'%xxxx%'
3)NSString文を使用する場合,%はエスケープ文字である.だから私たちは%%を%の代わりに使います.つまり、この%は転義支払いではありません.
SELECT name,price FROM t_shop WHERE name LIKE'%李%'OR price LIKE'%2%';