C#語言和資料庫基礎

来源:http://www.cnblogs.com/weiguangyi/archive/2016/01/22/5152597.html
-Advertisement-
Play Games

第一章 第一個C#程式Vs2012密鑰RBCXF-CVBGR-382MK-DFHJ4-C69G801..net和C#的區別大概在2000年,微軟推出了一種革命性的產品--.NET(戰略)目標:任何人,在任何地方,使用任何終端設備,都可以訪問微軟提供的服務。.net Framew...


 

 

                       

 

第一章 第一個C#程式

 

Vs2012密鑰

RBCXF-CVBGR-382MK-DFHJ4-C69G8

01..net和C#的區別

大概在2000年,微軟推出了一種革命性的產品--.NET(戰略)

目標:任何人,在任何地方,使用任何終端設備,都可以訪問微軟提供的服務。

.net Framework:要想讓我們自己寫的C#應用可以運行在Good Friend的Computer上,必須有.net Framework

IDE(Itergrated Developer Environment)集成開發環境

 

Linux:裝X

Window:傻X

解析:,net是一種平臺,這種平臺上可以跑多種語言,例如,vb,j#,C#

c#只是一種語言

02.解決方案和項目的關係

解析:一個解決方案下可以有多個項目。

03.Main方法四種形式,返回值只能是void或者int

Static void Main(){}

Static void Main(string[] args){}

Static int Main(){}

Static int Main(string[] args){}

04.什麼是常量

  變數:可以變化的量。

Int num=5;

Num=7;

  常量;一旦定義,其值不能再後續代碼中再次修改。

解析:PI

Int num=5;

05.海量代碼摺疊

快捷鍵是Ctrl+K+S:#region

05.C#中類,對象和方法

 什麼是類?

解析:具有相同屬性和行為的一系列事物的統稱。

Car

Student

Teacher

Person

什麼是對象?

解析:對象是能在現實生活中找到的某個能區別於其他事物的一個獨特個體。

張靚穎家的紅色的小汽車

 

在清華大學大一音樂系的小王。

在哈弗大學教金融學劉老師。

在北大青鳥五道口校區四機房上課的“小蔡”

 

類和對象的關係

解析:類是對象的抽象(模板),對象是類的實例

 

 

06.Bank項目

 

光大銀行

 

開戶功能

存款

取款

轉賬

查詢餘額

修改密碼

 

作業;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第2章 c#語法快速熱身

  01.預習檢查

   1.c#與java的switch語句用法有什麼不同?

     01.java中switch後的表達式取值只能為(int/char/常量),

     但是c#中取值可以是(int/char/string)

     02.java中case後如果有語句,可以沒有break語句,但是在c#中不行

     case:

       syso();

 

     case:

      cw();

      break;

   2.java中如何定義數組?

      int[] nums=new int[]{1,2,3};

  02.本章目標

     1.掌握C#中的條件語句

     2.掌握c#中的迴圈語句

     3.掌握C#中數組用法

     4.掌握冒泡排序演算法並且能夠編碼實現

  03.c#中if條件結構

      C#與java中的條件判斷語句對比

      條件判斷語句       java        c#

      if               if(){...}二者完全相同

      if...else...     二者完全相同

   註意:java和c#中switch用法有以下兩點不同:

      01.java中switch後的表達式取值只能為(int/char),

     但是c#中取值可以是(int/char/string)

     02.java中case後可以沒有break語句,但是在c#則不行

     多個可以case 可以共用一個break語句

    

  04.c#中switch小結

        條件判斷的表達式類型:整型、字元型或字元串

        break語句的要求:

          01,每個case都要有break

          02,default也要有break

          03,特殊情況:case中沒有其他語句時,不需要break語句

                case "星期一":

                case "星期二":

                break;

 

  05.c#中的一維數組

      為什麼需要數組?

         解析;我們可以將類型相同的多個數據放到一個箱子中,便於後續的維護。

         考題:

         //在C#中和java中如下語句都可以定義一個長度為3的int類型數組

         方式一:

         int[] arr=new int[]{1,2,3};

         方式二:

          int[] arr;

         arr=new int[]{1,2,3};

         //int[] arr=new int[3]{1,2,3;//C#中正確,java中不可以

        

 

該規則在C#中同樣適用。

foreach局限性:當需要改變數組中值的時候會報錯

 

      01.C#中數組定義語法:

      數據類型[] 數組名;

      string[] arr1;

      02.如何設置數組大小?

      使用new設置大小:創建長度為5的整型數組

      int[] array=new int[5];

      03.數組初始化:

      int[ ] arr = new int[5]{0,1,2,3,4};

      int[ ] arr = new int[ ]{0,1,2,3,4};   // 省略長度

      int[ ] arr = {0,1,2,3,4};                  // 省略new

int [] ds=new int[]{1,2,3}

