1
2
3
4
数据操作语言:
插入:insert
修改:update
删除:delete
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
插入语句
语法:insert into 表名(列名...) values(值1,...);

#方式一:
例1:
SELECT * FROM beauty;
INSER INTO beauty(id,NAME,sex,borndate,phone,girlfriend_name,girlfriend_id) 插入的值的类型要与列的类型一致或兼容
VALUES(22,'恒子',‘男’,'2000-12-22','17513077777','null','1'); 日期和字符串需要加单引号或双引号。

2:不可以为null的列必须插入值,可以为null的列如何插入值?
#方式一:
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(18,'贝尔摩德','女','1999-11-11','3333333333',NULL,7);

#方式二:
INSERT INTO beauty(id,NAME,sex,phone)
VALUES(15,'灰原哀','女','77777777777');

3:列的顺序是否可以调换
INSERT INTO beauty(NAME,sex,id,phone)
VALUES('步美','女',10,'777');

4:列数和值的个数必须一致
INSERT INTO beauty(NAME,sex,id,phone)
VALUES('世良','女',18,'111');

5:可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
INSERT INTO beauty
VALUES(18,'柯南','男',NULL,'110',NULL,NULL);

#方式二:
语法:
insert into 表名
set 列名=值,列名=值...;

方式一和方式二对比:
1:方式一支持插入多行,方式二不支持
INSERT INTO beauty
VALUES(16,'灰原哀','女','1999-7-7','8888888',NULL,1),
(17,'柯南','男','1990-7-7','8888888',NULL,2),
(18,'小兰','女','1990-7-7','8888888',NULL,1);

2:方式一支持子查询,方式二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 18,'秀一','99999999';

INSERT INTO beauty(id,NAME,phone)
SELECT id,boyname,'6666666'
FROM boys WHERE id<3;

修改语句:
1.修改单表的记录★
语法:
update 表名
set 列=新值,列=新值,...
where 筛选条件;

2.修改多表的记录【补充】
sql92语法:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件;

sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件;

修改单表的记录
例1:修改beauty表中姓玛的女神的电话为7777777
UPDATE beauty SET phone = '7777777'
WHERE NAME LIKE '玛%';

2:修改boys表中id号为2的名称为秀一,魅力值 100
UPDATE boys SET boyname='秀一',usercp=100
WHERE id=2;

3:修改多表的记录
修改柯南的女朋友的手机号为777
UPDATE boys bo
INNER JOIN beauty b ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='777',bo.`userCP`=1000
WHERE bo.`boyName`='柯南';

4:修改没有男朋友的女神的男朋友编号都为2号
UPDATE boys bo
RIGHT JOIN beauty b ON bo.`id`=b.`boyfriend_id`
SET b.`boyfriend_id`=2
WHERE bo.`id` IS NULL;

删除语句:
方式一:delete

1、单表的删除【★】
delete from 表名 where 筛选条件

2、多表的删除【补充】
sql92语法:
delete 表1的别名,表2的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;

sql99语法:
delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;

方式二:truncate
语法:truncate table 表名;

(delete)
例1:单表的删除
删除手机号以9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';
SELECT * FROM beauty;

2:多表的删除
删除秀一的女朋友的信息
DELETE b
FROM beauty b
INNER JOIN boys bo ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName`='秀一';

3:删除安室透的信息以及他女朋友的信息
DELETE b,bo
FROM beauty b
INNER JOIN boys bo ON b.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='安室透';

(truncate)
例1:将魅力值>100的男神信息删除
TRUNCATE TABLE boys;


【delete和truncate的区别:】

1.delete 可以加where 条件,truncate不能加。
2.truncate删除,效率高一丢丢。
3.假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate删除没有返回值,delete删除有返回值。
5.truncate删除不能回滚,delete删除可以回滚。