mysql学习笔记

insert

一条信息插入

INSERT INTO 表名(字段名1,字段名2,...) VALUES (1,2,...);

多条信息插入

INSERT INTO 表名 (字段名1,字段名2,...) VALUES (1,2,),(1,2,),...;

update

选择更新(满足条件就是where后面的值)

UPDATE 表名 SET 字段名1=1,字段名2=‘字符串’,字段名3=数字.... WHERE  字段名4=4;

全部更新(无条件更新)

update 表名 set 字段名1=1;

delete

选择条件删除(满足的全删)

DELETE FROM 表名 WHERE 字段1=1;

清空表(不加条件)

DELETE FROM 表名

select

查询表的全部字段信息

select * from 表名;

查询表的内容,where作满足条件,( 字段 关系运算符 数字或字符串)

select * from 表名 where 字段>=5;
select * from 表名 where 字段='字符串';

查询表的指定字段信息

select 字段1,字段2... from 表名;

查询表的指定字段的时候添加临时信息数据(这样可以添加临时值)

select 字段1,字段2,'字符串',... from 表名;

查询表的指定字段的时候还可以对所查询字段作临时修改(备注字段2必须int类型,如果是其他类型返回字段结果全为空)

 select 字段1,字段2+数字 from 表名;

查询表的字段信息(distinct 只对字段1起防重复作用),也就是说字段1的第1、2行一样,只会显示第一行内容。

select distinct 字段1,字段2 from 表名;

基础函数使用

统计行数

select count(*) from 表名;

选出max值(字段1一般为int类型,若为字符型数字也会成功返回值最大值,但字符型数字中含有字母的话也能返回,但不一定是最大值)

select max(字段1) from 表名;

同理选出min值

select 字段1,min(字段2) from 表名;

统计该字段所有行之和sum(若为字符型也能统计相加,但字符型会自动忽略含有字母的行)

select sum(字段1) from 表名;

算出平均值avg(字段1),是sum(字段1)除count(*)的值,不过最好要int类型

select avg(字段1) from 表名;

…还有许多函数,就不一一举例说明了,要用的时候查查就知道了

关键字查询

1、IN关键字查询

查询表的内容,where作满足条件, 等于 字符串1或字符串2条件显示

select * from 表名 where 字段1 in ('字符串1','字符串2');

查询表的内容,返回除 等于字符串1外的 所有内容

select * from 表名 where 字段1 not in ('字符串1');

2、BETWEEN AND关键字查询

查询表中字段1满足0到20之间的数据,但不包括0和20

select * from 表名 where 字段1 between 0 and 20;

3、null查询(空值查询)

查询表中字段1不为null的数据

select * from 表名 where 字段1 is not null;

4、AND关键字查询

select * from 表名 where 字段1 >15 and 字段2 ='string';

5、OR关键字查询

select * from 表名 where 字段1 >= 5 or 字段2='string';

6、LIKE关键字查询

精准查询

select * from 表名 where 字段1 like 'string';

模糊查询 ("%"通配符)
字段1中(含有string)

select * from 表名 where 字段1 like '%string%';

字段1中(开头为string)

select * from 表名 where 字段1 like 'string%';

字段1中(结尾为string)

select * from 表名 where 字段1 like '%string';

含("_"通配符)

select * from 表名 where 字段1 like 's_sl';

"_"通配符是单个字符匹配查询,如果要多个字符需要多个该通配符,对字符串中的字符个数和位置一一匹配

LIMIT限制查询数量

select * from 表名 (条件) limit 数量;

GROUP BY进行分组查询

select 字段1sum(字段2) from 表名  GROUP BY 字段1;

这种分表查询一般用于字段1重复,需要字段1对应的字段2总数
eg:
新建demo_db表
在这里插入图片描述

然后执行分组查询语句:

select user_name,sum(price) from demo_db  GROUP BY user_name;

返回结果:
在这里插入图片描述

可以看出将user_name字段相同名称的合并并计算出对应price字段的和。
也可以在这语句的基础上添加条件再查询:

select user_name,sum(price) from demo_db  GROUP BY user_name having sum(price)>=500;

就是在上面结果下显示出price总合大于等于500的数据了。

ORDER BY对查询结果排序

order by 有asc升序和desc降序2种排序

select * from 表名 order by 字段1 ;

如果没指定排序方式order by 默认是按照asc升序方式排序的,
下面是指定的方式:

select * from 表名 order by 字段1 desc;

别名设置

1、改表名

select * from 原表名 as 改后表名;

这操作并不能使得数据库中的表名更改,只是在显示查询结果的时候显示改后的表名
2、改字段名

select 字段1 as '改后名',字段2 from 表名;

显示结果是让字段显示 改后名、字段2

表的关联关系

表的关系大致分3种:
1、一对一
2、多对多
3、多对一

关联查询(带比较运输符的子查询):

select * from1 where1字段1 比较运算符 (select2字段2 from2 where2字段3='字符串');

简单理解就是拿表2的查询结果当条件查询表1

关联表中数据的删除:
当表1和表2是多对1的关系的时候,不能直接删除表2中的数据,需要先删除该数据于表1有关系的数据,再删除表2的数据。

delete from1 where1字段1=(select2字段2 from2 where2字段3='字符串');
delete from2 where2字段3='字符串';

多表连接查询

1、交叉连接查询

select * from1  cross join2;

返回结果是表1和表2的笛卡尔积,( 表1{a,b},表2{1,2},笛卡尔积结果{(a,1),(a,2),(b,1),(b,2) }返回4行结果。。。。。)

2、内连接查询

select1.字段1,1.字段2, ... from1 [inner] join2 on1.关系字段=2.关系字段

先内连接2表,on后面是2表要相等的字段,满足显示

3、外连接查询

select1.字段1,2.字段2, ... from1 left | right [outer] join2 on1.关系字段=2.关系字段 where 条件

查询所有数据的时候 select * from … 返回的默认规则
1、LEFT [OUTER] JOIN 左(外)连接:返回包括左表中的所有记录和右表中符合连接条件的记录。
2、RIGHT [OUTER] JOIN 右(外)连接:返回包括右表中的所有记录和左表中符合连接条件的记录。

备注:左(外)连接的结果包括LEFT JOIN子句中指定的左表的所有记录,以及所有满足连接条件的记录。如果左表的某条记录在右表中不存在则在右表中显示为空。
同理右(外)连接也是。

子查询

1、关联查询(带比较运输符的子查询):

select * from1 where1字段1 比较运算符 (select2字段2 from2 where2字段3='字符串');

2、EXISTS关键字的子查询

exitsts(ture)

select * from1 where  exists (select2字段2 from2 where2字段3='字符串');

exists关键字后面的参数可以是任意一个子查询, 它不产生任何数据只返回true或false。当返回值为true时外层查询才会 执行。

3、ANY关键字的子查询

select * from1 where1字段 > any (select2字段 from2);

any关键字表示满足其中任意一个条件就返回一个结果作为外层查询条件。

4、ALL关键字的子查询

select * from1 where1字段 > all (select2字段 from2);

all关键字表示满足所有条件才结果作为外层查询条件。

总结

参考链接
Mysql学习
总结:
边学习,边思考,最后多动手,实践才是硬道理。。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值