首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

MySQL 基礎入門:資料類型、DDL/DML/DCL、建表約束、增刪改查實戰

     編輯:PHP 綜合知識

前言

MySQL 是 PHP 開發最常搭配的關聯式資料庫。本文從資料類型、SQL 分類、建表約束到 CRUD 操作,提供完整入門指南與常用語法速查。

1. 常用資料類型

分類類型說明
數值TINYINT1 位元組,-128~127 / 0~255 (UNSIGNED)
SMALLINT2 位元組
MEDIUMINT3 位元組
INT / INTEGER4 位元組,標準整數
BIGINT8 位元組,大整數
FLOAT4 位元組,單精度浮點數
DOUBLE8 位元組,雙精度浮點數
DECIMAL(m,d)精確定點數,字串儲存,適合金額
字串CHAR(n)定長 0~255 字元,右側填空格
VARCHAR(n)變長 0~65535 字元,需 1-2 位元組長度前綴
TEXT / BLOB長文本/二進位,分 TINY/MEDIUM/LONG 四級
ENUM / SET列舉/集合,內部存數字索引
日期時間DATEYYYY-MM-DD
TIMEHH:MM:SS
DATETIMEYYYY-MM-DD HH:MM:SS(無時區)
TIMESTAMP1970-2038,自動 UTC 轉換
YEARYYYY

屬性:UNSIGNED(無符號)、ZEROFILL(前導零)、AUTO_INCREMENT(自增,需配合主鍵/唯一鍵)、NOT NULL、DEFAULT。

2. SQL 四大語言分類

分類全稱指令說明
DDLData Definition LanguageCREATE, ALTER, DROP, TRUNCATE定義資料庫物件結構
DMLData Manipulation LanguageSELECT, INSERT, UPDATE, DELETE操作資料內容
DCLData Control LanguageGRANT, REVOKE權限控制
TCLTransaction Control LanguageCOMMIT, ROLLBACK, SAVEPOINT交易控制

3. 資料庫與資料表操作

-- 建立/刪除/選擇資料庫
CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
DROP DATABASE IF EXISTS db_name;
USE db_name;

-- 建立資料表
CREATE TABLE users (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL,
    password_hash CHAR(60) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 查看結構
DESC users;
SHOW CREATE TABLE users;

-- 修改結構
ALTER TABLE users ADD COLUMN avatar VARCHAR(255) DEFAULT '';
ALTER TABLE users MODIFY COLUMN email VARCHAR(150) NOT NULL;
ALTER TABLE users CHANGE COLUMN password_hash password CHAR(60) NOT NULL;
ALTER TABLE users DROP COLUMN avatar;
ALTER TABLE users RENAME TO members;

-- 刪除資料表
DROP TABLE IF EXISTS old_table;

4. 完整性約束

  • PRIMARY KEY:唯一識別每列,隱含 NOT NULL,一張表只能有一個。
  • UNIQUE:值唯一,允許 NULL(多個 NULL 不視為重複)。
  • NOT NULL:禁止 NULL。
  • FOREIGN KEY:參考完整性,需 InnoDB 引擎。
  • CHECK:MySQL 8.0.16+ 支援,如 CHECK (age >= 0)。
  • DEFAULT:預設值。

5. DML 增刪改查

INSERT

INSERT INTO users (username, email, password_hash) VALUES ('alice', 'alice@example.com', '$2y$10$...');
INSERT INTO users (username, email, password_hash) VALUES
    ('bob', 'bob@example.com', '$2y$10$...'),
    ('carol', 'carol@example.com', '$2y$10$...');

SELECT

SELECT id, username, email FROM users WHERE id > 10 ORDER BY created_at DESC LIMIT 5;
SELECT u.*, p.title FROM users u JOIN posts p ON u.id = p.user_id WHERE u.id = 1;

UPDATE

UPDATE users SET email = 'new@example.com' WHERE id = 1;
-- 不加 WHERE 會更新全表!

DELETE

DELETE FROM users WHERE id = 1;
-- 不加 WHERE 會清空全表!TRUNCATE TABLE users 更快且重置 AUTO_INCREMENT。

6. 連線指令

mysql -h host -u user -p
# 交互模式下以 ; 結束語句,\c 取消當前輸入

結語

掌握 MySQL 基礎語法與資料類型選擇,是後端開發的核心技能。建議實作練習:設計一個部落格系統(users、posts、comments、categories),練習建表、關聯查詢、交易控制,再進階學習索引優化、鎖機制、主從複制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved