MySQL学习笔记(4)

目录

增,删,改,查的扩充

其他

分组(max min count sum avg的使用)

连表操作


增,删,改,查的扩充

1. 多个值一起插

insert into t1(name,age) values('alex',11),('alex',12);

2.直接把表A的内容插入表B

insert into t2(name,age) select name,age from t1;

使用where进行约束时除了等于还可以用如下的符号约束

delete from t1 where id = 1;
delete from t1 where id > 1;
delete from t1 where id < 1;
delete from t1 where id <= 1;
delete from t1 where id >= 1;
delete from t1 where id != 1;
delete from t1 where id <> 1; -- 同样可以用这种方式表示不等于

此外,“or"也可以用来进行约束

delete from t1 where id = 1 or id = 2;

可以将数据库的多项数值在同一条指令进行修改

update tb12 set name = "alex",age = 19;

1. where and or 和上面类似,这里也可以使用

select name from t1 where age = 12 or age = 13;

2. 在查询的时候,可以把数据表的列名替换成别的名字显示

select name as cname from t1 where age = 12 or age = 13;

3. 同样可以使用in和between and 查询

select name from t1 where id in(1,2,3);
select name from t1 where id not in (1,45);
select name from t1 where id between 3 and 23;
-- 可以用in实现对项目的嵌套查询
select name from t1 where id in (select id from t2);-- 只能写一列

4. 使用 distinct删去重复的项

假设有表内容如下

 

 正常查询结果

使用

select distinct teacher_id from course

 结果如下

 

其他

通配符 用来查找项目中部分包含查询内容的项

select name from t1 where id like '%12%'; -- 表示前后任意位置,范围更宽泛
select name from t1 where id like '12_'; -- 表示后面一位,范围更窄

分页(limit offset区别)可以使用limit和offset使数据分页显示

select * from t1 limit 1;
select * from t1 limit m,n;
-- 其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条
select * from t1 limit m offset n;
-- 这里n是指记录开始的index,从0开始,表示第一条记录
m是指从第n+1条开始,取m条 和limit刚好相反

这里参考于:

MySQL中limit的用法 - 动力节点 (bjpowernode.com)http://www.bjpowernode.com/tutorial_mysql/423.html

排序 使用desc 和 asc 让数据从大到小、从小到大排列

select * from t1 order by id desc; -- 从大到小
select * from t1 order by id asc; -- 从小到大

也可以和limit 混用

select * from t1 order by id desc limit 10; 

还可以根据多个列顺序排列

select * from t1 order by id desc,age asc; -- 先按照id排序,重复的话再按照age排列

分组(max min count sum avg的使用)

引入:假设这里有一个表t1:

里面记录了各个人的名字和年龄,现在我们想知道11岁的有几个人

 可以进行如下操作:

select count(id),age from tb11 group by age;

得到的结果如下

这样,我们可以知道11岁的有两个人

此外,还可以通过如下操作从其他方式获取信息

 select max(id),age from tb11 group by age; -- 显示各个年龄ID的最大值
 select min(id),age from tb11 group by age; -- 显示各个年龄ID的最小值
 select sum(id),age from tb11 group by age; -- 显示各个年龄ID的和
 select avg(id),age from tb11 group by age; -- 显示各个年龄ID的均值

以上操作同样可以一并完成

select count(id),max(id), age from tb11 group by age;

***我们可以对如上操作后得到的表进行查找,但是由于使用了max()等聚合函数,查找时where是不能使用的,必须替换成having

select count(id),max(id), age from tb11 group by age having count(id) > 2;

连表操作

在查询表的时候可以把两个表左右链接更清楚地展示信息

继续举我们3.5中的例子

MySQL学习笔记3.5https://mp.csdn.net/mp_blog/creation/editor/123235115虽然我们建立了外键,但是除了我们自己别人是不能直接看到外键的

但是展示表的时候,如果我们使用join指令

 select * from t5 left join t3 on t5.uid = t3.id left join t4 on t5.hostid = t4.id;

就可以把t3和t4的内容和t5贴合在一起展示,如图:

 应用之前的where语句可以达到同样的效果:

 select * from t5,t3 where t5.uid = t3.id;

除了left join,还有right join可供使用

select * from t3 right join t5 on t3.id = t5.uid;

结果如下 (注意和left join 相反)

只需记忆left join即可 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值