数据库MySQL--数据操作语言DML(插入、修改、删除)
例子文件:https://files-cdn.cnblogs.com/files/Vera-y/girls.zip
一、插入
方式一:
语法:
insert into 表名(列名,.....)
values( 值1,.....); # 注:字符型和日期型要加单引号,数值型不用加
插入语句要注意的项:
1.插入的值的类型要与列的类型一致或兼容
例:
INSERT INTO beauty(id,name,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'糖糖','女','1990-9-9','18791166667',NULL,4);
2.不可以为null的列必须插入值,可以为null的列如何插入值?
方式一:写着列名,值写为null
例1.
INSERT INTO beauty(id,name,sex,borndate,phone,photo,boyfriend_id)
VALUES(14,'糖心','女','1990-4-9','18791888847',NULL,4);
方式二:列名和值都不写
例2.
INSERT INTO beauty(id,name,sex,phone)
VALUES(15,'糖宝','女','18793230847');
3.列的顺序可以调换
例:
INSERT INTO beauty(name,id,sex,phone)
VALUES('娜扎',16,'女','18788230847');
4.列数和值的个数必须一致
5.可以省略列名,默认为所有列,且列的顺序和表中列的顺序一致
例:
INSERT INTO beauty
VALUES(18,'谢娜','女',null,'19929485048',null,null);
方式二:
语法:
insert into 表名
set 列名=值,列名=值,.....
例:
INSERT INTO beauty
SET id = 19,name = '容嬷嬷', phone='17764775087';
方式一和方式二的比较:
1.方式一支持插入多行,方式二不支持
例.
INSERT INTO beauty
VALUES(20,'贵妃','女','1990-2-2','19889479305',null,3),
(21,'皇后','女','1990-2-2','19889479305',null,4),
(22,'才人','女','1990-2-2','19889479305',null,5);
此处还可用union联合查询连接
INSERT INTO beauty
SELETE 20,'贵妃','女','1990-2-2','19889479305',null,3 UNION
SELETE 21,'皇后','女','1990-2-2','19889479305',null,4 UNION
SELETE 22,'才人','女','1990-2-2','19889479305',null,5;
2.方式一支持子查询,方式二不支持
例.
INSERT INTO beauty(id,name,phone) # 把查询到的值插入到beauty表里(列名和值一一对应)
SELECT 26,'宋某','19923493773'; # 这里可以用查询语句查询一个表里的值(查询到的是一个结果)(此处为一个常量)
二、修改
修改单表的记录
语法:
update 表名
set 列=新值,列=新值,.... # 注:字符型和日期型要加单引号,数值型不用加
where 筛选条件; # 和查询的筛选条件类似
例1.修改beauty表中姓糖的女神的电话为110
UPDATE beauty SET phone='110'
WHERE NAME LIKE '糖%';
例2.修改boys表中id为2的名称为张飞,魅力值为20
UPDATE boys SET boyName='张飞',userCP=20
WHERE id=2;
修改多表的记录
sql92语法:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件;
sql99语法:
update 表1 别名
[连接类型] join 表2 别名
on 连接条件
where 筛选条件;
例1.修改张无忌女朋友的手机号为114
UPDATE boys
INNER JOIN beauty
ON boys.id=beauty.boyfriend_id
SET beauty.phone='114'
WHERE boys.boyName='张无忌';
例2.修改没有男朋友的女神的男朋友编号为2号
UPDATE boys
RIGHT JOIN beauty
ON boys.id=beauty.boyfriend_id
SET beauty.boyfriend_id=2
WHERE beauty.boyfriend_id IS NULL;
三、删除
方式一:delete # 删除整列
1.单表的删除
语法:
delete from 表名 where 筛选条件;
例.删除手机号以9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';
2.多表的删除
语法:
sql92语法:
delete 要删除表的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;
sql99语法:
delete 要删除表的别名
from 表1 别名
[连接类型] join 表2 别名 on 连接条件
where 筛选条件;
例1.删除张无忌女朋友的信息
DELETE beauty
FROM beauty
INNER JOIN boys
ON beauty.boyfriend_id=boys.id
WHERE boys.boyName = '张无忌';
例2.删除男神id=2的信息以及他女朋友的信息
DELETE beauty,boys
FROM beauty
INNER JOIN boys
ON beauty.boyfriend_id=boys.id
WHERE boys.id = 2;
方式二:truncate (清空)(一删全删)
语法:truncate table 表名; # 删除整个表
注:delete 删除列后,再插入数据,自增长列的值从断点开始,truncate 删除后,再插入数据,自增长列的值从1开始
delete 删除后有返回值,truncate 删除后没有返回值
delete 删除可以回滚,truncate 删除不能回滚