MySQL——數據庫CRUD之基本DML增刪改表操作及DQL查表操作

目錄

1 DML增刪改表中的數據(重要)

1.1 添加數據

1.2 刪除數據

1.3 修改數據

2 DQL查詢表中的記錄(重要)

2.1 語法

2.2 基礎查詢

2.3 條件查詢

2.4 排序查詢

2.5 聚合函數

2.6 分組查詢

2.7 分頁查詢


1 DML增刪改表中的數據(重要)

1.1 添加數據

  • 語法:insert into 表名(列名1,列名2,...,列名n)values(值1,值2,...,值n);
  • 注意事項:1)列名和值要一一對應;
                      2)若表名後不定義列名,則默認給所有列添加值;
                      3)除了數字類型,其他類型需要使用引號(單雙均可)引起來;

1.2 刪除數據

  • 語法:delete from 表名[where 條件];
  • 注意事項:1)若不加條件,則刪除表中所有記錄;
                      2)若要刪除所有記錄,有兩種方法:
                            --delete from 表名;但不推薦使用,效率低,有多少記錄就會執行多少次操作;
                            --truncate table 表名; 推薦使用,效率高,先刪除表,在創建一張一樣的表;

1.3 修改數據

  • 語法:update 表名 set 列名1=值1, 列名2=值2,...,[where 條件];
  • 注意事項:1)若不加任何條件,則將表中記錄全部修改;--很危險的操作

2 DQL查詢表中的記錄(重要)

2.1 語法

           select
                字段列表
           from
                表名列表
           where
                條件列表
           group by
                分組字段
           having
                 分組之後的條件
           order by
                 排序
           limit
                 分頁限定  

2.2 基礎查詢

1)多個字段的查詢

  • 語法:select 字段名1,字段名2,...,字段名n from 表名;
  • 注意:要查詢所有字段,可以使用 * 代替字段列表;

2)去除重複:加 distinct 關鍵字 

3)計算列:一般可以使用四則運算來計算列的值,一般只會進行數值型的計算;
                    ifnull(表達式1,表達式2),表達式1表示哪個字段需要判斷是否爲null,表達式2表示如果該字段爲null後的替換值;

4)起別名:as關鍵字或者省略as,直接在字段名後 空格 +新名字

【舉例】:

CREATE TABLE student (
id INT, -- 編號
NAME VARCHAR(20), -- 姓名
age INT, -- 年齡
sex VARCHAR(5), -- 性別
address VARCHAR(100), -- 地址
math INT, -- 數學
english INT -- 英語
);
INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES (1,'馬雲',55,'男','
杭州',66,78),(2,'馬化騰',45,'女','深圳',98,87),(3,'馬景濤',55,'男','香港',56,77),(4,'柳巖
',20,'女','湖南',76,65),(5,'柳青',20,'男','湖南',86,NULL),(6,'劉德華',57,'男','香港',99,99),(7,'馬德',22,'女','香港',99,99),(8,'德瑪西亞',18,'男','南京',56,65);

SELECT *FROM student;

SELECT NAME, age FROM student;
SELECT address FROM student;
-- 去除重複結果集
SELECT DISTINCT address FROM student;
-- 計算math 和english的分數之和
SELECT NAME,math,english,math+english FROM student;
-- 如果有NULL參與的運算,計算結果都爲NULL
SELECT NAME,math,english,math+ IFNULL(english,0) FROM student;
-- 起別名
SELECT NAME,math,english,math+ IFNULL(english,0) AS 總分 FROM student;
SELECT NAME,math 數學,english 英語,math+ IFNULL(english,0) 總分 FROM student;

2.3 條件查詢

1)where子句後跟條件

2)運算符:

  • >、 <、 <=、 >=、 =、 <>
  • BETWEEN...AND
  • IN(集合)
  • LIKE
  • IS NULL
  • and 或 &&
  • or 或 ||
  • not 或 |

【舉例】:條件語句的使用

-- 查詢年齡大於等於20歲
SELECT *FROM student WHERE age >= 20;
-- 查詢年齡等於20歲
SELECT *FROM student WHERE age = 20;
-- 查詢年齡不等於20歲
SELECT *FROM student WHERE age != 20;
SELECT *FROM student WHERE age <> 20;
-- 查詢年齡大於等於20,小於等於30
SELECT *FROM student WHERE age >= 20 AND age <= 30;
SELECT *FROM student WHERE age BETWEEN 20 AND 30;
-- 查詢20歲、19歲、25歲的人員信息
SELECT *FROM student WHERE age=20 OR age=19 OR age=25;
SELECT *FROM student WHERE age IN(20,19,25);
-- 查詢 英語成績爲空的
SELECT *FROM student WHERE english = NULL; -- NULL不能使用=或!= 進行判斷
SELECT *FROM student WHERE english IS NULL; 
-- 查詢 英語成績不爲空的
SELECT *FROM student WHERE english IS NOT NULL; 

