當前位置:生活全書館 >

綜合知識

> mysql沒有成績說明什麼

mysql沒有成績說明什麼

mysql沒有成績說明什麼

mysql沒有成績說明成績資料為null。mysql是指關係型資料庫管理系統,由瑞典MySQL AB公司開發,屬於Oracle旗下產品。MySQL是最流行的關係型資料庫管理系統之一,在WEB應用方面,MySQL是最好的RDBMS應用軟體之一。關係資料庫將資料儲存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度並提高了靈活性。

小編還為您整理了以下內容,可能對您也有幫助:

mysql查詢成績表中沒有成績學生的編號和姓名

查詢成績表中沒有學生的成績編號和姓名說明在編號中出現了錯誤,需要進行逐字查詢。

沒有成績什麼意思

沒有成績就是說明沒有表現,沒有收穫,考不好,做不好。考不好,沒關係,做不好也沒關係,繼續努力,再來一次,慢慢就會有進步了。

mysql學生表(id,name)科目表(id,name)成績表(id,學生id,科目id,成績)

求平均數的時候可以在程式中實現,如果查尋出來的成績只有兩項,或一項,則沒被查詢出來的資料可以設定成0 。這裡侷限在於建表,如果建表的時候直接用一個表裡面欄位是學生名,學生id ,數學成績,語文成績,英語成績,然後插入的時候預設沒有成績的為0這樣就好多了。

在MySQL中,()值通常用於表示“沒有值”、“無資料”等意義。

【答案】:NULL

解析:在MySQL中NULL值不是一個“值”,NULL表示一種“沒有值”、“無資料”的狀態。在Codd提出關係模型的最早的paper裡,就引入了NULL。NULL典型的用法,比如,使用者註冊,需要輸入一些使用者資訊,但這些資訊並非必要,使用者以後再填寫也行,這時就可以在這些資訊的列上填上NULL。任何試圖讓NULL表示一定含義的用法都是不正確的。2.可以為NULL的列,相對於指定了NOT NULL約束列來說,資料庫會有更多的對資料是否為NULL的邏輯判斷。MySQL(InnoDB)中的NULL,就通過在每一個元組頭裡加入一個是否為NULL的點陣圖實現。

為什麼mysql建立好表後表中沒有資料

解決方案:

首先我們用MySQL自帶的視覺化管理工具MySQL WorkBench開啟資料庫及表格,出現此問題的主要原因是主鍵已經有了名為“XXX”的那項,實際上我寫的程式碼並沒有重複也會彈出此報錯,下面我們看一下我自己的解決方案。

雙擊紅框中選項,填好相應配置,進入後點擊如圖所示先建立資料庫(此操作必須在MySQL已經啟動情況下)左下角SCHEMAS底下就是你的資料庫名字,先雙擊拉出TABLE,在TABLE上右鍵建立新表。

解決方案:

將主鍵設定為自動增長。可以在資料庫手動將相關表設定ID為自增長

手動將表設定為自增長有弊端,建議在annotation裡邊的POJO類使用註解方式設定自增長。mysql的資料庫如圖所示設定。

儲存執行即可解決問題

檢視資料庫,果然自增了

mysql中取出一門成績的平均成績,並且該班中該成績大於平均成績的人選出來的MySQL語句該怎麼寫?

表結構都不給出來,假設表中有姓名,課程,班級,成績這幾個欄位。

方法可以給兩個:

1、使用關聯子查詢

Select 姓名,課程,班級,成績

From 表 a Where a.成績>(Select avg(b.成績) From 表 b where a.課程=b.課程 and a.班級=b.班級)

2、先按照班級和課程求平均成績,然後進行連線查詢

Select a.姓名,a.課程,a.班級,a.成績

From 表 Inner Join (select 班級,課程,avg(成績) 平均成績 From 表 Group By 班級,課程) b

on a.課程=b.課程 and a.班級=b.班級 and a.成績>b.平均成績

MySQL從T07-scores中查詢學生成績不在80-90之間的學生成績資訊?

可以使用以下 SQL 語句查詢 T07-scores 表中學生成績不在80-90之間的學生成績資訊:

sqlCopy codeSELECT * FROM T07-scores WHERE score NOT BETWEEN 80 AND 90;

其中,T07-scores 是資料表名,score 是成績欄位名。這條 SQL 語句使用了 NOT BETWEEN 關鍵字來查詢不在指定範圍內的成績資訊。

Mysql45題

資料準備:

學生表 Student:

科目表 Course

教師表 Teacher

成績表 SC

45題預覽:

題目

1.查詢" 01 "課程比" 02 "課程成績高的學生的資訊及課程分數

1.1 查詢同時存在" 01 "課程和" 02 "課程的情況

1.2 查詢存在" 01 "課程但可能不存在" 02 "課程的情況(不存在時顯示為 null ) 1.3 查詢不存在" 01 "課程但存在" 02 "課程的情況

2.查詢平均成績大於等於 60 分的同學的學生編號和學生姓名和平均成績

3.查詢在 SC 表存在成績的學生資訊

4.查詢所有同學的學生編號、學生姓名、選課總數、所有課程的總成績(沒成績的顯示為 null )

4.1 查有成績的學生資訊

5.查詢「李」姓老師的數量

6.查詢學過「張三」老師授課的同學的資訊

7.查詢沒有學全所有課程的同學的資訊

8.查詢至少有一門課與學號為" 01 "的同學所學相同的同學的資訊

9.查詢和" 01 "號的同學學習的課程 完全相同的其他同學的資訊

10.查詢沒學過"張三"老師講授的任一門課程的學生姓名

11.查詢兩門及其以上不及格課程的同學的學號,姓名及其平均成績

12.檢索" 01 "課程分數小於 60,按分數降序排列的學生資訊

13.按平均成績從高到低顯示所有學生的所有課程的成績以及平均成績

14.查詢各科成績最高分、最低分和平均分: 以如下形式顯示:課程 ID,課程 name,最高分,最低分,平均分,及格率,中等率,優良率,優秀率 及格為>=60,中等為:70-80,優良為:80-90,優秀為:>=90 要求輸出課程號和選修人數,查詢結果按人數降序排列,若人數相同,按課程號升序排列

15.按各科成績進行排序,並顯示排名, Score 重複時保留名次空缺 15.1 按各科成績進行排序,並顯示排名, Score 重複時合併名次

16.查詢學生的總成績,並進行排名,總分重複時保留名次空缺 16.1 查詢學生的總成績,並進行排名,總分重複時不保留名次空缺

17.統計各科成績各分數段人數:課程編號,課程名稱,[100-85],[85-70],[70-60],[60-0] 及所佔百分比

18.查詢各科成績前三名的記錄

19.查詢每門課程被選修的學生數

20.查詢出只選修兩門課程的學生學號和姓名

21.查詢男生、女生人數

22.查詢名字中含有「風」字的學生資訊

23.查詢同名同性學生名單,並統計同名人數

24.查詢 1990 年出生的學生名單

25.查詢每門課程的平均成績,結果按平均成績降序排列,平均成績相同時,按課程編號升序排列

26.查詢平均成績大於等於 85 的所有學生的學號、姓名和平均成績

27.查詢課程名稱為「數學」,且分數低於 60 的學生姓名和分數

28.查詢所有學生的課程及分數情況(存在學生沒成績,沒選課的情況)

29.查詢任何一門課程成績在 70 分以上的姓名、課程名稱和分數

30.查詢不及格的課程

31.查詢課程編號為 01 且課程成績在 80 分以上的學生的學號和姓名

32.求每門課程的學生人數

33.假設成績不重複,查詢選修「張三」老師所授課程的學生中,成績最高的學生資訊及其成績

34.假設成績有重複的情況下,查詢選修「張三」老師所授課程的學生中,成績最高的學生資訊及其成績

35.查詢不同課程成績相同的學生的學生編號、課程編號、學生成績

36.查詢每門功成績最好的前兩名

37.統計每門課程的學生選修人數(超過 5 人的課程才統計)。

38.檢索至少選修兩門課程的學生學號

39.查詢選修了全部課程的學生資訊

40.查詢各學生的年齡,只按年份來算

41.按照出生日期來算,當前月日 < 出生年月的月日則,年齡減一

42.查詢本週過生日的學生

43.查詢下週過生日的學生

44.查詢本月過生日的學生

45.查詢下月過生日的學生

詳細

1.查詢" 01 "課程比" 02 "課程成績高的學生的資訊及課程分數

