數據庫(MS)
關於獲取沙盒路徑
// 1. 獲取當前的沙盒路徑(Doucuments)
NSString * path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];// 這樣寫不會越界報錯,【0】若越界會報錯
關於排序
desc 倒序(MS)
asc 正序
對於sqlite的查詢語句可以用簡寫
//1.查詢所有年齡大於25的學生姓名和班級編號並且按照學號從大到小排列
// NSString * selectAge = @"select from s.stu_id where ";
// select s.stu_id, s.stu_age,s.stu_name,s.class_id from t_student s where s.stu_age>25 order by stu_age desc 查詢語句 t_student s將t_student簡寫為s
// 2.查詢所有年齡大於25的班級編號為1和2的學生姓名且按照學號從小到大排序
// select s.stu_name,s.stu_id,s.stu_age,s.class_id from t_student s where s.stu_age >25 and s.class_id in (1,2) order by s.stu_id
select s.stu_name,s.stu_id,s.stu_age,s.class_id from t_student s where s.stu_age >25 and s.class_id =1 or s.class_id=2 order by s.stu_id
// 子查詢3-5
// 3.查詢年齡大於平均值得人員信息
// select avg(s.stu_age)from t_student s
// select s.stu_id ,s.stu_age,s.stu_name from t_student s where stu_age > (select avg(stu_age) from t_student )
// select * from t_student where stu_age > (select avg(stu_age) from t_student )
// 4.查詢班級名稱為“班級1”的所有學員信息(注:查此時班級編號未知)
//select * from t_student where class_id =(select class_id from t_class where class_name ='班級1')
// 5.查詢除了班級名稱為“班級1”的所有學員信息(注意此時班級標號未知)
// select * from t_student where class_id !=(select class_id from t_class where class_name ='班級1')
// 表鏈接(重點中重點)
//兩個表的數據放在一行上需要拼接
// select stu.stu_name NAME,stu.stu_age AGE,cla.class_name ss
// from
// t_student stu,t_class cla // 關聯的表用逗號分隔
// where
// stu.class_id=cla.class_id // 關聯的信息,如果不寫,則數據會出現重復
// 2.查詢所有年齡大於25的學生和班級信息,包括(學號、姓名、班級編號、班級名稱)
// select stu.stu_id,stu.stu_age,cla.class_id,cla.class_name from t_student stu,t_class cla where stu.class_id=cla.class_id and stu.stu_age>25
// 3.查詢“班級1”和“班級2”學生和班級信息,包括(學號、姓名、班級編號、班級名稱)
// select stu.stu_id,stu.stu_name,cla.class_id,cla.class_name from t_student stu,t_class cla where stu.class_id = cla.class_id and cla.class_name in('班級1','班級2')
// 分組
// 4.統計每個班級的人數
// select count(*)from t_student t group by t.class_id 四個結果
// select count(*)from t_student t group by t.class_id,t.stu_id 先按照班級編號分組,再對結果按學生編號分組,因為4個班有各有4個學生,所以第一次分組,4個班級4個學生,然後再按照學生編號對這4各班級的學生分組,因為每個學生編號都不同,所以16個結果
// 1.統計每個班級最大年齡
// select max(s.stu_age ),class_id from t_student s group by s.class_id
// 2.統計每個班級所有年齡之和
// select sum(s.stu_age),class_id from t_student s group by s.class_id
// 3. 統計每個班級平均年齡
// select avg(s.stu_age),class_id from t_student s group by s.class_id
// 查詢平均年齡大於25的所有學生信息
// select * from t_student s where s.stu_age>(select avg(s.stu_age) from t_student s group by s.class_id)
// select * from t_student t group by t.class_id,t.stu_age having(avg(t.stu_age)>25)
// 條件:having(avg(t.stu_age)>25):having 分組特有的關鍵字表條件,平均分大於25的
// 分組1:t.class_id滿足平均分大於25的按班級編號分組
// 分組2:t.stu_age 再按年齡分組
// select後面跟*打印table符合分組條件的所有信息,後面跟具體那一列或者幾列就顯示哪幾列,中間用‘,’分隔
// 4.統計平均年齡大於25的班級信息和學生信息
// select * from t_student stu,t_class cla where stu.class_id = cla.class_id group by stu.stu_age having (avg(stu.stu_age)>25)
// select stu.stu_name,stu.stu_age,cla.class_name
// from
// t_student stu,t_class cla
//where
// stu.class_id = cla.class_id
// and cla.class_id in(
//
// select
// t.class_id
// from
// t_student t
// group by t.class_id
// having(avg(t.stu_age)>25)
// )
//
// // 當業務比較復雜,要用查詢出的數據做成的虛表,在用這個虛表當已經存在的表來判斷、鏈接分組等
// select A.stu_name from (
// select stu.stu_name,stu.stu_age,cla.class_name
// from
// t_student stu,t_class cla
// where
// stu.class_id = cla.class_id
// and cla.class_id in(
//
// select
// t.class_id
// from
// t_student t
// group by t.class_id
// having(avg(t.stu_age)>25)
// )
// )A