sql server 2008 r2 基礎

微軟   關係型數據庫管理系統


一:數據庫模型
1.層次
2.網狀
3.關係   -數據表 與數據表


二:關係型完整性規則
1.實體完整性  必須   -主鍵不爲空
2.參照完整性  必須   -外鍵不爲空
3.用戶定義完整性     -約束條件


三:範式理論-數據保持數據完整性同時最小化冗餘數據的結構
關係型數據庫6種範式:1-3NF,Boyce-Codd範式(BANF)4,5
1NF範式 同一列不能有多個值.
2NF      員工部門表.分兩個表。主外鍵
3nf      表中字段數據不存在函數依賴關係.如 工資 獎金


四:E-R 模型  (Entity-Relationship) 實體-聯繫數據模型 1976提出.
關係.1對多 1對1 n對n




五:sql Server 2008 體系結構
1.數據庫引擎 基本操作
2.Analysis Services 分析處理.數據挖掘
3.Reporting Services 創建和發佈報表及報表模型的圖形工具和嚮導
4.Integration Services 數據集成平臺,數據的提取,轉換,加載等


六:IIS服務








七:安裝


SQL Server Management Studio 使用
 集成環境.用於訪問 配置 管理 開發sqlserver的所有組件
 組合圖形工具.腳本編輯器
 
 
 一 
 1.創建數據庫
 
  create database stuDB 
  on  primary  -- 默認就屬於primary文件組,可省略
  (
  /*--數據文件的具體描述--*/
      name='stuDB_data',  -- 主數據文件的邏輯名稱
      filename='C:\luis', -- 主數據文件的物理名稱
      size=5mb, --主數據文件的初始大小
      maxsize=100mb, -- 主數據文件增長的最大值
      filegrowth=15%--主數據文件的增長率
 )
 log on
 (
 /*--日誌文件的具體描述,各參數含義同上--*/
     name='stuDB_log',
     filename='C:\luis',
     size=2mb,
     filegrowth=1mb
 )  
 
 
查看數據庫的狀態
 2.函數
  select DATABASEPROPERTYEX('luis','property');
 3.使用系統存儲過程
 sp_helpdb
 
 
數據快照限制
1.不能對數據庫進行刪除.分離.還原 影響性能.不能從源數據庫或任何快照中刪除文件.源數據必須在線.除非是鏡像數據庫


create database 快照名字
on(
name 
fILEName 保存的具體路徑
)[...n]n個數據文件
as SNAPSHOT of 源數據名稱


 錯誤:Standard Edition 不支持 Database Snapshot。
 解決:標準版不支持數據庫快照,換成企業版的就可以了
 
 從快照恢復數據
 RESTORE DATABASE NAME
 FROM
 DATABASE_SHAPSHOT =快照名稱
 
  
   二:數據類型
 整數
  bigint長整型  int smallint tinyint 
   
  decimal  mumeric 小數
  
  money smallmoney 貨幣
  
  float real       浮點 
  
  bit              0 和 1
  
  字符數據類型
  char 給多少就多少
  varchar 50實際只有30 就保存30
  text   不限長度
  nchar  可變.
  nvarchar
  ntext
  
  日期和時間
  datetime    1753-1-1 - 9999-12-31  時間精度3.33
  
  smalldatetime 1900-1-1 -2079-12-31 精度一分鐘
  
  二進制類型
  1.binary 固定長度的二進制數據
  2.varbinay 可變    1 2 的長度由n值決定.n取值範圍1-8000
  image   圖像信息
  
  專用數據類型
  cursor 
  sql_variant
  table 
  timestamp
  uniqueidentifier
  xml
  


表.
系統表
用戶自定義表
臨時表







臨時表: 創建的時候用# 或者 ##
 1.本地臨時  單個數字符號#開頭   當前用戶     斷開連接刪除
 2.全局臨時  兩個數字符號##打頭  任何用戶可以看到  斷開連接刪除




