| 類別 | 運算子 | 說明 |
|---|---|---|
| 算術 | + | 加法 |
| - | 減法 | |
| * | 乘法 | |
| / | 除法 | |
| % | 取模 (餘數) | |
| 賦值 | = | 標量賦值 (SET @x = 1) |
| 比較 | = | 等於 |
| > | 大於 | |
| < | 小於 | |
| <> / != | 不等於 | |
| >= | 大於等於 | |
| <= | 小於等於 | |
| 邏輯 | AND | 全真才真 |
| OR | 一真即真 | |
| NOT | 取反 (最高優先級) |
USE MySchool;
SELECT * FROM Student;
-- 全欄位 (含身分欄需排除) INSERT INTO Student (StudentNo, LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email) VALUES (23214, '5634', N'淚灑星辰', 0, 2, '5434', N'北京市', '2015-10-31 09:29:59', 'lsfjkl'); -- 部分欄位 (其餘需允許 NULL 或有 DEFAULT) INSERT INTO Student (StudentName, Gender) VALUES (N'新生', 1); -- 使用 DEFAULT 關鍵字 INSERT INTO Student (StudentName, Gender, GradeId) VALUES (N'預設年級', 1, DEFAULT);
SELECT * INTO StudentBak FROM Student — 建新表並複製 (不可指定目標表)。INSERT INTO Student SELECT * FROM StudentBak — 追加到現有表 (需欄位相容,身分欄需列出明確欄位)。INSERT INTO Student (StudentName, Gender) VALUES (N'A',0), (N'B',1), (N'C',0); — 多值列 (SQL 2008+)。UPDATE Student SET StudentNo = 1, StudentName = N'淚灑星辰' WHERE ID = '192ABC'; -- 必須加 WHERE,否則全表更新
注意:WHERE ID = NULL 永遠為 UNKNOWN,需用 WHERE ID IS NULL。
DELETE FROM Student WHERE ID = '192ABC'; -- 記錄逐列日誌、觸發 Trigger、身分值不重置 TRUNCATE TABLE Student; -- 最小記錄、不觸發 Trigger、身分值重置、不可有 FK 參考
Android 使用 android.database.sqlite.SQLiteDatabase,核心方法:
SQLiteOpenHelper helper = new MyDbHelper(context); SQLiteDatabase db = helper.getWritableDatabase(); // 讀寫 // SQLiteDatabase db = helper.getReadableDatabase(); // 唯讀
db.execSQL("INSERT INTO person (name, number) VALUES (?, ?)", new Object[]{name, number});
db.execSQL("DELETE FROM person WHERE name = ?", new Object[]{name});
db.execSQL("UPDATE person SET number = ? WHERE name = ?", new Object[]{newNumber, name});
Cursor cursor = db.rawQuery("SELECT * FROM person WHERE name = ?", new String[]{name});
boolean hasResult = cursor.moveToNext();
if (hasResult) {
String name = cursor.getString(cursor.getColumnIndex("name"));
int number = cursor.getInt(cursor.getColumnIndex("number"));
}
cursor.close();
db.close();
| 特性 | SQL Server (T-SQL) | Android SQLite |
|---|---|---|
| 自動遞增 | IDENTITY(1,1) | INTEGER PRIMARY KEY AUTOINCREMENT |
| 日期時間 | DATETIME, DATETIME2 | TEXT (ISO8601) / INTEGER (Unix epoch) |
| 字串連接 | + | || |
| TOP/LIMIT | TOP (10) / OFFSET/FETCH | LIMIT 10 |
| ISNULL/COALESCE | 支援 | IFNULL() / COALESCE() |
DML 核心 (SELECT/INSERT/UPDATE/DELETE) 跨平台一致,差異在 DDL 型別、函數、分頁語法。Android 開發務必使用參數化 execSQL/rawQuery,切勿字串拼接。資料庫輔助類 (SQLiteOpenHelper) 負責版本升級腳本 (onUpgrade),保持結構演進可控。