理清思路:

(1)學生資訊和課程分數分佈對應於student表和sc表

所以,我們需要把它們關聯起來

(2)需要比較同一學生的不同成績,所以需要再關聯成績表sc

(3)利用where進行篩選

1.1 查詢同時存在" 01 "課程和" 02 "課程的情況

?什麼叫做同時存在‘01‘和’02‘課程

?這裡是指cid=’01‘ and cid ='02'?

理清思路:同一個學生既選了01課程,又選了02課程

1.2 查詢存在" 01 "課程但可能不存在" 02 "課程的情況(不存在時顯示為 null )

?如何讓不存在某課程時顯示為null

利用左關聯(left join)

?case when--no

1.3 查詢不存在" 01 "課程但存在" 02 "課程的情況

思路:找到不存在01課程的記錄後,

然後再進行關聯(Inner join)找存在02的課程

或者

2.查詢平均成績大於等於 60 分的同學的學生編號和學生姓名和平均成績

思路:

成績在sc表,學生姓名在student表,二者可以通過學生編號sid進行關聯。

首先,從sc表中查詢平均成績大於60的學生的資訊

ERROR 1111 (HY000): Invalid use of group function

出現這個錯就要往group by這裡考慮,要記得:group by +having+聚合函式。

一些錯誤嘗試:

成功查詢:

接著:通過學生編號sid與student表進行關聯

發現結果明顯不對,

繼續修改:

注意:多個表進行關聯時要明確欄位的歸屬表;查詢聚合函式的結果時,比如avg(score),最好進行重新命名。

存在疑問:

上面兩種寫法的差別就在於 子查詢的avg(score)是否重新命名,但是二者的結果明顯有差異,想請問是為什麼?是不是哪裡沒注意到?

解答:

mysql對於group by的特殊規定:

如果用了group by,select語句裡除了group by後面跟著的列名以外,只能有聚合函式。

如果除了group by後面跟著的列名和聚合函式還有其他列名,sql就會只輸出第一行,而且如果是'*',也會只輸出第一行記錄。

舉例說明:

總結:

如果用了group by +聚合函式,那麼在查詢的時候最好是隻查詢聚合函式(+group by 後的列名)避免在查詢其餘欄位時只顯示一條記錄的情況。

注意:聚合函式是一定要查詢的。

3.查詢在 SC 表存在成績的學生資訊

思路:

(1)首先確定表:sc表和student表

發現名字有重複,

(2)利用group by sid去除重複的學生資訊查詢,具體如下:

注意:更嚴謹的寫法:

(1)先寫查詢分組欄位的子查詢

(2)將(1)中的欄位進行巢狀查詢

注意:group by是分開寫的

