MySQL增删改

========================================================================================
## 插入、更新和删除数据。
插入语句:insert,更新数据:update,删除数据:delete。

1、 插入记录(数据内容)。
创建了数据库和表之后,下一步就是要往表里写入数据了。通过insert 或 replace语句可以向表中插入一行或多行记录。
语法格式如下:
insert [low_priority | delayed | high_priority][ignore]
	[into] 表名 [(列名,...)]
	valuse({表达式 | default},...),(...),...
	| set 列名={表达式 | default},...
	[on duplicate key update 列名=表达式,...]
参数解释:
* 列名:如果要给全部列插入数据,列名可以省略。如果只给表的部分列插入数据,需要指定这些列。
	  对于没有指定的列,它们的值将根据列默认值或有关属性来确定,MySQL处理的原则如下:
	  - 具有 identity属性 的列,系统生成序号值来唯一标识列。
	  - 具有默认值的列,其值为默认值。
	  - 没有默认值的列,若允许为空值,则其值为空值。若不允许为空置,则出错。
	  - 类型为 timestamp的列,系统自动赋值。
* values子句:包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。若tb1_name后不给出列名,
			  则要在values子句给出每一列(除 identity 和timestamp类型的列)的值,如果列值为空,
			  则值必须置为null,否则会出错。values子句中的值如下。
			  - 表达式:也就是空值null,其值的数据类型要与列的数据类型一致。
				列如:列的数据类型为int,插入的数据'aaa'就会出错,当数据为字符型时要用单引号括起来。
			  - default:指定为该列的默认值,前提是该列原先已经指定了默认值。
* 如果列清单和values清单都为空,则insert会创建一行,每个列都设置成默认值。insert语句支持下列修饰符:
	- low_priority:可以使用在insert、delete和update等操作中,当原有客户端正在读取数据时,延迟操作的执行,
					直到没有把其他客户端从表中读取数据为止。
	- delayed:若使用此关键字,则服务器会把待插入的行放到一个缓冲器中,而发送insert delayed 语句的客户
			   端会继续运行。如果表正在使用,则服务器会保留这些行。当表空闲时,服务器开始插入行,
			   并定期检查是否有新的读取请求(仅适用于myisam、memory 和archive 表)。
	- high_priority:可以使用在select和insert操作中,使操作优先执行。
	- ignore:使用此关键字,在执行语句时出现的错误就会被当做警告处理。
	- on duplicate key update...:使用此选项插入行后,若导致unique key或primary key出现重复值,
								  则根据update后的语句修改旧行(使用此选项时delayed被忽略)。
	- set子句:set子句用于给列指定值使用set子句时表名的后面省略名。要插入数据的列名在set子句中指定,
			   名列等号后面为指定数据,为指定的列,其列值为默认值。
----------------------------------------------	
----------------------------------------------	
# 向xx数据库的xx表中插入一行记录(数据):
>use xx;
>insert into xx
	>values('xx','xx','xx',null,null); ## 表里面有多少列,插入数据时,就要插入多少列数据,如果插入的数据没有东西,可以写空值(null)。
----------------------------------------------	
----------------------------------------------	
# 多行插入:
>insert into xx
>values(xx,xx,xx),(xx,xx,xx),(xx,xx,xx);
这样就可以插入3行数据了。
或者这样:
>values(xx,xx,xx),
>(xx,xx,xx),
>(xx,xx,xx);
----------------------------------------------	
----------------------------------------------	
# 在指定列插入数据:
insert into 表名 (列名1,列名2)
values(xx1,'100'),(xx2,11),(xx3,12);
这样就可以在列名1和列名2这两列中插入数据了,但是,如果其他列没有东西,我怕出错。	
----------------------------------------------	
----------------------------------------------	
如果表中的列默认值为null的时候,插入的空数据可以不用写null
# 用set子句来实现:
insert into xx
	set 姓名='哈哈',学号='00123',考评='优秀';
----------------------------------------------	
----------------------------------------------	
# 插入图片。
MySQL还支持图片的插入,图片一般可以以路径的形式来存储,即插入图片时可以采用插入图片的储存路径的方式。
当然也可以直接插入图片本身,用load_file()函数即可。
>insert into xx
	>values('1','xx','D:\img.jpg');
----------------------------------------------	
----------------------------------------------	
# 也可以使用函数直接储存图片本身:
>insert into xx
	>values('1','xx',load_file('D:\img.jpg'));
	
----------------------------------------------
----------------------------------------------	
# 用已有表记录插入当前表记录。
从insert的语法格式可以看到,使用insert语句可以向表中插入一行记录,也可以插入多行记录,插入的行可以给
出每列的值,也可以给出部分列的值,还可以向表中插入其他表的数据。
使用insert into...select...,可以快速地从一个或多个表向一个表中插入多个行。语法格式如下:
insert [low_priority]

=============================================================================================================
=============================================================================================================
2、更新(修改)数据。
例子:在person表中,更新id值为11的记录,将age字段值改为15,将name字段值改为LiMing。
>update person set age = 15, name='LiMing',where id 11;
就是将id等于11的这一行字段,修改其值。
# 多行一起修改:在person表中,更新age值为19~22的记录,将info字段值都改为student。
>update person set info='student' where age betweew 19 and 22;

=============================================================================================================
=============================================================================================================
3、删除数据。
从数据表中删除数据使用delete语句,delete语句允许where子句指定删除条件。
语法格式:delete from 表名 [where <condition>];
[where <condition>]为可选参数,指定删除条件,如果没有where子句,delete语句将删除表中所有的记录。
---------------------------
例子:删除id等于11的记录。
>delete from 表名 where id = 11;
---------------------------
例子:删除多条记录,并修改其他字段值。
>delete from 表名 where age betweew 19 and 22;
将age等于19至22的记录,都删除了。
---------------------------
例子:删除所有记录。
>delete from 表名;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值