sql學生成績表設計
㈠ SQL語句求一個學生表的學生成績的平均成績
問題:假設有張學生成績表(tb)如下:
姓名
課程
分數
張三
語文
74
張三
數學
83
張三
物理
93
李四
語文
74
李四
數學
84
李四
物理
94
想變成(得到如下結果):
姓名
語文
數學
物理
----
----
----
----
李四
74
84
94
張三
74
83
93
-------------------
*/
create
table
tb(姓名
varchar(10)
,
課程
varchar(10)
,
分數
int)
insert
into
tb
values('張三'
,
'語文'
,
74)
insert
into
tb
values('張三'
,
'數學'
,
83)
insert
into
tb
values('張三'
,
'物理'
,
93)
insert
into
tb
values('李四'
,
'語文'
,
74)
insert
into
tb
values('李四'
,
'數學'
,
84)
insert
into
tb
values('李四'
,
'物理'
,
94)
go
--sql
server
2000
靜態sql,指課程只有語文、數學、物理這三門課程。(以下同)
select
姓名
as
姓名
,
max(case
課程
when
'語文'
then
分數
else
0
end)
語文,
max(case
課程
when
'數學'
then
分數
else
0
end)
數學,
max(case
課程
when
'物理'
then
分數
else
0
end)
物理
from
tb
group
by
姓名
--sql
server
2000
動態sql,指課程不止語文、數學、物理這三門課程。(以下同)
declare
@sql
varchar(8000)
set
@sql
=
'select
姓名
'
select
@sql
=
@sql
+
'
,
max(case
課程
when
'''
+
課程
+
'''
then
分數
else
0
end)
['
+
課程
+
']'
from
(select
distinct
課程
from
tb)
as
a
set
@sql
=
@sql
+
'
from
tb
group
by
姓名'
exec(@sql)
--sql
server
2005
靜態sql。
select
*
from
(select
*
from
tb)
a
pivot
(max(分數)
for
課程
in
(語文,數學,物理))
b
--sql
server
2005
動態sql。
declare
@sql
varchar(8000)
select
@sql
=
isnull(@sql
+
'],['
,
'')
+
課程
from
tb
group
by
課程
set
@sql
=
'['
+
@sql
+
']'
exec
('select
*
from
(select
*
from
tb)
a
pivot
(max(分數)
for
課程
in
('
+
@sql
+
'))
b')
---------------------------------
/*
問題:在上述結果的基礎上加平均分,總分,得到如下結果:
姓名
語文
數學
物理
平均分
總分
----
----
----
----
------
----
李四
74
84
94
84.00
252
張三
74
83
93
83.33
250
*/
--sql
server
2000
靜態sql。
select
姓名
姓名,
max(case
課程
when
'語文'
then
分數
else
0
end)
語文,
max(case
課程
when
'數學'
then
分數
else
0
end)
數學,
max(case
課程
when
'物理'
then
分數
else
0
end)
物理,
cast(avg(分數*1.0)
as
decimal(18,2))
平均分,
sum(分數)
總分
from
tb
group
by
姓名
--sql
server
2000
動態sql。
declare
@sql
varchar(8000)
set
@sql
=
'select
姓名
'
select
@sql
=
@sql
+
'
,
max(case
課程
when
'''
+
課程
+
'''
then
分數
else
0
end)
['
+
課程
+
']'
from
(select
distinct
課程
from
tb)
as
a
set
@sql
=
@sql
+
'
,
cast(avg(分數*1.0)
as
decimal(18,2))
平均分
,
sum(分數)
總分
from
tb
group
by
姓名'
exec(@sql)
--sql
server
2005
靜態sql。
select
m.*
,
n.平均分
,
n.總分
from
(select
*
from
(select
*
from
tb)
a
pivot
(max(分數)
for
課程
in
(語文,數學,物理))
b)
m,
(select
姓名
,
cast(avg(分數*1.0)
as
decimal(18,2))
平均分
,
sum(分數)
總分
from
tb
group
by
姓名)
n
where
m.姓名
=
n.姓名
--sql
server
2005
動態sql。
declare
@sql
varchar(8000)
select
@sql
=
isnull(@sql
+
','
,
'')
+
課程
from
tb
group
by
課程
exec
('select
m.*
,
n.平均分
,
n.總分
from
(select
*
from
(select
*
from
tb)
a
pivot
(max(分數)
for
課程
in
('
+
@sql
+
'))
b)
m
,
(select
姓名
,
cast(avg(分數*1.0)
as
decimal(18,2))
平均分
,
sum(分數)
總分
from
tb
group
by
姓名)
n
where
m.姓名
=
n.姓名')
drop
table
tb
㈡ 用SQL語言創建學生成績資料庫及資料庫中的表及表之間的關系。
0分你就來找人幫你做啊?
寫出來正經得一會呢
㈢ 有一個student表,有學號,姓名,科目,成績等欄位,請寫一條sql語句,算出學生的總分數
Mysql 示例:
1. 創建t_student表
CREATETABLE`t_student`(
`id`intNOTNULLAUTO_INCREMENT,--自增ID
`studentID`varchar(20)NULL,--學號
`studentName`varchar(20)NULL,--姓名
`subject`varchar(50)NULL,--科目
`score`doubleNULL,--成績
PRIMARYKEY(`id`)--主鍵設置
);
2. 填充數據
㈣ SQL查詢,學生表,課程表,成績表的一個查詢要求如下怎麼寫呢
selects.sid,s.sname,sc.scorefromstudent,course,scwherestudent.sid=sc.sidandcourse.cid=sc.cidandcourse.cname='影視設計';
注意一下,你自己寫的sid和sname中間沒有逗號,到時候一定執行報錯
㈤ 怎麼用sql資料庫建一個學生信息表我要做一個成績查詢系統,可以實現學生成績的查詢,急啊!!
也不算復雜吧,如果是SQL SERVER,我告訴你步驟吧。
1.安裝SQL SERVER,目前版本是2008,注意版本對應的操作專系統。
2.安裝完成後,在屬開始菜單打開SQL Server Management Studio,伺服器名稱默認,如果是空的,就輸入一個. ,身份驗證選擇windows身份驗證。
3.登錄後左側菜單的菜單里找「資料庫」,點開此節點後,在「資料庫」菜單上點右鍵,選擇「新建資料庫」,點擊後在彈出的窗口信息里填寫信息,填完後點確定,資料庫就創建成功了,不過裡面還沒有表。
4.新建表,點開你剛才建立的資料庫後,找到「表」菜單,雙擊,然後在「表」菜單上點右鍵,選擇「新建表」,輸入你要填寫的欄位名,選擇好類型,長度後,點擊確定,就建好表了,這時再右鍵選中「表」菜單,選擇「刷新」,剛才建立的表就可以顯示出來了。
你應該總結出學生成績查詢需要幾張表,我大概告訴你一下吧,最基本的3張,
1.學生基本信息表
2.學生考試科目表
3學生成績表,這三張之間的關系你要是搞明白了,那學生成績查詢就不會有問題了。
㈥ 如何用SQL建立一個學生成績管理系統資料庫
首先在SQL中利用企業管理器或向導建立一個資料庫,命名為學生管理系統,啟動SQL Sever服務,運行企業管理器,單擊要創建資料庫的伺服器左邊的加號圖標,展開樹形目錄,在「資料庫」節點上右擊滑鼠,在彈出的快捷菜單中選則「新建資料庫」命令,然後按照提示一步步建立資料庫,不再詳細敘述。假設學生管理系統下有三個表,分別為學生表、課程表、修課表,表的結構分別如下:學生表(student) (學號(sno) 普通編碼定長字元類型,長度7,主碼,姓名(sname) 普通編碼定長字元類型,長度8,非空,性別(ssex) 統一編碼定長字元類型,長度1,年齡(sage) 微整型,所在系(sdept) 統一編碼可變長字元類型,長度20)課程表(course) (課程號(cno) 普通編碼定長字元類型,長度6,主碼,課程名(cname) 統一編碼定長字元類型,長度10,非空,學分(credit) 小整型,學期(semester) 小整型)修課表(sc)(學號(sno) 普通編碼定長字元類型,長度7,主碼,外碼課程號(cno) 普通編碼定長字元類型,長度6,主碼,外碼成績(grade) 小整型,修課類別(type)普通編碼定長字元類型,長度4)則創建表的語句分別為:create table Student(Sno char(7) primary key,Sname char(8) not null,Ssex nchar(1),Sage tinyint,Sdept nvarchar(20))create table Course(Cno char(6) primary key,Cname nchar(10) not null,Credit smallint,Semester smallint)create table SC(Sno char(7),Cno char(6),Grade smallint,Type char(4),primary key(Sno,Cno),Foreign key(Sno) References Student (Sno),Foreign key(Cno) References Course (Cno))各表的結構大體如此,如有變化可自行修改。 以上資料庫和表就基本建立好了,然後就可以通過數據導入或SQL語句等向資料庫中添加學生的各項具體數據了。
SQL語言,是結構化查詢語言(Structured Query Language)的簡稱。SQL語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統;同時也是資料庫腳本文件的擴展名。
㈦ 求學生表和成績表的sql語句
select t.name,avg(c.score),max(c.score),min(c.score) from t_score c right join t_student t GROUP BY t.student_id,c.item_id
㈧ 用SQL語言建立一個學生成績資料庫
create database [資料庫名]; user [該資料庫名]; --學生表 create table [學生表表名]( sId int primary key, --學生ID編號,主鍵 sName varchar(10) unique not null, --學生名字 ); --科目表 create table [科目表表名]( sjId int primary key, --科目ID編號,主鍵 sjName varchar(10) unique not null, --科目名稱 ); --成績表 create table [成績表表名] rId int primary key, --成績ID編號,主鍵 sjId int references [科目表表名](sjId), --科目ID編號,繼承科目表的ID編號 sId int references [學生表表名](sId), --學生ID編號,繼承學生表的ID編號 result float not null --成績 ); --查詢語句 select r.rId,sj.sjId,sj.sjName,su.sId,su.sName,r.result from [成績表表名] r, join [科目表表名] sj on sj.sjId=r.sjId, join [學生表表名] su on su.sId=r.sId;
㈨ 用SQL創建一個學生表,課程表,學生成績表
第一個表是學生表Student,包含三個欄位,學生id(_id) 和 學生姓名(stu_name)和課程id(les_id)
Create Table [dbo].Student(
stu_id [uniqueidentifier] NOT NULL,
stu_name [nvarchar](425) NOT NULL,
les_id [uniqueidentifier] NOT NULL
)
第二個表課程表Lesson,兩個欄位,課程id(les_id)和課程名稱(les_name)
Create Table [dbo].Lesson(
les_id [uniqueidentifier] NOT NULL,
les_name [nvarchar](425) NOT NULL
)
第三個表學生成績表Score,三個欄位課程id(les_id),學生id(stu_id)和課程得分(les_score)
Create Table [dbo].Score(
les_id [uniqueidentifier] NOT NULL,
stu_id [uniqueidentifier] NOT NULL,
les_score [int] NOT NULL
)