数据库类型MYSQL
创建了3个表:
CREATE DATABASE studentinfo; /*数据库创建成功*/
USE studentinfo
//创建学生表
Create table student(
sno varchar(7) not null,
name varchar(7),
primary key(sno));
//插入数据
insert student values('1','zhang');
insert student values('2','wang');
insert student values('3','焦');
//创建课程表
Create table course(
cno varchar(7) not null,
name varchar(7),
primary key(cno));
//向course 录入数据
insert course values('1','math');
insert course values('2','english');
//添加成绩表
create table stu_course(
sno varchar(7) not null,
cno varchar(7) not null,
grade int,
foreign key(sno) references student(sno),
foreign key(cno ) references course(cno),
primary key(sno,cno));
//录入成绩
insert stu_course values('1','1',98);
insert stu_course values('2','2',89);
insert stu_course values('1','2',90);
insert stu_course values('2','1',60);当我使用查询语句:
select student.name,cno
from student,course
where cno like '1' ;
+-------+-----+
| name | cno |
+-------+-----+
| zhang | 1 |
| wang | 1 |
| 焦 | 1 |
+-------+-----+
结果出现了 '焦'同学选秀了1号课程 /*焦同学并没有选修的记录*/
当我使用查询语句:
select student.name, grade
from student,stu_course
where cno like '1';
'焦'同学的成绩出现了,并且与1号同学成绩一样。
+-------+-------+
| name | grade |
+-------+-------+
| zhang | 98 |
| zhang | 60 |
| wang | 98 |
| wang | 60 |
| 焦 | 98 |
| 焦 | 60 |
+-------+-------+
请问是哪里出现问题了。
创建了3个表:
CREATE DATABASE studentinfo; /*数据库创建成功*/
USE studentinfo
//创建学生表
Create table student(
sno varchar(7) not null,
name varchar(7),
primary key(sno));
//插入数据
insert student values('1','zhang');
insert student values('2','wang');
insert student values('3','焦');
//创建课程表
Create table course(
cno varchar(7) not null,
name varchar(7),
primary key(cno));
//向course 录入数据
insert course values('1','math');
insert course values('2','english');
//添加成绩表
create table stu_course(
sno varchar(7) not null,
cno varchar(7) not null,
grade int,
foreign key(sno) references student(sno),
foreign key(cno ) references course(cno),
primary key(sno,cno));
//录入成绩
insert stu_course values('1','1',98);
insert stu_course values('2','2',89);
insert stu_course values('1','2',90);
insert stu_course values('2','1',60);当我使用查询语句:
select student.name,cno
from student,course
where cno like '1' ;
+-------+-----+
| name | cno |
+-------+-----+
| zhang | 1 |
| wang | 1 |
| 焦 | 1 |
+-------+-----+
结果出现了 '焦'同学选秀了1号课程 /*焦同学并没有选修的记录*/
当我使用查询语句:
select student.name, grade
from student,stu_course
where cno like '1';
'焦'同学的成绩出现了,并且与1号同学成绩一样。
+-------+-------+
| name | grade |
+-------+-------+
| zhang | 98 |
| zhang | 60 |
| wang | 98 |
| wang | 60 |
| 焦 | 98 |
| 焦 | 60 |
+-------+-------+
请问是哪里出现问题了。
from student s ,course c,stu_course sc
where c.cno ='1'
and s.sno =sc.sno and c.cno=sc.cno;
查询多个表连接的数据时,如果是关联表,拼到一起要记得写连接条件!
1楼后边添的 and... 就是了。
select s.name,c.no,sc,grade
from student s,course c,stu_course sc
where cno like '1' and s.sno = c.sno and s.sno = sc.sno
--sno 是学号!