新增数据
两种方案:
方案1:给全表字段插入数据,不需要指定字段列表:要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致:凡是非数值数据都需要使用引号(建议是单引号)包裹
insert into 表名 values(值列表)[,(值列表)];– 可以一次性插入多条记录
-- 插入数据
insert into my_student values(1,'itcast0001','Jim','male'),
(2,'itcast0002','Tom','female');
方案2:给部分字段插入数据,需要选定字段列表;字段列表出现的顺序与字段的顺序无关;但是值列表的顺序必须与选定的字段顺序一致
insert into 表名 (字段列表) values (值列表)[,值列表];
-- 插入数据:指定字段列表
insert into my_student(number,sex,name,id)
values ('itcast0003','male','ABC',3),
('itcast0004','female','Lily',4);
查看数据
select */字段列表 from 表名 [where条件];
-- 查看所有数据
select * from my_student;
-- 查看指定字段指定条件的数据
select id,number,sex,name from my_student where id=1; -- 查看满足id为1 的学生信息
更新数据
update 表名 set 字段= 值 [where条件];-- 建议都有where,要不就是更新全部
-- 更新数据
update my_student set sex='female' where name='Jim';
更新不一定会成功,如果没有真正需要更新的数据,就不会更新
删除数据
删除不可逆,谨慎操作
delete from 表名 [where条件];
-- 删除数据
delete from my_student where sex='male';
中文数据问题
中文数据问题本质是字符局问题,
计算机只识别二进制:人类更多是识别符号,需要有个二进制与字符的对应关系(字符集)
-- 插入数据(中文)
insert into my_student values(5,'itcast0005','张越','男');
插入数据不成功!!!!原因:\xD5\xC5\xD4\xBD代表的是“张越”在当前编码(字符集)下对应的二进制编码转换成的十六进制 服务器没有识别对应字节,,服务器认为数据时UTF8,当前字符集为GBK
-- 查看服务器到底识别哪些字符集
show character set;
-- 查看服务器默认的对外处理的字符集
show variables like 'character_set%';
问题根源:客户端数据只能是GBK,而服务器认为是UTF8:产生矛盾
解决:改变服务器,默认的接收字符集为GBK
set character_set_client=gbk;
-- 修改服务器认为的客户端数据的字符集为GBK
set character_set_client=gbk;
插入中文的效果:正常
查看数据效果:乱码
-- 查看数据
select * from my_student;
原因:数据来源是服务器,解析数据是客户端(客户端只识别GBK),服务器给的数据是UTF8.。
解决方案:修改服务器给客户端的字符集为GBK
set character_set_results=gbk;
-- 修改服务器给定数据的字符集为gbk
set character_set_results=gbk;
查看数据效果:正常,,问题解决
**set 变量=值; **修改只是会话级别(当前客户端,当次连接有效,,关闭失效)
重新进入后效果 变回utf8
设置服务器对客户端的字符集的认识:可以使用快捷方式:set names 字符集;
-- 快捷设置字符集
set names gbk;
更改了三个:client;connection;results;
connection:连接层,是字符集转变的中间者,统一了效率更高,不统一也没问题。