第一期:

学生表(学生id,姓名,性别,分数) )student(s_id, name, sex, score)

班级表(班级id,班级名称) class(c_id, c_name)

学生班级表(班级id,学生id) student_class(s_id,c_id)

1.查询一班得分在80分以上或者等于60,61,62的学生

2.査询所有班级的名称,和所有版中女生人数和女生的平均分。

答案: 

(1)SELECT s.s_id,s.name,s.score,sc.c_id,c.c_name from student s LEFT JOIN
student_class sc on s.s_id = sc.s_id LEFT JOIN class c on sc.c_id=c.c_id where
(s.score>80 or s.score in(60,61,62)) and c.c_name='一班';

(2)SELECT sc.s_id,c.c_name,COUNT(s.sex),AVG(s.score) from student_class sc
LEFT JOIN class c on sc.c_id=c.c_id LEFT JOIN student s on sc.s_id = s.s_id
where s.sex='女' group BY c.c_name ORDER BY c.c_id asc;

第二期:

sql语句应该考虑哪些安全性? 

答案:

(1)防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语句绑定变量。 
(2)最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账户。 
(3)当sql运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止泄漏服务器和数据库相关信息。

第三期:

用一条 SQL语句查询出每门课都大于 80 分的学生姓名?



答案:

select name from student where name not in (select  name from student where
fenshu <=80);

第四期:

MySQL外连接、内连接的区别?

答案:

内连接 

连接的数据表相对应的匹配字段完全相等的连接。连接关键字是 inner join

外连接

分为左外连接与右外连接、全连接。

左连接的结果集包括指定的左表全部数据与匹配的右表数据,右表中没匹配的全为空值.关键字 left join

右连接的结果集包含指定的右表全部数据与匹配的左边数据,左边中没匹配的全为空值.关键字 right join

全连接返回左右数据表的所有行.关键字 full join

第五期:

什么是数据库事务?

答案:


单个逻辑单元执行的一系列操作,这些操作要么全做要么全不做,是不可分割的.事务的开始和结束用户是可以控制的,如果没控制则由数据库默认的划分事务.事务具有以下性质:

(1)原子性

    指一个事务要么全执行,要么全不执行.也就是说一个事务不可能执行到一半就停止了.比如:你去买东西,钱付掉了,东西没拿.这两步必须同时执行
,要么都不执行.

(2)一致性

   指事务的运行并不改变数据库中的一致性.比如 a+b=10;a改变了,b也应该随之改变.

(3)独立性

   两个以上的事务不会出现交替运行的状态,因为这样可能导致数据的不一致

(4)持久性

   事务运行成功之后数据库的更新是永久的

第六期:

union 与union all的区别?

答案: 

union 在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排 序运算,删除重复的记录再返回结果。

 union all 则会显示重复结果,只是简单的两个结果合并并返回.所以效率比union高,在保证没有重复数据的情况下用union all.