MYSQL学习记录(一)

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 EXISTSSELECT *
                        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));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值