一、DML語言
1.1 insert插入數據
語法:insert [into] 表名 [字段名] values(值列表);
插入一行數據
第一種:insert into file1(id,name,age) values (1,‘aa’,11);
第二種:insert into file1 values(1,‘aa’,11);
插入多行數據
insert into file1(id,name,age) values(1,‘aa’,11),(2,‘bb’,12),(3,‘cc’,13);
注意:為避免表結構發生變化引發錯誤,建議插入數據時寫明具體字段名!
1.2 update 更新數據
語法:UPDATE 表名 SET 字段1=值1,字段2=值2,…,字段n=值n [WHERE 條件];
-- 示例:將id = 1的age改成14
update file1 set age = 14 where id =1;
注意:1、更新多列數據使用逗號隔開;2、添加條件限制
1.3 delete 刪除數據
語法格式:delete from 表名 [where條件];
-- 示例:刪除file1中的數據【表還在】
delete from file1;-- 示例:刪除id=1的數據
delete from file1 where id =1;
1.4 truncate 刪除數據
語法:truncate table 表名;
-- 示例:刪除學生表中的數據【清空數據,表還在】
truncate table students;-- 示例:刪除id是1的學生的數據【報錯,不能加條件】
truncate table students where id = 1;
二、DQL語言
DQL是Data Qurey Language英文縮寫,數據查詢語言
常用語句:
基本查詢語句、條件查詢、多條件查詢、模糊查詢、分組查詢、連接查詢、子查詢
關鍵字:
AS、運算符、IN、BETWEEN AND、DISTINCT、ORDER BY、LIMIT
條件:
模糊查詢
like ’字符‘
關鍵字查詢【具體值】
in
關鍵字查詢【范圍】
between 值1 and 值2
關鍵字查詢【去重】
distinct
關鍵字查詢【順序】
order by 排列列名 【asc升序,desc降序】
根據行數查詢
limit
2.1 select基本查詢語句
語法:select 列名 from 表名;
示例:查詢所有學生信息
select *
from students;
例題:查詢所有學生的姓名,性別
select name,sex
from students;
2.2 運算符
算術運算符
+ - * / %
關系運算符
> < = <> >= <= !=
賦值運算符
=
邏輯運算符
and or not (&& || !)
2.3 where條件查詢
語法:select 列名 from 表名 where 條件
示例:查詢id為1學生的姓名,性別
select name,sex
from students
where id =1;
例題:查詢學生’鄧超’的信息
select *
from students
where name = '鄧超';
2.4 where多條件查詢
語法:select 列名 from 表名 where 條件 運算符 條件
示例:查詢id=1或者id=3學生的姓名,性別、
select name,sex
from students
where id = 1 or id = 3;
例題:查詢性別為女并且在2班的學生的信息
select *
from students
where sex = '女' and cls_id = 2;
2.5 like 模糊查詢
模糊查詢是使用SQL通配符替代一個或多個字符的條件查詢。
語法:select 列名 from 表名 where 字段 like ‘值’
例題:查詢名字里面包含’小’的學生的信息
select * from students where name like '小%';
2.6 in關鍵字查詢 是什么什么
語法:select 列名 from 表名 where 字段 in (值1,值2,……);
示例:查詢id為1,5,6,10的學生的信息
select *
from students
where id in (1,5,6,10);
not in 不是什么什么
示例:查詢id不為1,5,6,10的學生的信息
select *
from students
where id not in(1,5,6,10);
2.7 between關鍵字查詢 在什么什么之內
語法:select 列名 from 表名 where 字段 between 值1 and 值2;
示例:查詢id為8-10的學生的信息
select *
from students
where id between 8 and 10;
2.8 distinct 關鍵字查詢【去重】
語法: select distinct 字段名1,字段名2,…… from 表名;
示例:查詢性別有幾種分類
select distinct sex from students;
示例:查詢有幾個班級
select distinct cls_id from students;
2.9 order by關鍵字查詢
語法:select 字段名列表 from 表名 [where 查詢條件] [order by 排序的列名][asc(升序) 或 desc(降序)]
示例:將學生的身高按照升序排列
select *
from students
order by height; -- 默認為升序
示例:將學生的身高按照降序排列
select *
from students
order by height desc;
2.10 limit關鍵字查詢
語法:
select 字段名列表
from 表名
[where 查詢條件]
[order by 排序的列名 asc(升序) 或 desc(降序)]
[LIMIT <開始行數,需要查的行數> ];
如果開始行數不寫默認為0
示例:只看前2條學生信息
select *
from students
limit 2;
示例:查看第四行到第七行的學生信息
select *
from students
limit 4,3;
三、連接查詢
連接查詢是將多張表中記錄按照指定的條件進行連接的查詢方式
注意:連接查詢涉及到兩個表以上,在查詢的時候至少要有一個必備的連接條件,這個必備的條件就是兩個表共有的那個字段相等,而且這個字段一定在一個表里是主鍵,在另一個表里是外健
3.1 內連接
內連接是返回連接表中符合連接條件記錄的連接查詢。
包括:顯式內連接、隱式內連接
3.1.1 顯示連接
語法格式:
select 字段 from 表1 inner join 表2 on 連接條件[where 條件]
示例:查看學生所在班級
select s.name as '學生姓名',c.name as '班級名稱' -- as可以省略
from students s inner join classes c
on s.cls_id = c.id;
提問:查看學生所在班級并且班級是1
select s.name '學生姓名',c.name '教室名'
from students s inner join classes c
on s.cls_id = c.id and c.id = 1;
3.1.2 隱式內連接查詢
select 字段 from 表1,表2 where 表1.條件 = 表2.條件
示例:查看學生所在班級
select s.name, c.id
from students s, classes c
where s.cls_id = c.id;
3.2 外連接
3.2.1 左外連接查詢
左外連接是以左表為基表,返回左表中所有記錄及連接表中符合條件的記錄的外連接。
select 字段 from 表1 left join 表2 on 連接條件 [where 條件]
示例:查看老師所在班級
select t.name '教師姓名' , c.id '班級名'
from teachers t left join classes c
on t.id = c.teacher_id;
3.2.1 右外連接查詢
右外連接是以右表為基表,返回右表中所有記錄及連接表中符合條件的記錄的外連接
語法:select 字段 from 表1 right join 表2 on 連接條件 where 條件
select t.name '教室名稱',c.id '班級名稱'
from teachers t right join classes c
on t.id = c.teacher_id;
3.3 聚合函數
如何查看班級同學的平均身高?——使用聚合函數
聚合函數是可以對一組值進行計算,并返回單個值的函數。
語法:select 聚合函數<字段> from 表名 [where 條件][group by 聚合函數]
count()
計數
sum()
求和
max()
最大值
min()
最小值
avg()
平均值
示例:查詢班級學生的平均身高
select avg(height)
from students;
示例:查詢班級有多少同學
select count(*) -- 這里也可以用id
from students
3.4 子查詢【查詢嵌套】
如何只查詢比劉德華高的同一班的學生信息?——子查詢
定義:子查詢是在一個查詢的內部包括另一個查詢的查詢方式
3.4.1 簡單子查詢
示例:查看劉德華同學的所在班級的所有同學
select name
from students
where cls_id = (select cls_id from students where name ='劉德華');
3.4.2 any/some子查詢
示例:查看趙老師所帶的學生信息
select *
from students
where cls_id = any(select id from classes where teacher =
select id from teachers where name = '趙老師'));
3.5 all子查詢
ALL
子查詢的關鍵在于對所有子查詢返回值的比較。例如,當使用> ALL
時,意味著主查詢中的表達式必須大于子查詢返回的所有值,才能滿足條件。
示例:查看學生所在班級
select *
from students
where cls_id >=all(select id from classes where teacher_id =
(select id from teachers where name = '趙老師'));
3.6 exists子查詢
示例:刪除表
drop table if exists file1;
示例:查看存在王老師的班級表
select *
from classes
where exists (select * from teachers where name='王老師');
3.7 not exists子查詢
示例:創建教師表
create table IF NOT EXISTS teachers(id int primary key,name varchar(20)
);
避免重復創建