Mysql插入语句

DML语言

  • 插入:insert
  • 修改:update
  • 删除:delete

一、插入语句

方式一

语法

insert into 表名(列名,....)
values(值1,...) 值要与列名对应

1.插入的值类型要与列的类型一致或兼容

insert into beauty(id,name,sex,borndate,phone,photo,boyfriend_id)
values(13,'肥清','女','1990-4-23','1112332','1',2)

2.不可以为null的列必须插入值,可以为null的列插入值的方法有两种

(1)直接在对应列加上null

(2)不显式的给它赋值,系统将默认给其赋值为null

3.列的顺序可以调换

4.列数和值的个数必须一致

5.可以省略列名,默认所有列。而且列的顺序和表种列的顺序是一致的

 

 

方式二

语法

insert into 表名
set 列名=值,列名=值,...

两种方法的区别

1.方式一可以插入多行,方式二不支持

insert into student
values(1,'张三','男'),
values(2,'李四','男');

2.方式一支持子查询,方式二不支持

insert into student
select 26,'王五';

这个会将王五插入到表里

3.在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使用如下的语句来实现:

insert into db1_name(field1,field2) select field1,field2 from db2_name

对于多个表,需要将多个表先连接起来在使用select插入

 

二、修改语句

1.修改单表的记录

语法:

update 表名
set 列 = 新值,....
where 筛选条件

修改beauty表中的姓唐的电话为12345678911

update beauty phone ='12345678911'
where name like '唐%'

2.修改多表的记录

sql92语法
update 表1 别名,表2 别名
set 列=值,....
where 连接条件
and 筛选条件


sql99语法
update 表1 别名,
inner|left|right join 表2 别名
on 连接条件
set 列=值
where 筛选条件

修改张无忌的女朋友的手机号为114

update boys bo
inner join beauty b on bo.id = b.boyfriend_id
set b.phone =114
where bo.boyName ='张无忌'

这样就会把beauty表里的张无忌的女朋友的手机号修改为114

 

修改没有男朋友的女神的男朋友编号都为2号

update beauty b 
left join boy bo
on b.boyfriend = bo.id
set b.boyfriend = 2
where b.boyfriend is null

三、删除语句

单表的删除

方式一、delete

语法:

delete from 表名 where 筛选条件

 

方式二、truncate

truncate table 表名;

不能加where条件,一删就全删了,就可以跑路了。

多表的删除

语法

delete 表一的别名,表二的别名//这里想两个都写的话,是两个表里的相关信息都进行删除
from 表一 别名 join 表二 别名 on连接条件
where 筛选条件

删除张无忌的女朋友的信息

delete b
from boy bo join beauty b on bo.id = b.boyfriend_id
where b.boyName ='张无忌';

删除黄晓明的信息以及他女朋友的信息

delete b,bo
from beauty b
inner join boy bo on b.boyfriend_id = bo.id
where bo.boyName = '黄晓明';

delete 和 truncate区别

1.delete支持where 但是truncate不支持

2.truncate删除,效率比较高

3.假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,

而truncate删除后,再插入数据,自增长列的值从1开始

这个是什么意思呢?
比如说,有一个学生表,

学号 姓名
1 张三
2 李四
NULL NULL

如果在表设置里勾选了学号自增,那么你在插入数据的时候,不需要注明学号,系统会自动给你将学号增1

那么,如果使用delete删除了上面这个表的话,在插入数据('王五')那么此时虽然表里只有一条数据,但是王五的学号是3

如果用的是truncate的话,插入的王五的号就是1

4.truncate删除没有返回值,而delete删除有返回值

5.truncate不能回滚,delete删除可以回滚

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章