首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

全面掌握 SQL 語法(二)

     編輯:關於SqlServer

BETWEEN...AND 運算子

判斷某數值是否介於特定範圍內,僅能用於 SQL 陳述式中。

expr [NOT] BETWEEN value1 AND value2
  • expr:指定要計算的欄位與運算式組合
  • value1, value2:指定的數值範圍

範例: 查詢年齡介於 25-30 歲的員工:

SELECT 姓名, 年齡 FROM 員工表 WHERE 年齡 BETWEEN 25 AND 30;

LIKE 運算子

用於字串模式比對,篩選符合特定模式的記錄。

expression LIKE "pattern"
  • expression:用於 WHERE 子句的 SQL 運算式
  • pattern:比對用的字串模式

範例: 查詢姓「李」的員工:LIKE "李*"

LIKE 模式多種範例

模式說明可篩選範例不可篩選範例
"a*a"多字元"aa", "aBa", "aBBBa""aBC"
"*ab*"包含 ab"abc", "AABB", "Xab""aZb", "bac"
"a"*a"含特殊字元 *"a*a""aaa"
"a?a"單一字元"aaa", "a3a", "aBa""aBBBa"
"a#a"單一數字"a0a", "a1a", "a2a""aaa", "a10a"
"[a-z]"字元範圍"f", "p", "j""2", "&"
"[!a-z]"非指定字元範圍--
"[!0-9]"非數字"A", "a", "&", "~""0", "1", "9"
"a[!b-m]#"組合結構"An9", "az0", "a99""abc", "aj0"

SQL 數值函數

  • AVG:算術平均數 AVG(expr)
  • COUNT:記錄筆數統計 COUNT(expr)
  • FIRST / LAST:回傳欄位第一筆/最後一筆資料
  • MAX / MIN:最大/最小值
  • SUM:總和 SUM(expr)

範例: 計算身高超過 165 公分員工的平均身高:

SELECT AVG(身高) AS 平均身高 FROM 員工表 WHERE 身高 > 165;

多層 SQL 查詢 (子查詢)

在一個 SQL 陳述式中包含另一個查詢,形成巢狀結構。

comparison [ANY|ALL|SOME] (sqlstatement)
expression [NOT] IN (sqlstatement)
[NOT] EXISTS (sqlstatement)

範例: 查詢單價高於任何有折扣≥0.25 訂單商品的產品:

SELECT * FROM 產品表
WHERE 單價 > ANY (SELECT 單價 FROM 訂單表 WHERE 折扣 >= 0.25);

資料庫維護與 DDL

建立資料表 (CREATE TABLE)

CREATE TABLE table_name (
    column1 datatype [CONSTRAINT constraint_name PRIMARY KEY],
    column2 datatype,
    ...
)

範例: 建立含主鍵的員工表:

CREATE TABLE 員工表 (
    姓名 TEXT,
    部門 TEXT,
    員工編號 INTEGER CONSTRAINT 員工索引 PRIMARY KEY
)

建立索引 (CREATE INDEX)

CREATE [UNIQUE] INDEX index_name ON table_name (column [ASC|DESC], ...)
[WITH {PRIMARY|DISALLOWNULL|IGNORENULL}]

CONSTRAINT 條件子句

功能類似索引,亦可建立資料表關聯。

  • 單一欄位:CONSTRAINT name {PRIMARY KEY|UNIQUE|REFERENCES foreigntable[(foreignfield)]}
  • 多欄位:CONSTRAINT name {PRIMARY KEY(col1,...)|UNIQUE(col1,...)|FOREIGN KEY(col1,...)|REFERENCES foreigntable(col1,...)}

範例: 建立複合唯一索引:

CREATE TABLE 員工資料表 (
    姓名 TEXT,
    部門名稱 TEXT,
    生日 DATETIME,
    CONSTRAINT 員工限制 UNIQUE(姓名, 部門名稱, 生日)
)

刪除記錄 (DELETE)

DELETE [table.*] FROM tableexpression WHERE criteria

範例: 刪除姓名為「李名」的記錄:

DELETE * FROM 員工表 WHERE 姓名 = '李名';

SELECT...INTO 建立新表

SELECT field1, field2 INTO newtable [IN externaldb] FROM source

範例: 建立新進人員訓練名冊:

SELECT 姓名, 部門 INTO 訓練名冊 FROM 員工表 WHERE 職稱 = '新進人員';

JOIN 運算

  • INNER JOIN:兩表共同欄位值相等時結合
  • UNION:合併多個查詢結果

UNION 範例:

TABLE 新客戶表 UNION ALL
SELECT * FROM 顧客表 WHERE 訂單數量 > 1000;

ALTER TABLE 修改結構

ALTER TABLE table {ADD COLUMN column datatype | DROP COLUMN column}

範例: 新增/刪除「薪水」欄位:

ALTER TABLE 員工表 ADD COLUMN 薪水 CURRENCY;
ALTER TABLE 員工表 DROP COLUMN 薪水;

DROP 刪除物件

DROP {TABLE table | INDEX index ON table}

INSERT INTO 新增資料

  • 單筆:INSERT INTO table (col1, col2) VALUES (val1, val2)
  • 多筆 (子查詢):INSERT INTO target SELECT ... FROM source

UPDATE 修改資料

UPDATE table SET column = new_value WHERE criteria

範例: 美國地區訂單數量增 1.1 倍、運費增 1.03 倍:

UPDATE 訂單表 SET 訂單數量 = 訂單數量 * 1.1, 運費 = 運費 * 1.03
WHERE 運達地點 = '美國';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved