插入、更新、删除数据
一、插入数据
插入数据使用"INSERT" 语句向表插入数据记录,插入数据有四种方式,即为所有字段插入数据、为指定字段输入数据、同时插入多条数据以及插入查询结果。
先创建一个表,方便下面举例:
create table student(
stu_id int(10) primary key key auto_increment, stu_name varchar(3) not null, stu_age int(2), stu_sex varchar(1) default '男'
);
1、为所有字段插入数据
'''
为所有字段插入数据有两种方式,一种是在SQL 语句中列出表中所有字段,第二种是在SQL语句中省略表中的字段
'''
#第一种方式:
insert [into] student(stu_id,stu_name,stu_age,stu_sex) values(1,'张三',18,'男')
# into 是可选项可以不写
#第二种方式
insert into student values(1,'张三',18,'男')
#查询表中所有的记录
select * from student;
2、为指定字段插入数据
insert into student (stu_name,stu_age,) values('李四',19);
'''
插入字段stu_name,stu_age,因为stu_id是自增字段stu_id 这个字段为2,stu_sex 是默认值字段,直接显示'男'。注意非空字段,插入时必须有值,否则会失败。
'''
3、用set 方式为字段插入数据
#为所有字段插入数据
insert into student set stu_id = 3,stu_name = '赵六',stu_age=20,stu_sex = '女';
#为指定字段插入数据
insert into student set stu_name= '孙七',stu_age=19;
4、同时插入多条数据
insert into student
values(6,'周八',19,'女'),
(7,'武九'20,'男');
5、插入查询结果
在MySQL中还可以通过INSERT 语句从一张表中查询到结果直接插入另一张表中,这样间接的实现了数据的复制功能。
instert into female_student(stu_id,stu_name,stu_age)
select stu_id,stu_name,stu_age from student where stu_sex ='女';
#此语句就是将表student中 stu_sex ='女' 的数据复制到新表 female_student中。
# 注意,旧表和新表中的数据类型和个数必须保持一致,否则会插入失败
二、更新数据
更新数据可以实现表中已存在数据的更新,即对已存在的数据的修改。
1、更新指定记录
更新指定记录的前提是根据条件找到指定的记录,使用 "UPDATE"和“WHERE”语句。
update student
set stu_name='张大大',stu_age = 30
where stu_name = '张三';
2、更新全部记录
update student set stu_age = 18;
#是将所有记录的“stu_age”字段的值更新为18。
三、删除数据
1、删除记录
删除指定的记录的前提是根据条件找到指定的记录,用“DELETE”和"WEHERE"语句。
delete from student where stu_id>5; #将stu_id大于5的删除。
2、删除全部记录
delete from student;#删除全部记录
3、使用TRUNCATE 删除数据
truncate student;
'''
它与delete from 都能删除全部记录,区别如下:
1) DELETE 为数据操作语言 DML;TRUNCATE 为数据定义语言 DDL。
(2) DELETE 操作是将表中所有记录一条一条删除直到删除完;TRUNCATE 操作则是保留了表的结构,重新创建了这个表,所有的状态都相当于新表。因此TRUNCATE 操作的效率更高。
(3) DELETE 操作可以回滚;TRUNCATE 操作会导致隐式提交,因此不能回滚。
(4) DELETE 操作执行成功后会返回已删除的行数(如删除 4 行记录,则会显示“Affectedrows:4”);截断操作不会返回已删除的行量,结果通是“Affected rows:0”。
(5) DELETE 操作删除表中记录后,再次向表中添加新记录时,对于设置有自增约束字段的值会从删除前表中该字段的最大值加 1 开始自增;TRUNCATE 操作则会重新从 1 开始自增。
'''