一、概述
数据的操作永远离不开增删改查四个字,也就是DML数据操作语言:涉及增删改,DQL语言:数据查询语言 关键字select
DML数据操作语言
DML 数据操作语言
用于操作数据库对象中所包含的数据
包括:INSERT(添加数据语句)
UPDATE(更新/修改数据语句)
DELETE(删除数据语句)
二、DML语言的增删改
1. INSERT 添加数据
格式:insert into 表名(字段1、字段2、字段3. . . ) values('值1','值2','值3',. . . );
或 insert into 表名 values(); 根据表的格式全部插入,值需一一对应
建表:create table Stu(subjectName varchar(20) , Casshour int(11),ClassId int(11),;
插入数据:insert into Stu(subjectame,Classhour,ClassId) values ('高等数学',100,1);
insert into Stu(subjectame,Classhour,ClassId) values ('物理',130,2);
或选择其中几个值插入
--插入课程名,序号
insert into Stu(subjectName,ClassId) values ('大学英语',3);
查看表内容:select * from Stu;
总结:
1.字段或值之间用英文逗号隔开
2.“字段1, 字段2…”该部分可省略,但添加的值务必与表结构数据列顺序相对应,且数量一致
3.可同时插入多条数据,values 后用英文逗号隔开
2. UPDATE 修改数据
格式:
update 表名 set 字段名 = 值 [where condition];
注:condition 为筛选条件,如不指定则修改该表的所有列数据!
--修改 '高等数学' 为 '体育'
update Stu set subjectName='体育' where ClassId=1;
--让课时小于120的学科课时+10
update Stu set Classhour=Classhour+10 where Classhour <120;
注:修改课程序号为1的课程名高等数学为体育 也可 修改课时为100的课程名高等数学为体育
where后的筛选条件可有很多选择,如每个人的身份证、号码、邮箱等,但最好选择具有标识性的,避免重复,在这张表里为课程id
批量修改:between and 一列内修改多个值,示例:
--让课时在100~150之间的学科课时+10
update Stu set Classhour=Classhour+10 where Classhour between 100 and 130;
3.删除数据:delete、truncate
① DELETE 删除之后几分钟之内可以恢复
语法: delete from 表名[where condition];
condition为筛选条件,如不指定则删除该表的所有列数据
--删除序号为3的大学英语
delete from Stu where ClassId=3;
②.truncate命令 基本无法恢复
语法:truncate table 表名
作用:用于完全清空表数据,但表结构、索引、约数等不变
相同点:都能删除数据、不删除表结构,但TRUNCATE 速度更快
不同:使用 truncate table 重新设置AUTO_INCREMENT计数器,使用 truncate table 不会对事务有影响
延伸:drop 也是删除,那他跟 delete、truncate有什么区别?
delete,drop,truncate 都有删除表的作用,区别在于:
1、delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。
2、delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。
3、执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。
4.修改表 :ALTER TABLE
修改表名:alter table 旧表名 rename as 新表名;
--修改Stu为Student
alter table Stu rename as Student;
添加字段:alter table 表名 add 字段名 列类型(属性);
--添加一条字段名 类型为 subNo
alter table Student add subNo int(4);
修改字段
不修改字段名:alter table 表名 modify 字段名 列类型(属性);
--修改subNo 列类型int 属性为11
alter table Student modify subNo int(11);
修改字段名:alter table 表名 change 旧字段名 新字段名 列类型(属性);
--修改subNo为subjectNo
alter table Student change subNo subjectNo int(11);
删除字段:alter table 表名 drop 字段名
--删除 subjectNo
alter table Student drop subjectNo;