1 #DML语言 2 /* 3 数据操作语言 4 插入:insert 5 修改:update 6 删除:delete 7 */ 8 9 #一、插入语句 10 #方式一: 11 /* 12 语法: 13 insert into 表名(列名,...) values(值1,...); 14 15 */ 16 SELECT * FROM beauty; 17 #1.插入的值的类型要与列的类型一致或兼容 18 INSERT INTO beauty (id,NAME,sex,borndate,phone,photo,boyfriend_id) 19 VALUES(13,'唐艺昕','女','1990-04-23','18988888888',NULL,2); 20 21 #2.不可以为null的列必须插入值,可以为null的列如何插入值? 22 #方式一: 23 INSERT INTO beauty (id,NAME,sex,borndate,phone,photo,boyfriend_id) 24 VALUES(13,'唐艺昕','女','1990-04-23','18988888888',NULL,2); 25 #方式二: 26 INSERT INTO beauty (id,NAME,sex,phone) 27 VALUES(15,'娜扎','女','18988888888'); 28 29 #3.列的顺序可以调换 30 INSERT INTO beauty(NAME,sex,id,phone) 31 VALUES('蒋欣','女',16,'110'); 32 33 #4.列数和值的个数必须一致 34 #5.可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致 35 INSERT INTO beauty VALUES(18,'张飞','男',NULL,'119',NULL,NULL); 36 37 #方式二: 38 /* 39 语法: 40 insert into 表名 41 set 列名=值,列名=值,... 42 */ 43 44 INSERT INTO beauty SET id=19,NAME='刘涛',phone='999'; 45 46 #两种方式大PK 47 #1.方式一支持插入多行 48 INSERT INTO beauty 49 VALUES (23,'唐艺昕1','女','1990-04-23','18988888888',NULL,2), 50 (24,'唐艺昕2','女','1990-04-23','18988888888',NULL,2), 51 (25,'唐艺昕3','女','1990-04-23','18988888888',NULL,2); 52 #2.方式一支持子查询,方式二不支持 53 INSERT INTO beauty(id,NAME,phone) 54 SELECT 26,'宋茜','11809866'; 55 56 INSERT INTO beauty(id,NAME,phone) 57 SELECT id,boyName,'1234567' 58 FROM boys WHERE id<3; 59 60 #二、修改语句 61 /* 62 1.修改单表的记录(√) 63 语法: 64 update 表名 set 列=新值,列=新值,... where 筛选条件; 65 66 2.修改多表的记录【补充】 67 语法: 68 sql92语法: 69 update 表1 别名,表2 别名 70 set 列=值,... 71 where 连接条件 72 and 筛选条件; 73 74 sql99语法: 75 update 表1 别名 76 inner|left|right join 表2 别名 77 on 连接条件 78 set 列=值,... 79 where 筛选条件; 80 */ 81 82 #1.修改单表的记录 83 #案例1:修改beauty表中姓唐的女神的电话为13899889988 84 SELECT * FROM beauty; 85 UPDATE beauty SET phone='13899889988' 86 WHERE NAME LIKE '唐%'; 87 #案例2:修改boys表中id号为2的名称为张飞,魅力值10 88 UPDATE boys SET boyName='张飞',userCp='10' 89 WHERE id='2'; 90 SELECT * FROM boys; 91 92 #2.修改多表的记录 93 #案例1:修改张无忌的女朋友的手机号为114 94 UPDATE boys bo 95 INNER JOIN beauty b ON bo.id=b.boyfriend_id 96 SET b.phone='114' 97 WHERE bo.boyName='张无忌'; 98 #案例2:修改没有男朋友的女神的男朋友编号都为2号 99 UPDATE boys bo 100 RIGHT JOIN beauty b ON bo.id=b.boyfriend_id 101 SET b.boyfriend_id='2' 102 WHERE bo.id IS NULL; 103 104 #三、删除语句 105 /* 106 方式一:delete 107 语法: 108 109 1.单表的删除(√) 110 delete from 表名 where 筛选条件 111 2.多表的删除【补充】 112 sql92语法: 113 delete 表1的别名,表2的别名 114 from 表1 别名,表2 别名 115 where 连接条件 116 and 筛选条件; 117 118 sql99语法: 119 delete 表1的别名,表2的别名 120 from 表1 别名 121 inner|left|right join 表2 别名 on 连接条件 122 where 筛选条件; 123 124 方式二:truncate 125 语法:truncate table 表名; 126 */ 127 128 #方式一:delete 129 #1.单表的删除 130 #案例1:删除手机号以9结尾的女神信息 131 DELETE FROM beauty 132 WHERE phone LIKE '%9'; 133 SELECT * FROM beauty; 134 135 #2.多表的删除 136 #案例:删除张无忌的女朋友的信息 137 DELETE b 138 FROM beauty b INNER JOIN boys bo ON b.boyfriend_id=bo.id 139 WHERE bo.boyName='张无忌'; 140 SELECT * FROM beauty; 141 #案例:删除黄晓明的信息以及他女朋友的信息 142 DELETE b,bo 143 FROM beauty b INNER JOIN boys bo ON b.boyfriend_id=bo.id 144 WHERE bo.boyName='黄晓明'; 145 SELECT * FROM beauty; 146 SELECT * FROM boys; 147 148 #方式二:truncate语句 149 #案例:将魅力值>100的男神信息删除 150 TRUNCATE TABLE boys; 151 152 #delete PK truncate【面试题√】 153 /* 154 1.delete可以加where条件,truncate不能加 155 2.truncate删除,效率高一丢丢 156 3.假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值 157 从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。 158 4.truncate删除没有返回值,delete删除有返回值 159 5.truncate删除不能回滚,delete删除可以回滚。 160 */ 161 162 SELECT * FROM boys; 163 DELETE FROM boys; 164 TRUNCATE boys; 165 INSERT INTO boys(boyName,userCP) 166 VALUES('张飞',100),('刘备',100),('关云长',100);