## 數據操作 - 插入
創建了數據表,表中空空如也怎么可以呢,介紹兩種插入數據的方法。
### insert 語句
讓我們開始利用 insert 語句來增加記錄,這是一個 SQL 語句,需要為它指定希望插入數據行的表或將值按行放入的表。如果你設置了主鍵并且自動增長,添加的時候需要把對應的主鍵值設置為 null 或者數字 “0”。
基本語法:
INSERT [into] table_name [(col_name,...)] VALUES (pression,...)
INSERT [into] table_name SET col_name=expression
“into” 一詞自 MySQL 3.22.5 以來是可選的。(這一點對其他形式的 insert 語句也成立。)values 表必須包含表中每列的值,并且按表中列的存放次序給出。
可指定所有列的值:
INSERT INTO test001 VALUES (null,'jack','23','beij');
使用多個值表,可以一次提供多行數據:
INSERT INTO test001 VALUES ('jack','23','beij'), ('grey','34','ah');
可以給出要賦值的那個列,然后再列出值。這對于希望建立只有幾個列需要初始設置 的記錄是很有用的:
INSERT INTO test001 (name) VALUES ('gery');
INSERT INTO test001 (name) VALUES ('mack'), ('rose');
INSERT INTO test001 SET name='sara'; // 使用這種形式的 insert 語句不能插入多行
### insert ... select 語句
學習創建表時,我們知道可以使用 create ... select 從其它表來直接創建表,甚至可以同時復制數據記錄。如果你已經擁有了一個表,你同樣可以從 select 語句的配合中獲益。
基本語法:
INSERT [INTO] tb_name select * FROM tb_name1; // 表結構完全一致
INSERT [INTO] tb_name (col1) SELECT col1 FROM tb_name1; // 取某個值添加
insert ... select 語句滿足下列條件:
- 查詢不能包含一個 order by 子句。
- insert 語句的目的表不能出現在 select 查詢部分的 from 子句中。
看下面實例:
INSERT test001_01 SELECT * FROM test001;
INSERT test001_02 (name) SELECT name FROM test001;