1、打開SQLyog,在其中新建一個(gè)數(shù)據(jù)庫“student”,如下圖所示:

為什邡等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及什邡網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站制作、什邡網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
2、接著,在student數(shù)據(jù)庫新建學(xué)生表,通過界面設(shè)計(jì)學(xué)生表中的字段和字段類型長度,如下圖所示:
3、在學(xué)生表中,添加“stu_no”和“stu_score”兩個(gè)字段,單擊確定后,給該表取名為“t_student_tab”,具體如下圖:
4、向“t_student_tab”插入如下圖的數(shù)據(jù),并單擊界面上的“保存”,保存插入的數(shù)據(jù),如下圖所示:
5、在查詢輸入框中輸入以下SQL語句:
SELECTt.stu_no,MIN(t.stu_score)FROMt_student_tabtGROUPBYt.stu_noORDERBYt.stu_no
查詢結(jié)果,如下圖所示:
6、查詢的結(jié)果如下圖,到此查出簡介中所需要的結(jié)果,如下圖所示:
英文名 (First Name or Given Name)最長:
Brfxxccxxmnpcccclllmmnprxvclmnckssqlbb1111b
1996年,瑞典南部有個(gè)孩子已經(jīng)5歲,父母還未為之取名,由于觸犯了該國姓名法規(guī),遭到當(dāng)?shù)胤ㄔ?000克朗的罰款,他們一氣之下便給孩子取了一個(gè)由 38個(gè)字母再加4個(gè)阿拉伯?dāng)?shù)字組成的名字。
英文全名(Full Name) 最長:
Adolph Blaine Charles David Earl Frederick Gerald Hubert Irvim John Kenneth Loyd Martin Nero Oliver Paul Quincy Randolph Sherman Thomas Uncas Victor Willian Xerxes Yancy Zeus Wolfeschlegelsteinhausenbergerdorffvoralternwarengewissenhaftschaferswesenchafewarenwholgepflegeundsorgfaltigkeitbeschut
zenvonangereifenduchihrraubgiriigfeindewelchevorralternzwolftausendjahresvorandieerscheinenbanderersteerdeemmeshedrraums
chiffgebrauchlichtalsseinursprungvonkraftgestartseinlangefahrthinzwischensternartigraumaufdersuchenachdiesternwelshegeha
btbewohnbarplanetenkreisedrehensichundwohinderneurassevanverstandigmenshlichkeittkonntevortpflanzenundsicherfreunanleben
slamdlichfreudeundruhemitnichteinfurchtvorangreifenvonandererintlligentgeschopfsvonhinzwischensternartigraum Senior
英文姓(Surname/ Last Name) 最長:
Wolfeschlegelsteinhausenbergerdorffvoralternwarengewissenhaftschaferswesenchafewarenwholgepflegeundsorgfaltigkeitbeschut
zenvonangereifenduchihrraubgiriigfeindewelchevorralternzwolftausendjahresvorandieerscheinenbanderersteerdeemmeshedrraums
chiffgebrauchlichtalsseinursprungvonkraftgestartseinlangefahrthinzwischensternartigraumaufdersuchenachdiesternwelshegeha
btbewohnbarplanetenkreisedrehensichundwohinderneurassevanverstandigmenshlichkeittkonntevortpflanzenundsicherfreunanleben
slamdlichfreudeundruhemitnichteinfurchtvorangreifenvonandererintlligentgeschopfsvonhinzwischensternartigraum
WHERE 姓名 NOT LIKE '%[^吖-做]%' AND 年齡 =7 AND 姓名!='未取名' and len(姓名)2
這個(gè)是從反面實(shí)現(xiàn)的~~不懂HI我
你好,?視圖就是為解決這樣的問題,
比如?create?view?viewName
as
select?id?from?table?where.....
創(chuàng)建好后,?會存數(shù)據(jù)庫,?用的時(shí)候?:
select?*?from?table?where?id
in(viewName)
視圖有優(yōu)點(diǎn)也有缺點(diǎn),?實(shí)際用的時(shí)候需注意,?附引用:
一,視圖著重于特定數(shù)據(jù)。
視圖可以讓用戶或者程序開發(fā)人員只看到他們所需要的數(shù)據(jù),而不需要把表中的所有信息與字段暴露出來,這樣增強(qiáng)了數(shù)據(jù)的安全性。
二,簡化數(shù)據(jù)的操作,易維護(hù)。
我們可以將經(jīng)常用到的多表聯(lián)合查詢出來的數(shù)據(jù),或特定的結(jié)果集定義為視圖,這樣就起到了模塊化數(shù)據(jù)的作用。我們在使用這些數(shù)據(jù)時(shí)直接查詢該視圖就可以,而不用到處寫長長的SQL語句,這樣也起到易維護(hù)的作用。
三,視圖可以限定查詢數(shù)據(jù)。
比如:對于不同的用戶,我們只提供部分?jǐn)?shù)據(jù)給他。這樣,我們就可以在視圖中限定結(jié)果集,然后返回該視圖給他。這樣,無論用戶怎么對視圖定義查詢條件,他也不能查詢出我們不想提供給他的數(shù)據(jù)。?雖然視圖可以給我們帶來種種便利,但不意味著我們就可以濫用它。因?yàn)橐晥D其實(shí)就是一段SQL語句,所以它的結(jié)果都是每次調(diào)用時(shí)動態(tài)生成的。如果不合理的定義視圖,必然帶來性能上的損耗。
下面是我們在創(chuàng)建視圖應(yīng)該要注意的幾點(diǎn):
一,操作視圖會比直接操作基礎(chǔ)表要慢,所以我們盡量避免在大型表上創(chuàng)建視圖。
二,盡量不要創(chuàng)建嵌套視圖,就是在視圖中使用視圖。?這樣在查詢時(shí),會多次重復(fù)訪問基礎(chǔ)表,帶來性能損耗。
三,盡量在視圖只返回所需的信息,盡量不要在視圖使用不需要訪問的表。
四,在大型表或者復(fù)雜定義的視圖,可以使用存儲過程代替。
五,頻繁使用的視圖,可以使用索引視圖來代替。
C# 編碼規(guī)范和編程好習(xí)慣
命名慣例和規(guī)范
注記 :
Pascal 大小寫形式-所有單詞第一個(gè)字母大寫,其他字母小寫。
Camel 大小寫形式-除了第一個(gè)單詞,所有單詞第一個(gè)字母大寫,其他字母小寫。
類名使用Pascal 大小寫形式 public class HelloWorld{ ...}
方法使用Pascal 大小寫形式 public class HelloWorld{ void SayHello(string name) { ... }}
變量和方法參數(shù)使用Camel 大小寫形式
public class HelloWorld{ int totalCount = 0; void SayHello(string name) { string fullMessage = "Hello " + name; ... }}
不要使用匈牙利方法來命名變量
以前,多數(shù)程序員喜歡它-把數(shù)據(jù)類型作為變量名的前綴而m_作為成員變量的前綴。例如: string m_sName;int nAge;
然而,這種方式在.NET編碼規(guī)范中是不推薦的。所有變量都用camel 大小寫形式,而不是用數(shù)據(jù)類型和m_來作前綴。
用有意義的,描述性的詞語來命名變量
- 別用縮寫。用name, address, salary等代替 nam, addr, sal
- 別使用單個(gè)字母的變量象i, n, x 等. 使用 index, temp等
用于循環(huán)迭代的變量例外: for ( int i = 0; i count; i++ ){ ...}
如果變量只用于迭代計(jì)數(shù),沒有在循環(huán)的其他地方出現(xiàn),許多人還是喜歡用單個(gè)字母的變量(i) ,而不是另外取名。
- 變量名中不使用下劃線 (_) 。
- 命名空間需按照標(biāo)準(zhǔn)的模式命名
...
文件名要和類名匹配
例如,對于類HelloWorld, 相應(yīng)的文件名應(yīng)為 helloworld.cs (或, helloworld.vb) 縮進(jìn)和間隔
縮進(jìn)用 TAB . 不用 SPACES.。
注釋需和代碼對齊.。
花括弧 ( {} ) 需和括號外的代碼對齊.。
用一個(gè)空行來分開代碼的邏輯分組。.
bool SayHello (string name) { string fullMessage = "Hello " + name; DateTime currentTime = DateTime.Now; string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString(); MessageBox.Show ( message ); if ( ... ) { // Do something // ... return false; } return true; }
這段代碼看起來比上面的好:: bool SayHello ( string name ) { string fullMessage = "Hello " + name; DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
MessageBox.Show ( message );
if ( ... ) { // Do something // ...
return false; }
return true; }
在一個(gè)類中,各個(gè)方法需用一空行,也只能是一行分開。
花括弧需獨(dú)立一行,而不象if, for 等可以跟括號在同一行。.
好: if ( ... ) { // Do something }
不好: if ( ... ) { // Do something }
在每個(gè)運(yùn)算符和括號的前后都空一格。.
好: if ( showResult == true ) { for ( int i = 0; i 10; i++ ) { // } }
不好: if(showResult==true) { for(int i= 0;i10;i++) { // } }
良好的編程習(xí)慣
遵從以下良好的習(xí)慣以寫出好程序
避免使用大文件。如果一個(gè)文件里的代碼超過300~400行,必須考慮將代碼分開到不同類中。
避免寫太長的方法。一個(gè)典型的方法代碼在1~25行之間。如果一個(gè)方法發(fā)代碼超過25行,應(yīng)該考慮將其分解為不同的方法。
方法名需能看出它作什么。別使用會引起誤解的名字。如果名字一目了然,就無需用文檔來解釋方法的功能了。
好: void SavePhoneNumber ( string phoneNumber ) { // Save the phone number. }
不好: // This method will save the phone number. void SaveData ( string phoneNumber ) { // Save the phone number. }
一個(gè)方法只完成一個(gè)任務(wù)。不要把多個(gè)任務(wù)組合到一個(gè)方法中,即使那些任務(wù)非常小。
好: // Save the address. SaveAddress ( address ); // Send an email to the supervisor to inform that the address is updated. SendEmail ( address, email ); void SaveAddress ( string address ) { // Save the address. // ... } void SendEmail ( string address, string email ) { // Send an email to inform the supervisor that the address is changed. // ... }
不好: // Save address and send an email to the supervisor to inform that the address is updated. SaveAddress ( address, email ); void SaveAddress ( string address, string email ) { // Job 1. // Save the address. // ... // Job 2. // Send an email to inform the supervisor that the address is changed. // ... }
使用C# 或 VB.NET的特有類型,而不是System命名空間中定義的別名類型。
好: int age; string name; object contactInfo;
不好: Int16 age; String name; Object contactInfo;
別在程序中使用固定數(shù)值,用常量代替。
別用字符串常數(shù)。用資源文件。
避免使用很多成員變量。聲明局部變量,并傳遞給方法。不要在方法間共享成員變量。如果在幾個(gè)方法間共享一個(gè)成員變量,那就很難知道是哪個(gè)方法在什么時(shí)候修改了它的值。
必要時(shí)使用enum 。別用數(shù)字或字符串來指示離散值。
好: enum MailType { Html, PlainText, Attachment } void SendMail (string message, MailType mailType) { switch ( mailType ) { case MailType.Html: // Do something break; case MailType.PlainText: // Do something break; case MailType.Attachment: // Do something break; default: // Do something break; } }
不好: void SendMail (string message, string mailType) { switch ( mailType ) { case "Html": // Do something break; case "PlainText": // Do something break; case "Attachment": // Do something break; default: // Do something break; } }
別把成員變量聲明為 public 或 protected。都聲明為 private 而使用 public/protected 的Properties.
不在代碼中使用具體的路徑和驅(qū)動器名。 使用相對路徑,并使路徑可編程。
永遠(yuǎn)別設(shè)想你的代碼是在“C:”盤運(yùn)行。你不會知道,一些用戶在網(wǎng)絡(luò)或“Z:”盤運(yùn)行程序。
應(yīng)用程序啟動時(shí)作些“自檢”并確保所需文件和附件在指定的位置。必要時(shí)檢查數(shù)據(jù)庫連接。出現(xiàn)任何問題給用戶一個(gè)友好的提示。
如果需要的配置文件找不到,應(yīng)用程序需能自己創(chuàng)建使用默認(rèn)值的一份。
如果在配置文件中發(fā)現(xiàn)錯(cuò)誤值,應(yīng)用程序要拋出錯(cuò)誤,給出提示消息告訴用戶正確值。
錯(cuò)誤消息需能幫助用戶解決問題。永遠(yuǎn)別用象"應(yīng)用程序出錯(cuò)", "發(fā)現(xiàn)一個(gè)錯(cuò)誤" 等錯(cuò)誤消息。而應(yīng)給出象 "更新數(shù)據(jù)庫失敗。請確保登陸id和密碼正確。" 的具體消息。
顯示錯(cuò)誤消息時(shí),除了說哪里錯(cuò)了,還應(yīng)提示用戶如何解決問題。不要用 象 "更新數(shù)據(jù)庫失敗。"這樣的,要提示用戶怎么做:"更新數(shù)據(jù)庫失敗。請確保登陸id和密碼正確。"
顯示給用戶的消息要簡短而友好。但要把所有可能的信息都記錄下來,以助診斷問題。 注釋
別每行代碼,每個(gè)聲明的變量都做注釋。
在需要的地方注釋。可讀性強(qiáng)的代碼需要很少的注釋。如果所有的變量和方法的命名都很有意義,會使代碼可讀性很強(qiáng)并無需太多注釋。
行數(shù)不多的注釋會使代碼看起來優(yōu)雅。但如果代碼不清晰,可讀性差,那就糟糕。
如果應(yīng)為某種原因使用了復(fù)雜艱澀的原理,為程序配備良好的文檔和重分的注釋。
對一個(gè)數(shù)值變量采用不是0,-1等的數(shù)值初始化,給出選擇該值的理由。
簡言之,要寫清晰,可讀的代碼以致無須什么注釋就能理解。
對注釋做拼寫檢查,保證語法和標(biāo)點(diǎn)符號的正確使用。
異常處理
不要“捕捉了異常卻什么也不做“。如果隱藏了一個(gè)異常,你將永遠(yuǎn)不知道異常到底發(fā)生了沒有。
發(fā)生異常時(shí),給出友好的消息給用戶,但要精確記錄錯(cuò)誤的所有可能細(xì)節(jié),包括發(fā)生的時(shí)間,和相關(guān)方法,類名等。
只捕捉特定的異常,而不是一般的異常。
好: void ReadFromFile ( string fileName ) { try { // read from file. } catch (FileIOException ex) { // log error. // re-throw exception depending on your case. throw; } }
不好: void ReadFromFile ( string fileName ) { try { // read from file. } catch (Exception ex) { // Catching general exception is bad... we will never know whether it // was a file error or some other error. // Here you are hiding an exception. // In this case no one will ever know that an exception happened. return ""; } }
不必在所有方法中捕捉一般異常。不管它,讓程序崩潰。這將幫助你在開發(fā)周期發(fā)現(xiàn)大多數(shù)的錯(cuò)誤。
你可以用應(yīng)用程序級(線程級)錯(cuò)誤處理器處理所有一般的異常。遇到”以外的一般性錯(cuò)誤“時(shí),此錯(cuò)誤處理器應(yīng)該捕捉異常,給用戶提示消息,在應(yīng)用程序關(guān)閉或 用戶選擇”忽略并繼續(xù)“之前記錄錯(cuò)誤信息。
不必每個(gè)方法都用try-catch。當(dāng)特定的異常可能發(fā)生時(shí)才使用。比如,當(dāng)你寫文件時(shí),處理異常FileIOException.
別寫太大的 try-catch 模塊。如果需要,為每個(gè)執(zhí)行的任務(wù)編寫單獨(dú)的 try-catch 模塊。 這將幫你找出哪一段代碼產(chǎn)生異常,并給用戶發(fā)出特定的錯(cuò)誤消息
如果應(yīng)用程序需要,可以編寫自己的異常類。自定義異常不應(yīng)從基類SystemException派生,而要繼承于. IApplicationException。
名稱欄目:取名nosql,取名打分免費(fèi)測試
標(biāo)題URL:http://chinadenli.net/article10/dsgphdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站改版、用戶體驗(yàn)、微信公眾號、小程序開發(fā)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)