编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

一、数据操作增加数据,insert into

格式有3种

insert into 表名 (字段1,字段2,...) values (值1,值2,...);

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

insert into 表名 select语句

1、第一种格式

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

注意:

自动增量字段(auto_increment)它的值可以用直接的数值或null

字符串类型的字段,值一定要用引号引起来,数值时可以不用引号

字段列表可以省略部分字段

省略的原则:字段是主键自动增量,有默认值的

还可以同时插入多条数据

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

 

说明:

可以省略字段的列表不写,但是要求值部分需要把所有字段对应的值都给出来

多条数据插入,用逗号分开,最后一条记录的数据后面是语句结束符

自动增量字段可以给出确定的值,但下一条记录如是自动方式,则从此值+1再开始

 

字符串类型数据要引号,数值型不用,但加也没错

 

2、第二种格式

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

3、第三种格式

从其它数据表查询数据插入本数据表

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

二、查看数据,select

格式:select *|字段列表 from 表名 where条件 order by 字段名 asc|desc limit 记录起始位置,记录数

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

三、修改数据,update

格式:update 表名 set 字段名1=值1, 字段名2=值2,….  Where子句

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

注意:

正常情况,必须加上where条件,否则,将把数据表中的所有数据修改!

四、删除数据,delete

格式:delete from 表名 where子句

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

注意:一定要加where语句,除非你想把数据表中的所有数据都删除!

五、清空数据,truncate

格式:truncate 表名

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

执行清空操作

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

注意auto_increment属性

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

和使用delete form stud区别

Delete将删除所有数据,auto_increment的增量值保持不变

Truncate清空数据表数据,将重置auto_increment

原因:

Truncate它是先把数据表的结构备份下来,然后删除数据表,再重建数据表。

六、存储引擎介绍

只有MYSQL才有多种存储引擎,每一种存储的特点和功能不一样

Innodb支持事务处理,支持外键,不支持全文索引

Myisam不支持事务处理,支持全文索引,速度快

不同的引擎,在数据文件的保存上是不一样的

MYISAM引擎

 

Innodb引擎

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

七、字符集和校对集

字符集:就是一套图形和编码。在不同的编码方式下,对应的图形是一样的。但不同编码编码方式不同,占用的存储空间不同。

Utf8占用3个字节

Gbk占用2个字节

校对集:是一套比较的规则

我们看一下MYSQL数据库都支持哪些字符集?

Show character set;

 

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

可以看到,MYSQL支持很多种字符集,每一种字符集占用的存储字节数不一样

安装数据库或创建数据表时,选择存储引擎类型要选择gbk或utf8,因为它是多字节字符集

字符集的区别:

选择不同的字符集,只是存储数据时,使用不同的编码去保存。字符集只是对字符串类型的字段有影响

每一种字符集都有多种校对集,都有一个默认的校对集。

思考:

数据表的字符集是确定的,校对集能不能默认知道?

不一定,因为每一种字符集都有多种校对集

但是,定义数据表时,可以不明确指定校对集。因为字符集都有默认的校对集。

 

查看数据库有哪些校对集

Show collation;

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

校对集都从属于某一种字符集,会有一种是某字符集默认的校对集

校对集命名的特点:

Gbk_国家_ci  大小写不敏感

Gbk_bin    二进制方式

 

Latin1_general_cs  大小写敏感

说明:多字节字符集utf8和gbk都没有大小写敏感的校对方式

 

下面说明校对集对比较的影响

先创建两个表

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

查看创建信息

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

我们插入一些数据

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

进行查询

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

八、乱码问题

就是多字节字符串出现乱码问题。

客户端

我们查看关于客户端字符集的参数设置

Show variables like ‘character_set_%’

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

需要设置正确的客户端编码参数

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

 

插入数据时的乱码问题得到解决!

 

查询乱码,解决办法:设置正确的返回结果的编码

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

 

实际上有一个命令,set names gbk|utf8

这个命令它是同时会修改3个参数的值

Character_set_client

Character_set_connection

Character_set_results

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

为什么要使用set names?

通过使用这个命令,设置正确的客户端编码

 

乱码和字段存储时使用的字符集无关

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

我们可以修改字段的字符集和表默认字符不一样

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

再插入没有任何问题

总结:

乱码和数据存储使用的字符集没有关系,只和客户端编码有无正确告知服务器有关!

九、PHP程序

本质和客户端是一样的。PHP是使用MYSQL函数模拟了客户端,同样你要正确 的把客户端的编码告知服务器。

在PHP程序中,什么是客户端的编码?

就是文件保存的编码(保存使用的字符集)

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

十、PHP中的PDO函数

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

我是小咖

发个邀请:
如果你正好想学习php,可以与我一起交流,我的VX:feilueze333。下面资料免费赠送。

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解

编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解