資料表準備:
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 '萬用字元字串';
萬用字元字串:
select * from student3 where name like "馬%"; -- 查詢所有姓馬的資訊 select * from student3 where name like "馬_"; -- 查詢姓馬且名字是兩個字的資訊
7.排序
order by 子句:可以將查詢出的結果進行排序(排序只是顯示方式,不會影響資料庫中資料的順序)
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
: 計算指定列的數值和,如果不是數值型別,那麼計算結果為0max
: 計算指定列的最大值-
min
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:
語法:
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 的學生資料
個人學習,內容簡略