1. 程式人生 > >與MYSQL的零距離接觸(筆記四) 慕課網

與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條記錄