1. 程式人生 > >資料儲存:關係型資料管理系統1

資料儲存:關係型資料管理系統1

關係型資料管理系統1:SQL概念與操作目錄

一、幾個定義注意點

二、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