数据操纵语言(DML)

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

DML主要有四个常用功能。

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

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

增添数据(insert)

全列插入(全字段插入)

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

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

结果如下:

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

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

结果如下:

同时插入多条数据

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

结果如下:

复制已有表,生成新表

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

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

结果如下:

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

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

结果如下:

简单的查询语句(select)

全字段查询

-- srcect * from 表名;
-- * 表示全部
select * from student;

结果如下:

指定字段查询

-- select 列名 from 表名;
select sname from student;
select sname, sex from student;

结果如下:

带条件的查询

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

结果如下:

修改数据update

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

-- update 表名 set 列1=值1,列2=值2,列3=值3,…… where 条件;

-- 把sid为3的王五的姓名,改为赵六。
update student set sname="王八" where sid = 3; -- 把sid为6的诸葛亮的名字改为孔明,性别改为猛男。
update student set sname="孔明",sex="猛男" where sid=6;

结果如下:

删除数据delete

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

delete from student where sname="张三";

结果如下:

truncate和delete的区别

有如下表

  • delete删除

  • truncate清空

truncate和delete的区别:

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

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

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

最新文章

  1. jcaptcha sample 制作验证码
  2. oracle里面base64加解密
  3. sql sever笔记 日期时间
  4. 【JNI】锅炉压力监测器
  5. HTML5标签学习之~~~
  6. Codeforces Round #259 (Div. 2) C - Little Pony and Expected Maximum
  7. P140、面试题24:二叉搜索树的后序遍历序列
  8. A - Prime Ring Problem(素数环,深搜,打表)
  9. Android GPS获取当前经纬度坐标
  10. C++模板杂谈
  11. Java Web使用Html5 FormData实现多文件上传
  12. python学习:格式化输出
  13. 融云亮相GDG谷歌女性开发者大会 揭秘IMSDK网络优化策略
  14. Java源码阅读顺序
  15. 认识Nginx,理解原理和功能
  16. [深度学习]CNN--卷积神经网络中用1*1 卷积有什么作用
  17. Windows Server2008各版本区别
  18. 优化网站设计(七):避免在CSS中使用表达式
  19. RSA modulus too small: 512 < minimum 768 bits
  20. Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again错误解决

热门文章

  1. 5. Mybatis UPDATE更新,DELETE删除
  2. kube-router代替kube-proxy+calico
  3. 使用EasySYS搭建驱动开发基本框架
  4. hdu2722 简单最短路,处理好输入就行
  5. POJ1679判断最小生成树的唯一性
  6. WinDbg 配置联机调试环境搭建
  7. net -snmp 的监控策略
  8. Day007 递归
  9. 【转】风控中的特征评价指标(二)——PSI
  10. 多线程-2.线程创建方式和Thread类