经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MySQL » 查看文章
MySQL之数据操纵语言(DML)
来源:cnblogs  作者:pure3417  时间:2021/5/31 9:03:53  对本文有异议

数据操纵语言(DML)

数据操纵语(Data Manipulation Language),简称DML

DML主要有四个常用功能。

insert delete update select
  1. # 创建数据库
  2. create database if not exists stu;
  3. # 使用数据库
  4. use stu;
  5. # 创建一个表
  6. create table student(
  7. sid int primary key auto_increment,
  8. sname varchar(20) not null,
  9. sex varchar(10)
  10. )charset=utf8;

下面的操作都是基于这个student表进行的。

增添数据(insert)

全列插入(全字段插入)

  1. -- insert into 表名 values(...);
  2. insert into student values(0,'张三','男');

注意,表结构中有id字段,虽然设置了主键、自增,MySQL可以自动维护,但是,在全列插入的时候,这个位置还必须写(通常写 0 ,插入后以实际为准),起到站位作用

结果如下:

部分列插入(插入部分列字段)

  1. -- insert into 表名(列1,列2,...) values(值1,值2,...);
  2. insert into student(sname, sex) values('李四', '男');
  3. insert into student(sname) values('王五');

结果如下:

同时插入多条数据

  1. -- insert into 表名(列1,...) values(值1,...),(值2,...),(值3,...),...;
  2. insert into student(sname,sex) values
  3. ("刘备","男"),("貂蝉","女"),("诸葛亮","男");

结果如下:

复制已有表,生成新表

复制已有表的结构和数据。

  1. -- create table 新表名 select * from 已有表名;
  2. -- 创建一个student1表,表的结构和数据均来自于student表。
  3. create table student1 select * from student;

结果如下:

只复制已有表的结构(得到的是一个空结构表)。

  1. -- create table 新表名 selsct * from 已有表名 where 0;
  2. -- 创建一个student2表,只复制student表的结构,不要里面的数据。
  3. create table student2 select * from student where 0;

结果如下:

简单的查询语句(select)

全字段查询

  1. -- srcect * from 表名;
  2. -- * 表示全部
  3. select * from student;

结果如下:

指定字段查询

  1. -- select 列名 from 表名;
  2. select sname from student;
  3. select sname, sex from student;

结果如下:

带条件的查询

  1. -- select 列名 from 表名 where 查询条件;
  2. -- 查询sex为女的人
  3. select sname from student where sex='女';

结果如下:

修改数据update

update语句要配合where筛选,进行使用,否则修改的就是整张表的记录。

  1. -- update 表名 set 1=值1,列2=值2,列3=值3,…… where 条件;
  2. -- sid3的王五的姓名,改为赵六。
  3. update student set sname="王八" where sid = 3;
  4. -- sid6的诸葛亮的名字改为孔明,性别改为猛男。
  5. update student set sname="孔明",sex="猛男" where sid=6;

结果如下:

删除数据delete

  • delete为物理删除(一旦删除就彻底没有了)
  • update和delete语句要配合where筛选,进行使用,否则删除的就是整张表的记录。
  1. -- delete from 表名 where 条件;
  2. delete from student where sname="张三";

结果如下:

truncate和delete的区别

有如下表

  • delete删除

  • truncate清空

truncate和delete的区别:

  • 都是不修改结构,只清除数据。

  • delete删除不释放资源,truncate释放表占用的空间(会重置主键自增)。

  • delete是逐行删除,删除记录是作为事务记录在日志文件中,可进行回滚操作。truncate一次性删除表中所有数据,删除记录不会记录在日志文件中,无法恢复,删除效率高于delete。

原文链接:http://www.cnblogs.com/pure3417/p/14826504.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号