mysql簡單增刪改查(CRUD)
先描述一下查看表中所有記錄的語句以便查看所做的操作(以下所有語句建議自己敲,不要復制以免出錯):
user表,字段有 id, name,age,sex;id為主鍵,自增,插入時可以寫 NULL 或者 DEFAULT;
以下實列都以user表為列;
CREATE TABLE user(
-> id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> name VARCHAR(20),
-> age INT,
-> sex VARCHAR(10)
-> );
SELECT * FROM 表名;列如:SELECT * FROM user;(語句不區分大小寫,規範約定為關鍵字大寫,小寫也可以,不過盡量遵守規範)
1、插入數據:
(1)INSERT INTO 表名 VALUES(,,,,,); INTO 可省略
則 : INSERT user VALUES(NULL,“張三” ,18,“男”);
此時插入數據必須與字段對應,而且字段不能少
無法插入漢字時,需要修改表的字符集:
ALTER TABLE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
(2)插入多條記錄時,以逗號分隔:
INSERT user VALUES(NULL,“張三” ,18,“男”),(NULL,“李四” ,20,“男”);
(3)可以選擇插入的字段:這種只能插入一條數據
INSERT user SET name=‘zhangsan‘,age=20;
(4)選擇字段並插入多條數據,以逗號分隔
INSERT user(name,age) VALUES(‘zhangsan1‘,20),(‘張三‘,30);
2、更新數據
UPDATE 表名 SET 修改的操作 (WHERE 條件
(1)更新user表,讓年齡在原有基礎上加5;(沒加條件,對所有數據修改)
UPDATE user SET age = age+5;
(2)更新user表,讓年齡在原有基礎上加5,並且姓名後面全都加上字符"HELLO"
UPDATE user SET age=age+5,name=name+"HELLO";
(3)對id為偶數的記錄年齡加20,此時就不能對所有數據做操作,加上限定條件,只對id為偶數的年齡加20,id除以2的余數為0,則為偶數。
UPDATE user SET age=age+20 WHERE id%2=0;
3、刪除數據
DELETE FROM 表名 (WHERE 條件)
(1)刪除id為1的數據記錄
DELETE FROM user WHERE id=1;
(2)刪除name是張三的記錄,就會刪除所有姓名為張三的記錄
DELETE FROM user WHERE name=‘張三‘;
4、查詢數據(重點)
(1)查詢user表所有列的數據:
SELECT * FROM user;
(2)查詢id和name這兩列的數據:
SELECT id,name FROM user;
(3)查詢時指定表名.字段名,為了避免查詢多張具有相同字段名的表:
SELECT user.id,user.name FROM user;
(4)為表或字段起別名,為了避免名特別長的情況需要頻繁輸入,AS 後面就是別名,AS也可省略:
SELECT u.id,u.name FROM user AS u;
(5)GROUP BY 按字段名的值分組,按性別,性別只有男、女或者為NULL,name就會查到性別為男的第一條數據,性別為女的第一條,以及性別顯示為NULL的
SELECT * FROM user GROUP BY sex;
(6)在GROUP BY之後還可以加上HAVING條件:id大於3的按性別分組:
SELECT * FROM user GROUP BY sex HAVING id>3;
HAVING 後面的id必須出現在查詢的字段中,否則會報錯:
SELECT name FROM user GROUP BY sex HAVING id>3;(錯誤的,可以改為如下)
SELECT name,id FROM user GROUP BY sex HAVING id>3;
(7)ORDER BY按條件排序,DESC 降序,默認ASC升序,以下按id降序排列
SELECT * FROM user ORDER BY id DESC;
(8)ORDER BY可以多條件排序,當第一個條件無法排序時,按第二個條件排序:按age默認升序排,當出現兩個age一樣的時候,按id降序排列
SELECT * FROM user ORDER BY age,id DESC;
(9)LIMIT語句限制輸出的語句數量:
,從第0個開始顯示,顯示2個
SELECT * FROM user LIMIT 2;等價於:SELECT * FROM user LIMIT 0,2;
與ORDER BY 結合使用:顯示升序排列的前4條數據
SELECT * FROM user ORDER BY age LIMIT 4;
(10)將查詢結果插入到另一張表,重新創建一個表tb1只有name和id字段:
CREATE TABLE tb1(
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20));
將查詢到的年齡大於10的name列數據插入到tb1表中:
查詢到的結果字段必須與插入表中的字段數一樣,不能查詢到多個字段插入到一個字段中:
INSERT tb1(name) SELECT * FROM user WHERE age>10;(錯誤的)*查詢到的字段是所有
INSERT tb1(name) SELECT name FROM user WHERE age>10;(正確的)
mysql簡單增刪改查(CRUD)