版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenbetter1996/article/details/83271238
即便已经设置了utf-8字符集
DROP DATABASE IF EXISTS `db_lab2`;
CREATE DATABASE `db_lab2` DEFAULT CHARACTER SET utf8;
USE `db_lab2`;
CREATE TABLE `tb_student`(
`pk_sno` INT(10) UNSIGNED AUTO_INCREMENT COMMENT '学号',
`sname` VARCHAR(20) NOT NULL COMMENT '姓名',
`ssex` VARCHAR(4) COMMENT '性别',
`sage` SMALLINT UNSIGNED COMMENT '年龄',
`sdept` VARCHAR(10) NOT NULL COMMENT '系别',
PRIMARY KEY (`pk_sno`),
CONSTRAINT chk_sex CHECK (`ssex` = '男' OR `ssex` = '女')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tb_course`(
`pk_cno` SMALLINT UNSIGNED AUTO_INCREMENT COMMENT '课程号',
`cname` VARCHAR(20) UNIQUE COMMENT '课程名',
`cpno` SMALLINT UNSIGNED COMMENT '先行课',
PRIMARY KEY (`pk_cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tb_sc`(
`pk_sno` INT(10) UNSIGNED AUTO_INCREMENT COMMENT '学号',
`cno` SMALLINT UNSIGNED COMMENT '课程号',
`grade` SMALLINT UNSIGNED COMMENT '成绩',
PRIMARY KEY (`pk_sno`),
FOREIGN KEY (`pk_sno`) REFERENCES `tb_student`(`pk_sno`),
FOREIGN KEY (`cno`) REFERENCES `tb_course`(`pk_cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `tb_student` VALUES(1, "小米", "男", 20, "计算机系");
而且MySQL的默认编码也是utf-8 (可以如下命令查看字符集)
SHOW VARIABLES LIKE '%char%';
即便所有都设置好了,但是source lab2.sql (上面的sql代码),依旧显示下面这句中文错误。
INSERT INTO `tb_student` VALUES(1, "小米", "男", 20, "计算机系");
但是复制这句到mysql>下运行是不会报错的
这也说明了字符集没有错,是记事本的错
把这些代码换个编辑器也不会报错,比如Visual Code