程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 【MySQL】(4)操作數據表中的記錄

【MySQL】(4)操作數據表中的記錄

編輯:MySQL綜合教程

【MySQL】(4)操作數據表中的記錄


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,會采用默認值10
INSERT 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];

例如:

 

# 所有記錄的年齡都加5
UPDATE 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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved