学生成绩关系数据库中学生是什么

说白了,这个学生表S就是成绩系统里的基本信息库。
其实很简单,它就四列:学号(SNO)、姓名(SNAME)、年龄(AGE)、性别(SEX)。
去年我们跑的那个项目里,这表大概支撑了3 000量级的学生数据,每次查询响应不到1 毫秒,效率挺高。
不过,当学生数据量突破5 万时,就得考虑索引优化了,否则更新操作会明显变慢——用行话说叫雪崩效应,其实就是前面一个小延迟把后面全拖垮了。

说实话挺坑的,我一开始也以为直接用学号做主键就够了,后来发现不对,还得加个唯一索引。
等等,还有个事,年龄这个字段最好设成整型,别用字符串,不然统计时会出幺蛾子。
这个点很多人没注意。
我觉得值得试试用触发器自动同步学生信息到成绩表,能省不少手工操作。

SQL用select语句查询90分以上的学生的姓名及课程号

记得有一次,我帮一个朋友处理他的数据库项目,他需要从学生表和成绩表里找出那些考了9 0分以上的学生,并且知道他们选了哪些课程。
这听起来简单,但实际上,当时我们花了点时间来确保SQL语句的正确性。
我记得当时是在一个阳光明媚的下午,我们坐在办公室里,敲打键盘的声音和窗外的蝉鸣交织在一起。
我输入了那段INNER JOIN的语句,然后按下了回车键,屏幕上瞬间出现了结果。
那一瞬间,我看到那些名字和课程号,心里想,原来数据的力量是如此强大,它能帮我们解决实际问题,也能让我们对复杂的信息一目了然。
等等,还有个事,我突然想到,如果需要限制结果数量,比如只看前1 0个成绩最高的学生,我们可以用LIMIT关键字,比如LIMIT 1 0但在这个场景中,我们可能不需要限制,因为每个学生只有一条记录,对吧?不过,如果成绩表里有重复的成绩,这个限制就很有必要了。

用SQL语句写出所有学生的学号、姓名、成绩、课号。

哎,跟你讲讲我之前在某个公司干的事。
那会儿我们系统里头,学生信息、成绩、还有课号是分开的表,得搞个查询把他们合到一块儿。

我记得是某年冬天,在一个小城市搞项目。
我们有个老师跟我说,老王啊,你得帮我把学生名单和成绩搞出来,还得知道他们学了哪些课。
他手上有两个表,一个是学生表,有学号、姓名啥的;另一个是成绩表,有学号、成绩、课号。
但老师说了,有的学生可能成绩还没录入呢,名单不能少。

我当时就琢磨,这咋办?用啥查法呢?我就想,这用左连接(LEFT JOIN)肯定行。
我就写了个SQL,跟你说说我是咋写的:
sql SELECT S.学号, S.姓名, SC.成绩, SC.课号 FROM S LEFT JOIN SC ON S.学号 = SC.学号
我跟他讲,你看啊,这个LEFT JOIN的意思是,把学生表S里的每个学生都拉出来,然后去看看成绩表SC里有没有他对应的成绩。
有就显示,没有就空着,但学生肯定得显示,不能漏。

结果呢?这查询跑出来,每个学生的学号、姓名都有了,有成绩的显示成绩和课号,没成绩的,成绩和课号那两列就空着。
老师一看,哎,这就对!他说,这帮学生,谁哪门课没考,一目了然。

后来我还跟他说,你看你这表挺大,万一以后学生多了,查询慢了咋办?他说得加索引。
我就去加了个学号索引,嘿,确实快不少。
你看,这数据库啊,用好了省事儿,用不好,自己头都大了。

所以啊,你这个SQL写得对,是个好办法。
关键是要知道啥时候用啥连接。