MySQL的增删改查SQL语句

本文介绍了SQL中的基本数据操作,包括向表中插入数据、更新已有数据、删除数据以及单表和多表查询。详细讲解了各种查询技巧,如使用where、in、between、like等条件,以及聚合函数和分组查询。此外,还涵盖了内连接、外连接和子查询等复杂的查询方式。
摘要由CSDN通过智能技术生成

目录

1.插入数据

2.修改数据

3.删除数据

4.单表查询

5.多表查询


1.插入数据

注意:1,2,3例子用的表名是book_bak1,字段含义为:bno是编号的意思,bname是书名的意思,press是出版社的意思,price是价格的意思,author是作者的意思

1.不指明字段名:insert into 表名 values (值1,值2,等等)

例如:

insert into book_bak1 values('B10111','理想国','清华大学出版社',65,'小明');

注意:replace和insert有相同的作用,但replace更牛X一点,它不仅可以添加表里没有的数据,还能添加和表里主键或者唯一性约束相同的数据,它会替代之前的数据

 

2.指明字段名:insert into 表名 (字段名1,等等) values (值1,等等)

3.同时插入多条:insert into 表名 (字段名1,等等) values (值1,等等),(值1,等等),等等

例如:

insert into book_bak1 (`bno`,`bname`,`press`,`price`,`author`)
values
('B1114','天堂','清华大学出版社',65,'小刚'),
('B1115','活着','清华大学出版社',65,'小天'),
('B1116','平凡世界','清华大学出版社',100,'慢羊羊');

4.从另一个的数据插入目标表中:insert into 表名 select 列名 from 表名

注意:插入的字段和字段类型要与目标表一致

2.修改数据

update 表名 set 字段1=值1,字段2=值2,等等 where 条件表达式

注意:where后面加的是找到要改的数据地条件,可以理解为当什么什么则什么什么被改成什么什么

例如:

update book_bak1 
set bname='阿伟',price=9
where bno='B1110';

解释:当编号为B1110时将原有的书名和价格改为阿伟和9

3.删除数据

delete from 表名 where表达式

例如:

delete from book_bak1 
where bno='B10111';

还有直接清空表中数据的:truncate 表名


truncate book_bak1;

4.单表查询

注意:

  1. []是选择性的语句
  2. select *表示查询所有字段与列出所有字段效果一样
  3. 这次例子用的表名是book字段和1,2,3的例子一样

select的具体用法:

select 字段列 

from 表名

[where 表达式]

[group by 列名]

[having 表达式]

[order by 列名 [asc/desc]]

[limit 子句];

解释:

  1. where表达式上面有就是条件的筛选
  2. from是表示查的是哪个表
  3. group by是分组的意思,having与它一起用来条件筛选
  4. order by是排序 默认是asc是升序,desc是降序
  5. limit是限制查询的条数

1.普通带where的查询

例子:

select * from book
where press='机械工业出版社';

2.避免重复数据查询

distinct可以去除重复的查询记录,就是把查的重复的数据去除只保留一条

系统默认是all,就是全部列举出来

select distinct press from book;

3.为表和字段去别名关键字as

例如:查询book表中出版社,并把press换成出版社

select press as '出版社' from book;

注意:as可以省略

4.带运算符的查询

例如:查询价格大于30的所有书的所有信息

select * from book
where price>30;

5.带有in关键字的

用法:[not] in (元素1,元素2,等等)

就是满足数据在元素里面的意思

例如:查询价格是39,38,56的书的所有信息

select * from book
where price in (38,39,56);

6.带有between and的

就是某个数据值在什么与什么之间

例如:查询价格在40和60之间的书的所有信息

select * from book
where price between 40 and 60;

7.带有is null的

就是判断指定字段是否为空值

例子:查询价格不为空的所有书的信息

select * from book
where price is not null;

8.带有like的

注意:

  1. 介绍通配符%和_
  2. %和_都是可以代替东西的存在
  3. %可以代表任意长度的字符
  4. _只能代表一个字符

例子:查找作者为王姓的所有书的所有信息

select * from book
where author like '王%';

9.分组查询

语句是:select 字段1 from 表名 group by 字段2 [having表达式][with rollup]

意思是按照字段2分组查找字段1,having是限制条件,with rollup是上面的记录的总和

例如:查询表book中每个作者书的价格总和,并将所有价格进行汇总。

select author,SUM(price)from book
GROUP BY author
with rollup;

10.对查询结果排序

例子:查询书的所有信息按价格的降序排列

select * from book
order BY price 
desc;

11.查询结果数量限制

例子:10号的例子限制三条,意思就是查询价格最贵的三本书的所有信息

select * from book
order BY price 
desc
limit 3;

12.聚合函数

  • count 是用来统计记录的条数
  • sum是计算字段值的总和
  • AVG是用来计算字段值的平均值
  • max是查询字段的最大值
  • min是查询字段的最小值

注意:sum和AVG,max,min都遵守的规则:

  1. 如果给的行一列记录都为空值函数结果为空
  2. 如果有些值为空的话平均值不算他仅仅除以非空的数量
  3. 对呀AVG和sum如果中间结果为空则函数值为空

13.合并查询

关键字为:union

用法:一条select语句和另一台select之间用于连接

如:查询价格大于30或者机械工业出版社的书的作者和编号

select author,bno from book
where price>30
UNION
select author,bno from book
where press='机械工业出版社';

5.多表查询

注意:

  • 例子中用于与book表连接的是borrow表
  • borrow表的字段id就是id,bno是图书编号也是外键,rno是读者编号这里其实还有一张读者表没展示,borrowtime借书时间,backtime还书时间,latefree延迟费,damagefee 损坏费,oprator管理员编号。

一.内连接:

1.等值连接

关键字:inner join

例如:通过bno连接两个表,查询4条所有信息

SELECT *
from book inner join borrow 
on book.bno=borrow.bno
limit 4;

2.自然连接

关键字:nature join

例如:和1号一样的例子

select *
from book natural join borrow
limit 4;

3.不等值连接

关键字:inner join

例如:和之前例子一样

SELECT *
from book inner join borrow 
on book.bno!=borrow.bno
limit 4;

其实就把=换成!=

二.外连接查询

1.左外连接

关键字:left join

例子:与上面例子一样,不过左外连接的特性是,一左面表为主体如果右边表中没有对应的信息就填空,上面例子连接,如果没有对应就不会被查到。

select *
from book LEFT JOIN borrow
on book.bno=borrow.bno
limit 4;

2.右外连接

关键字:right join

例子:与左外连接相反

select *
from book RIGHT JOIN borrow
on book.bno=borrow.bno
limit 4;

三.子查询

1.带有in关键字的子查询

例如:查询book表中图书编号在borrow表中也有的书的名字

select bname
from book
where bno in(select bno from borrow);

2.带有exists关键字的子查询

例如:如果借书表中有编号为B11002的话就查询book表中所有的书的名字

select bname
from book
where exists (select * from borrow where bno='B11002');

3.带有any关键字的子查询

例如:查询book表中价格比borrow表中的某一个id值大的书的名字

select bname
from book
where price >any(select id from borrow);

4.带有all关键字的子查询

例如:查询book表中价格比borrow表中的所有id值大的书的名字

select bname
from book
where price >all(select id from borrow);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值