MySQL 24小時入門筆記
插入
INSERT
INSERT
用法非常簡單。現在我們有表students
如下。
列名 | 類型 | 約束 |
---|---|---|
id | int | primary key |
name | char(16) | NOT NULL |
向裏面插入一條學號爲1
,姓名爲學姐
的學生,只需要寫如下SQL
語句。
INSERT INTO students VALUES (1, '學姐');
語法
INSERT INTO [表] VALUES (列值1,列值2,...);
其中INSERT
語句有一個簡單的變體,能比較明確地指明將值交付給哪個列。
INSERT INTO students (id, name) VALUES (1, '學妹');
這樣寫相當於指明瞭1
應該是id
,'學妹'
應該是name
。
插入多條也很簡單,只要在VALUES
後面跟更多小括號包圍的值集合就行了,記得拿括號分隔,下面給個例子。
INSERT INTO students (id, name)
VALUES (1, '學渣'), (2, '學霸'), (3, '學神');
INSERT SELECT
這個寫法比較有意思,從一個表查詢出數據,並插入另一個表。
舉個例子來說,我們有兩個班級表,分別叫學渣班
和補習班
,一旦學渣成績爛到一定程度,那麼我們就要把他分配到補習班裏去強制補習。
怎麼做呢?看下面啦。
INSERT INTO 補習班(name,score)
SELECT 學渣班.name, 學渣班.score
FROM 學渣班
WHERE 學渣班.score < 10;
值得注意的是,INSERT
填充補習班表時用的並不是你SELECT
的列名,而是SELECT
後列名的順序,來對應到要INSERT
的表的列上。
其他的寫法和SELECT
相同。
修改
UPDATE
UPDATE
語句的作用是修改現存行的數據,非常值得注意的是用UPDATE
語句時一定要小心寫WHERE
子句,不然就等着刪庫跑路吧。
依然舉個實際栗子,學號爲10
的學生成績由於作弊而被取消了,我們要更新他的成績爲0分,這真是個悲傷的故事:P
UPDATE students SET score = 0 WHERE id = 10;
語法是這樣的。
UPDATE [表名] SET [列名] = [新值] WHERE [條件];
更新多條的話是這樣的
UPDATE [表名]
SET [列1] = [新值],
[列2] = [新值],
...
[列N] = [新值]
WHERE [條件];
千萬小心,如果沒有
WHERE
子句的話,指定的列會全部被設置成這個值。這樣一來,所有的學生都變成了0分......你會被手撕了的。
刪除
DELETE
DELETE
的作用是刪除行,同樣的,萬分注意WHERE
子句一定要正確編寫,不然真的要刪庫跑路了。
同樣以之前那位作弊的同學爲例,很遺憾,他又一次作弊被抓住了,傳說中的高科技AR技術作弊眼鏡也沒能讓他逃過監考員的火眼金睛,於是他被退學了......
另一個悲傷的故事:P
DELETE FROM students WHERE id = 10;
語法是這樣子的。
DELETE FROM [表名] WHERE [條件];
如果不寫WHERE
的話......找個好點的新工作吧,不要再去寫SQL
了,ORM多好。
注意,不寫
WHERE
子句會刪除這個表裏的所有行。