int [] ds={1,2,3}

      [5]——方括弧中的數字決定數組的長度

      {0,1,2,3,4}——大括弧中的元素個數決定數組的長度

      04.如何獲取數組的長度(數組中元素的個數)

       答:數組名.Length

      05.如何迴圈輸出數組中元素?

      // 迴圈輸出數組元素

        int[ ] array = new int[5] { 0, 1 ,2, 3, 4};  // 聲明並初始化一維數組

              for (int i = 0; i < array.Length;i++ )       // 輸出數組中的所有元素

              {

                   Console.WriteLine(array[i]);

              }

        06.使用foreach迴圈遍曆數組元素

          foreach迴圈一般用於遍歷整個集合或數組

     語法:foreach (元素類型 變數名 in 集合或者數組名)

                            {

                                  // 語句

                            }

      07.continue和break語句的使用

       continue:結束本次迴圈,繼續下一次迴圈

       break:結束當前迴圈

       08.二重迴圈複習

       int i, j;            // 迴圈變數

 

    // 外層迴圈控制列印的行數

       for (i = 1; i <= 5; i++)

       {

               // 內層迴圈控制每行列印數字的個數

               for (j = 1; j <= i; j++)

               {

                      Console.Write(j);

               }

               Console.WriteLine();

       }

  06.冒泡排序

       規則:每次比較相鄰兩數,小的交換到前面,每輪節航速後最大的數交換到最後

       用二重迴圈實現冒泡排序

          例如:5(n)個數字存放在一維數組中,如何進行排序

          分析:外層迴圈控制比較多少輪,迴圈變數i

                    內層迴圈控制每輪比較多少次,迴圈變數j

                    觀察規律,分析i和j的關係,最終得出結論

                    i=n-1,j=n-1-i

                    代碼框架如下:

                    for(i=0;i<n-1;i++)

                    {

                         for(j=0;j<n-1-i;j++)

                         {

                            //比較j和j+1位置的元素

                            //如果前大後小就交換

                         }

                    }

                                   冒泡排序速記口訣(升序):

                                      N個數字來排隊

                                      兩兩相比小靠前

                                      外層迴圈N-1

                                      內層迴圈N-1-i

 

艱難的抉擇:

卡莉·菲奧麗娜  hp的CEO

 Hp成功的合併了康柏

 HP 和康柏

 第三章  使用屬性升級MyBank

第3章 使用屬性升級MyBank系統

Bank系統

在Bank類中定義一個Card類型數組,存儲三張卡的信息,然後書寫了一個

Initial方法來初始化第一張卡。

Foreach(Card item in cards)

{

    Item本身不能修改,但是可以修改item對象的各個屬性值,對其進行重新賦值

}

取款

轉賬

查詢餘額

修改密碼

1.訪問修飾符

public:在任何位置都可以訪問

private:只能在當前類中訪問

2.屬性

屬性作用:修改和獲取私有欄位的值(間接對私有欄位賦值,起到保護私有欄位的作用)

屬性語法

public class Person

{

  private int age;

  public int Age

  {

     //get

     get

     {

       return age;

     }

     //set

     set

     {

       age=value;

     }

  }

}

4.面向對象三大特性:

01.封裝

  //可以將私有欄位封裝成屬性,看成是一種封裝(屬性封裝了欄位)

       //可以將一個方法寫到類中這種方式成為封裝(類封裝了方法)

02.繼承

03.多態

 

5.01.對方法的返回值不敏感,怎麼定義方法的返回值。

   02.返回值過程中出現的問題

   第三章  使用屬性升級MyBank

    一、預習檢查

    01.創建屬性通過哪兩個訪問器?

    02,本章介紹了哪些傳遞參數的方式?

   

    二、本章任務

     01.使用屬性封裝年齡欄位

     02.使用屬性封裝身份證欄位

     03.使用屬性封裝MyBank欄位

     04.實現計算一組數的奇偶個數

    

     三、本章目標

     01.掌握C#中的訪問修飾符

     02.掌握c#中的屬性

     03,掌握c#中的值傳遞和引用傳遞

    

     四、C#中的訪問修飾符

         當類的某些敏感欄位只希望類內部使用時,可以使用private訪問修飾符

         一個類的欄位一旦定義成private,其他類訪問不到

         c#中的訪問修飾符:

             public    不受任何限制,訪問級別最高

             private   只有類的內部可以使用,訪問級別最低

    五、this關鍵字的作用

         c#中this關鍵字有什麼用?

         this代表的是當前類的實例,通過this可以訪問當前類的對象的所有

         成員變數和方法

    六、數據安全

    static void Main(string[] args)

       {

             Student stu = new Student();

             stu._age = -2;//非法數據

             stu. _idCard = "123456"; //身份證號不能被修改

       }

       有時候將類中的欄位公開是不安全的,但是如果設為私有成員:

       無法正常賦值,無法獲得數據。

       使用方法解決數據安全問題

       1,使用者不可直接操作_age

       2,用方法返回_age供讀取

       3,用方法限制使用者的非法賦值

       private int _age;

       public int 方法1()

       {

           return this._age;

       }

       public void 方法2(int 參數)

       {

         if(參數<0||參數>100)

         {

            this._age=18;

         }

         else

         {

           this._age=參數;

         }

       }

       這種寫法太麻煩,於是誕生了屬性

       class Student

{

        private string name;

        public string Name

