SQL中常用DML语句
DML:数据操纵语句,用于添加、删除、更新和查询数据库记录并检查数据完整性
如果进行的数据库改密码等操作,运行flush privileges命令让mysql重新加载,从而让配置生效
1、INSERT INTO语句:
①单条记录插入
insert into 表名(字段1,字段2,...,字段n) values(值1,值2,...,值n);
也可以不指定字段名,但是values后面的值要和字段排序一致。
②多条记录插入
insert into 表名(字段1,字段2,...,字段n) values (值1,值2,...,值n),(值1,值2,...,值n),...;
③从一个表复制数据,然后把数据插入到一个已存在的表中,目标表中任何已存在的行都不会受影响。
INSERT INTO SELECT 语句:INSERT INTO table2 (column_name(s)) SELECT column_name(s) FROM table1;
2、更新记录:
①更新一个表:
update 表名 set 字段1=值1,字段2=值2,...,字段n=值n [where 条件];
②更新多个表中数据:
update 表名1,表名2,...,表名n set 表名1.表1字段名=值1,表名2.表2字段名=值2,...,表名n.表n字段名=值n [where 条件];
实例:update t1,t2 set t1.age=2000,t2.age=3000 where t1.id=1 and t2.id=1;
3、删除记录:
①删除一个表中的数据
delete from 表名 [where 条件];
②删除多个表中的数据
delete 表1,表2,...表n from 表1,表2,...表n [where 条件];
注:不管是单表还是多表,不加where条件将会把表中的所有记录删除。
③清除表中有所数据
truncate 表名;
所有索引数值将全部重置为初始大小。
4、查询记录:
查询表记录 select *|字段1,字段2... from 表名 [where 条件];
①查询不重复的记录:
select distinct *|字段1,字段2... from 表名 [where 条件];
查询字段中数据,并把重复的数据剔除以后(只显示一条记录)输出。
只要字段1,字段2中任何一个字段有不同就会被选择!一般使用distinct只筛选一个字段!
②排序:
单字段排序:
select * from 表名 order by 字段名 asc|desc;
asc:由低到高,也是默认值 desc:由高到底
多字段排序:
select * from 表名 order by 字段名1 desc,字段名2 desc;
先根据字段1进行由高到低排序,中间有相同数值的再根据字段2进行由高到低排序。
③获取指定数目都结果
limit y:前y条(从第一条数据开始)数据
limit x, y:从第x条(x从0开始)开始一共y条数据
limit y offset x:共读取y条数据从第x条(x从0开始)开始
5、清理数据缓存:
vacuum [table_name]
回收已删除的数据占用的存储。在日常数据操作中,更新或删除的数据并没有从物理表中删除,数据仍然存在于磁盘上,直到vacuum操作完成。因此,有必要定期做vacuum,尤其是在频繁更新的表
没有参数(不指定表名)的情况下,vacuum处理当前数据库中的每个表格 vacuum不能在事务块里面执行 vacuum导致I/O流量的大幅增加,因此最好是在低使用时间进行操作