第一期:
学生表(学生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.
热门工具 换一换