1. 插入数据
- 为所有字段插入数据
语法:insert [into] 表名[(字段名1,字段名2,字段名3,…)] values|value(值1,值2,值3…);
- 例如:创建一张表student(sno主键自增 sname非空 age sex 默认男 email 唯一);为student表所有字段插入数
- 注意:表后面可以加字段名也可以不加字段名,如果没有添加字段名则插入的值顺序要与表结构字段顺序相同
create table student(
sno int(8) primay key auto_increment
sname varchar(20) not null
age int(2),
sex varchar(1) default '男',
email varchar(30) unique
)
-- 为student表所有字段插入数据
insert into studetn(sno,sname,age,sex,email)
values(1,'张三',23,'男',zhangsan@qq.com)
-- 查询表中student的数据
select * from student
-- 表后面不写字段名,则插入的顺序与表结构要相同
insert into student values(2,'李四',18,'女',lisi@qq.com)
- 为指定字段插入数据
语法:insert [into] 表名(字段名1,字段名2,字段名3,…) values|value(值1,值2,值3…);
- 例如:给表student中sname和age插入数据
insert into student(sname, age) values('五五',19)
- 使用SET方式插入数据
语法:insert [into] 表名 set 字段名1=字段值[,字段名2=字段值2…];
- 例如:使用set方式给student表所有字段插入数据
insert into student set sno=4,sname='赵二',age=24,email='zhaoer@qq.com',sex='女'
-- 查询表中的数据
select * from student
-- 使用set方式给指定的字段插入数据
-- 例如使用set方式给student表中sname和age,email插入值
insert into student set sname='陈琦',age=40,email='chenqi@qq.com'
- 同时插入多条数据
语法:insert [into] 表名[(字段名1,字段名2,字段名3,…)] values|value(值1,值2,值3…),
(值1,值2,值3…),
…
- 例如给表student同时插入多条数据
- 给所有字段插入多条数据
- 给指定字段插入多条数据
-- a. 给所有字段插入多条数据
inset into student(sno,sname,age,sex,email)
vaules(6,'小红',38,'女','xiaohong@qq.com')
(7,'小强',22,'男','xiaoqiang@qq.com')
-- b. 给指定字段插入多条数据
-- 例如给student表中sname,age和email插入值
insert into student(sname,age,email) values('小花',23,'xiaohua@qq.com')
('小李',23,'xiaoliqq.com')
select * from student
- 插入查询结果
语法:insert [into] 表名(字段名1,字段名2…) select 字段名1,字段名2… from 表 where 条件
注意:插入表的字段和查询的字段个数和类型要保持一致
-
例如:将student表中的数据查询结果插入到t_student表
-
创建t_student表
-
使用插入查询结果插入数据
-
-- 将student表中的数据查询结果插入到t_student表
-- 1. 创建t_student表
create table t_student(
sno int(8) primary key auto_increment,
sname varchar(20) not null,
age int(2),
sex varchar(2) default '女',
email varchar(30) unique
)
-- 2. 使用插入查询结果插入数据
insert into t_student select * from student;
-- 查询t_student
select * from t_student;
2. 更新数据
- 更新指定数据
语法:update 表名 set 字段名1=值1 [,字段名2=值2…] where 条件
- 例如:将student表中姓名为“张三”的姓名修改为"张老大"
update student set sname='张老大' where sname='张三';
select * from student;
-
更新全部数据 (用的比较少)
语法:update 表名 set 字段名1=值1 [,字段名2=值2…
- 例如:将student表中年龄都修改为18
update student set age=18
3. 删除数据
-
删除指定数据
语法:delete from 表名 where 条件
- 例如:删除sno学号大于2的学生信息
select * from student;
delete from student where sno>2
-
删除全部数据
语法:delete from 表名
- 例如:删除学生表的全部数据
delete from student
select * from student
- truncate关键字删除数据
语法: truncate 表名
- 例如:删除t_student表中的全部数据
select * from student
truncate t_student
- truncate与delete删除全部记录的区别:
- delete是数据操纵语言DML ;而truncate是数据定义语言DDL
- delete删除数据是一条一条删除;
truncate删除数据是保留表结构,直接删除数据,删除后表的状态相当于新表;
truncate的效率比delete高 - delete删除数据,会显示删除行数;
truncate不会显示 - delete删除记录后,再次向表添加数据,自增的值会在原来最大值+1
truncate删除记录后,会从1开始自增 - delete操作可以进行回滚;
truncate操作隐式提交,不可以回滚