增删改查
插入数据
为所有字段插入数据
语法格式:
insert [into] table_name [column_name1, column_name2, ...] value|values(value1, value2, ...);
insert
为插入数据用到的关键字;into
为可选项,与insert
搭配使用;column_name1
和column_name2
分别表示表中的字段名,表中的字段可写可不写;value
和values
二选一,后面跟要插入的字段的值;value1 value2
则分别表示对应字段的值。
注意:
- 为所有字段插入数据有两种方式:一是在sql语句中列出表中所有的字段;二是在sql语句中省略表中的字段。
- 使用第一种方式时,插入的数据必须与表中字段的位置、数据类型、个数保持一致。
- 使用第二种方式时,插入的数据顺序可以调整,只需要与所写语句中字段的位置一致,但数据类型和歌山还要保持一致。
代码如下:
create table stu(
id int primary key auto_increment,
name varchar(4) not null,
age int,
sex varchar(1) default'男',
email varchar(30) unique
);
# 插入数据
insert stu values(1, '张三', 18, '男', 'zhangsan@163.com');
insert stu(id, name, age, sex, email) values(1, '张三', 18, '男', 'zhangsan@163.com')
# 查看数据
select * from stu;
为指定字段插入数据
在实际开放中,有时设置了自动增加约束的字段和设置了默认值的字段不需要插入值,所以只需要为指定字段插入数据即可。
代码如下:
insert stu(name, age, email) values('李四', 20, 'lisi@qq.com');
“set”关键字插入数据
语法格式:
insert [into] table_name set column_name1 = value1[, column_name2 = value2, ...];
在set关键字后面使用 column_name = value
这种键值对的方式指定字段的值,每队之间用英文逗号隔开。
如果要为所有字段插入数据,则需要列举出所有字段;如果要为指定字段插入数据,则只需要列举出部分的字段即可。
所有字段
代码如下:
insert stu set id = 3, name = '王五', age = 21, sex = '女', email = 'wangwu@qq.com';
指定字段:
代码如下:
insert stu set name = '赵六', age = 10, email = 'zhaoliu@163.com';
同时插入多条数据
语法格式:
insert [into] table_name [(column_name1, column_name2, ...)]
value|values(value11, value21, ...),
(value12, value22, ...),
... ;
为所有字段插入多条数据
insert stu
values(5, '孙七', 19, '女', 'sunqi@163.com'),
(6, '周八', 18, '男', 'zhouba@qq.com');
为指定字段插入多条数据
insert stu(name, age, email)
values('武九', 18, 'wujiu@qq.com'),
('宋十', 20, 'songshi@163.com');
插入查询结果
可以通过 insert
语句将从一张表中查询到的结果直接插入到另一张表中,间接地实现了数据的复制功能。
语法格式:
insert [into] table_name1(column_list1)
select column_list2 from table_name2 where where_condition;
table_name1
为插入新数据的表名;column_list1
为字段列表,表示要为哪些字段插入值;column_list2
表示要从表中查询哪些字段的值;table_name2
要查询的表,即要插入数据的来源;where where_condition
为where
子句, 用来指定查询条件;
代码如下:
insert new_stu(id, name, age, email)
select id, name, age, email from stu where sex = '女';
更新数据
更新指定数据
更新指定记录的前提是根据条件找到指定的记录,所有要结合使用 update
和 where
语句。
语法格式:
update table_name
set column_name1 = value1[, column_name2 = value2, ...]
where where_condition;
table_name
为要更新数据的表名;column_name1
为要更新的字段;value1
为要更新的数据;
代码如下:
update new_stu
set name = '张大大', email = 'zhangdada@163.com'
where name = '王五'
更新全部数据
语法格式:
update table_name set column_name1 = value1[, column_name2 = value2, ...];
代码如下:
update new_stu set age = 18;
删除数据
删除指定记录
语法格式:
delete from table_name where where_condition;
例如:
delete from stu where id > 5;
删除全部记录
语法格式:
delete from table_name;
例如:
delete from stu;
使用 truncate
语句删除数据
语法格式:
truncate [table] table_name;
例如:
truncate new_stu;
delete和truncate的区别
- delete 语句十数据操作语言,truncate 语句是数据定义语言;
- delete 是将表中所有记录一条一条删除直到删除完,而 truncate 则是保留了表的结构,重新创建了这个表,所有状态相当于新表;
- delete 可以回滚;
- 在 delete 操作删除表中记录后,再次向表中添加新的记录时,对于设置有自增约束字段的值会从删除前表中该字段的最大值+1开始自增;truncate 操作则会重新从1 开始自增。