DML数据操作语言
数据的插入
关键词
insert
数据插入方式一(经典)
语法
insert into 表名 (列名,…)values(值1,…);
注意
根据类型对写入值的规定
int类型: 直接写数字
varchar/char类型:单引号引起来
日期类型:单引号引起来
-
插入的值的类型要与列的类型一致或兼容
insert inro beauty(id,name,sex,bornadate,phone,photo,boyfriend_id)values(13,'唐艺昕','女','1990-4-23','18088888888',null,2);
-
不可以为null的列必须插入值,可以为null的列如何插入值
方式一:对应列名赋值为null insert inro beauty(id,name,sex,bornadate,phone,photo,boyfriend_id)values(13,'唐艺昕','女','1990-4-23','18088888888',null,2); 方式二:列名和值都不写,那么未赋值的列名插入进去的数据为默认值 insert inro beauty(id,name,sex,phone)values(13,'唐艺昕','女','18088888888');
-
列的顺序是否可以调换
insert into beauty (name,sex,id,phone)values('蒋欣','女',12,'1560000000');
-
列数和值的个数必须一致
insert into beauty (name,sex,id,phone,boyfriend_id)values('关晓彤','女',17,'123456'); 报错: Column count doesn't match value count at row 1
-
可以省略列名,默认所有列,而且顺序和表中列的顺序是一致的
insert into beauty values(18,'张飞','男',null,'119',null,null);
数据插入方式二
语法
insert into 表名 set 列名=值,列名=值,…
insert into beauty set id=19,name='刘涛',phone='999';
方式一和方式二比较
-
方式一支持插入多行,方式二不支持
insert into girl values(90,'郑爽','女','1999-09-09','123456',null,2),(91,'李清照','女','1999-09-09','123456',null,2);
-
方式一支持子查询,方式二不支持
insert into girl(id,name,phone) select 26,'杨幂','123'; insert into beauty(id,name,phone) select id,boyname,'123'from boys where id<3;
数据的修改
关键词:update
修改单表的纪录
语法
update 表名 set 列=新值,列=新值…where 筛选条件;
执行顺序
update 表名 - where 筛选条件 - set 列=新值,列=新值…
案例
-
修改girl表中,姓‘杨’的女生电话更改为1230
update girl set phone = '1230' where name like '%杨%';
-
修改girl表中id为1的名称为小透明,boyfriendId为2
update girl set name = '小透明',boyfriendId = 2 where id = 1;
修改多表的记录(了解)
sql92语法
update 表1 别名,表2 别名 set 列 = 值,…where 连接条件 and 筛选条件
sql99语法
update 表1 别名 inner|left|right join 表2 别名 on 连接条件 set 列 = 值,… where 筛选条件
案例
-
修改胡歌的女朋友的手机号为114
update boy b inner join girl g on b.id = g.boyfriendId set g.phone = 114;
-
修改没有男朋友的女生的男朋友编号都为1号
update boy b right join girl g on b.id = g.boyfriendId set g.boyfriendId = 1 where b.id is null;