在数据库对应的文件夹下, 表对应的文件(与存储引擎有关)也会被删除

mysql 当前所在的上个月 mysql上个月第一天_数据

注意: 删除有危险,操作需谨慎(不可逆)

数据操作

新增数据

有两种方案

方案1: 给全表字段插入数据, 不需要指定字段列表: 要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致: 凡是非数值数据,都需要使用引号(建议是单引号)包裹

Insert into 表名 values(值列表)[,(值列表)];    -- 可以一次性插入多条记录

mysql 当前所在的上个月 mysql上个月第一天_mysql 第一天_02

方案2: 给部分字段插入数据,需要选定字段列表: 字段列表出现的顺序与字段的顺序无关; 但是值列表的顺序必须与选定的字段的顺序一致.

Insert into 表名 (字段列表) values (值列表)[,(值列表)];

mysql 当前所在的上个月 mysql上个月第一天_mysql 第一天_03

查看数据

Select */字段列表 from 表名 [where条件];

查看所有数据

mysql 当前所在的上个月 mysql上个月第一天_服务器_04

查看指定字段,指定条件的数据.

mysql 当前所在的上个月 mysql上个月第一天_数据_05

更新数据

Update 表名 set 字段 = 值 [where条件];    -- 建议都有where: 要不是更新全部

mysql 当前所在的上个月 mysql上个月第一天_字段_06

更新不一定会成功: 如没有真正要更新的数据

mysql 当前所在的上个月 mysql上个月第一天_数据_07

删除数据

删除是不可逆的: 谨慎删除

Delete from 表名 [where条件];

mysql 当前所在的上个月 mysql上个月第一天_mysql 第一天_08

中文数据问题

中文数据问题本质是字符集问题.

计算机只识别二进制: 人类更多是识别符号: 需要有个二进制与字符的对应关系(字符集)

客户端向服务器插入中文数据: 没有成功

mysql 当前所在的上个月 mysql上个月第一天_字段_09

原因: \xD5\xC5\xD4\xBD代表的是"张越"在当前编码(字符集)下对应的二进制编码转换成的十六进制: 两个汉字 => 四个字节(GBK)

mysql 当前所在的上个月 mysql上个月第一天_服务器_10

报错: 服务器没有识别对应的四个字节: 服务器认为数据是UTF8, 一个汉字有三个字节: 读取三个字节转换成汉字(失败),剩余的再读三个字节(不够): 最终失败.

所有的数据库服务器认为(表现)的一些特性都是通过服务器端的变量来保存: 系统先读取自己的变量,看看应该怎么表现.

//查看服务器到底识别哪些字符集

Show character set;

mysql 当前所在的上个月 mysql上个月第一天_字段_11

基本上: 服务器是万能,什么字符集都支持

//既然服务器识别这么多: 总有一种是服务器默认的跟客户端打交道的字符集

Show variables like 'character_set%';

mysql 当前所在的上个月 mysql上个月第一天_数据_12

问题根源: 客户端数据只能是GBK, 而服务器认为是UTF8: 矛盾产生

解决方案: 改变服务器, 默认的接收字符集为GBK;

Set character_set_client = gbk;

mysql 当前所在的上个月 mysql上个月第一天_数据_13

插入中文的效果

mysql 当前所在的上个月 mysql上个月第一天_字段_14

查看数据效果: 依然是乱码

mysql 当前所在的上个月 mysql上个月第一天_数据_15

原因: 数据来源是服务器, 解析数据是客户端(客户端只识别GBK: 只会两个字节一个汉字): 但是事实服务器给的数据却是UTF8,三个字节一个汉字: 乱码

解决方案: 修改服务器给客户端的数据字符集为GBK

Set character_set_results = GBK ;

mysql 当前所在的上个月 mysql上个月第一天_服务器_16

查看数据效果

mysql 当前所在的上个月 mysql上个月第一天_字段_17

Set 变量 = 值; 修改只是会话级别(当前客户端,当次连接有效: 关闭失效)

mysql 当前所在的上个月 mysql上个月第一天_服务器_18

设置服务器对客户端的字符集的认识: 可以使用快捷方式: set names 字符集

Set names gbk; ====> character_set_client,character_set_results,character_set_connection

mysql 当前所在的上个月 mysql上个月第一天_数据_19

Connection连接层: 是字符集转变的中间者,如果统一了效率更高,不统一也没问题.

校对集问题

校对集: 数据比较的方式

校对集有三种格式

_bin: binary,二进制比较, 取出二进制位,一位一位的比较, 区分大小写

_cs: case sensitive,大小写敏感, 区分大小写

_ci: case insensitice,大小写不敏感,不区分大小写

查看数据库所支持的校对集: show collation;

mysql 当前所在的上个月 mysql上个月第一天_mysql 当前所在的上个月_20

校对集应用: 只有当数据产生比较的时候,校对集才会生效.

mysql 当前所在的上个月 mysql上个月第一天_服务器_21

对比: 使用utf8 的_bin和_ci来验证不同的校对集的效果