標示列
IDENTITY(1,1)
 
 存儲過程
 1.exec 
 exec sp_databases; --查看數據庫
exec sp_tables;        --查看錶
exec sp_columns student;--查看列
exec sp_helpIndex student;--查看索引
exec sp_helpConstraint student;--約束
exec sp_stored_procedures;
exec sp_helptext 'sp_stored_procedures';--查看存儲過程創建、定義語句
exec sp_rename student, stuInfo;--修改表、索引、列的名稱
exec sp_renamedb myTempDB, myDB;--更改數據庫名稱
exec sp_defaultdb 'master', 'myDB';--更改登錄名的默認數據庫
exec sp_helpdb;--數據庫幫助,查詢數據庫信息
exec sp_helpdb master;


2.alter 
 alter table 表明
  add idd int null --新加的列
  
  


1.用戶自定義數據類型
   參數.name 基於的數據類型. 
   
   
   
2.規則.單獨的sql server對象.可以關聯多表多列多方式完成對數據值的檢驗.
   可以使用函數返回驗證.可以使用關鍵字between,like in 完成對數據的檢查


區別
約束  創建表的時候指定.規則 單獨數據庫對象實現
一個列上只能用一個規則.可以使用多個CHECK約束
規則可以應用於多個列.還可以用於用戶自定義數據庫.check只能用於它定義的列


創建規則語句     ???
create rule name
as


exec 綁定 規則名稱


==
drop 規則name--- 刪除規則


解除規則綁定
 sp_unbindrule  規則name  用戶自定義類型
 
 
 
 三:創建視圖   
 
 create view view_name (列明)
 as 查詢表達式
 約束條件
 
 修改視圖
 alter view 視圖name 列
 as
  select 語句
  約束條件
  
 drop view name 刪除
 
通過視圖插入內容
insert into 視圖名 values(內容)  
 
 
 四:索引
單獨的 物理的數據庫結構.多列的一個集合
數據唯一性.加快數據檢索速度.表與表的連接速度.


create 
 UNIQUE微信索引  CLUSTERED 聚集索引 可以建立1個 NONCLUSTERED 非聚集  可以建立多個


index 索引name


on 


table_name view_name


列名


刪除
drop index 索引名






全文索引




1.聚集索引 和非聚集索引
聚集 表中數據的物理順序 一個表只能包含一個聚集索引但可以包含多個列(組合索引)
非聚集索引存儲在另外一個地方.索引存儲在另一個位子.索引帶有指針指向數據的存儲位置.


區別:
相同的B-tree結構 


數據行不按非聚集索引鍵的順序排序和存儲
非聚集的葉層不包含數據頁,相反葉節點包含索引行.
非聚集最多249個.包含PRIMARYKEY  UNIQUE約束創建的任何索引.不包括XML索引




五:架構 
  create schema name
  權限比如 
  table_defintition view_definition grant_statement
  revoke_statement deny_statement
   
    AUTHORIZATION owner_name  -角色 用戶關聯
    
    
sql server配置管理器
1.sql server2008 服務
2.sql 網絡配置
3.sql nativeClient配置
打開:sqlservermanager.msc


  
  
語句:


select *


into table 將查詢結果保存到另外一張表裏


from table  
  
where 條件


GROUP  by  分組查看


HAVING 查詢判斷


order by 排序(asc  desc )
  


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


distinct  去重
and 且 並且
or  或  
like  ''  模糊查詢
order by  排序  asc 升序 desc 降序  
group by 分組      rollup() 求出所有的平均值 一組求出所有平均值 二組求出所有平均值
                   cube     對相同值的平均.後面進行總平均
max 最高
min 最小
avg 平均值 
sum 和
top 3  前三行. 可以放在select 後面
 
查詢出每個課程編號的平均值
select 課程編號,avg(分數) from table where 考試編號='001' group by 課程編號




