整理MySQL数据库查询语句的相关使用笔记,首先准备查询数据,以下准备了四张表,表结构如下:
students(学生表) | teacher(教师表) | course(课程表) | score(成绩表) |
--学号 --姓名 --性别 --出生年月日 --班级编号 |
--教师编号 --教师名称 --教师性别 --出生年月日 --职称 --所在部门 |
--课程号 --课程名 --教师编号 |
--学号 --课程号 --成绩 |
create table students( sno varchar(20) primary key, sname varchar(20) not null, ssex varchar(10) not null, birthday datetime, class varchar(20) ) default character set = 'utf8'; |
create table teacher( tno varchar(20) primary key, tname varchar(20)not null, tsex varchar(10) not null, tbirthday datetime, prof varchar(20) not null, tdepar varchar(20)not null )default character set = 'utf8'; |
create table course( cno varchar(20) primary key, cname varchar(20)not null, tno varchar(20), foreign key(tno) references teacher(tno) )default character set = 'utf8'; |
create table score( sno varchar(20) not null, cno varchar(20) not null, degree decimal, foreign key(sno) references students(sno), foreign key(cno) references course(cno), primary key(sno,cno) )default character set = 'utf8'; |
首先,创建一个数据库,任意取名
mysql> create database chennuan;
Query OK, 1 row affected (0.00 sec)
切换数据库
mysql> use chennuan;
Database changed
创建学生表:
create table students(
sno varchar(20) primary key,
sname varchar(20) not null,
ssex varchar(10) not null,
birthday datetime,
class varchar(20)
) default character set = 'utf8';
创建教师表
create table teacher(
tno varchar(20) primary key,
tname varchar(20)not null,
tsex varchar(10) not null,
tbirthday datetime,
prof varchar(20) not null,
tdepar varchar(20)not null
)default character set = 'utf8';
创建课程表:
create table course(
cno varchar(20) primary key,
cname varchar(20)not null,
tno varchar(20),
foreign key(tno) references teacher(tno)
)default character set = 'utf8';
Query OK, 0 rows affected (0.02 sec)
创建成绩表:
create table score(
sno varchar(20) not null,
cno varchar(20) not null,
degree decimal,
foreign key(sno) references students(sno),
foreign key(cno) references course(cno),
primary key(sno,cno)
)default character set = 'utf8';
查看创建的表
mysql> show tables;
+--------------------+
| Tables_in_chennuan |
+--------------------+
| course |
| score |
| students |
| teacher |
+--------------------+
4 rows in set (0.00 sec)
添加学生表数据
insert into students values('101','张三','男','1977-09-01','95033');
insert into students values('102','李四','男','1975-10-02','95031');
insert into students values('103','王五','女','1976-01-23','95033');
insert into students values('104','铁柱','男','1976-02-20','95033');
insert into students values('105','小丽','女','1975-02-10','95031');
insert into students values('106','小红','男','1974-06-03','95031');
insert into students values('107','小绿','男','1976-02-20','95033');
insert into students values('108','大妞','女','1975-02-10','95031');
insert into students values('109','乖乖','男','1974-06-03','95031');
添加教师表数据:
insert into teacher values('804','李想','男','1958-06-03','副教授','计算机系');
insert into teacher values('856','张丹','男','1969-02-20','讲师','电子工程系');
insert into teacher values('825','王超','女','1970-02-10','助教','计算机系');
insert into teacher values('831','刘能','女','1961-06-03','助教','电子工程系');
添加课程表数据:
insert into course values('3-105','计算机导论','825');
insert into course values('3-245','操作系统','804');
insert into course values('6-166','数字电路','856');
insert into course values('9-888','高等数学','831');
添加成绩表数据:
insert into score values('103','3-105','92');
insert into score values('103','3-245','86');
insert into score values('103','6-166','85');
insert into score values('105','3-105','88');
insert into score values('105','3-245','75');
insert into score values('105','6-166','79');
insert into score values('109','3-105','76');
insert into score values('109','3-245','68');
insert into score values('109','6-166','81');
FAQ
问题一:
mysql> insert into students values('1','zhang','男','1991-01-02','20');
ERROR 1366 (HY000): Incorrect string value: '\xE7\x94\xB7' for column 'ssex' at row 1
原因为,数据库没有设置字符集为utf8,修改方法参考该文档
//查询表的字符集
mysql> show create table students;
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| students | CREATE TABLE `students` (
`sno` varchar(20) CHARACTER SET latin1 NOT NULL,
`sname` varchar(20) CHARACTER SET latin1 NOT NULL,
`ssex` varchar(10) CHARACTER SET latin1 NOT NULL,
`birthday` datetime DEFAULT NULL,
`class` varchar(20) CHARACTER SET latin1 DEFAULT NULL,
PRIMARY KEY (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//修改表字段字符集
alter table students change sno sno varchar(20) CHARACTER SET utf8 NOT NULL;
//查询数据库字符集
mysql> show variables like '%char%';
+--------------------------------------+----------------------------+
| Variable_name | Value |
+--------------------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| validate_password_special_char_count | 1 |
+--------------------------------------+----------------------------+
9 rows in set (0.02 sec)
https://blog.csdn.net/qq_31683121/article/details/73371697
参考:
感谢code 158编程俱乐部