MySQL数据库的增删改查语法

增删改数据

插入数据
  • 基本方式
-- 语法
insert into 表名 (字段1,,字段2,字段3,.....字段n) values (1,2,3,...值n)

-- 例如向student表中添加一条数据
insert into student (id,name,age) values (1,"小明",18)

注意
1. 插入数据时,列名和值要一一对应(包括数量 顺序 类型)
2. 插入数据时,数值以外的类型需要使用引号引起来,推荐使用单引号
3. 所有列的值都可以传入字符串类型的值,MySQL底层有隐式转换机制
4. 当一列中不需要传入值的时候,可以使用null值代替

  • 批量插入
-- 语法
insert into 表名 (字段1,字段2,...字段n) values (1,2,...值n),(1,2,...值n),(1,2,...值n)

-- 例如向student表中插入三条学生信息
insert into student (id,name,age) values (1,'小明',20),(2,'小王',20),(3,'小李',20)
  • 省略列名
    注意:值的数量一定要保证跟列的数量一致,如果值中没有对应的列,使用null补齐
-- 语法
insert into 表名 values (1,2,...3)

-- 例如向student表中添加数据
insert into student values (1,'小明',20)

-- 错误方式
insert into student values (1,'小明')
-- Column count doesn't match value count at row 1  在保存数据的时候, 值和列数量上不匹配
删除数据
-- 语法
	delete from 表名 [where 条件字段 =]

-- 实例 删除 student表中name为小明的记录
	delete from student where name = '小明'

注意:删除语句中如果不加条件,则会将所有的数据都删除!!

修改数据
-- 语法
	update 表名 set 字段1 =1,字段2 =2 [where 条件字段 =]
	
-- 实例
-- 先根据where条件查找到对应的数据,然后修改对应的字段的数据
	update student set name = '小明',age = 20 where name = '小王'
	update student set name = '小李' where id = 3

注意:
1.修改语句中如果不加条件,则将所有数据都会被修改
2.set中没有处理的字段是不会被修改的

查询数据

简单查询
  • 查询所有列
-- 语法
	select * from 表名
	
-- 实例 查询student表中的所有学生信息
	select * from student
  • 查询部分列
-- 语法
	select 列名1,列名2,...列名3 from 表名
	
-- 实例 查询student表中学生的姓名和对应的年龄
	select name,age from student
  • 去重 distinct
-- 语法
	select distinct 列名 from student

-- 实例 id和name都相同的只显示一个
	select distinct id,name from student
  • 四则运算
-- 语法
	select(四则) from student;

-- 实例 在查询出来所有的学生数学分数上加10分
	select name,math,math+10 from student1;
  • 空值处理
-- 语法 
	1. null跟其它值进行四则运算,得到结果都是null
	2. ifnull(,默认值)  当指定的列的值为null的时候,使用后面的默认值进行替换

-- 实例
	select name,chinese+math+english from student;
	select name,chinese+math+ifnull(english,0) from student;
  • 别名
    as后面跟别名 as可以省略
-- 语法
	select[as] 别名 from 表名
-- 实例
	select name,chinese+math+english as total from student
	# name 起别名 '名字'      chinese+math+ifnull(english,0) 起别名 total
	select name '名字',chinese+math+ifnull(english,0) total from student1;
条件查询
  • 关系运算符
-- 语法
	select * from 表名 where 条件( = >= <= != <>)

-- 实例
	#查询年龄等于20的学生
	select * from student where age = 20;
	
	#查询age不等于20的学生
	select * from student where age != 20;
	select * from student where age <> 20;
	
	#查询math分数大于80的学生
	select * from student where math > 80;
	
	#查询math分数小于或等于80的学生
	select * from student where math math <= 80;

  • 逻辑运算符
-- 语法
	and 并且
	or	或者

-- 实例
-- 查询age等于20岁的学生并且math分数大于80分的学生
	select * from student where age = 20 and math > 80;
	
-- 查询age等于20岁的学生或者math分数大于80分的学生
	select * from student where age = 20 or math > 80;
	
-- 查询id是1或3或5的学生
	select * from student where id = 1 or id = 3 or id = 5;
	
-- 查询english成绩大于等于77,且小于等于87的学生
	select * from student where english >= 77 and english <= 87;
  • 范围关键字