        {

            get { return name; }

            set { name = value; }

        }       

}

       value相當於方法的參數,欄位和屬性的數據類型必須一致。

       get用於獲取相應欄位的值,

       set用於設置欄位的值。

       get和set都存在,讀寫屬性。只有get時,只讀屬性。只有set時,只寫屬性。

       屬性的作用:控制私有欄位的可訪問性,保護內部數據的安全。

       建議:類內部敏感欄位使用屬性來控制訪問

       快速書寫屬性的方法:用ctrl+R+E

       類的成員:欄位、屬性和方法

       屬性是不能用來存儲對數據的,真正的數據是存儲在欄位中的。

    七、參數的傳遞方式

    參數傳遞有兩種方式:值傳遞和引用類型傳遞

    註意:值傳遞不能保留參數的修改,要按引用傳遞,使用ref

    通過引用傳遞參數:

      1.定義和調用時,在參數前都要使用ref

      2.在方法調用前:作為參數的變數要聲明並賦值

      3.使用場景:希望保留參數的更改。

      

       課堂內容:

       01.如果想讓一個欄位只能在當前類中方式問,那麼可以將訪問修飾符設置成private。

       02.如果類中的一個欄位沒有訪問修飾符,那麼預設訪問修飾符是private,但是不建議省略。

       03.什麼是封裝?

       解析:我們可以將私有欄位封裝成公有的屬性看成是封裝的一種體現。

          封裝的另一種體現是將多個欄位封裝到一個類中。

        04.面向對象的三大特性?

        解析:封裝,繼承和多態

        05.屬性的本質也是方法。這也就是為什麼我在第一節通過GetName()和SetName()來引出屬性。

        白話理解:其實微軟在你進行屬性書寫的時候,自動幫助我們構建了一個getName()方法和換一個

        setName()方法。

        06.真正存儲數據的是欄位 ,屬性是不能保存數據的。

3.值類型傳遞和引用類型傳遞

          值類型傳遞(不加ref):

             01.傳遞的參數是值類型:不用保留變數值的更改

                02.傳遞的參數是引用類型:會保留變數值的更改

          引用類型傳遞(加ref)

             01.傳遞的參數是值類型:會保留變數值的更改

                02.傳遞的參數是引用類型:會保留變數值更改

 

第4章 深入C#的String類

01.java中常用字元串處理方法

  substring(3,5):

  "我愛你中國,我愛你天安門!"

  length()

  indexof("中");

  lastIndexOf()

  split()

  concat()

  equals()

  trim()

02.C# 中的類型轉換有哪幾種方式?

解析:

  int.Parse("字元串")

  Convert.ToInt32("任意類型")

  (int)1.23 :類型相容

03.字元串的常用方法

IndexOf():查找某個字元在字元串中的位置

Substring():從字元串中截取子字元串

解析:第二個參數代表從第一個參數索引位置往後,截取幾個長度的字元

"明天是個好天氣"

words.Substring(4,3)

ToLower():將字元串轉換成小寫形式

Equals() :比較兩個字元串的值是否相等

Join():連接字元串

Split():分割字元串

Trim():去掉字元串兩邊的空格

Compare(string strA,string strB):比較字元串strA和strB的字典順序,方法返回值是int類型,

如果返回的是0,兩個字元串相等。

如果返回的是正數,第一個字元串大。

負數,第二個字元串大。

04.什麼MSDN?

解析:微軟推出的官方最權威的一個.NET平臺的技術的一個幫助文檔。

什麼Java API

就是sun公司推出的學習java技術最權威的幫助文檔。

05.什麼是URL?

解析:URL(Uniform Resoure Locator:統一資源定位器)

相當於老爺爺口中的網址。

三部分組成:http://wwww.baidu.com

  01.協議類型:http協議 ftp  https:加密協議

  02.功能變數名稱(是IP地址經過映射後的字元串,為了便於網站用戶更方便的訪問該網站的資源)

  03.資源

06.Format()方法

  {索引,對齊:格式}
07.類型轉換

   無論隱式類型,還是強制類型轉換,前提是類型相容,也就是要是數字都是數字。

   double num=1;//隱式類型轉換

   int number=(int)1.23;//強制類型轉換

   01.Parse:應用場景

   只有將字元串轉成數字這一種情況下可以使用XXX.Parse(字元串)

   02.Convert.ToXXX(任意類型)

   以後大家在編程時,本人強烈建議大家使用Convert進行類型轉換

  

  

 

 

第5章 庫存管理

 效果圖:

 

 

第6章 程式數據的集散地:資料庫

 01.講解SQLServer Management Studio ()

 02.資料庫(DataBase) 為了保證數據的持久化,推出了資料庫

 03.DBS(範圍廣:操作員:資料庫管理系統,硬體平臺)  DBMS

 04.系統資料庫

Master

Tempdb

Model

Msdb:調度!任務計劃

Resource:

05.登陸數據兩種驗證方式

   Windows:操作系統登陸後,就可以直接登陸資料庫軟體

   SQL Server

     許可權最高的用戶:sa  機房預設密碼:

06.開啟服務的方案

   

01.保存在記憶體中的數據有什麼缺點?

解析:比如拿咱們書寫的Bank系統為例,如果您通過開戶功能

