
因为你文件是以utf8格式进行编写的,导入的时候,会默认以ansi/gbk的格式进行指令的执行,表结构你又设置的字符集又是utf8,表里面的所有字段都会以utf8格式进行存储而你是以ansi/gbk进行输入的,两种编码都不匹配,自然会出现编码的异常了
总结:要求插入时的脚本的字符集要与数据库定义的字符集保持一致,

因为你再INSERT INTO前执行了set names utf8语句
那么他就会把文件的插入指令以utf8的形式去读取执行
你的表结构设置的是utf8格式,字段也自然都是utf8格式
那么插入的时候会成功,不会报错
但是因为dos界面默认是ansi/gbk格式进行展示的

因此你在展示的过程中就需要使用set names gbk让其能正常显示
总结:想要在DOS界面正常显示中文,在脚本的插入数据前加上set name utf8,在插入完成所有的数据后
再一次set names gbk;




/*注意脚本文件要保存成ANSI编码格式的文件*/
DROP DATABASE IF EXISTS temp02;
CREATE DATABASE IF NOT EXISTS `temp02` CHARACTER SET utf8;
use temp02;
/*现有父,后有儿子*/
CREATE TABLE IF NOT EXISTS `my_class`(
`cid` int(10) auto_increment comment '班级id',
/*外键在主表中应该是唯一键*/
`cno` VARCHAR(30) NOT NULL DEFAULT '*' UNIQUE comment '班级编号',
`cname` VARCHAR(255) NOT NULL DEFAULT '*' UNIQUE comment '班级名称',
PRIMARY KEY(cid)
);
CREATE TABLE IF NOT EXISTS `my_student`(
`sid` int(10) auto_increment comment '学生id',
`sno` VARCHAR(30) NOT NULL DEFAULT '*' UNIQUE comment '学生学号',
`sname` VARCHAR(30) NOT NULL DEFAULT '*' comment '学生姓名',
`cno` VARCHAR(30) NOT NULL DEFAULT '*' comment '班级编号',
PRIMARY KEY(sid),
FOREIGN KEY(cno) references my_class(cno)
);
/*插入班级表的相关信息*/
set names gbk;
INSERT INTO my_class (cno,cname) VALUES ('sdfz2001','师大附中高一1班');
INSERT INTO my_class (cno,cname) VALUES ('csyz2002','长沙一中高二2班');
INSERT INTO my_class (cno,cname) VALUES ('cq2003','长郡中学高三3班');
/*插入学生表的相关信息*/
INSERT INTO my_student (sno,sname,cno) VALUES ('200110','张三','sdfz2001');
INSERT INTO my_student (sno,sname,cno) VALUES ('200117','李四','sdfz2001');
INSERT INTO my_student (sno,sname,cno) VALUES ('200210','张三','csyz2002');
INSERT INTO my_student (sno,sname,cno) VALUES ('200217','李四','csyz2002');
INSERT INTO my_student (sno,sname,cno) VALUES ('200310','张三','cq2003');
INSERT INTO my_student (sno,sname,cno) VALUES ('200317','李四','cq2003');
SELECT * FROM my_class;
SELECT * FROM my_student;





/*脚本sql文件为.sql的后缀名文件
文件的编码格式需要保存为utf8的编码格式
*/
DROP DATABASE IF EXISTS temp02;
CREATE DATABASE IF NOT EXISTS `temp02` CHARACTER SET utf8;
use temp02;
/*现有父,后有儿子*/
CREATE TABLE IF NOT EXISTS `my_class`(
`cid` int(10) auto_increment comment '班级id',
/*外键在主表中应该是唯一键*/
`cno` VARCHAR(30) NOT NULL DEFAULT '*' UNIQUE comment '班级编号',
`cname` VARCHAR(255) NOT NULL DEFAULT '*' UNIQUE comment '班级名称',
PRIMARY KEY(cid)
);
CREATE TABLE IF NOT EXISTS `my_student`(
`sid` int(10) auto_increment comment '学生id',
`sno` VARCHAR(30) NOT NULL DEFAULT '*' UNIQUE comment '学生学号',
`sname` VARCHAR(30) NOT NULL DEFAULT '*' comment '学生姓名',
`cno` VARCHAR(30) NOT NULL DEFAULT '*' comment '班级编号',
PRIMARY KEY(sid),
FOREIGN KEY(cno) references my_class(cno)
);
/*插入班级表的相关信息*/
set names utf8;
INSERT INTO my_class (cno,cname) VALUES ('sdfz2001','师大附中高一1班');
INSERT INTO my_class (cno,cname) VALUES ('csyz2002','长沙一中高二2班');
INSERT INTO my_class (cno,cname) VALUES ('cq2003','长郡中学高三3班');
/*插入学生表的相关信息*/
INSERT INTO my_student (sno,sname,cno) VALUES ('200110','张三','sdfz2001');
INSERT INTO my_student (sno,sname,cno) VALUES ('200117','李四','sdfz2001');
INSERT INTO my_student (sno,sname,cno) VALUES ('200210','张三','csyz2002');
INSERT INTO my_student (sno,sname,cno) VALUES ('200217','李四','csyz2002');
INSERT INTO my_student (sno,sname,cno) VALUES ('200310','张三','cq2003');
INSERT INTO my_student (sno,sname,cno) VALUES ('200317','李四','cq2003');
set names gbk;
SELECT * FROM my_class;
SELECT * FROM my_student;