mysql数据库相关操作.md

这篇博客详细介绍了MySQL数据库的基本操作,包括创建数据库和数据表,插入、修改和删除数据,以及各种查询方法如条件查询、模糊查询、分组、联合查询、聚合函数、排序、限制和去重。还涵盖了多表查询和子查询的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


对数据库/表的操作

  • 创建数据库
create database dbname
  • 创建数据表
create table tb_name();
  • 显示数据库/数据表
show databases;
show tables;
  • 查看表结构
desc tb_name;
  • 切换到指定数据库
use dbname;
  • 删除数据库
drop database dbname;

插入数据

下例插入多行数据:

insert into tb_tiger(ID,Name,Kind,Number,Address) VALUES(1808,'华南虎','猫科',0,'中国'),(1809,'熊猫','熊科',1668,'中国'),(1810,'孟加拉虎','猫科',5102,'孟加拉'),(1811,'东北虎','猫科',21,'中国');
insert into tb_tiger VALUES(1808,'华南虎','猫科',0,'中国'),(1809,'熊猫','熊科',1668,'中国'),(1810,'孟加拉虎','猫科',5102,'孟加拉'),(1811,'东北虎','猫科',21,'中国');

修改数据

  • 下例修改ID=1806这行多个属性的数据
update tb_tiger set Address='美国',Name='美洲狮01' where ID=1806;

删除数据

  • 下例删除Number>10000的所有行
delete from tb_tiger where Number>10000;

查询

条件查询
  • 查询所有猫科动物的信息
select * from tb_tiger where Kind='猫科';
  • 查询现存数量少于5000的动物信息
select * from tb_tiger where Number<5000;
  • between and的范围查询
select * from tb_tiger where Number between 1000 and 10000;
select * from tb_tiger where Number>=1000 and Number<=10000;
  • 查询产地在中国、孟加拉和阿富汗的动物信息
select * from tb_tiger where Address='中国' or Address='阿富汗' or Address='孟加拉';
模糊查询 like
  • 模糊查询(‘%’代表任意个任意字符; ‘_’代表一个任意字符):(查询名称中包含‘熊’的动物信息)
select * from tb_tiger where Name like '%熊%';
select * from tb_tiger where Name like '_熊';
分组查询group by
  • –单独查询(单独使用group by查询的是每组中的一条数据,意义不大)
  • 下例按照动物种类进行分组
select * from tb_tiger group by Kind;
  • 分组查询–与函数一起使用(统计每组数量,最大值,平均值等)
//查询每组有几行
select count(*) from tb_tiger group by Kind ;
//查询每组动物数量最大的数量
select Max(Number) from tb_tiger group by Kind ;
  • 分组查询–与having关键字一起用
  • HAVING关键字和WHERE关键字的作用相同,都是用于设置条件表达式,对查询结果进行过滤。
  • 两者的区别,HAVING关键字后,可以跟聚合函数,而WHERE关键字不能,通常情况下,HAVING关键字,都是和GROUP BY一起使用,用于对分组后的结果进行过滤
select * from tb_tiger group by Kind having Number>30000;
联合查询 union
  • 使用union关键字连接两个查询语句,查询结果合成一个表
聚合函数 sum;count;max;min;avg
  • sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)、avg(平均数)
order by 排序
  • asc升序
  • desc降序
select * from tb_tiger order by Number desc;
limit 控制查询条目
  • limit x,y
  • limit x
//查询表前5行
select * from tb_tiger limit 5,6;

//从数据表第5行往后数6行
select * from tb_tiger limit 5,6;
去掉重复distinct
  • distinct关键字
select distinct Kind from tb_tiger;
多表查询
  • 内连接(join / inner join)
  • 外连接(left join / left outer join;right join / right outer join)
  • 内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行。
  • 左向外连接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
  • student和teacher表
    image
    image

1. 内连接

select a.*,b.* from student a join teacher b;

结果为:
image

2. 内连接

select a.*,b.* from student a join teacher b where a.sid=b.sid;
//或
select a.*,b.* from student a join teacher b on a.sid=b.sid;

结果为:
image

3. 外连接

4. 左外连接

select a.*,b.* from teacher a left join student b on a.sid = b.sid;

结果为:
image

5. 右外连接

select a.*,b.* from teacher a right join student b on a.sid = b.sid;

结果为:
image

带in关键字的子查询
  • 下例中()里面的结果为1,2,3,4;其作为条件查询student表里id为1,2,3,4的信息
select * from student where id in(select sid from teacher);

结果为:

image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值