[1031 - 資料庫管理概論] Chapter 6 Introduction to SQL
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
Course Point
- 1970 E.F. Codd 創造出最早的關聯式資料庫「System R」。1949-1978 IBM 創造出最早的商用關聯式資料庫。1979 Oracle創造出最早的關聯式資料庫產品「Oracle]。
- 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做的動作)是否要記錄)。 - CHAR 為固定長度,VARCHAR 為變動長度。
- DB、Table會用底線。
- 語法
- CREAT TABLE TableName
( ColumnName Type(Length) NOT NULL ON UPDATE CASCADE ON DELETE CASECADE
CHECK(ColumnName IN (‘值之範圍’)), //檢查ColumnName是否為在範圍內的值
…); - 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過
- CREAT TABLE TableName
> HAVING COUNT (ColumnName) : 計算Group有幾筆紀錄。
3. SELECT的時候也可以把得到的值做運算:
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
留言
張貼留言