[1031 - 資料庫管理概論] Chapter 6 Introduction to SQL

Course Point
  1. 1970 E.F. Codd 創造出最早的關聯式資料庫「System R」。
    1949-1978 IBM 創造出最早的商用關聯式資料庫。
    1979 Oracle創造出最早的關聯式資料庫產品「Oracle]。
  2. SQL command
    (1) Data definition language (DDL): creating, altering and dropping tables and establish constrants. It’'s by DBAs.
    (2) Data manipulation language (DML): query a database, updating, inserting, modifing and query data. It’s by Users.
    (3) Data control language (DCL): control a database administering privileges and committing data. (管理Users對於資料存取之權限及所有Transaction 交易(DB做的動作)是否要記錄)。
  3. CHAR 為固定長度,VARCHAR 為變動長度。
  4. DB、Table會用底線。
  5. 語法
    1. CREAT TABLE TableName
      ( ColumnName Type(Length) NOT NULL ON UPDATE CASCADE ON DELETE CASECADE
      CHECK(ColumnName IN (‘值之範圍’)), //檢查ColumnName是否為在範圍內的值
      …);
    2. CONSTRANT CanstrantName(例如:table1_PK) PRIMARY KEY
      ( (ColumnName),SET DEFAULT);
    ON UPDATE/DELETE RESTRICT : 無FK才能動作or CASCADE : 兩邊同步 or SET NULLor SET DEFAULT。
    ALTER[COLUMN] ColumnName SET DEFAULT DefaultValue
    ADD[COLUMN] TableConstrant
    INSERT INTO TableName (‘ColumnName1’, ‘ColumnName2’) VALUES (‘value1’, ‘value2’);
    DELETE FROM TableName WHERE ColumnName = ‘…’;
    UPDATE TableName SET ColumnName = ‘…’ WHERE ColumnName = ‘…’;
    SELLECT DISTINCT ColumnName1, ColumnName2
    FROM TableName WHERE ColumnName2 < 數值/ ColumnName2 = ‘…’;
    DISTINCT : 相同的紀錄不會重複顯示。
    TableName/ColumnName AS Alias : 用alias 代替DDL定義的名字,可以在一個SELECT中查詢多個Table時用,可以用Alias.ColumnName,來判斷是哪一個Table的Column。
    SELECT COUNT(*) FROM TableName WHERE ColumnName = ‘…’ : 算符合Condition的Row有幾筆。
    SELECT COUNT(ColumnName) FROM TableName WHERE ColumnName = ‘…’ : 此Column有幾筆紀錄。
    AVG(ColumnName) : 取某一Column的平均值。
    條件判斷常用:
    (1)Wildcards(萬用字元)
    ①用LIKE代替’='
    ②% : 允許one or more characters 隨意。
    ③ _ : 允許one character 隨意。
    (2) IS (NOT) NULL : 選出(非)空值的欄位。
    (3) 布林運算子:優先順序為 NOT>AND>OR
    WHERE ColumnName (NOT) BETWEEN N1 AND N2 : Column值介於[N1,N2] (或是< N1 or >N2)。
    WHERE ColumnName (NOT) IN (‘A’,‘B’);(該ColumnName的值與’A’相同,或與’B’相同)。
    ORDER BY ColumnName1, ColumnName2, ColumnName3: 接於WHERE 最後一段,照順序印出。
    GROUP BY ColumnName1, ColumnName2: 依ColumnName1以及ColumnName2分類成一組組,印出每組有幾筆ColumnName1與ColumnName2的值是相同的。//如果分組條件多於一個,多的一定要先COUNT過
> HAVING COUNT (ColumnName) : 計算Group有幾筆紀錄。
 3. SELECT的時候也可以把得到的值做運算:

留言