sql數(shù)據(jù)庫建表優(yōu)質(zhì)資料_第1頁
sql數(shù)據(jù)庫建表優(yōu)質(zhì)資料_第2頁
sql數(shù)據(jù)庫建表優(yōu)質(zhì)資料_第3頁
sql數(shù)據(jù)庫建表優(yōu)質(zhì)資料_第4頁
sql數(shù)據(jù)庫建表優(yōu)質(zhì)資料_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

sql數(shù)據(jù)庫建表優(yōu)質(zhì)資料(可以直接使用,可編輯優(yōu)質(zhì)資料,歡迎下載)

1.寫出創(chuàng)建如下三張表的SQL語句,要求在定義表的同時定義數(shù)據(jù)的完整性約束:sql數(shù)據(jù)庫建表優(yōu)質(zhì)資料(可以直接使用,可編輯優(yōu)質(zhì)資料,歡迎下載)(1)“圖書表”結(jié)構(gòu)如下:書號:統(tǒng)一字符編碼定長類型,長度為6,主鍵;書名:統(tǒng)一字符編碼可變長類型,長度為30,非空;第一普通編碼定長字符類型,長度為10,非空;出版日期:小日期時間型;價格:定點小數(shù),小數(shù)部分1位,整數(shù)部分3位。(2)“書店表”結(jié)構(gòu)如下:書店編號:統(tǒng)一字符編碼定長類型,長度為6,主鍵;店名:統(tǒng)一字符編碼可變長類型,長度為30,非空;:普通編碼定長字符類型,8位長,每一位的取值均是0~9的數(shù)字;地址:普通編碼可變長字符類型,40位長。郵政編碼:普通編碼定長字符類型,6位長。(3)“圖書銷售表”結(jié)構(gòu)如下:書號:統(tǒng)一字符編碼定長類型,長度為6,非空;書店編號:統(tǒng)一字符編碼定長類型,長度為6,非空;銷售日期:小日期時間型,非空;銷售數(shù)量:小整型,大于等于1。主鍵為(書號,書店編號,銷售日期);其中“書號”為引用“圖書表”的“書號”的外鍵;“書店編號”為引用“書店表”的“書店編號”的外鍵。答:CREATETABLE圖書表(書號nchar(6)primarykey,書名nvarchar(30)notnull,第一作者char(10)notnull,出版日期smalldatetime,價格numeric(4,1))CREATETABLE書店表(書店編號nchar(6)primarykey,店名nvarchar(30)notnull,char(8)check(like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),地址varchar(40),郵政編碼char(6))CREATETABLE圖書銷售表(書號nchar(6)notnull,書店編號nchar(6)notnull,銷售日期smalldatetimenotnull,銷售數(shù)量smallintcheck(銷售數(shù)量>=1),primarykey(書號,書店編號,銷售日期),foreignkey(書號)references圖書表(書號),foreignkey(書店編號)references書店表(書店編號))1.1為圖書表添加“印刷數(shù)量”列,類型為整數(shù),同時添加約束,要求此列的取值要大于等于1000。答:ALTERTABLE圖書表ADD印刷數(shù)量intcheck(印刷數(shù)量>=1000)1.2刪除“書店表”中的“郵政編碼”列。答:ALTERTABLE書店表DROPCOLUMN郵政編碼1.3將“圖書銷售表”中的“銷售數(shù)量”列的數(shù)據(jù)類型改為整型。答:ALTERTABLE圖書銷售表ALTERCOLUMN銷售數(shù)量int2.設某商業(yè)集團數(shù)據(jù)庫中有三個實體集:商店:商店編號、商店名、地址商品:商品編號、商品名、規(guī)格、單價職工:職工編號、姓名、性別、業(yè)績每個商店可銷售多種商品,每種商品也可放在多個商店銷售,每個商店銷售一種商品時有月銷售量;每個商店有許多職工,每個職工只能在一個商店工作,商店聘用職工有聘期和月薪。(1)試畫出E-R圖,要求在圖上注明屬性及聯(lián)系的類型;(2)將E-R圖轉(zhuǎn)換成關系模型,并注明主碼;(3)根據(jù)實際情況,使用SQL創(chuàng)建表,包括各種約束;(4)用SQL語句查找大于平均業(yè)績的職工姓名;(5)用SQL語句創(chuàng)建一個業(yè)績大于100的所有男職工信息的視圖。(1)(5分)(2)這個E-R圖可轉(zhuǎn)換為4個關系模式:(8分)商店(商店編號,商店名,地址)(2分)職工(職工編號,姓名,性別,業(yè)績,商店編號,聘期,月薪)(2分)商品(商品編號,商品名,規(guī)格,單價)(2分)銷售(商店編號,商品編號,月銷售量)(2分)(3)createshop(Sidchar(3)primarykey,Snamechar(10),Saddchar(50));(2分)createemployee(Eidchar(3)primarykey,Enamechar(5),Esexchar(1),Eachreal,Sidchar(3),Eredate,Esaint,foreignkey(Sid)references(shop));(2分)createcommodity(Cidchar(3)primarykey,Cnamechar(10),Cspchar(10),Cprreal);(2分)createvendition(Sidchar(3),Cidchar(3),Vseint,primarykey(Sid,Cid),foreignkey(Sid)references(shop),foreignkey(Cid)references(commodity));(2分)(4)selectEnamefromemployeexwhereEach>=(selectavg(Each)fromemployeeywherey.Each=x.Each);(5)createviewEman(Eid,Ename,Esex,Each,Sid,Ere,Esa)AsselectEid,Ename,Esex,Each,Sid,Ere,EsfromemployeewhereEach>100andEsex=’男’;(2分)3.(共10分)設學校數(shù)據(jù)庫中有兩個實體集:學生表:學號、姓名、班級課程表:課程號、課程名稱、教師某學校有若干學生,每個學生可以選修多門課程,學校有若干課程供學生選修,每門課程可以供多個學生選修,要建立該學校學生選修課程的數(shù)據(jù)庫,請設計:(1)試畫出E-R圖,要求在圖上注明屬性及聯(lián)系的類型;(2)將E-R圖轉(zhuǎn)換成關系模型,并注明主碼;(2)這個E-R圖可轉(zhuǎn)換為4個關系模式:(12分)商店(商店編號,商店名,地址)(3分)職工(職工編號,姓名,性別,業(yè)績,商店編號,聘期,月薪)(3分)商品(商品編號,商品名,規(guī)格,單價)(3分)銷售(商店編號,商品編號,月銷售量)(3分)(1)(4分)(1)(4分)(2)這個E-R圖可轉(zhuǎn)換為3個關系模式:(6分)課程表(學號,姓名,班級)選修(學號,課程號)課程表(課程號,課程名稱,教師)4.一個圖書借閱管理數(shù)據(jù)庫要求提供下述服務:1)可隨時查詢書庫中現(xiàn)有書籍的品種,數(shù)量與存放位置。所有各類書籍均可由書號唯一標識。2)可隨時查詢書籍借還情況。包括借書人單位、姓名、借書證號、借書日期和還書日期。約定任何人可借多種書,任何一種書可為多個人所借,借書證號具有唯一性。3)當需要時,可通過數(shù)據(jù)庫中保存的出版社的電報編號、、及地址等信息向有關書籍的出版社增購有關書籍。約定一個出版社可以出版多種書籍,同一本書僅為一個出版社出版,出版社名具有唯一性。根據(jù)以上情況,試構(gòu)造滿足需求的E-R圖,并轉(zhuǎn)換成等價的關系模型結(jié)構(gòu)。答案:圖略。轉(zhuǎn)換為等價的關系模型結(jié)構(gòu)如下:借書人(借書證號,姓名,單位)圖書(書號,書名,數(shù)量,位置,出版社名)出版社(出版社名,電報,,,地址)借閱(借書證號,書號,借書日期,還書日期)SQLServer2021數(shù)據(jù)庫—創(chuàng)建、建表、查詢語句一、創(chuàng)建數(shù)據(jù)庫1、利用對象資源管理器創(chuàng)建用戶數(shù)據(jù)庫:(1)選擇“開始”—“程序”—MicrosoftSQLServer2021—SQLServerManagementStudio命令,打開SQLServerManagementStudio。(2)使用“Windows身份驗證”連接到SQLServer2021數(shù)據(jù)庫實例。(3)展開SQLServer實例,右擊“數(shù)據(jù)庫”,然后人彈出的快捷菜單中選擇“新建數(shù)據(jù)庫存”命令,打開“新建數(shù)據(jù)庫”對話框。(4)在“新建數(shù)據(jù)庫”對話框中,可以定義數(shù)據(jù)庫的名稱、數(shù)據(jù)庫的所有者、是否使用全文索引、數(shù)據(jù)文件和日志文件的邏輯名稱和路徑、文件組、初始大小和增長方式等。輸入數(shù)據(jù)庫名稱student。2、利用T-SQL語句創(chuàng)建用戶數(shù)據(jù)庫:在SQLServerManagementStudio中,單擊標準工具欄的“新建查詢”按鈕,啟動SQL編輯器窗口,在光標處輸入T-SQL語句,單擊“執(zhí)行”按鈕。SQL編輯器就提交用戶輸入的T-SQL語句,然后發(fā)送到服務器執(zhí)行,并返回執(zhí)行結(jié)果。創(chuàng)建數(shù)據(jù)庫student的T-SQL語句如下:CreatedatabasestudentOnprimary(name=student_data,filename='E:\SQLServer2021SQLFULL_CHS\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\student_data.mdf',size=3,maxsize=unlimited,filegrowth=1)Logon(name=student_log,filename='E:\SQLServer2021SQLFULL_CHS\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\student_log.ldf',size=1,maxsize=20,filegrowth=10%)二、創(chuàng)建數(shù)據(jù)表1、利用表設計器創(chuàng)建數(shù)據(jù)表:(1)啟動SQLServerManagementStudio,連接到SQLServer2021數(shù)據(jù)庫實例。(2)展開SQLServer實例,選擇“數(shù)據(jù)庫”—student—“表”,單擊鼠標右鍵,然后從彈出的快捷菜單中選擇“新建表”命令,打開“表設計器”。(3)在“表設計器”中,可以定義各列的名稱、數(shù)據(jù)類型、長度、是否允許為空等屬性。(4)當完成新建表的各個列的屬性設置后,單擊工具欄上的“保存”按鈕,彈出“選擇名稱”對話框,輸入新建表名stu_info,SQLServer數(shù)據(jù)庫引擎會依據(jù)用戶的設置完成新表的創(chuàng)建。2、利用T-SQL語句創(chuàng)建數(shù)據(jù)表:Createtablestu_info(stu_idchar(10)notnull,namenvarchar(20)notnull,birthdaydatenull,sexnchar(2)null,addressnvarchar(20)null,markintnull,majornvarchar(20)null,sdeptnvarchar(20)null);3、樣本數(shù)據(jù)庫student表數(shù)據(jù):學生信息表(stu_info):課程信息表(course_info):學生成績表(stu_grade):三、完整性與約束數(shù)據(jù)庫中的數(shù)據(jù)是現(xiàn)實世界的反映,數(shù)據(jù)庫的設計必須能夠滿足現(xiàn)實情況的實現(xiàn),即滿足現(xiàn)實商業(yè)規(guī)則的要求,這也是數(shù)據(jù)完整性的要求。在數(shù)據(jù)庫的管理系統(tǒng)中,約束是保證數(shù)據(jù)庫中數(shù)據(jù)完整性的重要方法。完整性:數(shù)據(jù)完整性是數(shù)據(jù)庫設計方面一個非常重要的問題,數(shù)據(jù)完整性代表數(shù)據(jù)的正確性、一致性和可靠性。實施數(shù)據(jù)完整性的目的在于確保數(shù)據(jù)的質(zhì)量。在SQLServer中,根據(jù)數(shù)據(jù)完整性措施所作用的數(shù)據(jù)庫對象和范圍不同,可以將數(shù)據(jù)完整性分類為實體完整性、域完整性和參照完整性。實體完整性把數(shù)據(jù)表中的每行看作一個實體,它要求所有的行都具有唯一的標識;域完整性要求數(shù)據(jù)表中指定列的數(shù)據(jù)具有正確的數(shù)據(jù)類型、格式和有效的數(shù)據(jù)范圍;參照完整性維持被參照表和參照表之間的數(shù)據(jù)一致性。約束:約束是數(shù)據(jù)庫中的數(shù)據(jù)完整性實現(xiàn)的具體方法。在SQLServer中,包括5種約束類型:primarykey約束、foreignkey約束、unique約束、check約束和default約束。四、數(shù)據(jù)查詢1、查詢語句:查詢就是根據(jù)客戶端的要求,數(shù)據(jù)庫服務器搜尋出用戶所需要的信息資料,并按用戶規(guī)定的格式進行整理后返回給客戶端。查詢語句select在SQLServer中是使用頻率最高的語句,可以說select語句是SQL語言的靈魂。select語句的語法結(jié)構(gòu):selectselect_list[intonew_table]Fromtable_source[wheresearch_condition][groupbygroup_by_expression][havingsearch_condition]Orderbyorder_expression[asc|desc]]參數(shù)說明如下:Select子句:指定由查詢結(jié)果返回的列。Into子句:將查詢結(jié)果存儲到新表或視圖中。From子句:用于指定數(shù)據(jù)源,即使用的列所在的表或視圖。如果對象不止一個,那么它們之間必用逗號分開。Where子句:指定用于限制返回的行的搜索條件。如果select語句沒有where子句,dbms假設目標表中的所有行都滿足搜索條件。Groupby子句:指定用來放置輸出行的組,并且如果select子句select_list中包含聚合函數(shù),則計算每組的匯總值。Having子句:指定組或聚合函數(shù)的搜索條件。Having通常與groupby子句一起使用。Orderby子句:指定結(jié)果集的排序方式。ASC關鍵字表示升序排列結(jié)果,DESC關鍵字表示降序排列結(jié)果。如果沒有指定任何一個關鍵字,那么ASC就是默認的關鍵字。如果沒有orderby子句,DBMS將根據(jù)輸入表中的數(shù)據(jù)的存放位置來顯示數(shù)據(jù)。在這一系列的子句中,select子句和from子句是必需的,其他的子句根據(jù)需要都是可選的。2、簡單查詢:2.1、查詢列:(1)查詢指定列:數(shù)據(jù)表中有很多列,通常情況下并不需要查看全部的列,因為不同的用戶所關注的內(nèi)容不同。在指定列的查詢中,列的顯示順序由select子句指定,與數(shù)據(jù)在表中的存儲順序無關;同時,在查詢多列時,用“,”將各字段隔開。例7-1、查詢所有同學學號、姓名和成績信息。Selectstu_id,name,markfromstu_info查詢結(jié)果如下:(2)查詢所有列:使用“*”通配符,查詢結(jié)果將列出表中所有列的值,而不必指明各列的列名,這在用戶不清楚表中各列的列名時非常有用。服務器會按用戶創(chuàng)建表格時聲明列的順序來顯示所有的列。例7-2、查詢所有同學的所有信息。select*fromstu_info查詢結(jié)果如下:(3)使用運算列:YEAR為系統(tǒng)函數(shù),獲取指定日期的年份;GEDDATE()為系統(tǒng)函數(shù),獲取當前日期和時間。例7-3、查詢所有同學的年齡信息。Selectstu_id,name,YEAR(getdate())-YEAR(birthday)fromstu_info查詢結(jié)果如下:(4)改變列標題顯示:通常在查詢結(jié)果顯示的列標題就是創(chuàng)建表時所使用的列名,但是,這在實際使用中往往會帶來一些不便,因此,可以利用’列標題’=列名或as‘列標題’來根據(jù)需要修改列標題的顯示。例7-4、查詢所有同學的年齡信息。Selectnameas'姓名',YEAR(getdate())-YEAR(birthday)as'年齡'fromstu_info查詢結(jié)果如下:(5)除去結(jié)果的重復信息:使用distinct關鍵字能夠從返回的結(jié)果數(shù)據(jù)集合中刪除重復的行,使返回的結(jié)果更簡潔。例7-5、查詢所有的院系信息。Selectdistinctsdeptfromstu_info查詢結(jié)果如下:(6)返回查詢的部分數(shù)據(jù):在SQLServer2021中,提供了top關鍵字讓用戶指定返回一定數(shù)量的數(shù)據(jù)。Topn表示返回最前面的n行,n表示返回的行數(shù);topnpercent表示返回前面的n%行。例7-6、查詢前5位同學的學號、姓名和成績信息。Selecttop5stu_id,name,markfromstu_info查詢結(jié)果如下:例7-7、查詢60%同學的學號、姓名和成績信息。Selecttop60percentstu_id,name,markfromstu_info查詢結(jié)果如下:2.2、選擇行:Where子句用于指定查詢條件,使得select語句的結(jié)果表中只包含那些滿足查詢條件的記錄。在使用時,where子句必須緊跟在from子句后面。Where子句中的條件表達式包括算術表達式和邏輯表達式兩種,SQLServer對Where子句中的查詢條件的數(shù)目沒有限制。(1)使用比較表達式:例7-8、查詢所有的男同學學號、姓名、生日和性別信息。Selectstu_id,name,birthday,sexfromstu_infowheresex='男'查詢結(jié)果如下:例7-9、查詢所有的總分大于550分的同學學號、姓名、生日和性別信息。Selectstu_id,name,birthday,sexfromstu_infowheremark>550查詢結(jié)果如下:(2)使用邏輯比較表達式:例7-10、查詢所有總分大于550的男同學信息。Selectstu_id,name,birthday,sexfromstu_infowheremark>550andsex='男'查詢結(jié)果如下:例7-11、查詢所有總分大于550分或男同學信息。Selectstu_id,name,birthday,sexFromstu_infoWheremark>550orsex='男'查詢結(jié)果如下:為了增強程序可讀性,一般采用括號()來實現(xiàn)需要的執(zhí)行順序,而不考慮其默認的優(yōu)先級順序。例7-12、查詢所有信息學院和會計學院并且總分大于550分的同學信息。select*fromstu_infowhere(sdept='信息學院'orsdept='會計學院')andmark>550查詢結(jié)果如下:(3)空值(null)的判斷:如果在創(chuàng)建數(shù)據(jù)表時沒有指定notnull約束,那么數(shù)據(jù)表中某些列的值就可以為null。所謂null就是空,在數(shù)據(jù)庫中,其長度為0。例7-13、查詢所有籍貫為空的同學信息。select*fromstu_infowhereaddressisnull查詢結(jié)果如下:(4)限定數(shù)據(jù)范圍:使用between限制查詢數(shù)據(jù)范圍時同時包括了邊界值,效果完全可以用含有“>=”和“<=”的邏輯表達式來代替;而使用notbetween進行查詢時沒有包括邊界值,效果完全可以用含有“>”和“<”的邏輯表達式來代替。例7-14、查詢總分在530—560之間的同學信息。select*fromstu_infowheremarkbetween530and560查詢結(jié)果如下:(5)限制檢索數(shù)據(jù)的范圍:對于列值不在一個連續(xù)的取值區(qū)間,而是一些離散的值,利用between關鍵字就無能為力了,可以利用SQLServer提供的另一個關鍵字IN。在大多數(shù)情況下,OR運算符與IN運算符可以實現(xiàn)相同的功能。例7-15、查詢所有在信息學院或會計學院就讀的同學信息。select*fromstu_infowheresdeptin('信息學院','會計學院')查詢結(jié)果如下:(6)模糊查詢:在實際的應用中,用戶不會總是能夠精確的給出查詢條件。因此,經(jīng)常需要根據(jù)一些并不確切的線索來搜索信息。SQLServer提供了like子句來進行這類模糊搜索。Like子句在大多數(shù)情況下會與通配符配合使用。所有通配符只有在like子句中才有意義,否則通配符會被當作普遍字符處理。各通配符也可以組合使用,實現(xiàn)復雜的模糊查詢。(通配符“%”表示任意字符的匹配;通配符“_”只能匹配任何單個字符;通配符“[]”用于指定范圍(如[a-z])或集合(如[abcdef])中的任何單個字符;通配符“[^]”用于匹配沒有在方括號中列出的字符。)在使用like進行模糊查詢時,當“%”、“_”和“[]”符號單獨出現(xiàn)時,都會被作為通配符進行處理。但是有時可能需要搜索的字符串包含量一個或多個特殊通配符,例如,數(shù)據(jù)表中可能存儲含百分號(%)的折扣值。若要搜索作為字符而不是通配符的百分號,必須提供escape關鍵字和轉(zhuǎn)義符,例如,“l(fā)ike‘%B%’escape‘B’”就是使用了escape關鍵字定義了轉(zhuǎn)義字符B,將字符串“%B%”中的第二個百分號(%)作為實際值,而不是通配符。例7-16、查詢所有姓“張”的同學信息。select*fromstu_infowherenamelike'張%'查詢結(jié)果如下:例7-17、查詢所有姓“張”,而且姓名是兩個字的同學信息。select*fromstu_infowherenamelike'張_'查詢結(jié)果如下:例7-18、查詢所有姓“張”或姓“王”的同學信息。select*fromstu_infowherenamelike'[張王]%'查詢結(jié)果如下:例7-19、查詢所有不姓“張”也不姓“王”的同學信息。select*fromstu_infowherenamelike'[^張王]%'查詢結(jié)果如下:2.3、排序查詢結(jié)果:在SQL語句中,orderby子句用于排序。Orderby子句總是在where子句(如果有的話)后面說明的,可以包含一個或多個列,每個列之間以逗號分隔。可以選擇使用asc|desc關鍵字指定按照升序|降序排序。如果沒有特別說明,值是以升序列進行排序的,即默認情況下使用的是asc關鍵字。例7-20、查詢所有同學課程編號701的課程成績,并按由大到小的順序輸出。select*fromstu_gradewherecourse_id='701'orderbygradedesc查詢結(jié)果如下:使用orderby子句也可以根據(jù)兩列或多列的結(jié)果進行排序,并用逗號分隔開不同的排序關鍵字。其實際排序結(jié)果是根據(jù)orderby子句后面列名的順序確定優(yōu)先級的。即查詢結(jié)果首先以第一列的順序進行排序,而只有當?shù)谝涣谐霈F(xiàn)相同的信息時,這些相同的信息再按第二列的順序進行排序,依此類推。例7-21、查詢所有同學課程編號701的課程成績,并按由大到小的順序輸出,如果成績相同,則按學號由小到大排序。select*fromstu_gradewherecourse_id='701'orderbygradedesc,stu_id查詢結(jié)果如下:Orderby子句除了可以根據(jù)列名進行排序外,還支持根據(jù)列的相對位置(即序號)進行排序。例7-22、查詢所有同學課程編號701的課程成績,并按由大到小的順序輸出,如果成績相同,則按學號由小到大排列。Selectstu_id,course_id,gradeFromstu_gradeWherecourse_id='701'orderby3desc,1查詢結(jié)果如下:2.4、分組與匯總:(1)聚合函數(shù):聚合函數(shù)是T—SQL所提供的系統(tǒng)函數(shù),可以返回一列,幾列或全部列的匯總數(shù)據(jù),用于計數(shù)或統(tǒng)計。這類函數(shù)(除count外)僅用于數(shù)值型列,并且在列上使用聚合函數(shù)時,不考慮null值。例7-23、統(tǒng)計學生信息表中學生人數(shù)。SelectCOUNT(*)as'學生人數(shù)'Fromstu_info查詢結(jié)果如下:例7-24、統(tǒng)計學生成績表中學號為2007070102同學的最高分、最低分、平均分和總分。SelectMAX(grade),MIN(grade),AVG(grade),SUM(grade)Fromstu_gradeWherestu_id='2007070102'查詢結(jié)果如下:(2)分組匯總:使用聚合函數(shù)只返回單個匯總,而在實際應用中,更多的是需要進行分組匯總數(shù)據(jù)。使用groupby子句可以進行分組匯總,為結(jié)果集中的每一行產(chǎn)生一個匯總值。Groupby子句與聚合函數(shù)有密切關系,在某種意義上說,如果沒有聚合函數(shù),groupby子句也沒有多大用處了。Groupby關鍵字后面跟著的列名稱為分組列,分組列中的每個得復值將被匯總為一行。如果包含where子句,則只對滿足where條件的行進行分組匯總。例7-25、統(tǒng)計學生成績表中每個同學的最高分、最低分、平均分和總分。Selectstu_id,MAX(grade),MIN(grade),AVG(grade),SUM(grade)Fromstu_gradeGroupbystu_id查詢結(jié)果如下:例7-26、統(tǒng)計學生成績表中每個同學的最高分、最低分、平均分和總分,80分以下的成績不參與統(tǒng)計。Selectstu_id,MAX(grade),MIN(grade),AVG(grade),SUM(grade)Fromstu_gradeWheregrade>=80Groupbystu_id查詢結(jié)果如下:(3)分組篩選:如果使用groupby子句分組,則還可用having子句對分組后的結(jié)果進行過濾篩選。Having子句通常與groupby子句一起使用,用于指定組或合計的搜索條件,其作用與where子句相似,二者的區(qū)別如下:作用對象不同:where子句作用于表和視圖中的行,而having子句作用于形成的組。Where子句限制查找的行,having子句限制查找的組。執(zhí)行順序不同。若查詢句中同時有where子句和having子句,執(zhí)行時,先去掉不滿足where條件的行,然后分組,分組后再去掉不滿足having條件的組。Where子句中不能直接使用聚合函數(shù),但having子句的條件中可以包含聚合函數(shù)。例7-27、統(tǒng)計學生成績表中每個同學的最高分、最低分、平均分和總分,并輸出平均分大于87分的信息。Selectstu_id,MAX(grade),MIN(grade),AVG(grade),SUM(grade)Fromstu_gradeGroupbystu_idHavingAVG(grade)>87查詢結(jié)果如下:(4)明細匯總:使用groupby子句對查詢數(shù)據(jù)進行分組匯總,為每一組產(chǎn)生一個匯總結(jié)果,每個組只返回一行,無法看到詳細信息。使用compute和computeby子句既能夠看到統(tǒng)計經(jīng)營部的結(jié)果又能夠瀏覽詳細數(shù)據(jù)。例7-28、使用compute子句對所有學生的人數(shù)進行明細匯總。select*fromstu_infocomputecount(stu_id)查詢結(jié)果如下:在使用compute和computeby時,需要注意以下幾點:Compute[by]子句不能與selectinto子句一起使用。Compute子句中的列必須在select子句的字段列表中出現(xiàn)。Computeby表示按指定的列進行明細匯總,使用by關鍵字時必須同時使用orderby子句,并且computeby中出現(xiàn)的列必須具有與orderby后出現(xiàn)的列相同的順序,且不能跳過其中的列。例7-29、使用computeby子句按照院系對所有學生的人數(shù)進行明細匯總。select*fromstu_infoorderbysdeptcomputecount(stu_id)bysdept查詢結(jié)果如下:連接查詢:前面介紹的查詢都是針對單一的表,而在數(shù)據(jù)通庫管理系統(tǒng)中,考慮到數(shù)據(jù)的冗余度低、數(shù)據(jù)一致性等問題,通常對數(shù)據(jù)表的設計要滿足范式的要求,因此也會造成一個實體的所有信息保存在多個表中。當檢索數(shù)據(jù)時,往往在一個表中不能夠得到想要的信息,通過連接操作,可以查詢出存放在多個表中同一實體的不同信息,給用戶帶來很大的靈活性。多表連接實際上就是實現(xiàn)如何使用一個表中的數(shù)據(jù)來選擇另一個表中的行。而連接條件則主要通過以下方法定義兩個表在查詢中的關聯(lián)方式:指定每個表中要用于連接的列。典型的連接條件在一個表中的指定外鍵,在另一個表中指定與其關聯(lián)的鍵。指定比較各列的值時要使用的比較運算符(=、<>等)。表的連接的實現(xiàn)可以通過兩種方法:利用select語句的where子句;在from子句中使用join(innerjoin,crossjoin,outerjoin,leftouterjoin,fullouterjoin等)關鍵字。例7-30、查詢所有選修課程編號701的同學學號、姓名和成績。Selectstu_info.stu_id,name,markFromstu_info,stu_gradeWherestu_info.stu_id=stu_grade.stu_idandcourse_id='701'查詢結(jié)果如下:例7-31、查詢所有選修課程的同學選修課程的成績。Selectstu_info.stu_id,name,course_name,gradeFromstu_info,stu_grade,course_infoWherestu_info.stu_id=stu_grade.stu_idandcourse_info.course_id=stu_grade.course_id查詢結(jié)果如下:有時表名比較煩瑣,使用起來很麻煩,為了程序的簡潔明了,在SQL中,也可以通過AS關鍵字為表定義別名。例7-32、查詢所有同學所有課程的成績。SelectA.stu_id,name,course_name,markFromstu_infoasA,stu_gradeasB,course_infoasCWhereA.stu_id=B.stu_idandB.course_id=C.course_id查詢結(jié)果如下:在select語句的from子句中,通過指定不同類型的join關鍵字可以實現(xiàn)不同的表的連接方式,而在on關鍵字后指定連接條件。例7-33、查詢所有選修課程的同學學號、姓名和成績。Selectstu_info.stu_id,name,markFromstu_infoinnerjoinstu_gradeOnstu_info.stu_id=stu_grade.stu_id查詢結(jié)果如下:例7-34、從stu_info表中查詢?nèi)雽W分數(shù)比學號為2007070101同學高的所有同學信息。SelectR1.stu_id,R1.name,R1.markFromstu_infoasR1innerjoinstu_infoasR2OnR2.stu_id='2007070101'andR1.mark>R2.mark查詢結(jié)果如下:例7-35、查詢所有同學的選修課程信息。Selectstu_info.stu_id,name,markFromstu_infoleftouterjoinstu_gradeOnstu_info.stu_id=stu_grade.stu_id查詢結(jié)果如下:例7-36、查詢所有同學的選修課程信息。Selectstu_info.stu_id,name,markFromstu_graderightouterjoinstu_infoOnstu_info.stu_id=stu_grade.stu_id查詢結(jié)果如下:嵌套查詢:所謂嵌套查詢指的是在一個select查詢語句中包含另一個(或多個)select查詢語句。其中,外層的select查詢語句叫外部查詢,內(nèi)層的select查詢語句叫子查詢。嵌套查詢的執(zhí)行過程:首先執(zhí)行子查詢語句,得到的子查詢結(jié)果集傳遞給外層主查詢語句,作為外層主查詢的查詢項或查詢條件使用。子查詢也可以再嵌套子查詢。4、1單列單值嵌套查詢:例7-37、查詢選修“計算機基礎”的學生成績信息。select*fromstu_gradewherecourse_id=(selectcourse_idFromcourse_infoWherecourse_name='計算機基礎')查詢結(jié)果如下:例7-38、查詢比“2007070101”同學年齡大的同學信息。select*fromstu_infowherebirthday<(selectbirthdayFromstu_infoWherestu_id='2007070101')查詢結(jié)果如下4、2單列多值嵌套查詢:例7-39、查詢所有會計學院的同學成績信息。select*fromstu_gradewherestu_idin(selectstu_idFromstu_infoWheresdept='會計學院')查詢結(jié)果如下例7-40、查詢其他系中比會計學院某一學生分數(shù)少的學生學號和姓名。Selectstu_id,nameFromstu_infoWheremark<any(selectmarkFromstu_infoWheresdept='會計學院')Andsdept<>'會計學院'查詢結(jié)果如下例7-41、查詢選修“計算機基礎”的學生成績信息。select*fromstu_gradewhereexists(select*Fromcourse_infoWherestu_grade.course_id=course_idandcourse_name='計算機基礎')查詢結(jié)果如下例7-42、查詢沒有選修“計算機基礎”的學生成績信息。select*fromstu_gradewherenotexists(select*Fromcourse_infoWherestu_grade.course_id=course_idandcourse_name='計算機基礎')查詢結(jié)果如下集合查詢:如果有多個不同的查詢結(jié)果數(shù)據(jù)集,但又希望將它們按照一定的關系連接在一起,組成一組數(shù)據(jù),這就可以使用集合運算來實現(xiàn)。在SQLServer2021中,T-SQL提供的集合運算符有union,except和intersect。例7-43、查詢stu_info表中信息學院或入學分數(shù)大于550分的學生信息。Selectstu_id,name,mark,sdeptFromstu_infoWheresdept='信息學院'unionselectstu_id,name,mark,sdeptfromstu_infowheremark>550查詢結(jié)果如下例7-44、查詢stu_info表中信息學院而且入學分數(shù)大于550分的學生信息。Selectstu_id,name,mark,sdeptFromstu_infoWheresdept='信息學院'exceptselectstu_id,name,mark,sdeptfromstu_infowheremark<=550查詢結(jié)果如下例7-45、查詢stu_info表中信息學院而且入學分數(shù)大于550分的學生信息。Selectstu_id,name,mark,sdeptFromstu_infoWheresdept='信息學院'intersectselectstu_id,name,mark,sdeptfromstu_infowheremark>550查詢結(jié)果如下本章小結(jié):本章介紹了select語句的相關知識,其內(nèi)容主要包括select語句的組成和select語句的各種查詢方法。Select語句是SQL語言中功能最為強大、應用最為廣泛的語句之一,用于查詢數(shù)據(jù)庫中符合條件的記錄。利用select語句既可進行簡單的數(shù)據(jù)查詢,又可進行涉及多表的連接查詢、嵌套查詢和集合查詢。通過本章學習,應該熟練掌握以下內(nèi)容:1)select語句的基本語法結(jié)構(gòu);2)select語句的簡單查詢;3)select語句的嵌套查詢;4)select語句的集合查詢。2015至2016第二學期期末考試課程:java語言程序設計題目:學生信息管理系統(tǒng)類別:論文□設計√院系:計算機與信息工程系專業(yè)班級:信息管理2013級本科1班學號:03,04,07,08,15學生姓名:邱丹丹,范柳,譚鴻儒,何婧,陸瑤任課教師:周方完成時間:2016年6月24日教務處制二○一五年九月目錄TOC\o”1—3"\h\z\uHYPERLINK\l”_Toc453617927”1。學生信息管理系統(tǒng)概述21。1研究背景2HYPERLINK\l”_Toc453617929”1。2開發(fā)意義2HYPERLINK\l”_Toc453617930”2。1開發(fā)環(huán)境和軟件3HYPERLINK\l”_Toc453617931”2.2系統(tǒng)設計與功能分析3HYPERLINK\l”_Toc453617932”2。3功能層次圖43數(shù)據(jù)庫設計43.1系統(tǒng)概念結(jié)構(gòu)設計43。3數(shù)據(jù)庫實現(xiàn)73。3。1數(shù)據(jù)庫關系圖73。3.2SQL語句實現(xiàn)74.系統(tǒng)模塊詳細設計104.2各用戶操作模塊11HYPERLINK\l”_Toc453617942”4.2。1管理員操作模塊(圖1)114。2.2教師操作模塊(圖2)11HYPERLINK\l”_Toc453617944"4。2。3學生操作模塊(圖3)11_Toc453617946"5.1管理員登錄12HYPERLINK\l”_Toc453617947"5.2教師登錄15HYPERLINK\l”_Toc453617948"5.3學生登錄206.課程設計總結(jié)23HYPERLINK\l”_Toc453617950"7.附錄(代碼)2311學生信息管理系統(tǒng)1.學生信息管理系統(tǒng)概述1。1研究背景學生信息管理系統(tǒng)是學校管理的重要工具,是學校不可或缺的部分。隨著在校大學生人數(shù)的不斷增加,教務系統(tǒng)的數(shù)量也不斷的上漲,。學校工作繁雜、資料眾多,人工管理信息的難度也越來越大,顯然是不能滿足實際的需要,效率也是很低的。并且這種傳統(tǒng)的方式存在著很多的弊端,如:保密性差、查詢不便、效率低,很難維護和更新等。然而,本系統(tǒng)針對以上缺點能夠極大地提高學生信息管理的效率,也是科學化、正規(guī)化的管理,與世界接軌的重要條件。所以如何自動高效地管理信息是這些年來許多人所研究的。1.2開發(fā)意義隨著這些年電腦計算機的速度質(zhì)的提高,成本的下降,IT互聯(lián)網(wǎng)大眾趨勢的發(fā)展。我們使用電腦的高效率才處理數(shù)據(jù)信息成為可能。學生學籍管理系統(tǒng)的出現(xiàn),正是管理人員與信息數(shù)據(jù),計算機的進入互動時代的體現(xiàn)。友好的人機交互模式,清晰簡明的圖形界面,高效安全的操作使得我們對成千上萬的信息的管理得心應手。通過這個系統(tǒng),可以做到信息的規(guī)范管理,科學統(tǒng)計和快速的查詢,從而減少管理方面的工作量?毋庸置疑,切實有效地把計算機管理引入學校教務管理中,對于促進學校管理制度,提高學校教學質(zhì)量與辦學水平有著顯著意義?2。系統(tǒng)需求分析2.1開發(fā)環(huán)境和軟件(1)操作系統(tǒng):Windows7(2)數(shù)據(jù)庫軟件:mysql—5。7.13—winx64(3)Java開發(fā)工具:Eclipsemysql-connector-java—5(JDBC驅(qū)動包)jdk—8u73—windows-x64(java運行環(huán)境壓縮包)2。2系統(tǒng)設計與功能分析學生信息管理系統(tǒng),可用于學校等機構(gòu)的學生信息管理,查詢,更新與維護,使用方便,易用性強,圖形界面清晰明了。該軟件用java語言編寫,用SQLServer2005數(shù)據(jù)庫作為后臺的數(shù)據(jù)庫進行信息的存儲,用SQL語句完成學生學籍信息的添加,查詢,修改,刪除的操作以及成績的錄入,修改,刪除等。用ODBC驅(qū)動實現(xiàn)前臺Java與后臺SQL數(shù)據(jù)庫的連接。Java語言跨平臺性強,可以在windows,linux,ubuntu等系統(tǒng)下使用,方便簡單,安全性好.SQLServer2005數(shù)據(jù)庫高效安全,兩者結(jié)合可相互利用各自的優(yōu)勢.該系統(tǒng)實現(xiàn)的大致功能:用戶登陸界面。該界面可以選擇使用者的身份,“管理員,教師,學生”。不同的身份有不同的操作界面和功能權限.ID號和密碼輸入正確即可登錄。學生管理界面。提供了學生學籍信息的查詢,相關科目的成績查詢和排名,修改登錄密碼等功能。教師管理界面.提供了對學生學籍信息的查詢,添加,修改,刪除;學生成績的錄入,修改,刪除,查詢班級排名。修改密碼等功能。管理員管理界面。擁有最高的權限。允許添加教師信息和課程信息等.登錄的用戶信息分別存儲在SQL數(shù)據(jù)庫的“管理員信息表”,“教師信息表",“學籍信息表”中,如果用戶信息不存在則三張表中,將會無權利登錄本管理系統(tǒng)。保證了本學生管理系統(tǒng)的安全性.功能層次圖數(shù)據(jù)庫設計3.1系統(tǒng)概念結(jié)構(gòu)設計教師ID教師ID課程號教師課程號教師教師姓名教師姓名課程名稱課程登錄密碼課程名稱課程登錄密碼教師ID教師ID學號課程號成績學號課程號成績姓名成績姓名成績學號學號管理員ID性別學籍管理員ID性別學籍管理員籍貫管理員籍貫登錄密碼登錄密碼班級號班級號班級籍貫班級籍貫登錄密碼登錄密碼總?cè)藬?shù)班級號班級名稱總?cè)藬?shù)班級號班級名稱實體屬性表:實體屬性教師教師ID,教師姓名,登錄密碼課程課程號,課程名稱,教師ID管理員管理員ID,登錄密碼班級班級號,班級名稱,總?cè)藬?shù)學籍學號,姓名,性別,班級號,籍貫,登錄密碼成績學號,課程號,成績3.2系統(tǒng)邏輯結(jié)構(gòu)設計教師信息表:字段名類型空值約束條件教師IDvarchar(8)notnull主鍵教師姓名varchar(8)notnull登錄密碼varchar(8)notnull課程信息表:字段名類型空值約束條件課程號varchar(8)notnull主鍵課程名稱varchar(12)notnull教師IDvarchar(8)notnull外鍵班級信息表:字段名類型空值約束條件班級號varchar(8)notnull主鍵班級名稱varchar(8)notnull所屬學院varchar(6)班級人數(shù)nchar(4)管理員信息表:字段名類型空值約束條件管理員IDvarchar(10)notnull主鍵登錄密碼varchar(10)notnull成績信息表:字段名類型空值約束條件班級號varchar(15)notnull主鍵,外鍵班級名稱varchar(8)notnull主鍵,外鍵所屬學院smallintnotnull學籍信息表:字段名類型空值約束條件學號intnotnull主鍵姓名varchar(30)notnull性別char(2)班級號varchar(30)notnull

