MySQL - 語句參考

歡迎,未來的數據庫法師們!今天,我們將深入MySQL語句的神奇世界。別擔心如果你從未寫過一行代碼 - 到了這個教學的結尾,你將會像專業人士一樣召喚數據庫咒語!

MySQL - Statements Reference

數據定義語句

讓我們從我們數據庫王國的基石開始:數據定義語句。這些是我們用來創建、修改和刪除數據庫結構的命令。

CREATE TABLE

想像你正在建造一個圖書館。你首先需要的是書架,對吧?在MySQL中,我們的"書架"就是表。讓我們創建一個!

CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
author VARCHAR(50),
publication_year INT
);

這個咒語...我是說,語句,創建了一個名為"books"的表,包含四個列:

  • id:每本書的唯一標識
  • title:書的標題(最多100個字符)
  • author:書的作者(最多50個字符)
  • publication_year:書發表的年份

ALTER TABLE

哦!我們忘了為書添加一個類型的列。沒關係,我們可以修改我們的表:

ALTER TABLE books
ADD COLUMN genre VARCHAR(30);

這將在我們的"books"表中添加一個名為"genre"的新列。

DROP TABLE

如果我們決定我們不再需要我們的表(也許我們要轉為電子書?),我們可以刪除它:

DROP TABLE books;

但是要小心使用這個命令!這就像點燃你的書架一樣 - 沒有回頭路!

數據操作語句

現在我們有了我們的結構,讓我們用數據來填充它!

INSERT

該給我們的圖書館添加一些書了:

INSERT INTO books (title, author, publication_year, genre)
VALUES ('了不起的盖茨比', 'F. 斯科特·菲茨杰拉德', 1925, '經典');

這將一本書添加到我們的表中。你可以一次添加多本書:

INSERT INTO books (title, author, publication_year, genre)
VALUES
('梅根·李的 mockingbird', '哈珀·李', 1960, '小說'),
('1984', '喬治·奧威爾', 1949, '科幻小說');

SELECT

現在,讓我們看看我們有哪些書:

SELECT * FROM books;

這將從"books"表中檢索所有列(*)。你可以更具體:

SELECT title, author FROM books WHERE publication_year < 1950;

這將只檢索發表於1950年之前的書的標題和作者。

UPDATE

哦,我們犯了一個錯誤!"1984"實際上是反烏托邦小說:

UPDATE books
SET genre = '反烏托邦小說'
WHERE title = '1984';

這將更改標題為"1984"的書的類型。

DELETE

假設我們想要刪除所有發表於1930年之前的書:

DELETE FROM books
WHERE publication_year < 1930;

使用DELETE要小心 - 和DROP一樣,它是永久的!

事務和鎖定語句

有時候,我們需要確保一系列操作要么全部發生,要么全部不發生。這就是事務的用處。

START TRANSACTION

START TRANSACTION;
INSERT INTO books (title, author, publication_year, genre)
VALUES ('傲慢與偏見', '簡·奧斯汀', 1813, '浪漫');
UPDATE books SET publication_year = 1960 WHERE title = '梅根·李的 mockingbird';
COMMIT;

這確保了INSERT和UPDATE一起發生。如果出現錯誤,則兩者都無效。

ROLLBACK

如果我們在事務中間改變了主意:

START TRANSACTION;
DELETE FROM books WHERE publication_year < 1900;
-- 哦,我們不是真的想那樣做!
ROLLBACK;

ROLLBACK將取消從START TRANSACTION以來所做的所有更改。

預處理語句

預處理語句就像菜譜一樣 - 你先設置一次,然後用不同的食材多次使用它。

PREPARE stmt FROM 'SELECT * FROM books WHERE author = ?';
SET @a = '喬治·奧威爾';
EXECUTE stmt USING @a;

這準備了一個語句來尋找特定作者的書,然後為喬治·奧威爾執行它。

复合語句

Credits: Image by storyset