Mysql学习笔记(013)-DML语言-增删改
增删改
1 #DML语言 2 /* 3 数据操作语言 4 插入:insert 5 修改:update 6 删除:delete 7 8 */ 9 10 #一、插入语句 11 /* 12 语法: 13 insert into 表名(列名,...) values(值,...) 14 15 16 17 18 19 */ 20 21 #1.插入的值的类型要与列的类型一致或兼容 22 INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id) 23 VALUES(13,'唐艺昕','女','1990-4-23','18988888888',NULL,2) 24 25 #2.不可以为null的列必须插入值,可以为null的列如何插入值 26 #方式一: 27 INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id) 28 VALUES(13,'唐艺昕','女','1990-4-23','18988888888',NULL,2) 29 30 #方式二: 31 32 INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id) 33 VALUES(15,'娜扎','女','1990-4-23','18988888888',9) 34 35 36 #3.列的顺序是否可以调换 37 INSERT INTO beauty(NAME,sex,id,phone) 38 VALUES('蒋欣','女',16,'110') 39 40 41 #4.列的个数和值的个数要一致 42 43 INSERT INTO beauty(NAME,sex,id,phone) 44 VALUES('关晓彤','女',17,'110') 45 46 #5.可以省略列名,默认所有列,而且顺序和表中的顺序是一致的 47 48 INSERT INTO beauty 49 VALUES(18,'张飞','男',NULL,'119',NULL,NULL) 50 51 #方式二: 52 /* 53 54 语法: 55 insert into 表名 56 set 列名=值,列名=值,... 57 */ 58 59 60 INSERT INTO beauty 61 SET id=19,NAME='刘涛',phone='999'; 62 63 64 #两种方式大pk 65 66 67 1、方式一支持插入多行,方式二不支持 68 69 INSERT INTO beauty 70 VALUES(23,'唐艺昕','女','1190-4-23','18988888888',NULL,2) 71 ,(24,'唐艺昕','女','1190-4-23','18988888888',NULL,2) 72 ,(25,'唐艺昕','女','1190-4-23','18988888888',NULL,2) 73 74 2、方式一支持子查询,方式二不支持 75 76 INSERT INTO beauty(id,NAME,phone) 77 SELECT 26,'宋茜','11809866' 78 79 INSERT INTO beauty(id,NAME,phone) 80 SELECT id,boyname,'11809866' 81 FROM boys WHERE id<3; 82 83 #二、修改语句 84 /* 85 86 1.修改单表中的记录☆ 87 88 语法: 89 update 表名 90 set 列=新值,列=新值,... 91 where 筛选条件; 92 93 2修改多表的记录【补充】 94 95 语法: 96 sql92语法 97 update 表1 别名,表2 别名 98 set 列=值2,... 99 where 连接条件 100 and 筛选条件; 101 102 sql99语法: 103 update 表1 别名 104 inner|left|right join 表2 别名 105 on 连接条件 106 set 列=值,... 107 筛选条件; 108 */ 109 110 111 #1.修改单表中的记录 112 #案例1:修改beauty表中姓唐的女神的电话号码为13899888899 113 114 UPDATE beauty SET phone ='13899888899' 115 WHERE NAME LIKE '唐%' 116 117 #案例2:修改boys表中id号为2的名称为张飞,魅力值10 118 UPDATE boys SET boyname='张飞',usercp=10 119 WHERE id =2; 120 121 122 123 #2.修改多表的记录 124 125 #案例 1;修改张无忌女朋友的手机号为114 126 127 UPDATE boys bo 128 INNER JOIN beauty b ON bo.`id`=b.`boyfriend_id` 129 SET b.`phone`='114' 130 WHERE bo.`boyName`='张无忌'; 131 132 133 134 #案例2:修改没有男朋友的女神的男朋友编号都为2号 135 136 UPDATE boys bo 137 RIGHT JOIN beauty b ON bo.`id`=b.`boyfriend_id` 138 SET b.`boyfriend_id`=2 139 WHERE b.id IS NULL; 140 141 SELECT * FROM boys; 142 143 144 #三、删除语句 145 /* 146 147 方式一:delete 148 语法: 149 150 1、单表的删除【☆】 151 delete from 表名 where 筛选条件 152 153 2、多表的删除【补充】 154 155 sql92语法 156 delete 表1的别名,表2的别名 157 from 表1 别名,表2 别名 158 where 连接条件 159 and 筛选条件; 160 161 sql99语法: 162 delete 表1的别名,表2的别名 163 from 表1 别名 164 inner|left|right join 表2 别名 on 连接条件 165 where 筛选条件; 166 167 168 169 170 方式二:truncate 171 语法:truncate table 表名; 172 173 */ 174 175 #方式一:delete 176 #1.单表的删除 177 #案例1:删除手机号以9结尾的女神信息 178 179 DELETE FROM beauty WHERE phone LIKE '%9'; 180 181 SELECT * FROM beauty; 182 183 #2.多表的删除 184 185 #案例:删除张无忌的女朋友的信息 186 187 DELETE b 188 FROM beauty b 189 INNER JOIN boys bo ON b.`boyfriend_id`=bo.`id` 190 WHERE bo.`boyName`='张无忌'; 191 192 #案例:删除黄晓明的信息以及他女朋友的信息 193 DELETE b,bo 194 FROM beauty b 195 INNER JOIN boys bo ON b.`boyfriend_id`=bo.`id` 196 WHERE bo.`boyName`='黄晓明'; 197 198 199 200 #方式二:truncate语句 201 202 #案例:将魅力值>100的男神信息删除 203 TRUNCATE TABLE boys WHERE userCP>100; 204 TRUNCATE TABLE boys;#效率比delete from要高,清空表格 205 206 207 208 #delete pk truncate【面试题☆】 209 210 211 /* 212 1. delete 可以加where 条件,truncate不能加 213 2.truncate删除,效率高一点 214 3.加入要删除的表中有自增长列,如果用delete删除后,再植入数据,自增长列的值从断点开始, 215 而truncate删除后,再植入数据列的值从1开始。 216 4.truncat删除没有返回值,而delete删除有返回值 217 218 5.truncat删除不能回滚,delete删除可以回滚 219 220 */ 221 222 SELECT * FROM boys; 223 224 DELETE FROM boys; 225 TRUNCATE TABLE boys; 226 INSERT INTO boys (boyName,userCP) 227 VALUES('张飞',100),('刘备',100),('关云长',100) 228 229 230
案例讲解
#1.运行以下脚本创建表my_employees USE myemployees; CREATE TABLE my_employees( id INT(10), First_name VARCHAR(10), Last_name VARCHAR(10), Userid VARCHAR(10), Salary DOUBLE(10,2) ); CREATE TABLE users( id INT, userid VARCHAR(10), department_id INT ); #2.显示my_employees表结构 DESC my_employees; #3.向my_employees表中插入下列数据 ID First_name Last_name UserID salary 1 patel Ralph Rpatel 895 2 Dancs Betty Bdancs 860 3 Biri Ben Bbiri 1100 4 Newman Chad Cnewman 750 5 Ropeburn Audery Aropebur 1550 INSERT INTO my_employees VALUES(1,'patel','Ralph','Rpatel',895), (2,'Dancs','Betty','Bdancs',860), (3,'Biri','Ben','Bbiri',1100), (4,'Newman','Chad','Cnewman',750), (5,'Ropeburn','Audery','Aropebur',1550); DELETE FROM my_employees; 方式二: INSERT INTO my_employees SELECT 1,'patel','Ralph','Rpatel',895 UNION SELECT 2,'Dancs','Betty','Bdancs',860 UNION SELECT 3,'Biri','Ben','Bbiri',1100 UNION SELECT 4,'Newman','Chad','Cnewman',750 UNION SELECT 5,'Ropeburn','Audery','Aropebur',1550; #4.向users表中插入数据 1 Rpatel 10 2 Bdancs 10 3 Bbiri 20 4 Cnewman 30 5 Aropebur 40 INSERT INTO users VALUES(1,'Rpatel',10), (2,'Bdancs',10), (3,'Bbiri',20); #5.将3号员工的Last_name修改为“drelxer” UPDATE myemployees SET last_name='drelxer' WHERE id=3; #6.将所有工资少于900的员工的工资修改为1000 UPDATE my_employees SET salary=1000 WHERE salary<900; #7.将userid为Bbiri的user表和my_employees表的记录全部删除 DELETE u,e FROM users u JOIN my_employees e ON u.`userid`=e.`Userid` WHERE u.`userid`='Bbiri'; #8.删除所有数据 DELETE FROM my_employees; DELETE FROM users; #9.检查所作的修正 SELECT * FROM employees; SELECT * FROM users; #10清空表my_employees TRUNCATE TABLE myemployees;
小结

浙公网安备 33010602011771号