8-mysql数据操作语言(DML)

数据操作语言(DML)

SQL(Structure Query Language)语言是数据库的核心语言。

SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

DML(data manipulation language)数据操纵语言,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,主要用来对数据库的数据进行一些操作。

数据插入(添加数据)

插入数据有3种形式:

形式1:可以一次插入多条数据

字段列表部分可以省略(不推荐),此时值列表部分必须依次完全对应该表的每一个字段;

insert into  表名 [(字段名1,字段名2,...)] values (值a1,值a2, ...),(值b1,值b2,...),...;

形式2:可以一次插入多条数据

数据来源是由其中的select语句所获取的。

字段列表部分可以省略(不推荐),此时值列表部分必须依次完全对应该表的每一个字段;

insert into  表名1 [(字段名1,字段名2,...)] select  字段名1,字段名2,...  from  表名2;

形式3:

insert  into  表名  set  字段名1=值1,字段名2=值2, ...;

注意

  1. 字段名和字段值都有“一一对应”关系:数量,顺序和类型都应该对应。
  2. 每次插入数据都必然是以“行”为单位进行,要么成功插入一行,要么失败。
  3. 对于语句中没有给定的字段,成功的插入必然会根据表或系统的设定而获得“默认值”(有时候默认值就是空值“null”)。
  4. 字符串类型和时间日期类型的字面量值通常都需要用单引号引起来,比如:‘abc’,‘web前端’, '2021-4-5 6:7:8"
  5. 值的形式,通常是这样:数字直接写,字符串和时间加单引号,但如果是函数值,则不能加引号。
  6. 语句中所给定的字段名的顺序可以不是表中的实际顺序。
  7. 有的字段通常都无需插入数据,比如具有auto_increment属性的字段,或类型为timestamp的字段。

插入数据示例:在这里插入图片描述

类似插入数据的语句

载入文本数据

语法:

load  data  infile  '文件完整名(含路径)'  into  table  表名;

作用:从一个外部的记事本文件中导入数据到某个表中。该记事本中的数据通常要求“比较整齐”,一行文本对应表的一行数据,一行中用某种字符(通常用tab符)来分割一个一个字段的值,

类似这样:在这里插入图片描述

该语句的语法简单解释如图所示:在这里插入图片描述
插入数据示例:在这里插入图片描述

删除数据

基本语法形式:

delete from 表名 [where条件] [order排序] [limit限定];

注意

  1. 删除是“以行为单位”进行的,一行数据要么删除成功,要么删除失败。
  2. 删除语句中,where条件可选,但通常都要有,用来删除满足条件的数据;如果没有设定条件,则会删除所有数据,应用中极少如此。
  3. order排序子句可选,应用中通常不需要,用来指定按设定的数据顺序删除。
  4. limit限定子句可选,应用中通常不需要,用来限定删除哪些行的数据(指从第几行开始的多少条)。

类似删除数据的语句truncate

truncate用于直接删除整个表(结构)并重新创建该表。

truncate [table] 表名;

此时数据自然全部没有了,而且表恢复到初始状态(比如auto_increment的当前值就变成初始值了,而如果用delete删除即使删除所有数据,auto_increment值也会保留)。

  1. 删除整个表(数据和结构都没有了)。
  2. 重新创建该表(全新表)。
  3. 跟delete 语句不带where条件,有什么区别?
    1. 主要影响的是类似auto_increment这种类型的字段值:runcate结果会重新计算,delete还能继续增长。

示例:在这里插入图片描述

翻译:执行成功,0行受影响(0.00秒)

修改数据

基本语法:

update 表名 set 字段名1=值表达式1,字段名2=值表达式2,....[where条件] [order排序] [limit限定];

注意

  1. 修改是以“行”为单位进行的,一行数据要么修改成功,要么没有修改,虽然可以设定只修改表中的部分字段,但也应该以“行”为单位去理解它。
  2. where条件子句可选,但通常都必须有,用来修改满足条件的数据;如果没有设定条件,则会修改所有数据。
  3. order排序子句可选,通常不需要,用来指定按设定的数据顺序修改。
  4. limit限定子句可选,通常不需要,用来限定修改哪些行的数据(指从第几行开始的多少条,比如:前500行)。
  5. 字段的值可以是表达式,或直接值,或函数,如果是直接值,同样遵循insert语句中的值的写法。

修改数据示例:在这里插入图片描述

复制表

复制表结构

create table tab2 like tab1;

复制表数据

insert into tab2 select * from tab1;

复制一个表

完整复制一个表(包括表结构和表数据):

create table 新表名 select * from 原表名;

这种方法可能会丢一些结构信息,比如:索引,约束,自增长属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值