在數組中新增了一張銀行卡,那麼下次進入系統的時候, 數據不會

保留。

02.資料庫可以看成是一個永久保存數據的倉庫。

 

預習檢查

1.數據完整性指的是什麼?

解析:數據的準確性就是數據的完整性

SQL Server有哪兩種身份驗證方式?

解析:Windows身份驗證和SQL Server身份驗證

創建資料庫需要指定哪兩種文件?

解析:數據文件(.mdf) 和 日誌文件(.ldf)

03.為什麼要使用資料庫?

解析:可以存儲大量數據

      可以保證數據的一致性和完整性

      可以滿足應用的共用和安全要求

      方便和智能化的分析,產生新的有用信息

02.行:記錄

   列:欄位

03.數據冗餘:數據的重覆性

04.資料庫完整性:準確性

05.註意點:

    當我們在連接(登陸)資料庫的時候,一定要保證

資料庫服務開啟:Sql Server(MSSQLServer)

04.登陸SQL Server兩種方式:

 Windows身份驗證

 SQL Server身份驗證:sa   機房密碼預設為空

 

核心內容

01.什麼是伺服器?

解析:提供服務的一個容器。一臺電腦上安裝了某個服務,例如資料庫這款軟體,那麼這台

電腦就稱之為資料庫伺服器。

02.常見的資料庫

oracle

DB2

sql server

mysql

sqllite

visual foxpro

access

02.增刪查改

發表評論:質量很好,就是發貨速度有點慢

購物車:刪除

瀏覽商品 :查詢

修改密碼:改

上網自己下(我就不告訴你)

05.DBMS和DBS的區別

DBMS:DataBase ManageMent System:資料庫管理系統

DBS:DataBase System 資料庫系統

關係:DBS包含DBMS

因為資料庫系統組成部分:

資料庫的操作者

資料庫軟體  (資料庫管理系統)

承載該軟體的電腦

06.資料庫服務啟動方法

方法一:對“我的電腦”→右鍵“服務”→SQL Server(MSSQLServer)

方法二:打開開始菜單→運行→services.msc回車 就可以打開服務視窗,後續操作同上

方法三:按住鍵盤上的“Win+R”打開命令提示符視窗,輸入→services.msc回車 就可以打開服務視窗,後續操作同上

07.系統資料庫

Resource資料庫:作用:用戶新建 了一個資料庫School,

那麼有些信息會自動從Resource中映射到School中

master資料庫:保存所有資料庫的信息,一旦損壞,整個資料庫軟體都無法運行。

model:模板資料庫

tempdb:臨時資料庫,保存臨時數據

msdb:代理,業務調度,警報作業等。

DBA:OK的

初級DBA

自動備份

10年

美工

軟體開發

 

1.如何將硬碟的資料庫文件拷貝到U盤?

解析:通過關閉服務的方式

2.如何將U盤中的資料庫文件還原成電腦上資料庫軟體中的一個資料庫存在?

解析:先將U盤上的數據文件拷貝到電腦的非系統盤,使用附加工具,找到對應位置的資料庫文件,進行附加操作

3.停止服務備份數據文件的缺陷?

解析:熱備份!

4.童鞋們:收縮資料庫乾什麼呀?

解析:節省硬碟空間

三種開啟服務方式:(曉鵬)

08.分離和附(方言)

09.備份和還原 (龍龍)

10.收縮資料庫  

11.刪除資料庫

我站在這裡用血的教訓告訴大家,當你需要刪除資料庫的時候,

一定要備份,嚴重推薦,特別非常十分及其需要註意:在自己心裡先問3遍,你確定

這個數據要刪除嗎?讓你同桌看一下,是否代碼寫的正確,是否需要刪除?

前途:

備份:::::::::::::::

作業:1.bank系統終結版

      2.手寫三遍:轉賬

      3.第6章和第7章預習

      4.blogs兩篇(MyBank  商品管理)

      5.Java  Logic

第7章 數據表

01.四種完整性約束

   001.實體完整性:針對數據行設置的完整性

   002.域完整性:針對數據列設置的完整性。

   003.引用完整性:外鍵約束

   004.自定義完整性:為了滿足我們的業務需求,我們自己量身定製的完整性約束,一般

   通過存儲過程。

02.SQL Server中數據類型

 int:存儲整型數字

 numeric(18, 2):存儲小數

 decimal(18, 2):存儲小數

 nvarchar():存儲文字

  以後嚴重建議大家只要是保存字元串就用nvarchar()類型,n代表的unicode編碼,該編碼是國際通用編碼,可以避免亂碼的出現。var代表長度可變。表中該列真正存儲的內容就占它本身的空間,而不會占用該列通過(20)設置的長度所占用的空間。

 varchar():存儲可變長度的文本

 char(4):存儲固定長度的文本

 text();SQL Sever2000的使用使用的大文本類型,現在2005.2008  2012已經無情的毫無憐憫之心的拋棄了它,

 nvarchar(Max)

 DateTime:保存日期和時間

 照片:image(二進位存儲)

--以後我們存儲姓名:nvarchar(20)

--存儲年齡:int

--存儲性別:bit

