1. DDL相關 a. b. c. 2. 查詢表總共有多少條數據, 一般有如下3中寫法, 推薦優先使用 count(1) 或 count(id) 3. 單條插入 4. 批量插入(插入條數100條至10000條以內性能高, 具體插入條數看插入的欄位個數和欄位值的字元數, 推薦1000條) 5. 單條更 ...
1. DDL相關
a.
-- 查詢所有資料庫
show databases;
-- 刪除資料庫
drop database ladeng;
b.
-- use `資料庫名稱`; 表示使用此資料庫
use ladeng;
c.
-- 查看表結構
show create table student;
d. 往表中添加新欄位
ALTER TABLE `report_user_manage` ADD is_delete tinyint(2) NOT NULL COMMENT '是否刪除 0-未刪除 1-已刪除'; ALTER TABLE `report_user_manage` ADD creator varchar(50) NOT NULL COMMENT '創建人'; ALTER TABLE `report_user_manage` ADD gmt_create datetime NOT NULL COMMENT '創建時間'; -- 當數據新插入時更新時間預設為null, 當數據修改時更新時間會自動變化
ALTER TABLE `report_user_manage` ADD gmt_modified datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間';
e
-- 如果源欄位值是其它類型如:vachar且有值, 修改為新欄位bigint類型,則會報報,需要先清空這個欄位值才能修改欄位名稱; 如果源欄位值都為null或者類型也為bigint則直接修改不會報錯 ALTER TABLE 表名 CHANGE `源欄位名稱` `目標欄位名稱` bigint(20) DEFAULT NULL COMMENT '逾期已還用戶數';
2. 查詢表總共有多少條數據, 一般有如下3中寫法, 推薦優先使用 count(1) 或 count(id)
-- count(1):性能高 select count(1) from student; -- count(帶索引的欄位):性能高, count(未帶索引的欄位):性能一般, count(欄位)時需要註意,如果該欄位值存在有null則統計有誤差.
select count(欄位名稱) from student; 如: select count(id) from student; -- count(*): * 會掃描所有列,故性能比前面幾種低 select count(*) from student;
3. 單條插入
-- 如果選中了資料庫則資料庫名稱可以省略;
-- 如果資料庫名稱或表名稱是中文名或者欄位名稱是關鍵字,則儘量加上 `` 包裹起來
-- 如果id是自增,則id預設一般不能插入,除非自己修改資料庫配置允許插入id;
-- 所有欄位值都可以用單引號包圍, 如果欄位類型不是varchar類型,也能使用''包裹欄位值, 底層做了類型強制轉換成varchar INSERT INTO 資料庫名稱.表名稱 (欄位名稱1, 欄位名稱2) VALUES('欄位1值', '欄位2值'); INSERT INTO `ladeng`.`student` (`name`, `age`, `score`, `courseId`) VALUES ('小明', '19', '100', '3');
4. 批量插入(插入條數100條至10000條以內性能高, 具體插入條數看插入的欄位個數和欄位值的字元數, 推薦1000條)
-- 方式一(多條插入語句中間用分號; 分隔): 如: 下麵這2條同時執行 INSERT INTO `ladeng`.`student` (`name`, `age`, `score`, `courseId`) VALUES ('小紅', '18', '15', '3'); INSERT INTO `ladeng`.`student` (`name`, `age`, `score`, `courseId`) VALUES ('小麗', '22', '25', '3'); -- 方式二: values後面跟多條數據,中間用頓號、分隔 INSERT INTO `ladeng`.`student` (`name`, `age`, `score`, `courseId`) VALUES ('小紅', '18', '15', '3'),('小麗', '22', '25', '3');
5. 單條更新語句
UPDATE `ladeng`.`student` SET `score`='79', age = 19 WHERE `id` = '1';
6. 批量更新語句: 參照批量插入的第一種方式
7. 刪除語句
delete from student where id in (14, 15);
8. between ... and ... 在什麼之間, 如: 查詢年齡>= 19並且年齡<=22數據
select * from student where age between 19 and 22 等價於 select * from student where age >=19 and age <= 22
9. 聚焦函數(count, sum, max, min, group by), 將多行數據聚焦成一個值
-- 查詢總條數, 如果不存在id>2的數據則count(1)會返回0,而不是返回null select count(1) from student where id > 2 -- 查詢所有學生所有科目總分數, 如果表中沒有數據則sum(score)會返回null,而不是返回0 select sum(score) from student -- 查詢所有學生所有科目總分數, 如果沒有數據就預設返回0; ifNull是用來判斷是否為空,為空則賦值一個預設值 select ifNull(sum(score), 0) from student -- 查詢每個學生所有科目分數, 按照學生名字分組; group by 作用是分組,如果需要對多個欄位分組,則 group by 欄位1,欄位2,... select `name`, sum(score) from student group by `name`;