DML(数据控制语言)主要是对数据表中的数值进行增删改的操作,使用的关键词分别为insert、delete from、update set.
插入数据
基本格式:
insert into table_name(字段1,字段2,..) values(数值1,数值2,..)
insert into table_name values(数值1,数值2,..),(数值11,数值22,..) #插入多行数据
table_name后面的字段名如果省略,则默认为数据表中的字段顺序
案例一:创建housing表,包括四个字段,分别为:楼盘名(name)、地址(location)、大小(square)、价格(price)
插入如下五条数据,并查看
create table housing(name varchar(20),location varchar(20),square int,price int);
insert into housing values("富州新城","沙坪坝",81,13333);
insert into housing values("南方苹果派","九龙坡",54,13184);
insert into housing values("大雅云居山","渝北",62,16822);
insert into housing values("首地江山赋","渝北",102,12167);
insert into housing values("美利山公园城市","渝北",62,15323);
select * from housing #查看表内全部数据
修改数据
基本格式:
update table_name set 字段名=新值 where... ##where语句用来定位
案例二:将大雅云居山的地址修改为"南岸区",将渝北的房价都改为12000
update housing set location="南岸区" where name = "大雅云居山";
update housing set price=12000 where location="渝北";
select * from housing;
删除数据
基本格式:
1.删除整张表的数据
truncate table table_name;
delete from table_name;
2.删除某条数据
delete from table_name where ..
案例三:删除南方苹果派所在行的数据以及删除整张表的数据
delete from housing where name="南方苹果派";
truncate table housing;
truncate和delete from 区别
语句 | 是否能加where | 自增类型字段起始点 | 是否能回滚 |
---|---|---|---|
truncate | 否 | 从1开始 | 否 |
delete from | 是 | 从断点处开始 | 是 |
针对"是否能回滚"这条区别,涉及到事务的相关知识,往后再叙述。
以下,将举例说明两者在"自增类型字段起始点"区别:
案例四:创建inf表,包括商品编号和价格;并将商品编号设置主键和自增约束。
create table inf(id int primary key auto_increment,price int);
insert into inf values(1,25),(2,36),(3,54);
select * from inf;
A. delete from删除整表数据
delete from inf;
insert into inf(price) values(30);
select * from inf;
从图中可知:首先,删除了inf表内全部数据。其次,仅插入一行价格数据,由于商品编号有自增约束,它会自动补齐,但是是从断点处开始!(断点为3,故插入数据后,id列自动补齐为4)
B. truncate 删除整表数据
truncate table inf;
insert into inf(price) values(30);
select * from inf;
使用truncate删除数据后,id列自增长是从1开始的。可以认为truncate删除数据更加"彻底"
与DDL(数据定义语言)对比
语言类型 | 增 | 删 | 改 | 作用对象 |
---|---|---|---|---|
DDL(数据定义语言) | create | drop | alter | 数据库/表 |
DML(数据控制语言) | insert | delete from | update set | 数据表里的值 |