--存儲一篇文章:nvarchar(max)

儘量不要使用ntext或者是text,因為text和ntext讀取效率非常低。

 

作業:1.第六章和第七章數據類型形成blog文章

      2.創建MySchool,並且形成Student,Result,Grade,Subject,數據類型,以及測試數據。

      3.第六章選擇和簡答題

03.為表建立約束

  01.主鍵約束

  一張表一定要設置主鍵,否則別人會罵死你。

  如果一張表不設置主鍵,到後續學習框架的時候,框架就欺負你,給你報錯。

  不能給自增列手動給值,這個值是由系統自動給的。

  02.非空約束

  03.預設值約束

  04.check約束

  05.外鍵約束

  註意:外鍵約束只能設置在外鍵表中

 

  年級名稱和學生名稱同時獲取

  年級名稱    學員姓名     學生成績

    S1290       不知道        100

04.常見問題:

 01.外鍵把控的不好

 02.在SQL Server中,字元串和日期類型數據要加單引號,數值類型不用

 03.每張表中必須都有一個主鍵,沒有主鍵的表是不行的。

 04.主鍵列不允許為空

 05.不推薦使用複合主鍵,主鍵列選擇依據:儘量簡單。

 06.如果找不到有意義的列作為表的主鍵,那麼就加多一列ID作為

該表的主鍵列。

05.標識列:

 為了唯一確定一行數據在該表中唯一而設定的一列。

--應用前提:

  01.必須是int(smallint)類型

  02.在標識規範處設置:標識種子,標識增量

(種子值:)標識種子:從哪個數據開始增長

(步長:)標識增量:每次增長幾個數

 

06.外鍵:

在一張表表A中某列是主鍵,但是在另外一張表表B中該列不是主鍵。那麼

表A稱為主鍵表,表B稱為外鍵表。

 

--只能在外鍵表中設置外鍵

%:代表任意長度的任意字元:特別聲明:包含0個

 

07.表內容圖

 

查詢機制

 

外鍵

 

那些年,第七章我們講了什麼?

解析:1主鍵:唯一的,一個

      2.約束:

        非空約束:

        主鍵約束

        預設值約束

        Check約束

        外鍵約束

      3.實體完整性約束(行數據)

        引用完整性約束(外鍵!)

      4.自定義完整性約束(規則,存儲過程,觸發器)

      5.域完整性約束(列  ,check約束)

      6. 設置外鍵:

      7.標識列

        特征:自增,有種子和增量,前提(必須是int類型)

     8.建立資料庫關係圖,更直觀的看出表之間的關係!

     9.數據類型

         文本:char   nchar

               Varchar   nvarchar()

               Text   nvarchar(max)

     10.check

          男或者女 or

     11.建立主鍵

         多列共同確定一個主鍵,複合主鍵。

         主鍵不一定是標識列。

     12.通配符

      _:有且只有一個字元

      %任意個任意字元

       Like ‘’

     13.設置了標識列和約束,不符合約束,可能產生標識列斷裂的情況!

     14.數據類型中的日期和時間  DateTime

     15.刪除資料庫表,要想刪除有外鍵關係的表,必須先刪除子表(外鍵表)

     16.貨幣數據類型money decimal(18,0)

     17.int bit true false

     18.字元編碼unicode

     19.二進位數據 image

第8章 用SQL語句操作數據

DML:

DDL:

DQL:

DCL

 

01.SQL語句書寫規範

  1,.在SQL Sever中,SQL語句不區分大小寫(資料庫名,表名,列名,關鍵字) ,SQL編譯器都識別

  2,對錶進行操作的時候,一定要使先用use關鍵字切換到對應的資料庫

  3.自增列不可以賦值

02.新增數據註意事項

  01.如果新增全部列,那麼表名後可以不跟列名,但是要提供所有列的值,除非當前

  列有預設值,那麼也要給出default關鍵字。

  02.如果只想給一張表中添加部分列,那麼在表名後要跟上列名,並且需要保證除了你給出

  的列的值之外,其他列都允許為空或者有預設值。

  insert into goodPerson(stuName,stuAge) values('張曉玲',20)

03. 一次性向一張表中插入多條數據的解決方案

方案一:insert into 目標表

 select  * from 原表

 註意事項:如果目標中有自增列,那麼不能使用*號。

 

 

 方案二:select *  into 目標表(不存在)

  from 原表

  該方式只保留了數據和子自增列,但是主鍵等約束就都沒有了。

 

  方案三:insert into 目標表(存在)

  select '高一二班'

  union

  select '高一五班'

04.幾個註意點

 1.以後大家見到update語句,一定要跟where條件,打死也要跟。

 2.在SQL Server中null代表不知道,所以如果where後的限定條件不能用=和null做對比,必須使用is null

05.delete和truncate區別?

   解析:01.delete 後可以跟where條件,而truncate不行

         02.delete刪除數據的時候會記錄日誌,而truncate不會

               03.delete刪除表中所有資料庫,id編號不會從1開始,而truncate會。

 

同志們,有些童鞋問老濕,為什麼呀???

專業人士解析:因為truncate又稱為“截斷表”。編號從1開始。

 

 

 

 --01.如果要進行數據表中數據的查詢,那麼必須先定位到該表所在的資料庫

