需求~要列出符合【某個條件】的【某項資料】,應該如何寫出SQL指令呢? 第一步 : 找齊資料表。 【某項資料】是在哪個資料表? 以及【某個條件】中的判斷條件是在哪個資料表? 所以這個步驟 ,就可以把資料表都找齊了。 第二步 : 篩選出來【正確的資料表】。 但是許多情況,【某項資料】會存在許多資料表中,這個時候就要判斷,哪個資料表才是正確的。 方法就是把第一步找到的資料表,畫出關聯性,【某項資料】一定會存在具有關聯性的資料表中。所以就可以把不在關聯的資料表刪除。 第三步 : 套用再調整。 套用 SELECT 【某項資料】 FROM 【正確的資料表】 WHERE 【某個條件】AND 主鍵外鍵的關聯 其他部分 (如GROUP BY、HAVING、ORDER BY等等) 調整 看看那些欄位需要冠上 ~ 資料表.資料欄,例如 學生資料表.學生姓名 例如~ 要列出開課編號為o0001的「開課編號」、「學生姓名」。 由第一步,相關的欄位是 「 開課編號 」 、「學生姓名」。 「學生姓名」存在於學生資料庫, 「 開課編號 」存在於 選課資料表、 開課資料表、 時間資料表。 由第二 步,學生資料庫與 選課資料表,透過 學生編…
資料庫的好處有哪些? (1) 達成資料的一致性 (Data Consistency) 例如如果學號A0001的學生,姓名從「王曉明」改為「王大明」,則所有地方抓出學號A0001的學生,姓名都會是「王大明」。 (2) 達成資料的共享性 (Data Sharing) 指同一份資料可以共享給多個人員或是應用程式。 (3) 達成資料的獨立性 (Data Independence) 資料與應用程式是分開的,修改應用程式並不會影響資料。 (4) 達成資料的完整性 (Data Integrity) 例如當資料不能刪除時,不會因為操作錯誤而引起錯誤。也就是資料會因為其間的關聯,而維持應該有的關係。 (5) 達成資料的安全性 (Data Security) 例如資料可以加密,或是可以分為不同權限等。 (6) 降低資料的重複性 (Redundancy) 不需要相同資料一再出現,只需要關聯即可。 (7) 避免紙張的浪費 (Paper Waste) 可以數位式儲存,不需要列印出來。
DML (Data Manipulation Language)的SQL commands有: (1) SELECT ~ retrieve data from the a database 語法: SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_na…
DDL (Data Definition Language) 的SQL commands有: (1)CREATE - to create objects in the database 建立資料庫(database) 語法: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name 更多參考: http://dev.mysql.com/doc/refman/5.0/en/create-database.html 例如: CREATE DATABASE mydatabase; 或是 CREATE DATABASE mydatabase CHARACTER SET big5 COLLATE big5_chinese_ci ; 或是 CREATE DATABASE mydatabase CHARACTER SET utf8 CO…
SQL Command有四大類型,各是DDL/DML/DCL/TCL。 DDL ( Data Definition Language ) CREATE - to create objects in the database ALTER - alters the structure of the database DROP - delete objects from the database TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed COMMENT - add comments to the data dictionary RENAME - rename an object DML ( Data Manipulation Language ) SELECT - retrieve data from the a database (也有說select是DRL: Data Retrieval Language) INSERT - insert data into a table …
Data (資料) --> Information (資訊) --> Knowledge (知識) --> Wisdom (智慧) 的關係如下圖: 要從 Data (資料)變成Information (資訊),至少需要先把Data (資料) 先結構化、系統化,然後再從結構化、系統化後的資料去查詢,而產生Information (資訊) 。 當人們去使用各種Information (資訊)進行分析,而讓人們瞭解問題的答案,就產生了Knowledge (知識) 。 當人們知道了問題的答案,思考過後進一步瞭解為什麼要這樣解決問題,就形成了Wisdom (智慧) 。 Data只是一堆symbols,人們可能透過這些symbols也能得到資訊,但是都只是片斷而非系統性的。 當Data變成Information之後,人們就得到了who、what、where、when之類的訊息。 這些Information經過分析的過程變成Knowledge,讓人們知道了how,如何去解決問題。 集合更多的Knowledge,讓人們知道了why,就形成了Wisdom (智慧)。 更多參考: http://www.systems-thinking.org…
RDBMS 是指Relational Database Management System,關聯式資料庫管理系統,它是一個以關聯模式為基礎的資料庫管理系統。資料庫管理系統 (DBMS)是許多程式的集合,讓使用者得以定義、建構,與處理資料庫。 資料庫系統(Database System)包括了資料庫(Database)、資料庫管理系統(DBMS),也可以再加上其他的開發工具,或是應用系統。但是資料庫(Database)與資料庫管理系統(DBMS),是資料庫系統(Database System)最核心的部分。 這裡我們必須再解釋,什麼是關聯模式(Relational Model)? 什麼是資料庫? 什麼是資料庫管理系統? 所謂資料庫( Databse ),就是指有組織的資料集合,當需要這些資料時,可以快速的從中取得。所以其實資料庫並不局限一定是數位的資料,只要符合以上定義,都可以說它是資料庫。 但是狹義的資料庫,是指以一定方式儲存在一起、能為多個使用者共享、具有儘可能小的冗餘度、與應用程式彼此獨立的資料集合,在這個定義下Word,Excel就不算是資料庫。 所謂關聯模式( Relational Model ),是基於謂詞邏輯和集合論的一種資料模型,在…
什麼是SQL? 有人說SQL是Structured Query Language的縮寫,也有人說SQL不應該是Structured Query Language的縮寫。 為什麼有人說SQL不應該是Structured Query Language的縮寫呢? 因為認為SQL不只有進行Query(查詢),它還有其他功能,所以怎麼會是「結構式查詢語言」呢? 但是在 Oracle的文件 中,確實也把SQL寫成 Structured Query Language。 在Wikipedia的 SQL說明 中,雖然也說SQL就是Structured Query Language,但是也於另外篇幅中點出 SQL定義的爭論 。 SQL原本是 Raymond F. Boyce與Donald D. Chamberlin,於1970年所開發出來的, 我們再從SQL的發明人 Raymond F. Boyce 的資料中,看到原本SQL是稱為~ S tructured E nglish Que ry L anguage,簡稱為SEQUEL,後來才改稱為SQL。 所以SQL是Structured Query Language的縮寫,是沒有問題的,只是它到底是不是如名所說的是Structur…