1.设置多个字段为主键
Primary key(属性1,属性2,...)
2.标明外码(方便找到标语表之间的关系)
foreign key(JNO) references J(JNO)
3.出现Cannot add or update a child row: a foreign key constraint fails
新增操作时,要操作的记录中含有外键,但是插入的外键不在外键所属的表中;故在增加该记录时,先把底层的记录补全
4.mysql中.sql文件导入问题
1.注意.sql文件的编码为utf-8
2.导入文件中的语句需要有分号
5.主键和引索不允许重复
删掉原纪录重新导入
6.mysql没有except(减法)
因此两表相减,可用not in
Select .. from .. where (多个属性)not in { select (多个属性).. }
7.定义表结构时,中文之前+n
例如:nvarchar 或者 N’北京’
8.除法思想
参考:查询选修了全部课程的学生姓名
思路:(选课记录表 / 课程表)
即:两个NOT EXISTS表示双重否定:没有一个选了课的学生没有选course表里的课程
方法一
select sname from student where not exists /*没有一个学生满足以下条件*/
(select * from course where not exists/*没有选过Course表里的课*/
(select * from sc where sno =student.sno and cno=course.cno) );/*这里两个=分别指对应的关系,表示选过课并且是Course里的课,只不过用not exists否定掉了*/
方法二
NOT EXISTS& NOT EXISTS#双重否定
SELECT Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM Course
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno= Student.Sno
AND Cno= Course.Cno
)
);
方法三
select distinct S.name
from student as S
where not exists ( (select Cno
from course)
except
(select T.Cno
from SC as T
where S.ID = T.ID));