3)LIKE模糊查詢

模糊查詢,首先了解佔位符的概念:_表示單個任意字符,%表示多個任意字符。

【舉例】:模糊查詢的使用

-- 查詢班級中姓馬的人
SELECT *FROM student WHERE NAME LIKE "馬%";
-- 查詢第二個字是化的人
SELECT *FROM student WHERE NAME LIKE "_化%";
-- 查詢姓名是三個字的人
SELECT *FROM student WHERE NAME LIKE "___";
-- 查詢姓名中包含德的人
SELECT *FROM student WHERE NAME LIKE "%德%";

2.4 排序查詢

  • 語法:order by 子句,如order by 字段1,排序方式1,字段2,排序方式2...
  • 排序方式:ASC,升序,默認的;
                      DESC:降序;
  • 注意:若有多個排序條件,當前面的條件值一樣時,纔會判斷第二條件;
SELECT *FROM student ORDER BY math ASC; -- 默認排序方式爲升序 
SELECT *FROM student ORDER BY math DESC;

-- 按照數學成績升序排名,若成績一樣,則按照英語成績排名
SELECT *FROM student ORDER BY math ASC,english ASC;

2.5 聚合函數

聚合函數是將一列數據作爲一個整體,進行縱向的計算,MySQL中的常用聚合函數如下:

  • count:計算個數
              1)一般選擇非空的列:主鍵;
              2)count(*);
  • max:計算最大值
  • min:計算最小值
  • sum:計算和
  • avg:計算平均值
-- 計算個數
SELECT COUNT(english)FROM student;
SELECT COUNT(IFNULL(english,0))FROM student;
SELECT COUNT(id)FROM student;
-- 計算最大值,最小值
SELECT MAX(math)FROM student;
SELECT MIN(math)FROM student;
-- 計算累加和
SELECT SUM(english)FROM student;
-- 計算平均值
SELECT AVG(english)FROM student;

 

注意:聚合函數的計算排除NULL值;
          解決方案:1)選擇不包含非空的列進行計算;
                            2)IFNULL 函數;

2.6 分組查詢

  • 語法:group by 分組字段
  • 注意:1)分組之後查詢的字段:分組字段、聚合函數,不能寫其他字段(沒有意義);
               2)where和having的區別?
                      *where在分組之前進行限定,若不滿足條件,不參與分組,having在分組之後進行限定,若不滿足結果,不會被查詢出來;
                      *where後不可以跟聚合函數,having可以進行聚合函數的判斷;

【舉例】:分組查詢的使用

-- 按照性別分組,查詢男、女同學的平均分,人數
SELECT sex, AVG(math),COUNT(id) FROM student GROUP BY sex;

-- 按照性別分組,查詢男、女同學的平均分,人數,分數低於70的不參與分組
SELECT sex, AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;

-- 按照性別分組,查詢男、女同學的平均分,人數,分數低於70的不參與分組,分組之後人數要大於2人
SELECT sex, AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id)>2;
-- 另一寫法,寫別名
SELECT sex, AVG(math),COUNT(id) 人數 FROM student WHERE math > 70 GROUP BY sex HAVING 人數>2;

2.7 分頁查詢

  • 語法:limit 開始的索引,每頁查詢的條數;
  • 公式:開始的索引 = (當前頁碼-1)*每頁顯示的條數;
  • 注意:limit是一個MySQL的“方言”,不同數據庫實現的方式不一樣;
-- 每頁顯示3條記錄
SELECT * FROM student LIMIT 0,3; -- 第1頁
SELECT * FROM student LIMIT 3,3; -- 第2頁
-- 公式:開始的索引 = (當前頁碼-1)*每頁顯示的條數;
SELECT * FROM student LIMIT 6,3; -- 第3頁

本文爲博主原創文章,轉載請註明出處!

若本文對您有些許幫助,輕擡您發財的小手,關注/評論/點贊/收藏,就是對我最大的支持!

祝君升職加薪,鵬程萬里!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章