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);