資料儲存:關係型資料管理系統1
一、幾個定義注意點
二、SQL操作語句備忘錄
三、補充SQL約束
(本文是中科院陳世敏老師課程學習筆記)
-----------------------------------------一、幾個定義注意點
1.Scheme 對錶格每一列的型別宣告,只需定義一次
eg:新建表格定義scheme
create table Student (
ID integer,
Name varchar(20),
GPA float
);
2.Primary Key 可以包含多個屬性,即可以是一個組合附補充1-SQL約束
eg.定義TakeCourse以(Course ID,Student ID)為主鍵:
primary key (CourseID,StudentID),
3.Foreign Key引用其他表格,建立聯絡,跟指標作用類似,所以不能指向空
eg.TakeCourse引用CourseID
foreign key(CourseID) reference Course(ID)
二、SQL操作語句備忘錄
快記:操作型別 + 表格 + 操作具體資訊
1.插入 王小二同學入學資訊
insert into Student Values(12345,‘王小一’,1994/1/1,M,‘電腦科學’,2016);
2.更新 王小二同學入學時候名字被錯打為‘王小一’,要求更改
update Student set Name='王小二' where ID = 12345;
3.刪除 王小二同學退學創業 and 王小二同學帶領全體計算機科學系同學創業退學
delete from Student where ID=12345;
delete from Student where Major=''電腦科學";
4.關係運算一 選擇selection 類似過濾
select * from Student where Major = '電腦科學';
where 後面條件可以用and or組合
5.關係運算二 投影projection 類似維度切片
select colum1 ,colum2 from table;
投影+選擇
select colum1 ,colum2 from table where Major =‘電腦科學’;
6.關係運算三 連線join
equi-join等值連線,最簡單的連線方式
select Student.Name.Course.Name from Student ->選出來輸出的屬性
from Student,Course,TakeCourse ->使用的多個表
where TakeCourse.CourseID = Course.ID ->連線條件1
and TakeCourse.StudentID = Student.ID; ->連線條件2
7.簡單統計一 分組統計 group by
select Major ,Count(*) ->輸出 Count(*)統計函式
from Student ->表格
where Year >= 2013 and Year <= 2014 ->條件
group by Major; ->先執行分組操作,輸出時候在組內執行Count(*)統計組內所有個數
SQL定義的統計函式 count.sum.avg.max.min
8.簡單統計二 having在group by上選擇
select Major ,Count(*) as cnt ->輸出
from Student ->表格
where Year >= 2013 and Year <= 2014 ->條件
group by Major ->分組與操依據屬性
having cnt>=2; ->count執行完給輸出命名cnt
9.簡單統計三 Order by排序
select Major ,Count(*) as cnt ->輸出
from Student ->表格
where Year >= 2013 and Year <= 2014 ->條件
group by Major ->分組與操依據屬性
order by cnt desc; ->desc(descending減少) asc(ascending增加)
補充附錄:
1.SQL約束
(1)主鍵約束(primary key constraint) 唯一、不能為空
(2)唯一性約束(unique constraint 不能有重複值
(3)外來鍵約束(foreign key constraint) 與另外一張表資料型別要一致,而且必須先定義主表,再定義從表。即:必須先存在這個人, 你才能打電話找他。
(4)檢查約束(check constraint) 值需要滿足一定範圍或要求。
(5)還有不為空約束、預設約束,看名字就知道作用,所有約束都是為為了"規範"表格。
這裡有詳解:http://www.runoob.com/sql/sql-constraints.html