與MYSQL的零距離接觸(筆記四) 慕課網
操作資料表中的記錄
插入記錄
INSERT [INTO] tb1_name [(col_name)] {VALUES|VALUE} ({expr | DEFAULT},...),(...),...
net start mysql
mysql -uroot -p123456
use test;
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,'John','123',25,1);
SELECT * FROM users;
INSERT users VALUES(DEFAULT,'John','123456789',25,1);
INSERT users VALUES(NULL,'John','123',DEFAULT,1);
INSERT users VALUES(DEFAULT,'John','123456789',25*5/25-1,1);
INSERT users VALUES(DEFAULT,'Tom','12345',3*7-5,1),(NULL,'Rose',md5('123'),DEFAULT,0);
第二種:
INSERT [INTO] tb1_name SET col_name={expr|DEFAULT},...
說明:和第一張方式的區別在於,此方法可以使用子查詢(SubQuery)
INSERT users SET username='Ben',password='456';
第一種方法可以插入多條記錄。第二種一次只能插入一條記錄
第三種:
INSERT [INTO] tb1_name [(col_name,...)] SELECT ...
說明:此方法可以查詢結果插入到指定資料表。
CREATE TABLE test(
id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20)
);
INSERT test(username) SELECT username FROM users WHERE age>=30;
UPDATE
更新記錄(單表更新)
UPDATE[LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT}
[,col_name2={expr2|DEFAULT}] ... [WHERE where_condition]
UPDATE users set age= age +5; 修改一條
UPDATE users set age = age - id,sex =0; 修改兩條
UPDATE users set age = age +10 WHERE id % 2 = 0; 加入條件
DELETE
刪除記錄(單表刪除)
DELETE FROM tb1_name [WHERE where_condition]
DELETE FROM users WHERE id = 6; 刪除id為6 的記錄
INSERT users VALUES(NULL,'T111','123',33,1);
刪除記錄後 繼續建立記錄,將會以已有的最大id+1的形式建立id記錄
SELECT
查詢記錄
SELECT select——expr [.select——expr ...]
[
FROM table_reference
[WHERE where_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}]
]
查詢表示式
每個表示式表示想要的一列,必須有至少一個。
每個列之間以英文逗號分隔。
星號(*) 表示所有列。tb1_name.*可以表示命名錶的所有列。
查詢表示式可以使用[AS] alias_name 為其賦予別名。
別名可用於GROUP BY,ORDER BY 或HAVING子句。
SELECT id,username FROM users;
SELECT username,id FROM users; 查詢表示式的順序將影響結果的順序
SELECT users.username,users.id FROM users; 確認指定的資料表查詢
SELECT id FROM users; 單列查詢
SELECT id AS uesrid,username AS uname FROM users; 查詢並用AS賦予別名
WHERE
條件表示式
對記錄進行過濾,如果沒有指定WHERE子句,則顯示所有記錄。
在WHERE表示式中,可以使用MYSQL支援的函式或運算子。
GROUP BY
查詢結果分組
[GROUP BY {col_name|position}[ASC|DESC],...]
SELECT sex FROM users GROUP BY sex;
SELECT sex FROM users GROUP BY 1;
HAVING
分組條件
[HAVING where_coundition]
SELECT sex,age FROM users GROUP BY 1 HAVING age > 30;
SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 3;
ORDER BY
對查詢結果進行排序
[ORDER BY {col_name|expr|position}[ASC|DESC],...]
SELECT * FROM users ORDER BY id DESC; 倒序排列
SELECT * FROM users ORDER BY age,id DESC;
LIMIT
限制查詢結果返回的數量
[LIMIT {[offset,]row_count|row_count OFFSET offset}]
SELECT * FROM users LIMIT 2; 返還前面兩條資料
SELECT * FROM users LIMIT 2,2; 返還從第三條開始 返還2條記錄