mysql修改课号_第三节课 mySQL之增删改查

本文详细介绍了MySQL数据库中的增(insert)、删(update)、改(update)、查(select)操作。包括全量插入、指定列插入、批量插入、更新指定列、删除记录以及查询语法,如使用where过滤条件、order by进行排序等。
摘要由CSDN通过智能技术生成

MYSQL之增删改

一、增---insert

1.全量插入,插入的时候必须写入所有的列名并保持顺序

语法 insert into 表名 values(字段值1,字段值2,。。。。字段值n)

举例:新建查询表,insert into tb_userinfo这个表

INSERT into tb_userinfo values(2,'13088884444','1234',0,'China');

68f29a78f634c5c6d12a6405f76a72dc.png

2.如果要插入的时可以为空的列,可以使用null插入空值。

在tb_userinfo表查看设计表,sex,address是可以为空值,插入null

insert into tb_userinfo values(3,'13088881111','125',null,null);

53c58269c27c46c54dc2756079e9f1d7.png

3.insert指定列名 ------必须要保持顺序,按照需要插入的列名额顺序插入

指定要插入的列,可以不按照表的顺序,例如:

insert into tb_userinfo(`mobilephone`,`password`,`id`) values('13088886699','127',5);

只要指定列跟后面的插入数值保持一致顺序就ok.

缺点:插入的列多了,容易混淆。

insert into tb_userinfo(`id`,`mobilephone`,`password`) values(4,'13088886666','126');

eb58d34677ff8d4e0f658acb269903fe.png

4.批量插入

insert into tb_userinfo values(5,'13088884441','1234',0,'China'),

(6,'13088884442','1234',0,'China'),

(7,'13088884443','1234',0,'China');

142a9d915feca24d4072766e054174b5.png

注:如果批量插入时,id时自增长的,可以直接传null

在设计表中将id设置为【自动增长】---->【保存】,然后批量插入时,id传null

insert into tb_userinfo values(null,'13088884445','1234',0,'China'),

(null,'13088884446','1234',0,'China'),

(null,'13088884447','1234',0,'China');

eac6edfa2ffb1674a36122f141de00e4.png

3a97937b6df710b3fc153a254aae1001.png

总结:一般使用不指定列的方式插入。

二、修改--update

语法:update 表名 set 字段1=新值1,字段2=新值2... where  条件

1.没有where条件的-----危险,用之慎重:会把全表的数据进行修改

update tb_userinfo set `password` = '000';

2.增加where过滤条件

一般update后面的过滤条件按where跟主键,主键的唯一性(不是必须跟主键)

update tb_userinfo set `password` = '999',sex = '1' where id=2;

下面举例不是跟主键约束

update tb_userinfo set `password` = '999',sex = '1' where mobilephone='13088884443';

b6239125864f4d4c8a5178af1526fb21.png

3.update加过滤条件and-----and,且,所有的过滤条件同时成立

update tb_userinfo set address='korea' where `password` = '999'and sex = '1';

4.update加过滤条件or---只要符合一个就可以修改成功

update tb_userinfo set address='USA' where `password` = '000' or sex = '1' or address = 'China';

三、删除---drop、delete

(一)删库跑路之drop------一般不会用到

删除数据库,删除表

drop databasekk;drop databasepractise1;drop table tb_user;

(二)、删除delete

1.不加约束条件where

删除一行数据,跟update类似,不加约束条件where,会删除全部数据,----危险,慎用!!

delete from tb_userinfo;

2.加约束条件where

delete from tb_userinfo where id = 1;

四、查

(一)、单表查询

e567c9aeb23ff85fc074a01477e21816.png

1、通配符 *,查询所有的字段

2、过滤条件where

and /or /and + or

3、表取别名 :表名 as 别名       ------------as可以省略

4、不等于的两种方式 !=   、<>

##单表查询知识点--通配符*,可以直接查询这个表

select * frommember;select id,`name` frommember;--过滤条件

select * from member where `address` = '北京';--多个条件 and 并且

select * from member where `address` = '北京' and `sex` = 1;--多表可以取别名,单个表就没表取别名了,as可以省略

select * from member as a where a.address= '澳门';select * from member a where a.address= '澳门';--多个条件 or 或者

select * from member where `address`='北京' or `name`='王五';--多个条件 and 和 or 同时存在

select * from member where `address`='北京' and `name`='王五' or `sex` = 0;--不等于 != <>两种方式

select * from member where `sex` != 1;select * from member where `address` <> '北京';

(二)、多表查询

1. 2张表的查询

1f043ed2f0fc4dcb0b25c78107e04bec.png

3098166c4810da9a268677b51c50eee1.png

##多表查询select * from member a,info b where a.id = b.memberID;

如果不加where过滤条件,就是member表的4条信息,info表的7条信息的笛卡儿积。一共28条。

加上where过滤条件就是在这28条数据种进行过滤。

863cc857f3364e63dcaa96ae86a0ddb7.png

增加where过滤条件,在上面的结果种筛选出address是北京的所有信息。

select * from member a,info b where a.id = b.memberID and `address`='北京';

2.多张表的多对多的关系

8a1fa1fbfd480ed137a15588cbf55c05.png

上面查询老师对应教的班级:

select * from S,SC,C where S.S# =SC.S# and SC.C# = C.C#

3.连接查询

460c96a583563130179bc8f662a352f3.png

(1)内连接----INNER JOIN

这个:select * from member a,info b where a.id = b.memberID;----->是隐性内连接

改成INNER JOIN:两个表之间加上INNER JOIN ,where 改为on

--内连接INNER JOIN

select * from member a INNER JOIN info b on a.id = b.memberID and `address`='北京';

(2) 左外连接-----LEFT JOIN

左外连接以左表为主表,主表的所有数据都会显示,右表为从表,从表只有匹配的数据才会显示

语法:select 字段1,字段2  from 表1 LEFT JOIN 表2 on 条件

①在所有字段的基础上查询(*)

--左外连接

select * from member a LEFT JOIN info b on a.id =b.memberID and `address` = '北京';

结果显示:主表的数据全部显示出来

fc5fc9d3ca07add59eddd80531e70474.png

②部分指定字段的基础上查询

select a.id,a.name,a.address,b.memberID,b.id from member a LEFT JOIN info b on a.id =b.memberID and `address` = '北京';

结果显示:

12cc5a2228412afeef893415dd4d932d.png

(3) 右外连接-----RIGHT JOIN

与左连接相反,右外连接以坐表为主表,主表的所有数据都会显示,左表为从表,从表只有匹配的数据才会显示

--右外连接

select a.id,a.name,a.address,b.memberID,b.id from member a RIGHT JOIN info b on a.id =b.memberID and `address` = '北京';

结果:右表数据全部显示

fe6bba39330b2a03a69578b1aaf3aa67.png

总结:左外连接、右外连接

实际使用,一般会用左外连接就可以了,使用右外连接时,调换左右表的位置即可。

五、查询结果排序----- order by 字段 asc/desc

单表、多表都可以进行排序

1.升序asc,默认的排序就是升序,asc可以不写

--排序 默认时asc,可以不写,desc表示降序

select * from member a LEFT JOIN info b on a.id =b.memberID and `address` = '北京' order by a.id asc;

b8868cc4eacef49fc10e8d29499d19b9.png

2.降序 desc

可以加几个排序要求

select * from member a LEFT JOIN info b on a.id =b.memberID and `address` = '北京' order by a.id asc,b.id desc;

按照前后顺序:a.id升序排序完成,有相同序号的,会依据b.id降序(a.id排序的优先级在前面)

2505dc71a753e73b2b4835f4328786d4.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值