什麼是SQL
在關聯式資料庫中,用來定義表格、搜尋/新增/修改/刪除資料,以及控制權限等的標準語言。由ISO/IEC制定為標準。包括SELECT、INSERT、UPDATE、DELETE、CREATE TABLE、GRANT等敘述。
日文名稱: SQL
「SQL」出現在3領域的15道練習題中(資料庫基礎, 資訊安全基礎, LSI設計流程與EDA等)。
這個名詞所屬的領域: 資料庫基礎
在關聯式資料庫中,用來定義表格、搜尋/新增/修改/刪除資料,以及控制權限等的標準語言。由ISO/IEC制定為標準。包括SELECT、INSERT、UPDATE、DELETE、CREATE TABLE、GRANT等敘述。
日文名稱: SQL
「SQL」出現在3領域的15道練習題中(資料庫基礎, 資訊安全基礎, LSI設計流程與EDA等)。
這個名詞所屬的領域: 資料庫基礎
SQL敘述依作用大致分為3類。資料定義語言(DDL)如CREATE、ALTER、DROP,用來定義表格、檢視表、索引等結構。資料操作語言(DML)如SELECT、INSERT、UPDATE、DELETE,用來處理表格中的資料。資料控制語言(DCL)如GRANT與REVOKE,用來控制權限。確認交易的COMMIT與取消交易的ROLLBACK,有時歸入DCL,有時另外分為交易控制敘述。
SELECT敘述以 SELECT 欄位 FROM 表格 WHERE 條件 GROUP BY 欄位 HAVING 條件 ORDER BY 欄位 的方式排列子句。與書寫順序不同,把處理順序想成FROM(決定並連結表格)、WHERE(選出資料列)、GROUP BY(分組)、HAVING(選出群組)、SELECT(取出欄位並計算聚合函數)、ORDER BY(排序),會比較容易理解。這就是WHERE中不能寫聚合函數、群組的條件要寫在HAVING的原因。
SQL是寫出想要什麼結果的宣告式語言,取得結果的步驟由DBMS的最佳化器決定。表示值未知的NULL需要特別注意。與NULL的比較既不為真也不為假(未知),因此要用IS NULL而不是 = NULL 來檢查。SUM、AVG等聚合函數會忽略NULL;COUNT(*)計算資料列數,COUNT(欄位)則計算該欄位不是NULL的資料列數。
正確答案:B. CREATE TABLE 部門 (部門編號 INTEGER PRIMARY KEY, 部門名稱 CHAR(10))
DDL(Data Definition Language)是定義表格、檢視表、索引等資料庫結構的敘述,包括CREATE、ALTER、DROP。DML(Data Manipulation Language)是處理表格中資料的敘述,包括SELECT、INSERT、UPDATE、DELETE。DCL(Data Control Language)是控制權限等的敘述,包括授予使用者權限的GRANT與撤銷權限的REVOKE。確認交易的COMMIT與取消交易的ROLLBACK,有時歸入DCL,有時另外分為交易控制敘述。選項中,建立表格的CREATE TABLE屬於DDL。
正確答案:A. 員工表格的所有資料列被刪除,留下空的表格
DELETE是從表格中刪除資料列的DML敘述。以WHERE子句加上條件時,只刪除符合條件的資料列;省略WHERE子句時,所有資料列都會被刪除。即使DELETE刪除了所有資料列,表格的定義(欄位名稱、型別與限制)仍然保留,之後仍可用INSERT新增資料列。連同定義刪除表格本身的是DDL的 DROP TABLE 員工。UPDATE也一樣,忘了加WHERE子句就會改寫所有資料列,因此執行前確認條件很重要。若在交易之中,可在COMMIT之前以ROLLBACK取消。
WHERE子句是分組前針對每一筆資料列的條件,不能寫聚合函數。HAVING子句是針對以GROUP BY分組後之群組的條件,可以像 HAVING SUM(金額) >= 1000 這樣使用聚合函數。
寫成 WHERE 欄位 IS NULL。WHERE 欄位 = NULL 因為與NULL的比較不會為真,一筆都選不出來。不是NULL的資料列則以IS NOT NULL選出。
SQL的處理可依下列順序思考:以WHERE從FROM的表格中選出資料列,以GROUP BY分組,再以HAVING選出群組。
想從員工表格(員工編號, 部門, 薪資)中,求出各部門平均薪資在300以上的部門及其平均薪資。正確的SQL敘述是下列何…SQL標準規格依可防止之現象由少到多的順序,定義了READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE共4個隔離等級。
在SQL標準規格所定義的隔離等級中,關於READ COMMITTED下可能發生之現象的組合,下列何者正確?HTML是網頁的描述語言,SQL是資料庫的查詢語言,都無法描述電路。
RTL設計主要使用的硬體描述語言為下列何者?SQL隱碼攻擊是利用網頁應用程式把使用者的輸入直接當作字串串接起來,組成對資料庫的命令(SQL敘述)的攻擊。
在某網頁應用程式的登入畫面中,只要在密碼欄位輸入 ' OR '1'='1 之類的字串,不知道密碼也能登入。這種攻擊稱為…使用參數化查詢時,先把值的部分以符號(預留位置)表示的SQL敘述,例如「SELECT … WHERE id = ?
作為SQL隱碼攻擊的對策,使用預留位置的參數化查詢(prepared statement),被視為比去除輸入中危險字元…交易 隔離等級 主鍵 SQL隱碼攻擊 關聯式資料庫 檢視表 索引 RTL(暫存器傳輸層級) 硬體描述語言(Hardware description language, HDL) Verilog