1.數據庫的約束
約束:數據庫針對數據進行一系列的校驗,如果發現數據不符合約束中描述的校驗規則,就會插入失敗,主要是爲了提高數據的正確性。
約束類型:
1》NOT NULL - 指示某列不能存儲 NULL 值。
2》 UNIQUE - 保證某列的每行必須有唯一的值。
3》 DEFAULT - 規定沒有給列賦值時的默認值。
4》 PRIMARY KEY - NOT NULL 和 UNIQUE 的結合。確保某列(或兩個列多個列的結合)有唯一標 識,有助於更容易更快速地找到表中的一個特定的記錄。
保證主鍵不重複,可以藉助數據庫自動生成“auto_increment"。
建議直接把自增部分寫爲null,若表中沒有任何記錄,會從1開始,若存在,會從上一條記錄開始自動增加。
注意,如果把之前某個數據刪除了,再次插入,剛纔刪除掉的自增主鍵的值不會被重複利用。
5》 FOREIGN KEY - 保證一個表中的數據匹配另一個表中的值的參照完整性。
有時插入的數據並不合理,但也能插入成功。
加入外鍵後,這樣再往student 裏面插入數據時,MySQL就會自動檢查classId裏面的字段值是否再class中的id列出現過,如果沒有,就會插入失敗。
由於這個外鍵,直接刪除class是不行的,因爲他被其他表關聯着。
6》 CHECK - 保證列中的值符合指定的條件。對於MySQL數據庫,對CHECK子句進行分析,但是忽略 CHECK子句
2.表的設計
MySQL中是不存在數組類型的
1》一對一
2》一對多
3》多對多
這裏的studentId和courseId最好設置成外鍵。
3.進階CRUD操作
1》新增
查詢結果可作爲被插入的對象插入到表中(查詢得到的列的數目,順序,類型需要和被插入的表的列的數目,順序,類型一樣)
2》查詢
聚合查詢(一般需要搭配MySQL中的一些內置函數)
count:計算結果的行數
(是不算null的個數的)
聚合函數:
COUNT([DISTINCT] expr) 返回查詢到的數據的 數量
SUM([DISTINCT] expr) 返回查詢到的數據的 總和,不是數字沒有意義
AVG([DISTINCT] expr) 返回查詢到的數據的 平均值,不是數字沒有意義
MAX([DISTINCT] expr) 返回查詢到的數據的 最大值,不是數字沒有意義
MIN([DISTINCT] expr) 返回查詢到的數據的 最小值,不是數字沒有意義