前言
这次我们介绍对表内数据的增删改操作,首先我们先建立两个表stuinfo、teachinfo,表的格式如下:
下面在这这两个表的基础上进行增删查操作。
插入语句
插入方式一
语法
:
i
n
s
e
r
t
i
n
t
o
表
名
(
列
名
,
.
.
.
)
v
a
l
u
e
s
(
值
1
,
.
.
.
)
;
\color{Violet}insert \ into \ 表名(列名,...) \ values(值1,...);
insert into 表名(列名,...) values(值1,...);
注意
:
∙ \bullet ∙ 插入的值的类型要与列的类型一致或者兼容
∙ \bullet ∙ 不可以为null的列一定要插入值,可以为null的列当不想写入值时,可以写入null,或者直接不写对应的列名
∙ \bullet ∙ 列的顺序可以调换,但是要与值一一对应
∙ \bullet ∙ 可以省略列名,默认所有列,而且列的顺序与表中列的顺序相同
示例一
:学生stuinfo表插入数据
示例二
:老师teachinfo表插入数据
插入方式二
语法
:
i
n
s
e
r
t
i
n
t
o
表
名
s
e
t
列
名
=
值
,
列
名
=
值
.
.
.
\color{Violet}insert \ into \ 表名 \ set \ 列名=值,列名=值...
insert into 表名 set 列名=值,列名=值...
示例一
:学生stuinfo表插入数据
示例二
:老师teachinfo表插入数据
对比
类型 | 一次插入行数 | 子查询 |
---|---|---|
方式一 | 支持插入多行 | 支持子查询 |
方式二 | 一次插入一行 | 不支持子查询 |
修改语句
修改单表的记录
语法
:
u
p
d
a
t
e
表
名
s
e
t
列
=
新
值
,
列
=
新
值
,
.
.
.
w
h
e
r
e
筛
选
条
件
\color{Violet}update \ 表名 \ set \ 列=新值,列=新值,... \ where 筛选条件
update 表名 set 列=新值,列=新值,... where筛选条件
示例一
:修改id=1学生的老师为1号
修改多表的记录
sql92语法
:
u
p
d
a
t
e
表
1
别
名
,
表
2
别
名
s
e
t
列
=
值
,
.
.
.
w
h
e
r
e
连
接
条
件
a
n
d
筛
选
条
件
\color{Violet}update \ 表1 \ 别名,表2 \ 别名 \ set \ 列=值,... \ where \ 连接条件 \ and \ 筛选条件
update 表1 别名,表2 别名 set 列=值,... where 连接条件 and 筛选条件
sql99语法
:
u
p
d
a
t
e
表
1
别
名
i
n
n
e
r
∣
l
e
f
t
∣
r
i
g
h
t
j
o
i
n
表
2
别
名
o
n
连
接
条
件
s
e
t
列
=
值
,
.
.
.
w
h
e
r
e
筛
选
条
件
\color{Violet}update \ 表1 \ 别名 \ inner|left|right \ join \ 表2 \ 别名 \ on \ 连接条件 \ set \ 列=值,... \ where \ 筛选条件
update 表1 别名 inner∣left∣right join 表2 别名 on 连接条件 set 列=值,... where 筛选条件
示例一
:sql99语法,将id=1老师的学生年龄改为16
删除语句
方式一:delete
单表删除语法
:
d
e
l
e
t
e
f
r
o
m
表
名
w
h
e
r
e
筛
选
条
件
;
\color{Violet} delete \ from \ 表名 \ where \ 筛选条件;
delete from 表名 where 筛选条件;
示例一
:删除id=2的学生信息
多表删除语法
sql92语法
:
d
e
l
e
t
e
表
1
别
名
,
表
2
别
名
(
需
要
删
除
哪
个
表
的
连
接
内
容
就
输
入
哪
个
表
的
别
名
)
f
r
o
m
表
1
别
名
,
表
2
别
名
w
h
e
r
e
连
接
条
件
a
n
d
筛
选
条
件
\color{Violet}delete \ 表1别名,表2别名(需要删除哪个表的连接内容就输入哪个表的别名) \ from \ 表1 \ 别名,表2 \ 别名 \ where \ 连接条件 \ and \ 筛选条件
delete 表1别名,表2别名(需要删除哪个表的连接内容就输入哪个表的别名) from 表1 别名,表2 别名 where 连接条件 and 筛选条件
sql99语法
:
d
e
l
e
t
e
表
1
别
名
,
表
2
别
名
(
需
要
删
除
哪
个
表
的
连
接
内
容
就
输
入
哪
个
表
的
别
名
)
f
r
o
m
表
1
别
名
i
n
n
e
r
∣
l
e
f
t
∣
r
i
g
h
t
j
o
i
n
表
2
别
名
o
n
连
接
条
件
w
h
e
r
e
筛
选
条
件
\color{Violet}delete \ 表1别名,表2别名(需要删除哪个表的连接内容就输入哪个表的别名) \ from \ 表1 \ 别名 \ inner|left|right \ join \ 表2 \ 别名 \ on \ 连接条件 \ where \ 筛选条件
delete 表1别名,表2别名(需要删除哪个表的连接内容就输入哪个表的别名) from 表1 别名 inner∣left∣right join 表2 别名 on 连接条件 where 筛选条件
方式二:truncate(清空数据)
语法
:
t
r
u
n
c
a
t
e
t
a
b
l
e
表
名
;
\color{Violet}truncate \ table \ 表名;
truncate table 表名;
比较
类型 | 筛选条件 | 效率 | 自增长列 | 返回值 | 回滚 |
---|---|---|---|---|---|
方式一 | 可以加where | 相对较低 | 自增长列值从断点开始 | 有返回值 | 可以回滚 |
方式二 | 不可以加where | 相对较高 | 自增长列值从1开始 | 无返回值 | 不能回滚 |