4.查詢所有同學的學生編號、學生姓名、選課總數、所有課程的總成績(沒成績的顯示為 null

(1)確定涉及的表的範圍:

student,sc

(2)

思路:

修改:

(2)

(3)

也可以考慮先連線在查詢,但還是建議上述這種方式。

4.1 查有成績的學生資訊

(1)首先確定使用的表範圍

sc和student

(2)首先獲得成績表上的學生id

(3)根據id去查學生資訊

?這個和第三題是完全一樣的嗎

回答:思路基本一致。

參:

思路是:看學生表上的id是否在sc表的id中(即,判斷存在)in/exists

5.查詢「李」姓老師的數量

6.查詢學過「張三」老師授課的同學的資訊

(1)四張表都要用到

(2)四個巢狀

有什麼簡便方法嗎?

回答:參也是逐步巢狀查詢實現的。

7.查詢沒有學全所有課程的同學的資訊

(1)關鍵詞:‘所有課程’在course表,‘同學資訊’在student表,但是二者需要sid進行關聯,所以還需要用到sc表

(2)如何篩選'所有課程’??

利用課程數目來進行限定。

a.course表獲取總課程數

b.按照sid分組,對sc表中的課程數進行計數

c.接著從sc中篩選出課程數=3的學生sid

d.查詢(3)中對應學生sid的學生資訊

8.查詢至少有一門課與學號為" 01 "的同學所學相同的同學的資訊

(1)關鍵詞:

‘至少有一門課’--課程in學號01同學的課程,‘學號01同學的課程’--course表,‘同學資訊’--student表

(2)思路:

a. 01同學學習了什麼課程

發現01同學三門課程都學了,所以其餘學生只要學習的課程數大於0即可。

b. 學號01之外的學生id有哪些

c. 如何查詢其餘學生的課程資訊,比如cid?

利用其餘學生的id進行分組再計數,篩選

出次數大於0的學生id,再根據該id進行學生資訊的查詢。

9.查詢和" 01 "號的同學學習的課程 完全相同的其他同學的資訊

(1)確定相關表:

’01號同學學習的課程‘-sc表;

’其他同學的資訊‘-student表;

(2)思路:

a. 01號同學學習了哪些課程

發現01同學學了三門課,

b.再查詢總共有幾門課?

所以,總共有3門課,01同學全部學習了,

c. 查詢其餘學生中學習課程數目為3的學生id

d. 再跟進相應id在student表中查詢學生資訊

10.查詢沒學過"張三"老師講授的任一門課程的學生姓名

(1)確定相關表:

‘張三老師tid’--teacher;

‘張三老師授課cid’--course;

‘被授課的學生sid’--sc;

‘學生姓名sname’--student;

先找出學習過張三老師課程的學習,再not in即可。

(2)思路:

a.從teacher表中查詢張三老師的tid

b.從course表中查詢張三老師的授課cid

c. 從sc中查詢學習cid=02的學生sid

d.利用not in 查詢沒學過張三老師課程的學生資訊

11.查詢兩門及其以上不及格課程的同學的學號,姓名及其平均成績

(1)根據關鍵字確定相關表:

‘不及格課程數>2’ score<60--sc表,且count(1)>3

'姓名'--student 表

(2)思路:

a. 從sc表查詢score小於60的sid,並根據sid分組計數

b.內連線得到不及格課程數目大於等於2的sid,sname以及avg_score

12.檢索" 01 "課程分數小於 60,按分數降序排列的學生資訊

(1)根據關鍵詞確定相關表:

‘01課程分數小於60’ --sc表

‘學生資訊’--student

(2)思路及實現:

a.先從sc表查詢01課程分數小於60並按分數降序排列的學生資訊

b.根據(1)中的sid從student中查詢學生資訊

13.按平均成績從高到低顯示所有學生的所有課程的成績以及平均成績

(1)根據關鍵詞確定相關表

‘平均成績’--sc表

(2)思路及實現過程:

a. 先按照平均成績從高到低顯示學生sc

還要顯示每個學生的每一科目的成績嗎?

回答:是的,給sc表增加一列avg_score。

14.查詢各科成績最高分、最低分和平均分: 以如下形式顯示:課程 ID,課程 name,最高分,最低分,平均分,及格率,中等率,優良率,優秀率 及格為>=60,中等為:70-80,優良為:80-90,優秀為:>=90 要求輸出課程號和選修人數,查詢結果按人數降序排列,若人數相同,按課程號升序排列

(1)根據關鍵詞確定相關表:

‘成績’ --sc;

‘課程name’--course;

(2)思路及實現:

a. 按照cid對sc表進行分組,並進行初步聚合函式的查詢

b.繼續完善

?如何計算各種率

回答:考察條件計數的技巧 case when

修改成題目要求格式:

15.按各科成績進行排序,並顯示排名, Score 重複時保留名次空缺

(1)根據關鍵詞確定相關表:

sc表

(2)思路:

藉助賦值變數@i實現

a.原始資料增加一列@rank

b.

沒有指定關聯條件的inner join (笛卡爾積),每一行都會與之進行關聯

注意:

mysql儲存過程算成績總分,sql語句沒錯,為什麼總成績為null?

題主還是完善一下問題,語句沒有錯,只能說語法檢查沒有錯,並不代表邏輯上沒有錯

建議你還是按照邏輯逐一檢查排查問題

祝好運,望採納

mysql 在一個表中 總成績大於60才能獲得學分 這個約束咋辦? 如何讓他自動辨別成績而記錄學費

MYSQL約束的新增和刪除 在MYSQL資料庫中,建表時就可以進行對錶的各項進行一些操作,例如設定主鍵或者非空約束,這裡主要講講如何在建表後進行新增約束和追問那咋做到這個約束啊

標籤: mysql 成績
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/zonghezhishi/g6xwww.html