mysql學生成績
㈠ MySQL查詢成績最高的學生及分數(兩張表)
參考sql如下:
㈡ mysql資料庫學生成績查詢問題
mysql的索引分來成:primary key, unique, index, fulltext index。 primary key是主鍵, unique是唯自一索引, index是普通的索引。fulltext index是全文索引。 索引的作用就像C語言里的指針那樣,直接指向表的一行。
可以對用col_name(N) 對符串的前N個位元組做索引。 text類型和blob類型則必須要對前N個位元組做索引。MYISAM最多支持1000個位元組的索引, INNODB最多支持767位元組的索引。
㈢ MySQL,問題:求出每科的平均成績、最高成績、最低成績及對應的學生信息。
這題復目考的是關聯查制詢、分組、排序等基礎知識
1.每科的平均成績:
selectavg(grade)fromstu_gradegroupbycourse;
2.每科的最高成績及對應的學生信息:
select
B.grade,
A.*
fromstu_gradeasB
leftjoinstu_infoasAonB.stu_No=A.stu_No
groupbyB.course
orderbyB.gradedesclimit1;
3.每科的最低成績及對應的學生信息:
select
B.grade,
A.*
fromstu_gradeasB
leftjoinstu_infoasAonB.stu_No=A.stu_No
groupbyB.course
orderbyB.gradeasclimit1;
㈣ mysql中將平均成績為72分的學生所以成績增加3分,語句怎麼寫
update Ttbl t
set t.成績回 = t.成績 + 3
where t.學生答ID in
(
select a.學生ID from Ttbl a
where avg(a.成績) = 72
)
㈤ MYSQL根據table1學生姓名,修改table2學生X課程的成績
如果能更改表結構:
1、增加一個表table3,欄位為id,name,主鍵id
2、table1、table2分別增加一個外鍵欄位nameid,來版自於table3的id
3、 select * from table1 t1, table2 t2 where t1.nameid= t2.nameid
如果不權能修改表結構:
1、兩個表都增加索引,name
2、也可以通過程序來搞定,例如php,把兩個表中的數據分別存放入兩個數組,然後依據name組裝數組
㈥ mysql有一張成績表(姓名)(班級)(成績)三個欄位,查出不同班級的成績前三名的學生的分數
select* from 成績表 a where (select COUNT(1) FROM 成績表 where 班級=a.班級 and 成績>a.成績)<=2
㈦ 使用mysql 一個資料庫中有倆個表: student(學生表) 和score(成績表)
SET @i=0。
SQL本身有數據導入的操作。但如果要從一個備份的文件中導入數據,則要進行另外的操作。下面以一個例子進行說明。
SQL伺服器上已有一個DOE資料庫,並且裡面有大量的數據,現准備從另外一個備份文件A1.BAK(不是DOE資料庫的備份文件)中導入另外的數據(即導入後在DOE中增加一些數據表,表中已錄有數據),並保持原DOE的數據不變。
(7)mysql學生成績擴展閱讀:
在為MySQL分配足夠的內存之前,請考慮不同領域對MySQL的內存需求。要考慮的關鍵領域是:並發連接——對於大量並發連接,排序和臨時表將需要大量內存。在撰寫本文時,對於處理3000+並發連接的資料庫,16GB到32GB的RAM是足夠的。
內存碎片可以消耗大約10%或更多的內存。像innodb_buffer_pool_size、key_buffer_size、query_cache_size等緩存和緩沖區要消耗大約80%的已分配內存。
㈧ mysql 如何查詢每個學生成績最高那門課程
Select 課程,MAX(成績) from 表 group by 學生名欄位,這樣應該可以吧
㈨ mysql中一張學生表,查詢出單科成績前十名學生的所有信息 和總分成績前十名學生的所有信息 在線等
學生表名為:student, 單科成績的欄位為:subject。學生名字為:name
查詢單科成績前十:mysql語句為:select * from student order by subject desc limit 10;
查詢總分成績前十:mysql語句為:select sum(subject) subject,name from student group by name order by subject desc limit 10;
註:
select sum(subject) subject,name
這句的意思是:sum(subject) subject 把單科成績加總用subject 來命名(就是總成績),name就是一個欄位,這里只有兩個欄位。
group by name order by subject : group by name 的意思按照名字這一欄來分組,當然,學生成績表名字有可能是一樣的,按照學號是最准確的,這里只是舉個例子。
order by subject 這句的意思是按照總分成績排序,這里的subject 是前面重命名總分的意思。
select sum(subject) as countsubject,name from student group by name order by countsubject desc limit 10;
(9)mysql學生成績擴展閱讀:
學生成績表常用sql
1. 在表中插入符合主鍵
[sql]
/*成績表*/
CREATE TABLE SC
(
Sid INT REFERENCES Student(Sid), /*學生學號*/
Cid INT REFERENCES Course(Cid), /*課程編號*/
Score INT NOT NULL, /*課程分數*/
PRIMARY KEY(Sid,Cid) /*將學生學號和課程編號設為復合主鍵*/
)
2. 查詢各科成績最高分,最低分以及平均分
[sql]
SELECT c.Cname, MAX(s.Score) AS Max, MIN(s.Score) AS Min, AVG(s.Score) AS Average
FROM Course c JOIN SC s ON c.Cid = s.Cid
GROUP BY c.Cname
/*此處應注意,若不按照c.Cname進行分組,SQL語句會報錯,c.Cname在SELECT語句中不合法,因為它並未出現在聚合函數中也沒有出現在GROUP BY語句中*/
3. 查詢平均成績大於80分的學生姓名以及平均成績
[sql]
SELECT Sname, AVG(Score) AS Average FROM Student JOIN SC
ON Student.Sid=SC.Sid
GROUP BY Sname
HAVING AVG(Score)>80
/*以聚合函數為條件進行刪選只能在HAVING語句中進行,WHERE語句不支持聚合函數*/
4.按總分為學生排名,總分相同名次相同
[sql]
SELECT RANK() OVER (ORDER BY SUM(ss.Score) DESC) AS Rank, s.Sname,
ISNULL(SUM(ss.Score),0)
FROM Student s LEFT JOIN SC ss
ON s.Sid = ss.Sid
GROUP BY s.Sname
ORDER BY SUM(ss.Score) DESC
/*RANK()是SQL Server的一個built-in函數,語法為
RANK() OVER ( [ partition_by_clause ] order_by_clause ).*/
5. 查詢總分在100至200之間的學生姓名及總分
[sql]
SELECT s.Sname,SUM(ss.Score) FROM Student s JOIN SC ss ON s.Sid=ss.Sid
GROUP BY s.Sname HAVING SUM(ss.Score) BETWEEN 100 AND 200