use Myschool  --切換資料庫

select StuId, StuName, StuAge, GradeId from Student

--我只想要年齡小於歲的學員信息

select * from Student  where StuAge<=22

--新增數據

insert into GoodPerson values

('微冷的雨',50,'中國某地區','未知','希望大家努力學習,將來薪資K')

select * from goodperson

 

insert into goodperson(stuName,stuAge,stuAddress,stuLike,stuWishes) values('張靚穎',20,default,'大家微笑的臉龐','開心就好')

 

insert into goodPerson(stuName,stuAge) values('張曉玲',20)

delete from goodperson

where StuId=31

 

select * from goodPerson2

 

 

-- 一次性向一張表中寫入多條數據方案一

insert into goodPerson2

select  StuName, stuAge, stuAddress, stuLike, stuWishes from goodPerson

delete from goodperson2

 

--方案二

select * into goodpersonbak

from goodperson

 

--方案三:

select * from grade

 

insert into grade

  select '高一二班'

  union

  select '高一五班'

 

 

--更新高一三班位"無敵S1290"

update grade set gradename='無敵S1290'

where gradename='高一三班'

--將"王龍彪" 改成"李小龍"

--將年齡為歲的學員年齡改成

update goodpersonbak set stuname='李小龍',stuage=25

where stuname='微冷的雨'

select * from goodpersonbak

update goodpersonbak set stuname='微冷的鱷魚',stuage=10000

where stuid=1007

 

select * from goodperson

insert into goodperson(stuname,stuage,stulike)

values('李小龍',20,'吃faN')

 

 

select * from goodperson

where stuwishes is null

 

update grade set gradename='S1'

select * from goodpersonbak

 

下次:

前6章可以

第七章第八章課後題

第九章預習

第9章 數據查詢基礎

01.關於*會引起全表掃描問題

use MessageBoard

select * from Message --記憶體中

--*號會引起全表掃描,所以在真正的開發中,不推薦使用。最好使用

--確切的列名。

02.查找留言人是“羅雨萌”的所有留言信息

select *

from Message

where msgAuthor='羅雨萌'

03常見問題:

--01.SQL語句不區分大小寫

--02.字元串和日期類型都需要單引號

--03.起表名的時候,千萬不要起得太好,例如不要使用User作為表名。

-- 如果表名和關鍵字重覆了,我們可以通過[]取消轉義。

select * from [User]

--04.千萬註意新建查詢視窗中的中文空格。

select  * from Message

04.別名

--別名方案一

select msgAuthor as 留言人,msgContent as 留言內容

from Message

 

select msgAuthor  留言人,msgContent  留言內容

from Message

 

--別名方案二

select 留言人=msgAuthor,留言內容=msgContent

from Message

 

05.將多列合併成一列顯示

select msgAuthor+'____'+msgContent as 留言人說的留言是一種留言留言

from Message

06.常量列

select *,'漢族'as 民族  from Message

07.常見事項說明

--通過Ctrl+R:可以顯示和隱藏結果集視窗

--真正的安裝順序,先安裝資料庫,再裝其他軟體。

--換一個版本。,換安裝包

--換系統

--來找我,我都解決不了,那麼就是人品

08.關於top關鍵字

--限制只檢索前幾條數據

use MySchool

select top 3 * from student

where Gender='0'

 

--按主鍵

--獲取Student表中的前20%的數據

--能大概推斷表中總共的數據數

select top 20 percent * from student

 

--腳本語言:不需要編譯器進行編譯,就可以直接解析執行的代碼

--編譯語言:

--從高版本向低版本附加,附加不上。

--比如說: SQL Server 2008

     --    SQL  Server  2005

09.Order by相關    

--*****************************5.Order by相關***********************************

select * from Student

--預設按主鍵升序排序

select * from student

order by Gender desc

 

--按照多列排序(先按年級,再按性別)

select * from student

order by GradeId asc,Gender desc

--查詢北京的男同學

select * from student

where Address like '%北京%' and Gender='1'

 

--查詢“李X龍”的信息

select * from student

where StudentName like '李_龍'

10.通配符:

--%:任意長度的任意字元,(包含0個)

--:_:任意的單個字元,只能是一個

--查詢考試成績前五名的分數

select top 5  StudentNo,SubjectId,Studentresult

from result

order by Studentresult desc

--學號科目編號和分數(只要前3個人的)

--01.order by

--02.where後多個條件通過and連接,order by才用逗號

--03.=(完全匹配)和like(模糊查詢)

--*********************************************************************************

11.字元串函數

--******************************6.字元串函數***************************************

--函數名稱:CharIndex('str1','str2',index)//位置從開始

--參數含義:

--第一個參數:要查詢的字元串

--第二個參數:在哪個字元串中搜索

--第三個參數:從str2的第幾個字母開始搜索

--註意點:如果在str2中沒有找到str1,那麼返回

--案例:

select charindex('好好學','S1是S2的基礎,所以大家好好學',1)

 

SELECT CHARINDEX('JBNS','My Jbns Course') 