having  子句 group by 一起使用


 
插入語句
insert into table (列) values 值






insert ...select 語句  --將表1插入表2


inset  table (列);
select 列
from table_name
where 條件
--列要一一對應


select ...into 語句  -將查的數據.插入行的表
select 列 
into #table2  臨時局部表
from table1
where 條件






------------------------------
Business Intelligence     bids
Development Studio
用於開發分析 集成 報表 服務的主要環境
  








update  語句
update [top]   table與view_name                  --top 前幾行
set
列明='值'
where 條件




update from 字句  修改更新語句
  
update table set 列=a.列
from table a join  table3 b on  a.name=b.name
where 




刪除
delete from table_name
where 




58:top關鍵字和top表達式  函數


top 數字或者百分比:expression percent 


子句with ties 有排序時使用  order by 


(1)SELECT TOP 20 * FROM student    --查詢前20名學生的信息


(2)SELECT TOP 20 * PERCENT FROM student   --查詢學生表中前20%的學生信息


聲明一個變量.並賦值
declare @i int
set @i=20
使用 (@i)




六:compute 子句


compute  avg count max min stdev stdevp var varp sum

by 依據某個列產生合計


如:
select * from table where age order by 編號
  compute sum(總數),min(最小),max(最大),avg(平均) by 編號(by 必須有一個排序表)




   where 
1.between 90 and 100    
2.(分數 % 5=0) 5的整數
3.分數  in (89,100,97) 查詢出這些分數的數據  加not 不顯示這些分數的數據








 sql語句備份數據庫
--假設你的數據庫名爲AAA,臨時保存備份的地方是d:\data\backup
-- 第一步,先備份到文件:
backup database luis to disk='C:\luis\asdf\luis.bak' with init


-- 第2步,把備份還原成新的數據庫,比要還原成新數據庫BBB,庫BBB的數據文件放在d:\data目錄:
restore database BBB from disk='C:\luis\asdf\luis.bak'
with move 'luis' to 'C:\luis\asdf\luis.mdf',
move 'luis_log' to 'C:\luis\asdf\luis.ldf', 
replace














二、如果兩個數據庫在不同的服務器上


分爲導出和導入兩種,都需要先連接遠程數據庫,再進行操作。如何連接遠程數據庫?


在連接遠程數據庫之前,需要先打開Ad Hoc服務,依次執行下面四句語句(不要一次執行):


EXEC sp_configure "show advanced options",1
RECONFIGURE
EXEC sp_configure "Ad Hoc Distributed Queries",1
RECONFIGURE


這樣就可以連接遠程數據庫了:


SELECT * INTO DatabaseB.dbo.TableB FROM opendatasource( 'SQLOLEDB',  'Data Source=IP/ServerName;User ID=SA;Password=***' ).DatabaseA.dbo.TableA WHERE 1=2


記住,爲了安全起見,執行完成之後,請關閉Ad Hoc服務:


EXEC sp_configure "Ad Hoc Distributed Queries",0
RECONFIGURE
EXEC sp_configure "show advanced options",0
RECONFIGURE




-------------------------------------------------
   基本連接


  1.內連接
select  列
from table1 [inner] join table2  on 連接條件{id=id}
where 
order by 
  
  外連接   比配主表數據,從表沒有數據返回空
  2.左外連接 
  
  select  列
from table1  left [OUTER]  join table2  on 連接條件{id=id}
where 
order by 
  
  3.右連接
    select  列
from table1  right  [OUTER]  join table2  on 連接條件{id=id}
where 
order by
 
  4.完全連接 full
select  列
from table1 full    join table2  on 連接條件{id=id}
where 
order by
  