外鍵籍貫char(10)

登錄密碼moneynotnull3。3數(shù)據(jù)庫實現(xiàn)3。3.1數(shù)據(jù)庫關系圖SQL語句實現(xiàn)數(shù)據(jù)表的創(chuàng)建:(1)教師信息表創(chuàng)建:createtable教師信息表(教師IDvarchar(8)primarykey,教師姓名varchar(8)notnullunique,登錄密碼varchar(8)notnull,)(2)課程信息表創(chuàng)建:createtable課程信息表(課程號varchar(8)primarykey,課程名稱varchar(12)notnull,教師IDvarchar(8)notnullforeignkey(教師ID)references教師信息表(教師ID))(3)班級信息表創(chuàng)建:createtable班級信息表(班級號varchar(8)notnullprimarykey,班級名稱varchar(8)notnullunique,所屬學院varchar(8),班級人數(shù)nchar(4))(4)學籍信息表創(chuàng)建:createtable學籍信息表(學號varchar(15)primarykey,姓名varchar(8)notnull,性別varchar(4),班級號varchar(8)notnull,籍貫varchar(5),登錄密碼varchar(6)notnullforeignkey(班級號)references班級信息表(班級號))(5)成績信息表創(chuàng)建:createtable成績信息表(學號varchar(15),課程號varchar(8),成績smallintprimarykey(學號,課程號)foreignkey(學號)references學籍信息表(學號),foreignkey(課程號)references課程信息表(課程號))(6)管理員信息表創(chuàng)建:createtable課程信息表(管理員IDvarchar(8)primarykey,登錄密碼varchar(12)notnull)視圖的創(chuàng)建:(1)“教師課程詳細信息”視圖創(chuàng)建:createview教師課程詳細信息asSELECT教師信息表.教師ID,教師信息表。教師姓名,課程信息表.課程號,課程信息表。課程名稱,教師信息表。登錄密碼FROM教師信息表JOIN課程信息表ON教師信息表.教師ID=課程信息表.教師ID(2)“學生成績信息”視圖創(chuàng)建:createview學生成績信息asSELECT學籍信息表。學號,學籍信息表.姓名,學籍信息表。性別,課程信息表。課程名稱,成績信息表.成績FROM成績信息表JOIN學籍信息表ON成績信息表.學號=學籍信息表。學號JOIN班級信息表ON班級信息表.班級號=學籍信息表.班級號JOIN課程信息表ON課程信息表。課程號=成績信息表.課程號存儲過程創(chuàng)建:(1)“單科成績排名"創(chuàng)建:createproc[dbo].[單科成績排名]@kechennamechar(8),@classnamechar(8)asselect學籍信息表.學號,姓名,成績from成績信息表join課程信息表on課程信息表。課程號=成績信息表.課程號join學籍信息表on學籍信息表。學號=成績信息表.學號join班級信息表on班級信息表.班級號=學籍信息表。班級號where課程名稱=@kechennameand班級名稱=@classnameorderby成績desc(2)“全班排名"創(chuàng)建:createproc[dbo].[全班排名]@classchar(8)asselect學籍信息表。學號,姓名,avg(成績)as平均分,sum(成績)as總分from成績信息表join學籍信息表on成績信息表。學號=學籍信息表。學號join班級信息表on班級信息表。班級號=學籍信息表。班級號where班級信息表。班級名稱=@classgroupby學籍信息表.姓名,學籍信息表。學號orderbyavg(成績)desc,學籍信息表。學號4。系統(tǒng)模塊詳細設計用戶登錄模塊4。2各用戶操作模塊管理員操作模塊(圖1)4。2。2教師操作模塊(圖2)4。2。3學生操作模塊(圖3)圖1圖2圖35.系統(tǒng)運行與測試5。1管理員登錄點擊“管理員”按鈕。輸入正確的ID和密碼。驗證成功則可進入管理員管理界面.管理員ID號和登錄密碼存在數(shù)據(jù)庫中的管理員信息表.表中存在的管理員才允許登錄。(1)添加教師信息。在彈出的輸入欄中輸入正確的數(shù)據(jù),點擊“確認添加”.如果輸入重復的信息則會彈出。如果某項未填則彈出.輸入的數(shù)據(jù)會分別寫進“教師信息表”和“課程信息表”中。增加的教師信息,允許讓更多的教師登錄本系統(tǒng)進行管理操作!(2)修改教師信息如果要修改的教師信息不存在,則(3)刪除信息修改輸入的教師信息不存在,則(4)查詢教師信息5.2教師登錄在登錄界面選擇“教師”按鈕,并輸入正確的ID號和密碼,即可登錄成功!輸入錯誤則會彈出提示!ID號輸入正確,登錄成功!進入教師管理的操作界面:(1)顯示學生信息。(2)添加學生信息新添加的信息會保存在學籍信息表中!如果輸入的信息已經(jīng)存在,則顯示如果輸入的數(shù)據(jù)正確,則(3)修改學生信息,輸入正確則顯示!(4)刪除學生信息,(5)錄入學生成績(6)修改學生成績(7)刪除學生成績(8)查詢學生成績(9)所有成績排名(10)單科成績排名(11)更改登錄密碼修改成功后即可用新的密碼進行登錄!5.3學生登錄輸入正確的ID號和密碼,即可正常登錄!顯示學生信息查詢個人成績(3)單科成績排名(4)全班成績排名(5)修改密碼修改密碼后會更新學生學籍表里面的登錄密碼,下次就可以用新密碼登錄。點擊后,就可以安全退出學生管理系統(tǒng)了!6.課程設計總結(jié)課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程。本次課程設計雖然很辛苦,實在是受益匪淺。本來這門課的知識學的就不夠扎實,本次課程設計,在設計過程中碰到了很多問題,剛開始要設計的時候,還真不知道從哪里下手但最終在圖書、同學和老師的幫助下都得到了解決,讓我學會了好多書本上沒有的東西,通過本次課程設計我也能將課本上的知識融會貫通,起到了很好的輔助學習的效果,但是我發(fā)現(xiàn)我學到的知識比整整一個學期學到的都多.理論和實踐的相結(jié)合是學習最有效的方法。在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設計之后,一定把以前所學過的知識重新溫故.通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。7.附錄(代碼)由于篇幅有限,所以只附上主要功能的代碼:登陸界面與主功能界面:publicclassLoginextendsJFrameimplementsActionListener{ JFramemm=newJFrame("您好!請您先登錄!"); JTextFieldt2=newJTextField(null,15);JTextFieldt4=newJPasswordField(null,15);publicStringzh=null;JRadioButtonb=newJRadioButton(”教師"); JRadioButtonb1=newJRadioButton("學生”); JRadioButtonb2=newJRadioButton("管理員");publicvoidjiemian(){mm.setSize(300,340);mm。setVisible(true);mm.setLocation(200,300);mm。setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabelt1=newJLabel(”ID號:"); JLabelt3=newJLabel(”密碼:”); JButtondenglu2=newJButton(”登錄”); denglu2.setContentAreaFilled(false); Containern=mm。getContentPane(); n。setLayout(null); t1.setBounds(42,125,75,35);t2。setBounds(80,125,150,35); t3.setBounds(40,180,75,35);t4。setBounds(80,180,150,35); denglu2。setBounds(102,245,70,30); n。add(t1);n.add(t2);n。add(t3);n.add(t4);n。add(denglu2);b.setBounds(130,85,70,30);b1。setBounds(70,85,70,30);b2。setBounds(190,85,70,30); ButtonGrouprg=newButtonGroup();b.setSelected(false);b1。setSelected(true);b1.setSelected(false); n.add(b);n.add(b2);rg。add(b2);rg。add(b);n。add(b1);rg.add(b1);b.setContentAreaFilled(false);b1.setContentAreaFilled(false);b2.setContentAreaFilled(false); denglu2。addActionListener(this); }publicvoidactionPerformed(ActionEvente){ JButtondenglu2=(JButton)e.getSource();if(b。isSelected()){zh=t2。getText(); Stringmima=t4.getText();try{ Class.forName("sun.jdbc.odbc。JdbcOdbcDriver"); Connectionc=DriverManager。getConnection("jdbc:odbc:學生信息系統(tǒng)"); Statements=c.createStatement( ResultSet。TYPE_SCROLL_SENSITIVE, ResultSet。CONCUR_UPDATABLE); ResultSetr=s.executeQuery(”select*from教師信息表where教師ID=’”+zh+”'and登錄密碼=’”+mima+"’"); r。last(); if(r。getRow()==1) {mm。setVisible(false); r。beforeFirst();while(r.next()){ JOptionPane。showMessageDialog(null,r。getString("教師姓名")+"老師!您好!歡迎登錄教師管理系統(tǒng)!");} JFramemmm=newJFrame(); mmm。setSize(400,420); mmm。setVisible(true); mmm.setLocation(200,300); mmm.setDefaultCloseOperation(JFrame。EXIT_ON_CLOSE); JLabelaaa=newJLabel(”學生信息管理:");JLabelaaa1=newJLabel(”學生成績管理:"); JButtonb1=newJButton(”顯示學生信息");b1。setBounds(40,45,140,30); JButtonb2=newJButton(”添加學生信息");b2。setBounds(200,45,140,30); JButtonb3=newJButton(”修改學生信息");b3。setBounds(40,90,140,30); JButtonb4=newJButton("刪除學生信息");b4。setBounds(200,90,140,30); JButtonb5=newJButton("錄入學生成績");b5.setBounds(40,170,140,30); JButtonb6=newJButton("修改學生成績”);b6。setBounds(200,170,140,30); JButtonb7=newJButton("刪除學生成績”);b7.setBounds(40,215,140,30); JButtonb8=newJButton("查詢學生成績");b8。setBounds(200,215,140,30); JButtonb9=newJButton("所有成績排名");b9.setBounds(40,260,140,30); JButtonb12=newJButton("單科成績排名”);b12。setBounds(200,260,140,30); JButtonb10=newJButton("退出系統(tǒng)”);b10。setBounds(60,325,100,30); JButtonb11=newJButton("修改密碼”);b11。setBounds(220,325,100,30); aaa。setBounds(15,15,90,30);aaa1.setBounds(15,140,90,30); Containern=mmm。getContentPane(); n。setLayout(null);J_ActionListener1a1=newJ_ActionListener1(); J_ActionListener2a2=newJ_ActionListener2(); J_ActionListener3a3=newJ_ActionListener3(); J_ActionListener4a4=newJ_ActionListener4(); J_ActionListener5a5=newJ_ActionListener5();J_ActionListener7a7=newJ_ActionListener7(); J_ActionListener8a8=newJ_ActionListener8();J_ActionListener9a9=newJ_ActionListener9(); J_ActionListener10a10=newJ_ActionListener10(); J_ActionListener12a12=newJ_ActionListener12(); J_ActionListener11a11=newJ_ActionListener11(); n.add(b1);n。add(b2);n.add(b3);n.add(b4);n.add(b5);n。add(b6);n。add(b7);n。add(b8);n。add(b9);n.add(b10);n.add(aaa);n.add(aaa1);n。add(b11);n.add(b12);b1.addActionListener(a1);b2.addActionListener(a2);b3.addActionListener(a3);b4.addActionListener(a4);b5。addActionListener(a5); b6。addActionListener(a7);b7.addActionListener(a8);b8。addActionListener(a9);b9。addActionListener(a10);b11。addActionListener(a1)b12.addActionListener(a12); b10.addActionListener(newActionListener() { publicvoidactionPerformed(finalActionEvente) {System。exit(0);} }); ((JComponent)mmm.getContentPane()).setOpaque(false);。URLurl=Sql。class。getResource("未命名。jpg"); ImageIconimg=newImageIcon(url); JLabelbackground=newJLabel(img); mmm.getLayeredPane().add(background,newInteger(Integer。MIN_VALUE)); background.setBounds(0,0,img.getIconWidth(),img.getIconHeight()); }else{JOptionPane.showMessageDialog(null,"教師ID或密碼有誤!請重新輸入!");} }catch(Exceptione1) {e1.printStackTrace();}}}publicstaticvoidmain(Stringargs[]){Loginapp=newLogin(); app.jiemian(); }}向數(shù)據(jù)庫添加新的學生信息:classDataBase{//DataBase類publicstaticConnectiongetConnection()throws SQLException,java.lang。ClassNotFoundException{ //建立本地數(shù)據(jù)庫連接,編碼規(guī)則轉(zhuǎn)換為正常錄入中文) Stringurl="jdbc:mysql://localhost:3306/studentmanagement?useUnicode=true&characterEncodin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論