2.DML语言(完全记忆)
数据库存在的意义:存放数据,管理数据。
DML语言:数据库操作语言。
·insert
·update
·delete
·alter
3.添加
语法:insert into 表名 ([字段名1,字段2,字段3]) values (‘值1’,‘值2’,‘值3’…)
-- 插入语句( 添加)
-- insert into 表名 ([字段名1,字段2,字段3]) values ('值1','值2','值3'...)
insert into `grade` (`gradename`) values ('大四');
-- 由于主键自增,可以省略。
insert into `grade` values ('大三');
-- 插入失败,因为不写表的字段时,它会自动匹配。此时将“大三”匹配给gradeid。
-- 一般写入插入字段时,我们一定要数据和字段一一对应。
-- 插入多个字段
insert into `grade` (`gradename`) values ('大二'),('大一');
insert into `student` (`name`) values ('阿丽塔');
-- 多参数
insert into `student` (`name`,`pwd`,`sex`) values ('Alita','26651','女');
insert into `student` (`name`,`pwd`,`sex`) values ('成果果','199505','女');
insert into `student` (`name`,`pwd`,`sex`) values ('成果','1995','女'),('成龙','Kongfu','男');
insert into `student` (`name`,`pwd`,`sex`) values ('Ali','266512','女'),('Jarvis','987654','男'),
('Ashock','Mr.NIIT','男'),('Alit','266513','女');
注意:
1.字段和字段之间使用英文逗号 “,”隔开;
2.字段是可以省略的,但是后面的值必须要要一对应,不能少。即:
insert into student
(name
,pwd
,sex
) values (‘Alita’,‘26651’,‘女’);
省略 (name
,pwd
,sex
) 时,必须把数据库对应的所有参数都写上。
3.可以同时插入多条数据,VALUES 后面的值,需要使用,隔开即可 values (),(),()……
4.修改
格式:
update 表名 set colnum_name = value,[co1num_name = value,…] where [条件1,条件2……]
-- 修改信息,
update `student` set `name` = 'Edwin' where id = 1;
-- 不指名条件“where”的情况下,会修改整个表的内容
update `student` set `name` = 'Jarves';
-- 多参数修改
update `student` set `name` = 'Jarves',`address` = 'Bat Street 18' where id = 1;
-- 多条件判断,使用逻辑运算符,或 Between……And、And或者Or
update `student` set `name` = 'Jarves',`address` = 'Bat Street 18' where id = 1 And sex = '男';
-- 格式:
update 表名 set colnum_name = value,[co1num_name = value,...] where [条件]
条件: where的各种修饰
操作符 | 含义 | 举例 | 结果 |
---|---|---|---|
= | 判断是否相等 | 7 = 77 | false |
<> 或 != | 判断是否不相等 | 7 <> 77 | true |
> | 判断是否大于 | 7 > 77 | false |
< | 判断是否小于 | 7 < 77 | true |
>= | 判断是否大于等于 | 7 >= 77 | false |
<= | 判断是否小于等于 | 7 <= 77 | true |
Between … And | 判断是否在某个闭区间里 | [7,77] | 7<=?<=77 |
And | 等价于Java的 && | …&&… | …并且… |
Or | 等价于Java的 || | …||… | …或者… |
注意:
colnum_name是数据库的列,尽量带上,方便对应。
条件,筛选的条件,如果没有指定,则会修改所有的列。
value,是一个具体的值,也可以是一个变量。
5.删除
1.Delete 命令
格式:delete from 表名 [where条件];
-- 删除数据,不加条件则全部删除,一般要避免此类操作。
delete from `student` ;
-- 加上条件,可以删除指定的数据
delete from `student` where id = 1;
2.Truncate 命令
作用:完全清空一个数据库,整个表的结构和约束不会改变。
格式:truncate 表名;
-- 清空某个表
truncate `student`;
3.Delete 和 Truncate 的区别:
相同点:两者都会删除表格里的数据,切不改变该表的结构。
不同点:·Truncate命令会重新设置我们定义的自增列,自增的计数器会重新归零。
·Truncate命令不会影响事务。
-- 测试delete 和 truncate的区别:
create table `test`(
`id` int(4) not null auto_increment,
`name` varchar(30) not null,
primary key (`id`)
)engine = InnoDB default charset = utf8;
insert into `test` (`name`) values ('1'),('2'),('3');
delete from `test` ;-- 不影响递增,再次执行时id从4开始。
truncate `test`;-- 自增归零,再次执行时id从1开始。
4.拓展了解
Delete删除的常见问题,在重启数据库后的现象:
·InnoDB引擎,自增列会重1开始(因为数据是存在内存当中的,断电即失,重新开始)
·MyISAM引擎,会继续从上一个自增量开始(数据是存在文件中的,关闭数据库,也不会丢失)
参考文献
《【狂神说Java】MySQL最新教程通俗易懂》
2020.05.14