sql server2005 外圍應用配置器
  配置相關的功能
  
  
  5.交叉連接  沒有where 返回兩個表數據的笛卡爾積
     返回:符合第一個表查詢條件的數據 乘以 第二個表 符合查詢條件的數據行數
     
     select 列
     from table1 cross join table2
     where 
     order by 
     
  自連接:通過表的別名 相連 表
  
  
  7.聯合查詢 - 結果集有相同的目標列.數據內容儘量相同


  查詢
  union[all]
  查詢
  
  
  8.子查詢
  where (子查詢)
  where in ()返回一個列表
  
  9.嵌套查詢
  子查詢中加子查詢
  
  
  10.exists關鍵字查詢 有結果返回true 反之 false
  
  exists(子查詢)  判斷查詢是否有結果
  
  
  11.差查詢   except     去除兩個結果集相交的部分
     返回兩個結果集的差(即從左查詢中返回右查詢沒有找到的所有非重複值)。
  
  查詢
  except
  查詢
  
  
  12.intersect 交查詢 返回兩個結果集交集的數據
     -前一個查詢不能使用 order by  可以放在子查詢中      
  查詢
  intersect
  查詢
  
  13.xml查詢
     declare 申明關鍵字 @data xml
     set @data=(select data from table where id=1)
     select @data.query('節點.name') 姓名,
            @data.query('節點.sex')
     
  13,
  for xml 子句   默認auto 模式
     將數據改成xml格式. 顯示模式 raw auto explicit path 模式
     
     查詢語句
     for xml raw 
     
  
  
  
  14.sqlcmd工具 查詢
   sqlcmd -s 服務器名稱 連上了爲1
   
   
  15.transaction-sql 概述
   結構化查詢語音 。
   分類:
     數據定義語音ddl 數據操縱dml 數據控制
    其他常用類型
    事務管理語言 流程控制 附加的語言元素<變量 常量等>
    
    
  
  
  
  常量與變量
  
  
  變量.
   全局
   
   
   局部
     declare @name 數據類型
     賦值
     set @變量名=值
     select @name=expression{...n} 表達式
     
   運算符
   算數
   + - / % 
   位運算
   & 與 兩者都爲1時爲1
   | 或 有一個爲1返回1.都爲0時返回0
   ^ 異或 有一個值得時候返回一個值.有兩個兩個值的話返回第一個
   
   比較運算符
   <>:不等於  !< 不小於
   
   邏輯運算符
   
   all   一組比較都爲true 返回true
   and   兩個布爾都爲true 返回true 有一個false 結果爲false
   any   有一個爲true 結果爲true
   between 操作數在某個範圍內.那麼結果爲true
   exists  子查詢包含一些行.結果爲true
   in       操作數等於表達式的列表的一個.那麼結果爲true
   like   操作數與某種模式匹配.結果爲true
   not    對布爾運算符的結果取反
   or       兩個布爾表達式 一個爲true 結果爲true
   some   一組比較中.有一些比較爲true 結果爲true
   
   其他運算符
    1.賦值運算符
    2.連接運算符
    3.一元運算符  + 正  -      ~ 返回數字的邏輯非
    
    
    
    
    表達式
      select @s='  '+a.name+' ' from table where id=1
      
      
    
    
    註釋
    --
    /* */
    
    
    
    流程控制語句
    
      1.degin ...  end 語句
      形成一個組.俺組執行
      
      begin{
       sql
      }
       end --結束
  
      
      ---
       if @sex is not null 判斷是否爲空
       
       
      2. if {} else {} 語句  --Boolean 布爾
        
       
       
       
20.  case 語句 對多個條件判斷
 case 條件
  when 情況1  then 執行塊
  ....n
 else 語句  
 
 end
 
 21 while 語句  控制循環
  while boolean 
  { sql }
  break 跳出全部循環 continue 跳出本次循環
  
   1.表值函數
   
   
   
   
 23.waitfor 延遲語句
 
 waitfor
 
  delay time | 
  |TIME time
 
 24.goto 語句 跳轉語句 重複的sql跳轉
 
 25.try ... catch 錯誤處理語句
 
 
 
 
 
 
 
  










































 
 





































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章