CREATE TABLE salary (
salaryId INT IDENTITY(1,1), -- 錯誤:MySQL 不支持 IDENTITY
employeeId CHAR(100),
employeeName CHAR(100),
year CHAR(100),
month CHAR(100),
basicWage FLOAT,
overtimeWage FLOAT,
trafficWage FLOAT,
totalWage FLOAT,
kaoqinReduce FLOAT,
secureReduce FLOAT,
taxReduce FLOAT,
totalReduce FLOAT,
realWage FLOAT,
editTime CHAR(100),
memo CHAR(100)
);
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTITY(1,1)' at line 2
IDENTITY(1,1) 是 SQL Server 的自增語法,MySQL 使用 AUTO_INCREMENT 關鍵字實現自增主鍵。
CREATE TABLE salary (
salaryId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -- 正確語法
employeeId CHAR(100),
employeeName CHAR(100),
year CHAR(100),
month CHAR(100),
basicWage FLOAT,
overtimeWage FLOAT,
trafficWage FLOAT,
totalWage FLOAT,
kaoqinReduce FLOAT,
secureReduce FLOAT,
taxReduce FLOAT,
totalReduce FLOAT,
realWage FLOAT,
editTime CHAR(100),
memo CHAR(100)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
| 特性 | SQL Server | MySQL |
|---|---|---|
| 自增關鍵字 | IDENTITY(種子,增量) | AUTO_INCREMENT |
| 起始值設置 | IDENTITY(100,1) | ALTER TABLE t AUTO_INCREMENT=100 |
| 增量設置 | IDENTITY(1,2) | 不支持(固定為 1) |
| 主鍵聲明 | 通常分開聲明 | 常合併:INT AUTO_INCREMENT PRIMARY KEY |
CHAR(100) 固定長度浪費空間 → 改用 VARCHAR(100)。FLOAT 存在精度問題 → 金額字段用 DECIMAL(10,2)。year/month 用 CHAR 存儲 → 改用 SMALLINT 或 DATE 類型。employeeId、year、month)添加索引。utf8mb4 支持完整 Unicode(含 Emoji)。InnoDB 支持事務與外鍵。CREATE TABLE salary (
salary_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '薪資記錄ID',
employee_id VARCHAR(50) NOT NULL COMMENT '員工工號',
employee_name VARCHAR(100) NOT NULL COMMENT '員工姓名',
salary_year SMALLINT NOT NULL COMMENT '年份',
salary_month TINYINT NOT NULL COMMENT '月份(1-12)',
basic_wage DECIMAL(10,2) DEFAULT 0.00 COMMENT '基本工資',
overtime_wage DECIMAL(10,2) DEFAULT 0.00 COMMENT '加班工資',
traffic_wage DECIMAL(10,2) DEFAULT 0.00 COMMENT '交通補貼',
total_wage DECIMAL(10,2) DEFAULT 0.00 COMMENT '應發總額',
kaoqin_reduce DECIMAL(10,2) DEFAULT 0.00 COMMENT '考勤扣款',
secure_reduce DECIMAL(10,2) DEFAULT 0.00 COMMENT '社保扣款',
tax_reduce DECIMAL(10,2) DEFAULT 0.00 COMMENT '稅收扣款',
total_reduce DECIMAL(10,2) DEFAULT 0.00 COMMENT '扣款總額',
real_wage DECIMAL(10,2) DEFAULT 0.00 COMMENT '實發工資',
edit_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '編輯時間',
memo VARCHAR(500) DEFAULT '' COMMENT '備註',
INDEX idx_emp_date (employee_id, salary_year, salary_month)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='員工薪資表';
MySQL 不支持 IDENTITY,必須使用 AUTO_INCREMENT 實現自增主鍵。同時建議優化字段類型、添加索引與註釋,構建規範、高效的表結構。