【MySQL】(4)操作資料表中的記錄,mysql資料
1. 插入記錄INSERT
方法一:
INSERT [INTO] tbl_name [(clo_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...;
例如:
CREATE TABLE users(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL, password VARCHAR(32) NOT NULL, age TINYINT UNSIGNED NOT NULL DEFAULT 10, sex BOOLEAN);# 插入記錄,不指定列的數目時,必須所有的欄位都要賦值INSERT users VALUES(NULL, 'Tom', '123', 25, 1);INSERT users VALUES(NULL, 'Tom2', '123', 28, 1);INSERT users VALUES(DEFAULT, 'Tom3', '111', 28, 1);# 使用數學運算式也可以添加值INSERT users VALUES(DEFAULT, 'Tom4', '111', 3*7+2/3, 1);# 給年齡DEFAULT,會採用預設值10INSERT users VALUES(DEFAULT, 'Tom5', '111', DEFAULT, 1);# 一次添加多條記錄INSERT users VALUES(DEFAULT, 'Tom6', '111', DEFAULT, 1), (NULL, 'Rose', md5('213'), DEFAULT, 0);
方法二:
INSERT [INTO] tbl_name SET col_name={exp | DEFAULT},...;
這個方法與第一種方式的區別在於,此方法可以使用子查詢(SubQuery),此方法一次性只能插入一條記錄。
例如:
INSERT users SET username='Ben', password='456';
方法三:
INSERT [INTO] tbl_name [(col_name, ...)] SELECT ...;
使用此方法可以將查詢結果插入到指定資料表。
2. 單表更新記錄UPDATE
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1 | DEFAULT} [, col_name2={expr2 | DEFAULT}] ... [WHERE where_condition];
例如:
# 所有記錄的年齡都加5UPDATE users SET age=age+5;# 更新多列UPDATE users SET age=age-id, sex=0;# 更新id為偶數的記錄UPDATE users SET age=age+10 WHERE id%2=0;
3. 單表刪除記錄DELETE
DELETE FROM tbl_name [WHERE where_condition];
例如:
DELETE FROM users WHERE id=6;
即使在刪除後,id號不連續,那麼新增的資料還是會在最大的id號加一。
4. 查詢表達時解析
SELECT select_expr [, select_expr ...] [FROM table_references [WHERE whrere_condition] [GROUP BY {col_name | position} [ASC | DESC],...][HAVING where_condition][ORDER BY {col_name | expr | position} [ASC | DESC], ...][LIMIT {[offset,] row_count | row_count OFFSET offset}]];
每一個運算式表示想要的一列,必須至少有一個。多個烈之間以英文逗號分隔。星號(*)表示所有列。tbl_name.*可以表示命名表的所有列。查詢運算式可以使用[AS] alias_name為其賦予別名。別名可用於GROUP BY,ORDER BY或HAVING字句。
例如:
# 查看MySQL版本SELECT VERSION();# 查看目前時間SELECT NOW();# 只查看前兩列SELECT id, username FROM users;SELECT username, id FROM users;SELECT users.id, users.username FROM users;SELECT id AS userid, username AS uname FROM users;# AS關鍵字可以省略,但是盡量寫上,避免不必要的錯誤SELECT id username FROM users;
欄位的順序和結果集都將影響查詢出的結果集。
(1). WHERE
條件運算式
對記錄進行過濾,如果沒有指定WHERE字句,則顯示所有記錄。在WHERE運算式中,可以使用MySQL支援的函數或運算子。
(2). GROUP BY
查詢結果分組
例如:
SELECT sex FROM users GROUP BY sex;# 1表示按照SELECT語句中第一個出現的欄位排序SELECT sex FROM users GROUP BY 1;
(3). HAVING
分組條件
例如:
# 當HAVING語句有age的條件時,前面的SELECT中必須出現這個age欄位SELECT sex, age FROM users GROUP BY 1 HAVING age>35;# 或者是一個彙總函式SELECT sex, age FROM users GROUP BY 1 HAVING count(id)>=2;
(4). ORDER BY
對查詢結果進行排序
例如:
# 按照id降序排列SELECT * FROM users ORDER BY id DESC;# 同時以兩個欄位排序age預設升序,id降序SELECT * FROM users ORDER BY age, id DESC;
(5). LIMIT
限制查詢結果返回的數量
例如:
# 從第1條開始返回2條記錄SELECT * FROM users LIMIT 2;# 從第1條開始,位移2條後,查詢2條記錄SELECT * FROM users LIMIT 2 OFFSET 2;# 從第4條開始(從0開始計數),返回2條記錄SELECT * FROM users LIMIT 3, 2;SELECT * FROM users ORDER BY id DESC LIMIT 2, 2;CREATE TABLE test(id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20));# 將users年齡大於30的資料插入test表INSERT test(username) SELECT username FROM users WHERE age>=30;
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。