编程之路之数据库mysql(三)- 数据操作增删改查及存储引擎详解
一、数据操作增加数据,insert into
格式有3种
insert into 表名 (字段1,字段2,...) values (值1,值2,...);
insert into 表名 set 字段1=值1, 字段2=值2, ...;
insert into 表名 select语句
1、第一种格式
注意:
自动增量字段(auto_increment)它的值可以用直接的数值或null
字符串类型的字段,值一定要用引号引起来,数值时可以不用引号
字段列表可以省略部分字段
省略的原则:字段是主键自动增量,有默认值的
还可以同时插入多条数据
说明:
可以省略字段的列表不写,但是要求值部分需要把所有字段对应的值都给出来
多条数据插入,用逗号分开,最后一条记录的数据后面是语句结束符
自动增量字段可以给出确定的值,但下一条记录如是自动方式,则从此值+1再开始
字符串类型数据要引号,数值型不用,但加也没错
2、第二种格式
3、第三种格式
从其它数据表查询数据插入本数据表
二、查看数据,select
格式:select *|字段列表 from 表名 where条件 order by 字段名 asc|desc limit 记录起始位置,记录数
三、修改数据,update
格式:update 表名 set 字段名1=值1, 字段名2=值2,…. Where子句
注意:
正常情况,必须加上where条件,否则,将把数据表中的所有数据修改!
四、删除数据,delete
格式:delete from 表名 where子句
注意:一定要加where语句,除非你想把数据表中的所有数据都删除!
五、清空数据,truncate
格式:truncate 表名
执行清空操作
注意auto_increment属性
和使用delete form stud区别
Delete将删除所有数据,auto_increment的增量值保持不变
Truncate清空数据表数据,将重置auto_increment
原因:
Truncate它是先把数据表的结构备份下来,然后删除数据表,再重建数据表。
六、存储引擎介绍
只有MYSQL才有多种存储引擎,每一种存储的特点和功能不一样
Innodb支持事务处理,支持外键,不支持全文索引
Myisam不支持事务处理,支持全文索引,速度快
不同的引擎,在数据文件的保存上是不一样的
MYISAM引擎
Innodb引擎
七、字符集和校对集
字符集:就是一套图形和编码。在不同的编码方式下,对应的图形是一样的。但不同编码编码方式不同,占用的存储空间不同。
Utf8占用3个字节
Gbk占用2个字节
校对集:是一套比较的规则
我们看一下MYSQL数据库都支持哪些字符集?
Show character set;
可以看到,MYSQL支持很多种字符集,每一种字符集占用的存储字节数不一样
安装数据库或创建数据表时,选择存储引擎类型要选择gbk或utf8,因为它是多字节字符集
字符集的区别:
选择不同的字符集,只是存储数据时,使用不同的编码去保存。字符集只是对字符串类型的字段有影响。
每一种字符集都有多种校对集,都有一个默认的校对集。
思考:
数据表的字符集是确定的,校对集能不能默认知道?
不一定,因为每一种字符集都有多种校对集
但是,定义数据表时,可以不明确指定校对集。因为字符集都有默认的校对集。
查看数据库有哪些校对集
Show collation;
校对集都从属于某一种字符集,会有一种是某字符集默认的校对集
校对集命名的特点:
Gbk_国家_ci 大小写不敏感
Gbk_bin 二进制方式
Latin1_general_cs 大小写敏感
说明:多字节字符集utf8和gbk都没有大小写敏感的校对方式
下面说明校对集对比较的影响
先创建两个表
查看创建信息
我们插入一些数据
进行查询
八、乱码问题
就是多字节字符串出现乱码问题。
客户端
我们查看关于客户端字符集的参数设置
Show variables like ‘character_set_%’
需要设置正确的客户端编码参数
插入数据时的乱码问题得到解决!
查询乱码,解决办法:设置正确的返回结果的编码
实际上有一个命令,set names gbk|utf8
这个命令它是同时会修改3个参数的值
Character_set_client
Character_set_connection
Character_set_results
为什么要使用set names?
通过使用这个命令,设置正确的客户端编码
乱码和字段存储时使用的字符集无关
我们可以修改字段的字符集和表默认字符不一样
再插入没有任何问题
总结:
乱码和数据存储使用的字符集没有关系,只和客户端编码有无正确告知服务器有关!
九、PHP程序
本质和客户端是一样的。PHP是使用MYSQL函数模拟了客户端,同样你要正确 的把客户端的编码告知服务器。
在PHP程序中,什么是客户端的编码?
就是文件保存的编码(保存使用的字符集)
十、PHP中的PDO函数
我是小咖
发个邀请:
如果你正好想学习php,可以与我一起交流,我的VX:feilueze333。下面资料免费赠送。