MYSQL語法(一)

一生的風景發表於2020-08-22

資料表準備:

CREATE TABLE student3 (
  id int,
  name varchar(20),
  age int,
  sex varchar(5),
  address varchar(100),
  math int,
  english int
);

INSERT INTO student3(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);

sql註釋:

  • 單行註釋  
    -- 這是單行註釋 注意--後面加一個空格再寫內容
    # 這也是單行#號註釋     一般在cmd上寫
  • 多行註釋
    /*
       多行註釋
    */

查詢語句:

1. 簡單查詢: select  *  from 表名  

select * from student3   -- 查詢student3所以資訊
select id from student3  -- 查詢表中的欄位 id
select id,name,sex from student3 -- 查詢student3中的欄位id name sex
/*
    *代表查詢所有,多個欄位查詢,查詢的欄位使用逗號隔開
*/

2.where查詢  where 關鍵字

where 關鍵字代表條件根據什麼條件來查詢
*/
select * from student3 where id = 1;  -- 查詢id為1的所有欄位資訊
select * from student3 where name = "馬雲"  -- 查詢name等於馬雲的資訊

3.比較運算子查詢

>大於  <小於   <=小於等於    >=大於等於    等於    <>!=不等於

select * from student3 where math > 66   -- 查詢數學成績大於66的所有學生資訊
select name from student3 where  english = 0 -- 查詢英語成績等於null的學生姓名

4.邏輯運算子查詢

and(&&) 多個條件同時滿足     or(||) 多個條件其中一個滿足      not(!) 不滿足

select name from student3 where math = 56 && english = 77 -- 查詢數學為56 且 英語為77的學生姓名
select * from student3 where sex in(''); -- 查詢性別為女的資訊
select * from student3 where sex not in('') -- 查詢性別不為女的資訊

 5.between 值1 and 值2   查詢在值1和值2之間的資料    表示從值1到值2範圍,包頭又包尾

select * from student3 where math between 56 and 99  -- 查詢數學分數在56到90之間的學生資訊
select * from student3 where math>=56 and math<=99   -- 等同於 上面

6.like ,模糊查詢

格式:SELECT * FROM 表名 WHERE 欄位名 LIKE '萬用字元字串';

萬用字元字串: 

  • %: 表示0個或多個字元(任意個字元)
  • _: 表示一個字元
select * from student3 where name like "馬%";  -- 查詢所有姓馬的資訊
select * from student3 where name like "馬_";  -- 查詢姓馬且名字是兩個字的資訊

7.排序

order by 子句:可以將查詢出的結果進行排序(排序只是顯示方式,不會影響資料庫中資料的順序)

ASC: 升序, 預設是升序 ; DESC: 降序

select * from student3  order by id;  -- 根據id升序查詢  
select * from student3 order by id desc -- 根據id降序查詢

select * from student3 order by name desc -- 根據姓名降序查詢 根據首字母 排序

組合排序:

select * from student3 order by math asc,english asc  -- 根據數學成績培訓,英語成績排序

8.聚合函式查詢

五個聚合函式:

  • count: 統計指定列記錄數,記錄為NULL的不統計
  • sum: 計算指定列的數值和,如果不是數值型別,那麼計算結果為0 
  • max: 計算指定列的最大值
  • min: 計算指定列的最小值
  • avg: 計算指定列的平均值,如果不是數值型別,那麼計算結果為0
select count(*) 信馬的人數 from student3 where  name like "馬%"  -- 查詢有多少個學生

select sum(math) 總分數 from student3    -- 求班級總分數

select max(math) 數學最高分 from student3  -- 數學最高分

select min(english) 英語最低分 from student3 -- 英語最低分

select avg(math) 數學平均分 from student3  -- 求數學平均分

9.limit關鍵字

limit:限制的意思,所以LIMIT的作用就是限制查詢記錄的條數。 用於分頁查詢