-- 语法
	#字段 in (值1,值2,值3,...值n)   			表示字段 = 集合中任意一个都可以
	#字段 not in (值1,值2,值3,...值n)		表示字段不在集合中才可以
	#字段 between 开始值 and 结束值			查询的字段的值要在 [开始,结束]
	#字段 not between 开始值 and  结束值     查询的字段的不值要在 [开始 , 结束]

-- 实例:

-- 查询id是1或3或5的学生
	select * from student where id in (1,3,5);

-- 查询id不是1或3或5的学生
	select * from student where id not in (1,3,5);

-- 再次查询english成绩大于等于77,且小于等于87的学生
	select * from student where english between 77 and 87;
  • null关键字
-- 语法
	is null 		为空
	is not null     不为空
#注意:null是不能跟字段进行关系运算符匹配( 不能 =null   != null)

-- 实例
	#查询英语成绩为null的学生
	select * from student where english is null;

	#查询英语成绩不为null的学生
	select * from student where english is not null;
  • 模糊匹配
    1.like
    2.rlike 正则表达式
-- 语法
	字段 like ''
	% 匹配0个或者多个字符
	_ 匹配一个字符

-- 实例
	#查询姓马的学生
	select * from student where name like '马%'

	#查询姓名中包含'德'字的学生
	select * from student where name like '%德%'

	#查询姓马。且名字是三个字的学生
	select * from student where name like '马__'
高级查询
  • 排序
    1.asc ascending
    2.desc descending
-- 语法
	order by 字段1 [asc|desc],字段2 [asc|desc]
	注意:null字段在排列时,按照最小值处理

-- 实例
	#查询所有数据,使用年龄降序排序
	select * from student order by age desc;

	#查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩降序排序
	select * from student order by age desc,math desc;

	#排序有null的值
	select * from student order by english desc; -- 英语成绩为null的数据排在最下面
  • 结果截取 分页
-- 语法
	limit 数据记录的索引,截取多少条

-- 实例
	#查询学生表中的数据,从第三条开始显示,显示4条
	select * from student limit 4,2;

	#查询学生表中的数据,显示前四条
	select * from student limit 0,4;
	select * from student limit 4;  #如果从0开始截取,开始索引可以省略
  • 聚合函数
-- 功能
	对一列数据进行计算,返回一个结果,忽略null值
	对一列数据,Mysql可以统计出: 个数count  总和sum  平均数avg  最大值max  最小值min
-- 语法: 
	select 聚合函数(字段) from 表名

-- 实例

	#查询学生总数
	select count(*) from student2;
	
	#查询数学成绩总分
	select sum(math) from student2;

	#查询数学成绩平均分
	select avg(math) from student2;
	
	#查询数学成绩最高分
	select max (math) from student2;
	
	#查询数学成绩最低分
	select min(math) from student2;
  • 分组
-- 语法
	select 分组列名,聚合函数() from 表名 group byGROUP BY 分组后的筛选条件
	分组,一般都是和聚合函数联合使用
	
-- 实例

	#查询所有学生, 按性别分组, 统计每组的人数
	select sex,count(*) from student2 group by sex;

	#查询年龄大于25岁的人, 按性别分组, 统计每组的人数
	select sex,count(*) from student2 where age>25 group by sex ;

	#查询男女的数学平均分  只统计年龄大于40的
	select sex,avg(math) from student2 where age>40 group by sex ;

  • 过滤
-- 语法
	group by 分组  having 过滤条件
	
	1. 过滤,一般都是和分组联合使用
	2. 分组之前的条件过滤使用where  分组之后的条件过滤使用having
-- 实例

	#查询年龄大于25岁的人,按性别分组,统计每组的人数,并只显示性别人数大于2的数据
	select sex,count(*) from student2 where age > 25 group by sex having count(*) > 2;
小结
  • 高级查询的顺序

 1. 排序:order by 列 desc
 2. 截取:limit 开始,几个
 3. 集合函数:count(列)
 4. 分组:group by 列
 5. 过滤:having 过滤条件
 6. 普通条件:where

select 聚合函数() from 表 [where 条件]  [group by 分组]  [having 过滤]  [order by 排序] [limit 截取]

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值