首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL 基礎指令大全:建庫、建表、增刪改查、結構變更一覽

     編輯:MySQL 資料庫相關知識

SQL 基礎指令大全:建庫、建表、增刪改查、結構變更一覽

關聯式資料庫核心操作皆透過 SQL 指令完成。本文整理 DDL(定義)、DML(操作)、DQL(查詢)三大類常用指令語法與範例,適用於 MySQL、SQL Server、PostgreSQL 等主流資料庫(細節語法略有差異)。

一、資料庫層級操作 (Database DDL)

操作語法範例
建立資料庫CREATE DATABASE <名稱>;CREATE DATABASE student;
切換資料庫USE <名稱>;USE student;
刪除資料庫DROP DATABASE <名稱>;DROP DATABASE student;
查看所有資料庫SHOW DATABASES; (MySQL) / \l (PG)

二、資料表結構操作 (Table DDL)

1. 建立資料表

CREATE TABLE <表名> (
    <欄位名> <資料型別> [<約束條件>],
    ...
);

-- 範例
CREATE TABLE stuInfo (
    stuId INT PRIMARY KEY,
    stuName VARCHAR(20) NOT NULL,
    stuGender CHAR(1) DEFAULT 'M',
    birthDate DATE
);

常用約束:PRIMARY KEY、NOT NULL、UNIQUE、DEFAULT、AUTO_INCREMENT (MySQL) / IDENTITY (SQL Server) / SERIAL (PG)、FOREIGN KEY。

2. 刪除資料表

DROP TABLE <表名>;
-- 範例
DROP TABLE stuInfo;

3. 修改資料表結構 (ALTER TABLE)

操作語法 (MySQL)範例
新增欄位ALTER TABLE <表> ADD <欄位> <型別>;ALTER TABLE stuInfo ADD stuEmail VARCHAR(50);
新增多欄位ALTER TABLE <表> ADD <欄位1> <型別>, ADD <欄位2> <型別>;ALTER TABLE stuInfo ADD stuPhone VARCHAR(20), ADD stuAddr VARCHAR(100);
修改欄位型別ALTER TABLE <表> MODIFY <欄位> <新型別>;ALTER TABLE stuInfo MODIFY stuGender INT;
修改欄位名稱ALTER TABLE <表> CHANGE <舊名> <新名> <型別>;ALTER TABLE stuInfo CHANGE stuName stuFullName VARCHAR(30);
刪除欄位ALTER TABLE <表> DROP <欄位>;ALTER TABLE stuInfo DROP stuGender;
新增主鍵ALTER TABLE <表> ADD PRIMARY KEY (<欄位>);
新增外鍵ALTER TABLE <表> ADD FOREIGN KEY (<欄位>) REFERENCES <父表>(<父欄位>);

4. 查看表結構與建表語句

-- MySQL
SHOW COLUMNS FROM stuInfo;
DESC stuInfo;
SHOW CREATE TABLE stuInfo;

-- SQL Server
EXEC sp_help 'stuInfo';

-- PostgreSQL
\d stuInfo

三、資料操作 (DML)

1. 插入資料 (INSERT)

-- 單筆
INSERT INTO <表> (<欄位清單>) VALUES (<值清單>);
INSERT INTO stuInfo (stuId, stuName) VALUES (1, 'Alice');

-- 多筆 (單語句)
INSERT INTO stuInfo (stuId, stuName) VALUES 
(2, 'Bob'), (3, 'Cathy');

-- 從另一張表複製資料
INSERT INTO students (stuName) 
SELECT stuName FROM stuInfo;

2. 刪除資料 (DELETE)

DELETE FROM <表> WHERE <條件>;
DELETE FROM stuInfo WHERE stuId = 4;

-- 刪除全部 (保留結構、自增計數器不歸零)
DELETE FROM stuInfo;

-- 截斷表 (釋放空間、重置自增、不可回滾、速度快)
TRUNCATE TABLE stuInfo;

3. 更新資料 (UPDATE)

UPDATE <表> SET <欄位> = <值> [, ...] WHERE <條件>;
UPDATE stuInfo SET stuName = 'Alice Updated' WHERE stuId = 1;

四、資料查詢 (DQL)

1. 基礎查詢

-- 全欄位
SELECT * FROM stuInfo;

-- 指定欄位
SELECT stuId, stuName FROM stuInfo;

-- 別名
SELECT stuId AS id, stuName AS name FROM stuInfo;

2. 條件過濾 (WHERE)

SELECT * FROM stuInfo WHERE stuId > 1 AND stuName LIKE 'A%';

3. 排序與分頁

-- MySQL / PostgreSQL
SELECT * FROM stuInfo ORDER BY stuId DESC LIMIT 10 OFFSET 20;

-- SQL Server (2012+)
SELECT * FROM stuInfo ORDER BY stuId DESC OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

4. 聚合與分組

SELECT COUNT(*) AS total, AVG(stuId) AS avg_id FROM stuInfo;
SELECT stuGender, COUNT(*) FROM stuInfo GROUP BY stuGender HAVING COUNT(*) > 1;

5. 多表連接 (JOIN)

-- 內連接
SELECT s.stuName, c.courseName
FROM stuInfo s
JOIN student_course sc ON s.stuId = sc.stuId
JOIN course c ON sc.courseId = c.courseId;

-- 左連接 (保留左表所有)
SELECT s.stuName, c.courseName
FROM stuInfo s
LEFT JOIN student_course sc ON s.stuId = sc.stuId
LEFT JOIN course c ON sc.courseId = c.courseId;

五、進階實用指令

  • 建立索引:CREATE INDEX idx_name ON stuInfo(stuName);
  • 建立視圖:CREATE VIEW v_stu AS SELECT stuId, stuName FROM stuInfo WHERE stuId > 10;
  • 交易控制:START TRANSACTION; ... COMMIT; / ROLLBACK;
  • 權限管理:GRANT SELECT, INSERT ON db.* TO 'user'@'%'; FLUSH PRIVILEGES;

熟練這組核心 SQL 指令,是資料庫開發、運維、分析的基礎語言能力。建議搭配特定資料庫官方文件,掌握方言差異(如 LIMIT/OFFSET、自增、資料型別)。

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