先建一个学生表,包括学号、姓名、性别、年龄和邮箱地址5个字段,用于下面对其操作
create table t_student(
no int,
name varchar(32),
sex char(1),
age int(3),
email varchar(255)
);
insert语句的语法格式
insert into 表名 (字段名1,字段名2,字段名3,...) values(值1,值2,值3,...);
注意:在insert语句中,字段名需要和值一一对应,数量要对应,数据类型要对应。
向t_student表中插入数据
insert into t_student(no,name,sex,age,email) values(1,'张三','男',20,'[email protected]');
insert into t_student(email,name,sex,age,no) values('[email protected]','李四','女',20,2);
插入数据时,不给字段指定值时,其默认值为null
insert into t_student(no,name) values(3,'王五');
查看表结构可以看到,五个字段的默认值都是NULL
但是在创建表时,我们可以为其指定默认值
// 创建时应先删除
drop table if exists t_student;
create table t_student(
no int,
name varchar(32),
sex char(1) default '男',
age int(3),
email varchar(255)
);
再次插入数据,即使我们不指定sex的值,它也会给一个默认值’男’
insert into t_student(no,name) values(1,'张三');
insert语句中的字段名是可以省略的,但是当它省略时,表示的是字段名全写了,所以我们在为其写值时也要全写。
insert into t_student values(2,'李四'); //报错
ERROR 1136 (21S01): Column count doesn't match value count at row 1
insert into t_student values(2,'李四','女','20','lisi@123.com'); //正确的
还是建议使用带有字段名的方式,带有字段名可读性更强。
创建一个表,其中设置birth属性,其类型为date日期类型
create table t_user(
id int,
name varchar(32),
birth date,
create_time datetime
);
insert语句一次插入多条语句
语法:insert into 表名(字段名1,字段名2,...) values() , () , () ,...;
insert into t_user(id,name,birth,create_time) values
(1,'zs','2000-02-03',now()),
(2,'ls','2000-02-03',now()),
(3,'ww','2000-02-03',now());
update是修改语句,其语法格式为:update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3,... where 条件;
注意:没有条件限制全部的数据都会被修改
修改t_user表中数据
update t_user set name='Jack',birth='2022-05-18' where id=2;
update t_user set name='王五',birth='2022-05-18';
语法格式:delete from 表名 where 条件;
注意:没有条件限制全部的数据都会被删除
删除t_user表中id=2的数据
delete from t_user where id=2;
delete from t_user;
delete语句删除数据的方式比较慢,其将数据删除后,硬盘上的真实存储空间不会被释放。
缺点:删除效率比较低
优点:支持回滚,数据可恢复
truncate删除表中数据,语法格式:truncate table 表名;
truncate语句删除数据效率较高,表被一次截断,物理删除。
缺点:不支持回滚,数据删除后无法恢复
优点:快速