1: int和tinyint的使用。
int占4个字节,tinyint占1个字节,这样节约磁盘空间。
2:DELETE的别名
删除表的内容。
DELETE FROM 表名称 WHERE 列名称 = 值
给表起别名,然后进行删除
DELETE 别名 FROM 表名称 别名 WHERE 列名称 = 值
3: in 的讲解。
现在要查询既学习了1课程,又学习了2课程的人
SELECT
a.s_id,
a.c_id
FROM
a_sc a
WHERE
a.c_id IN ("001", "002")
输出的结果:
可以看出,4只包含了2,5只包含了1.然后都给查出来了。这样是不正确的。
应该用exists
SELECT a_student.s_id, a_student.sname FROM a_student INNER JOIN a_SC ON a_student.s_id = a_sc.s_id WHERE a_student.s_id = a_sc.s_id AND a_sc.c_id = '001' AND EXISTS ( SELECT * FROM a_sc AS SC_2 WHERE SC_2.S_id = a_sc.s_id AND SC_2.c_id = '002' );
exists返回值是true 或者false。先把001的都给查询出来。然后去查询002的。如果为true,显示出来。返回false,不显示出来。
下面来演示 NOT EXISTS
SELECT a_student.s_id, a_student.sname FROM a_student INNER JOIN a_SC ON a_student.s_id = a_sc.s_id WHERE a_student.s_id = a_sc.s_id AND a_sc.c_id = '001' AND NOT EXISTS ( SELECT * FROM a_sc AS SC_2 WHERE SC_2.S_id = a_sc.s_id AND SC_2.c_id = '002' );
显示的结果是:
这里为什么显示5,不显示4呢?
是因为用“=001” 和ture或false去判断的。这里表示查询学习了001,但是没有学习002的。