<rp id="wnpn7"><ruby id="wnpn7"></ruby></rp>
<progress id="wnpn7"><track id="wnpn7"><rt id="wnpn7"></rt></track></progress>
<ruby id="wnpn7"></ruby>
<ruby id="wnpn7"><blockquote id="wnpn7"><div id="wnpn7"></div></blockquote></ruby>

    1. <em id="wnpn7"><ruby id="wnpn7"><input id="wnpn7"></input></ruby></em>
      1. <button id="wnpn7"><acronym id="wnpn7"></acronym></button><button id="wnpn7"><acronym id="wnpn7"></acronym></button>

        <rp id="wnpn7"><acronym id="wnpn7"></acronym></rp>

        <li id="wnpn7"><object id="wnpn7"><u id="wnpn7"></u></object></li>
        VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 數據庫 > sql語句 >
        • sql語句大全之索引、視圖、存儲過程和觸發器的

         

        實驗案例一:驗證索引的作用

        1、首先創建一個數據量大的表,名稱為“學生表”,分別有三列,學號,姓名和班級,如下圖所示,學號為自動編號,班級為默認值“一班”。

        2、向表中插入大量數據,數據越多,驗證索引的效果越好。

        使用語句完成:While 1>0  Insert into 學生表(姓名)  values(‘于美麗’)

        上面語句是一個死循環,除非強制結束,如果1大于0就會一直向表中插入姓名

        如下圖所示:

        等待5分鐘左右,打開表的屬性,查看表的行數,當前為1032363,如下圖所示:

        3、 使用語句查詢第900000行的數據,Select * from 學生表 Where 學號=900000

        4、打開“sql server profiler ”工具進行跟蹤,如下圖所示:

        打開“sql server profiler ”工具查看跟蹤的信息,發現查詢時間很長,cpu工作了265毫秒,reads:讀了8649次,writes:寫了10次,duration:總計花費2336毫秒完成查詢。

        為了下面分析文件更準確,多執行幾次Select* from 學生表 Where 學號=900000

        然后把跟蹤的結果保存在桌面上:

         

        5、打開“數據庫引擎優化顧問”,添加跟蹤文件,進行分析,發現索引建議,需要建立索引。

         

        注意選擇benet數據庫中的學生表,然后點擊“開始分析”

         

        索引類型為clusterd(聚集索引),索引列為“學號”。

        6、按照“數據庫引擎優化顧問”的索引建議建立聚集索引,并且選擇“唯一”

        7、再次執行Select * from 學生表Where 學號=900000

         

        8、打開sql server profiler查看跟蹤的時間,發現查詢時間大幅提升,說明索引可以提高查詢速度。

        發現總計時間為1毫秒,幾乎忽略不計

         

        實驗案例二:分別練習創建各種索引

        1、創建聚集索引

        目前tstudent表中沒有任何索引也沒有主鍵

         

        為tstudent表創建聚集索引

        選中studentID,單擊左上側的主鍵按鈕

         

        為Tstuden表的studentID創建主鍵就同時創建了聚集索引

        2、創建組合索引

        為成績表創建組合索引,因為一個學生不能為一門學科錄入兩次成績,所以將成績表中的studentID和subjectID創建組合索引

         

        解決辦法:

        菜單欄----工具----選項

        找到設計器(designers),將標記處的勾去掉,單擊“確定”

         

        這樣組合索引就創建成功了。

         

        3、創建唯一索引

        創建唯一性約束的時候就會創建唯一性索引,不能有重復值

        為Tstudent表創建唯一非聚集索引

        create unique nonclustered index U_cardID on TStudent(cardID)

        4、創建非聚集索引---可以有重復值

        為Tstudent表的姓名列創建非聚集索引

        使用命令查看表上的索引

        Select * from sys.sysindexes where id=(select object_id from sys.all_objects where name='Tstudent')

        Indid中1代表聚集索引

        Indid中2代表唯一非聚集索引

        Indidz中3代表非聚集索引

        使用sp_help  Tstudent也可以查看到相關表的信息

        實驗案例三:創建視圖

        方法一:在圖形界面下創建視圖(以Myschool數據庫為例)

        創建一個視圖,分別來自三個的表的三個列,并重命名列,生成的視圖名為student_info,如下圖所示:

         

        通過查詢語句查看視圖:select   *    from  student_info

         

        方法二:使用語句創建視圖(以schoolDB數據庫為例)

        進行數據庫設計的時候,一個表有很多列,我們可以在表上創建視圖,只顯示指定的列。

        Select語句可以作為一個視圖

        select Sname,sex,Class from dbo.TStudent where Class='網絡班'

        1、創建視圖,篩選行和列

        create view netstudent

        as

        select Sname,sex,Class from dbo.TStudent where Class='網絡班'

        從視圖中查找數據:

        select * from netstudent where sex='男'

        創建視圖,更改列的表頭,計算列,產生計算列

        selectStudentID,Sname,sex,cardID,Birthday,Email,Class

        from dbo.TStudent

        2、創建視圖,更改列的表頭

        create view V_Tstudent1

        as

        select StudentID  學號,Sname姓名,sex  性別,cardID  身份證號碼,Birthday  生日,Class  班級 from dbo.TStudent

         

        select * from V_Tstudent1

         

        以后再去查詢的時候就非常方便了。

         

        實驗案例四:存儲過程

        1、常用的系統存儲過程

        exec sp_databases      --列出當前系統中的數據庫

        exec sp_renamedb  'mybank','bank'   --改變數據庫名稱(單用戶訪問)

        use MySchool

        go

        exec sp_tables                       --當前數據庫中可查詢對象的列表

        exec sp_columns student            --查看表student中列的信息

        exec sp_help student               --查看表student的所有信息

        exec sp_helpconstraint student       --查看表student表的約束

        exec sp_helptext view_student_result   --查看視圖的語句文本

        exec sp_stored_procedures      --返回當前數據庫中的存儲過程列表

         

         

        2、常用的擴展存儲過程(在C盤下創建一個文件夾bank

        exec xp_cmdshell  'mkdir  c:\bank',no_output  --創建文件夾c:\bank

        exec xp_cmdshell  'dir c:\bank\'               --查看文件

        如果執行不了上面的語句,請開啟下面的功能。然后再次執行上面的兩條語句。

         

        若xp_cmdshell作為服務器安全配置的一部分而被關閉,請使用如下語句啟用:

        exec sp_configure  'show advanced options', 1   --顯示高級配置選項(單引號中的只能一個空格隔開)

        go

        reconfigure                                    --重新配置

        go

        exec sp_configure  'xp_cmdshell',1                 --打開xp_cmdshell選項

        go

        reconfigure                                    --重新配置

        go

         

         

        3、用戶自定義的存儲過程(以schoolDB數據庫為例,計算網絡管理專業的平均分)

        use schoolDB

        go

        if exists  (select *  from  sysobjects where name='usp_getaverageresult')

        drop  procedure  usp_getaverageresult

        go

        create  procedure  usp_getaverageresult

        as

        declare  @subjectid  nvarchar(4)

        select @subjectid=subjectid  from  dbo.TSubject where subJectName='網絡管理'

        declare  @avg decimal (18,2)

        select  @avg=AVG(mark) from  dbo.TScore wheresubJectID=@subjectid

        print '網絡管理專業平均分是:'+convert(varchar(5),@avg)

        go

        exec usp_getaverageresult

         

        實驗案例五:觸發器

         

        (Myschool數據庫為例)

        創建觸發器(禁止修改admin表中數據):

        create trigger  reminder

        on  admin

        for update

        as

        print '禁止修改,請聯系DBA'

        rollback transaction

        go

         

        執行語句,查看錯誤信息:

        update Admin set  LoginPwd='123'  where LoginId='benet'

        select *  from  Admin

         

        實驗案例六:創建觸發器

        (Myschool數據庫為例)

        要求:創建一個觸發器,以確保student表中的數據不會被刪除。

        create  trigger stu_del

        on  student

        for  delete

        as

        print   '你不具備刪除管理員信息的權限'

        rollback  transaction

        go

         

        執行一條delete語句,測試結果。

        delete   from  Student where  StudentName='喜洋洋

         
        文章參考微信公眾號:L寶寶聊IT
        作者:L寶寶
        出處:http://www.cnblogs.com/L2366/

        -------------------------------------------

        個性簽名:千里之行,始于足下


        相關教程
                
        免费看成年人视频大全_免费看成年人视频在线观看