select charindex('微冷的雨','好人啊微冷的雨',4)

select charindex('媽媽說','我們要為國家爭光,媽媽說,是人就要有理想',11)

--len():獲取小括弧中字元串的長度,空格也算一個字元長度

select len('明天咱們還上課,希望大家回去好好休息')

select len('大家都是好孩子                ')

--註意點:如果內容以多個空格結尾,那麼結尾的多個空格,是不計算長度的

--例如:

select len('我們都是好孩子                                        ')

 

SELECT LEN('SQL Server課程')

select len('我是這個世界上最大的王,你信嗎?')

 

--upper():將括弧中出現的英文全部轉換成大寫

select upper('i can speak english.你能嗎?')

select lower('I HAVE A DREAM')

 

select upper('i have a dream,俺有一個夢想')

 

--LTrim():清除括弧中內容左邊的空格(left:right)

select ltrim('                              生活不是林黛玉,      '

select rtrim('         生活不是林黛玉,      ')

 

--既想移除左邊空格,也想移除右邊空格

select rtrim(ltrim('         生活不是林黛玉,      '))

select ltrim(rtrim('   你還好吧!   '))

--思路靈活

select len(rtrim('今年奇怪了,北京沒下雪,去去去    '))

 

--substring('字元串',截取的位置,截取的長度)

select substring('我是中國人,我愛自己偉大的祖國,真的',6,1)

--right():從字元串右邊返回指定類型的字元

select left('大家今天好像都沒有交日記本,我去',3)

select right('大家今天好像都沒有交日記本,我去',2)

 

--replace('str1','要替換的字元','目標字元'):

select replace('周傑倫,殘疾人,雖然手不殘疾,但是X殘疾','殘疾','好')

 

--stuff('字元串',刪除的起始位置,刪除的長度,'插入的字元串')

select stuff('我愛你中國,我愛你故鄉',4,2,'北京')

select stuff('我們都要有理想,為了理想我們熬夜,當然以犧牲身體為代價',6,2,'自信')

--****************************************************************************&

12.日期函數

--**********************************7.日期函數*************************************

--01.getdate():獲取當前日期和時間

select getdate()

--1000ms是s

--02.dateadd(按年/月/日添加,增量,時間)

select dateadd(yy,100,'2014-8-6')

select dateadd(year,-20,getdate())

--03.datediff(按年/月/日求差,小時間,大時間)

 --高梓賀

 

 select datediff(year,'1998-01-01',getdate())

 

--04.datename:獲取某個日期是星期幾

select datename(dw,'2014-08-06')

--05.datepart(mm,日期):獲取指定日期對應的年/月/日部分 

select datepart(yy,getdate())

--Year yy

--Month mm

--Day  dd

--push(推)  pull(拉)

--通過該方式也可以獲取當天是周幾

select datepart(dw,getdate())

 

--數學函數

--01.rand():產生一個到之間的隨機數

select right(rand(),4)

Select rand()

 

--如果產生四位數(-9999)

--02.abs:取絕對值

select abs(-10)

select abs(10)

--非負數

--03.ceiling:天花板,你要看天花板,抬頭,向上取整

select ceiling(1.999991)

--04.floor:向下取整

select floor(1.999999)

select ceiling(1.000000000000001)

select floor(2.999999999999999)

--04.power(5,2)求冪值

select power(4,4)

select 1*2/3+5-56+100-5/100

 

select power(2,3)

--05.round:將一個數字四捨五入到指定精度

select round(42.564,1)

--06.sign:如果括弧中寫的是一個正數,返回,如果是負數,返回-1

--如果是返回

select sign(20)

 

 

select sign(0)

--07.sqrt()開平方

select sqrt(9)

 

第10章 模糊查詢和聚合函數

 

01.通配符使用

  001.%:任意多個任意字元(含0個)

  002._:任意的單個字元 (必須一個)

  003.[0-9]:只能出現中括弧內指定範圍的一個字元

  004.[^a-z]:不能出現任何字母,只能是字母之外的其他字元。

02.Between 80 and  100

做一個徘徊於牛A與牛C之間的人

    Between  and 等價於 >=和<=

         但是嚴重推薦使用between  and

 

03.in關鍵字的模糊查詢

    select * from student

         where address in('地址1','地址2')

04.聚合函數的應用場景?

   解析:一般在做統計分析的時候需要使用聚合函數

   count:統計一張表中總共有多少條數據

   select SUM(StudentResult) as 總分 from Result

   select AVG(studentresult) as 平均分  from  Result

   select MAX(studentresult) as 最高分 from Result

   select min(studentresult) as 最高分 from Result

 

第11章 連接查詢和分組查詢

01.分組查詢:用於統計時經常使用分組查詢

--sum()--count()--max() min()--avg()

--01.查詢每個年級的總人數

--一旦通過group by分組,那麼我們只能獲取組相關的信息,而不能獲取組中成員的信息

--在select後只能跟聚合函數和group by後面的列,其他列不允許

select gradeid as 年級編號,COUNT(studentno) as 總人數

from student

group by gradeid

--多列分組

02.每個年級的男生總人數,,以及女生總人數

--年級編號  性別    總人數

select gradeid as  年級編號,gender as 性別,COUNT(studentno) as 總人數

from student

group by GradeId,Gender

order by GradeId,Gender

 

*03如何查詢每門課程的平均分

select SubjectId as 課程編號,AVG(studentresult) as 平均分  --05.投影結果

from Result                         --01。定位到表

where SubjectId<3  --,            --02.分組前第一道過濾

group by SubjectId                  --03.分組

having COUNT(studentno)>3           --04.分組後第二道過濾

order by 課程編號 desc              --06.最後排序

 

04獲取總人數超過3人的年級編號及人數

--年級編號  總人數

select gradeid as 年級編號,COUNT(studentno) as 總人數

from student

group by GradeId

having COUNT(studentno)>3

 --having是對分組後的數據進行第二次篩選或者過濾,也就是說沒有group by就沒having

--註意:where之後不能有聚合函數

05.上機練習1

 

--**********************上機練習1********************************************

--查詢每個年級的總學時數,並按照升序排列

select gradeid as 年級編號,SUM(classhour) as 總學時數

from Subject

group by gradeid

order by 總學時數 asc

 

--查詢每個參加考試的學員平均分

select studentno as 學號,AVG(studentresult) as 平均分

from Result

group by studentno

 

--查詢每門課程的平均分,並按照降序排列

select subjectid as 課程編號,AVG(studentresult) as 平均分

from Result

group by SubjectId

order by 平均分 desc

 

--查詢每個學生參加所有考試的總分,並按照降序排列

select studentno as 學號,SUM(studentresult) as 總分

from Result

group by StudentNo

order by 總分 desc

06.上機練習2

--**********************上機練習2********************************************

S1:java  html c#  winform sql server

--查詢每年級學時數超過的課程數

select gradeid as 年級編號,COUNT(subjectid) as 課程總數

from Subject

where ClassHour>=50

group by GradeId

 

--查詢每年級學生的平均年齡:

select gradeid as 年級,AVG(DATEDIFF(YY,birthday,getdate())) as 平均年齡

from student

group by GradeId

 

--查詢每個年級包含北京的學生總數

select gradeid as 年級,COUNT(studentno) as 總人數

from student

where Address like '%北京%'

group by GradeId

 

--查詢參加年級考試的學生中,平均分及格的學生記錄,按照降序排列

select studentno as 學號,avg(StudentResult) as 平均分

from Result

group by StudentNo

having  avg(StudentResult)>60

order by 平均分 desc

 

--查詢考試時間為2009-9-9課程的及格平均分

--課程編號   所有課程平均分

select subjectid  as 課程編號,AVG(studentresult) as 所有課程平均分

from Result

where ExamDate>='2009-9-9' and ExamDate<'2009-9-

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一,效果圖。二,工程圖。三,代碼。RootViewController.h#import @interface RootViewController : UIViewController{ UIScrollView *scoreView;}@endRootViewController.m#im...
  • 參考:http://blog.csdn.net/qq418716640/article/details/8508973http://www.cnblogs.com/mengdd/p/3335508.html效果:一個手指實現(所有手勢事件)和(部分事件的);A. 所有手勢activity_main....
  • 今天工作中遇到特殊的一個任務,就是將兩個自增列值的進行對調變更。SQL Server 平臺修改自增列值由於之前處理過sql server資料庫的遷移工作,嘗試過其自增列值的變更,但是通過SQL 語句修改自增列值,是嚴格不允許的,直接報錯(無法更新標識列 ’自增列名稱‘)。sql server我測試是...
  • 一、下載·安裝·啟動 學習mongoDB第一步下載安裝,度娘有教程不詳細解釋,說一下重要的點。 1 解壓安裝包後創建資料庫文件的存放位置,例如:d:/mongodb/data/db; 2 啟動:D:/mongodb/bin>mongod --dbpath D:\mongodb\data\db;...
  • 最近整理Redis,對sentinel有了更深入的理解,特地總結如下1.主從Redis主從redis實際上是一種主備模式,即主redis宕機後,可以切換從redis繼續提供服務。 缺點: 1.人為關註Master是否宕機 2.無法完成自動切換主從 3.從節點的功能未被充分利用主從...
  • SQL Server代理是所有實時資料庫的核心。代理有很多不明顯的用法,因此系統的知識,對於開發人員還是DBA都是有用的。這系列文章會通俗介紹它的很多用法。如我們在這個系列的文章里所見,SQL Server代理作業由一些列的作業步驟組成,每個步驟是需要執行的不同類型工作。另外在每個步驟里要進行的工作...
  • sqlplus在啟動時會自動運行兩個腳本:glogin.sql、login.sql這兩個文件 執行順序為 1.預設在在$ORACLE_HOME/sqlplus/admin路徑下查找glogin.sql文件執行 2.預設在在當前路徑下查找login.sql文件執行,若未查找到對應文件則執行3 ...
  • -- 創建雇員表:empCREATE TABLE emp( empno INT, -- 員工編號 ename VARCHAR(50), -- 員工姓名 job VARCHAR(50), -- 員工工作 mgr INT, -- 領導編號 hiredate DATE, -- 入職日期 sa...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...