語法:LIMIT offset,length; 或者limit length; offset是指偏移量,可以認為是跳過的記錄數量,預設為0 length是指需要顯示的總記錄數

select * from student3 limit 0,3   -- 查詢第一條開始(包含第一條)後面三條資料

select * from student3 limit 3,3   -- 查詢從第四條開始後面的三條資料

limit應用場景:

-- 每頁顯示5條
-- 第一頁: LIMIT 0,5;    跳過0條,顯示5條
-- 第二頁: LIMIT 5,5;  跳過5條,顯示5條
-- 第三頁: LIMIT 10,5; 跳過10條,顯示5條
SELECT * FROM student3 LIMIT 0,5;
SELECT * FROM student3 LIMIT 5,5;
SELECT * FROM student3 LIMIT 10,5;

 10.別名查詢 as 關鍵字  as可以省略 

select name as 學生姓名,age as 學生年齡 from student3 -- 查詢學生姓名和年齡並設定別名

在查詢時,資料庫查詢會展示欄位名,我們可以使用別名來改變它的展示 查詢時給列、表指定別名需要使用as 關鍵字

select name 學生姓名,age 學生年齡 from student3 -- 查詢學生姓名和年齡並設定別名

 

 對比如下:

select name,age from student3 -- 查詢學生姓名和年齡不設定別名、

 新增語句:

常規語句:INSERT INTO 表名 (欄位名1, 欄位名2, 欄位名3…) VALUES (值1, 值2, 值3);

insert into student3(`name`,age,sex,address,math,english) values ('常將',21,'','廣東',98,68)  -- 插入一條資料

省略語句:INSERT INTO 表名 VALUES (值1, 值2, 值3…);

insert into student3 values (18,'常將',21,'','廣東',98,68)  -- 插入一條資料

插入多條語句::INSERT INTO 表名 VALUES (值1, 值2, 值3…),(值1, 值2, 值3…),(值1, 值2, 值3…),(值1, 值2, 值3…)..... ;

insert into student3 (`name`,age,sex,address,math,english) 
         values 
        ('常將1',21,'','廣東',98,68),
                ('常將2',21,'','廣東',98,68),
                ('常將3',21,'','廣東',98,68),
                ('常將4',21,'','廣東',98,68),
                ('常將5',21,'','廣東',98,68);

注意: 

1. insert into student3 values (18,'常將',21,'男','廣東',98,68)  -- 插入一條資料  
2、 insert into student3(`name`,age,sex,address,math,english) values ('常將',21,'男','廣東',98,68)  -- 插入一條資料 

區別:第一條,沒有限制插入的欄位,所有預設插入資料庫的全部欄位,使用主鍵id也要新增上去,第二條,指定了欄位個數,由於id是主鍵自增所有我就不寫了,當然加上去也是可以的。

蠕蟲複製 :INSERT INTO 表名1 SELECT * FROM 表名2;

CREATE TABLE student2 LIKE student3;     -- 首先建立一個表結構一樣的表            
insert into student2  select * from student3  -- 進行復制

注:表1和表2的表結構要一致

修改語句:

語法:UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

update student3 set `name` = '柳依依' where id = 4 -- 將id為4的名字修改為柳依依
update student3 set age = 22 where `name` = '馬雲' -- 將名字為馬雲的年齡修改為 22

注:修改語句一定要跟一個where條件

刪除語句:

刪除表全部資料: DELETE FROM 表名;

delete from student2  -- 刪除表student2 的資料、

摧毀表:TRUNCATE TABLE 表名;

truncate table student2   -- 摧毀表student2 的資料

根據條件刪除:DELETE FROM 表名 WHERE 欄位名=值;

delete from student3 where id = 18 -- 刪除id為18的 學生資料
delete from student3 where id = 19 || id = 20  -- 刪除id 為 19 和為20 的學生資料

 

個人學習,內容簡略

相關文章