安卓清理快取怎麼做(未完)
1.排序查詢:根據給出的列名進行排序
-
語法:order by 子句
order by 排序列名1 排序方式1,排序列名2,排序方式2;
排序方式:ASC --升序
DESC --降序
-
注意:有多個排序條件時,當前面的條件值一樣。則會判斷第二條件
2.聚合函式:將一列資料作為一個整體進行縱向的計算
-
count:計算個數,一般用於統計記錄
select count(列名) from student;
一般選擇非空的列,如主鍵
-
max:計算最大值
-
min:計算最小值
select min(列名) from student;
-
sum:計算和
select sum(列名) from student;
-
ave:計算平均值
select ave(列名) from student;
-
注意:聚合函式自動排除null值
-
解決方案:
-
選擇不包含null的列進行計算
-
ifnull(為null的列名,替換的值);
-
-
3.分組查詢:根據給出的列名進行分組查詢
-
語法:group by 分組列名;
根據性別查詢男生,女生各有多少人
select sex,count(id) from student group by sex;
-
注意: 分組之後查詢的欄位最好是分組欄位和聚合函式,不建議查詢其他沒有參與到分組的欄位。
-
where 和 having的區別
-
where在分組之前進行限定,如果不滿足條件則不參與分組;having在分組之後進行限定,如果不滿足結果,則不會被查詢出來。
-
where後不可以跟聚合函式,having可以進行聚合函式的判斷。
-
4.分頁查詢
-
語法:limit 開始的索引,每頁查詢的條數
每頁顯示3條學生資料
select * from student limit 0,3; -- 第一頁
select * from student limit 3,3; -- 第二頁
select * from student limit 6,3; -- 第三頁
-
公式:開始的索引 = (當前的頁碼-1)* 每頁顯示的條數
-
limit 是一個MySQL方言
二、約束
1.概念:
-
對錶中的資料經行限定,保證資料的正確行、有效性和完整性。
2.分類:
-
主鍵約束:primary key
-
新增約束:
建立表前:在型別後新增primary key;
建立表後:alter table 表名 modify 列名 型別 primary key;
-
刪除約束:alter table 表名 drop primary key; -- 注意在刪除約束前要先刪除相同的列。
-
注意:
-
含義:非空且唯一
-
一張表只能有 一個欄位為主鍵
-
是表中記錄的唯一標識
-
-
自動增長
-
概念:如果某一列是數值型別的,使用 auto_increment 可以完成值的自動增長。
-
新增自增:
建立表前:在需要新增自動增長的列的型別後新增 auto_increment關鍵字;
建立表後:alter table 表名 modify 列名 型別 auto_increment;
-
刪除自增:alter table 表名 modify 列名 型別;
-
-
-
非空約束:not null --某一列的值不能為空
-
新增約束:
建立表前:在型別後新增not null
建立表後:alter table student modify 列名 型別 not null;
-
刪除約束:altet table 表名 modify 列名 型別;
-
-
唯一約束:unique --某一列的值不能重複
-
刪除唯一約束:alter tabale studen drop index 被約束的列名;
-
新增約束:
建立表前:在型別後新增unique
建立表後:alter table 表名 modify 列名 型別 unique;
-
注意在建立表之後新增唯一約束要先刪除表中重複的列,否則不能新增成功。
-
-
外來鍵約束:foreign key
-
含義:讓表與表之間產生關係,從而保證資料的正確性。
-
新增約束:
建立表之前:
create table 表名(
.....
外來鍵列名 型別,
[constraint 外來鍵名稱] foreign key (外來鍵列名) references 主鍵表名(主鍵列名);
);
建立表後:alter table 表名 add constraint 外來鍵名稱 foreign key (外來鍵列名) references 主鍵表名(主鍵列名);
-
刪除約束
alter table 表名 drop foreign key 外來鍵名稱;
-
注意:
-
建立外來鍵表之前,先建立主鍵表。
-
如果主鍵中引用了外來鍵列,那麼在刪除主鍵列時要先刪除外來鍵列。
-
-
級聯操作
-
新增級聯操作
alter table 表名 add constraint 外來鍵名稱 foreign key (外來鍵列名) references 主鍵表名(主鍵列名) on update cascade;
-
分類:
-
級聯更新:on update cascade --外來鍵表中列的資料更新,主鍵表中引用的列資料也會更新
-
級聯刪除:on delete cascade --外來鍵表中刪除列的資料,主鍵表中引用列的所有資料都會被刪除,謹慎使用、。
-
-
-
三、多表之間的關係
1.一對一(瞭解)
-
如:人和身份證
-
分析:一個人只能有一張身份證,一張身份證只能對應一個人。
2.一對多
-
如:教師和學生
-
一個老師可以教多個學生,多個學生可以上一個老師的課。
3.多對多
-
如:學生和課程
-
分析:一個學生可以選修多門課程,一門課程可以被多個學生選擇。
4.實現關係
-
一對多:在多的一方建立外來鍵,並指向一的一方的主鍵。
-
多對多:建立第三張表作為中間表,中間表至少包含兩個欄位,這兩個欄位作為第三張表的外來鍵,分別指向兩張表的主鍵。
-
一對一:在任意一方新增唯一約束的外來鍵指向另一方的主鍵。
四、正規化
1.概念:設計資料庫時,需要遵循的一些規範;要遵循後面的正規化要求,必須先遵循前面的所有正規化要求。
2.分類
-
第一正規化(1NF):每一列都是不可分割的原子資料項
-
第二正規化(2NF):在第一正規化的基礎上,非碼屬性必須完全依賴於碼(在1NF基礎上消除主屬性對碼的部分函式依賴)。
-
第三正規化(3NF):在2NF基礎上,任何非屬性不依賴與其他非主屬性(在2NF基礎上消除傳遞依賴)。
3.相關概念:
-
函式依賴:A-->B,如果通過A屬性(屬性組)的值,可以確定唯一B屬性的值,則稱B依賴於A。
如:學號--->學生姓名 (學號+ 課程名)--->分數
-
完全函式依賴:A--->B,如果A是一個屬性組,則B屬性值的確定需要依賴於A屬性組中所有的屬性值。
如:(學號+課程名)--->學生成績
-
部分函式依賴:A--->B,如果A是一個屬性組,則B屬性值的確定只需要依賴於A屬性組中某一些值即可。
如:(學號+課程名)---> 學生姓名
-
傳遞函式依賴:A---B,B--->C,如果通過A屬性(屬性組)的值,可以確定唯一B屬性的值,在通過B屬性(屬性組)的值可以確定唯一C屬性的值,則稱C傳遞函式依賴與A。
如:學號---->系名,系名--->系主任
-
碼:如果在一張表中,一個屬性或屬性組被其他所有屬性所完全依賴,則稱這個屬性(屬性組)為該表的碼
如:學生表中(學號)
-
主屬性:碼屬性組中的所有屬性
-
非主屬性:除碼屬性組的所有屬性
五、資料庫的備份與還原
1.命令列:
語法:備份:mysql -uroot -proot 資料庫名 > 儲存路徑
還原:1.登入資料庫
2.建立資料庫(與還原的資料庫名相同)
3.使用資料庫