数据操作语句(DML语句)
增删改查 insert delete update select
dml操作的对象是table里面的数据(记录)。
增删改查
1、增:insert 语句
insert into tbname(列名1,列名2,...)values(值1,值2...);
列名是表中对应的列,可以不按照顺序写出来;也可以只写出一部分,但省去的列必须可以为NULL,或有默认值。另外写出的列名与值个数一一对应。
也可以一次插入多条数据:
insert into tbname(列名1,列名2,...)values(值1,值2,...),(值1,值2,...),(值1,值2,...);
插入数据时,需要满足三个完整性:
- 实体完整性:添加数据时,不能有遗漏,且顺序要对应
- 参照完整性:外键关联必须完整
- 用户自定义完整性:插入的数据满足字段上的约束
insert into tbname values(,,,),(,,,)...(,,,);不写列名,需要将所有列的值插入
也可以在表后不写列名,代表向所有的列中依次添加数据。
使用insert进行数据备份:
insert into tbname(列名1,列名2,...) as select ...;
insert into t2 as select * from t1; //将表1里面数据拷贝到表2
insert into t3(n,a) as select name,address from t1;//将表1中指定项备份到另一张表中
练习:创建下面的表,并插入一些数据
用户信息表 info
编号 id 整形 自增 主键
姓名 name 不定长30 非空唯一
性别 gender 枚举 1,0 enum(‘0’,’1’)
年龄 age 无符号整形 默认值0
地址addr 不定长50 默认值是空字符串 default ‘’;
2、删 delete语句
- delete from tbname;//清空表里面的数据
- truncate t1;//状态恢复到最初状态
- drop table t1;删除表
格式:delete from tbname where 表达式;
DELETE [LOW_PRIORITY] FROM tbl_name [WHERE where_definition] [LIMIT rows]
筛选条件,和select语句的筛选条件相同:
- 表达式里面需要用到逻辑操作符:
- 逻辑比较操作符:> < = != >= <=
- 逻辑连接操作符:and && or || !
注意:
- 在删除之前,建议先检查即将删除的数据是否是想要删除的,具体操作是:把delete 换成 select *即可。
- 如果你发出一个没有WHERE子句的DELETE,所有行都被删除。MySQL通过创建一个空表来完成,它比删除每行要快。
3、改 update语句
-
update tbname set 列名 = 值; //针对所有内容
update into set address=’shanghai’;地址全部改为上海; -
使用时,添加条件限制
- update tbname set 列名=值 where 表达式;//将info表中address为空字符串的地址统一改成shanghai;
注意:在更该之前,首先查看条件是否正确:
select * from tbname where 表达式;
- 一次修改多个列的值
update tbname set 列名1=值,列名2=值,…;
update tbname set
列名1=值,列名2=值,…where 表达式;