程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL Server數據庫入門進修總結

SQL Server數據庫入門進修總結

編輯:MSSQL

SQL Server數據庫入門進修總結。本站提示廣大學習愛好者:(SQL Server數據庫入門進修總結)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL Server數據庫入門進修總結正文


一圖勝“十”言:SQL Server 數據庫總結

一個年夜概的總結

經由一段時光的進修,也對數據庫有了一些熟悉。
  數據庫根本是由表,關系,操作構成;關於初學者起首要學的:

   1.數據庫是若何存儲數據的
    表,束縛,觸發器
   2.數據庫是若何操作數據的
    insert,update,delete T-sql 函數 存儲進程 觸發器
   3.數據庫是若何顯示數據的
    select

SQLServer數據庫進修總結

1.SQL基本
SQL Server2000裝置、設置裝備擺設,辦事器啟動、停滯,企業治理器、查詢剖析器
第一代數據庫--網狀數據庫和條理數據庫;第二代數據庫--關系數據庫
數據庫(DB);數據庫治理體系(DBMS);數據庫體系(DBS)
SQL Server 2000 供給了分歧版本:企業版、尺度版、小我版、開辟版

SQL Server中的數據類型:整數:int,smallint,tinyint,bigint;浮點數:real,float,decimal;二進制:binary,varbinary;邏輯:bit;字符:char,nchar,varchar,nvarchar;文本和圖形:text,ntext,image;日期和時光:datetime,smalldatetime;泉幣:money,smallmoney

數據庫的創立和刪除;數據庫表的創立、修正和刪除

數據完全性:實體完全性:Primary Key,Unique Key,Unique Index,Identity Column;域完全性:Default,Check,Foreign Key,Data type,Rule;參照完全性:Foreign Key,Check,Triggers,Procedure;用戶界說完全性:Rule,Triggers,Procedure;Create Table中得全體列級和表級束縛

SQL Server中有5種束縛:主鍵束縛(Primary Key Constraint)、默許束縛(Default Constraint)、檢討束縛(Check Constraint)、獨一性束縛(Unique Constraint)、外鍵束縛(Foreign Key Constraint).

關系圖

數據庫設計的步調:需求剖析、概念構造設計、邏輯構造設計、數據庫物理設計、數據庫實行、數據庫運轉和保護

兩個實體之間的接洽:一對一(1:1)、一對多(1:n)、多對多(m:n)

實體關系模子 -- E-R圖

數據庫標准化:將數據庫的構造精簡為最簡略的情勢;從表中刪除冗余列;標識一切依附於其他數據庫的數據。

數據庫三范式:第一范式就是無反復的列;第二范式就長短主屬性非部門依附於主症結字;第三范式就是屬性不依附於其他非主屬性

2.SQL語句
SQL全稱是“構造化查詢說話(Structured Query Language)”

SQL的4個部門:
數據界說說話DDL(Data Definition Language)用來界說數據的構造:create、alter、drop。
數據掌握說話DCL(Data Control Language)用來掌握數據庫組件的存取允許、存取權限等得敕令:grant、revoke。
數據把持說話DML(Data Manipulation Language)用來把持數據庫中得數據的敕令:insert、update、delete。
數據查詢說話DQL(Data Query Language)用來查詢數據庫中得數據的敕令:select。

SQL中得運算符:算術運算符、位運算符、比擬運算符、邏輯運算符、通配運算符、字符串聯接符、賦值運算符

3.查詢
簡略查詢,應用TOP子句
查詢成果排序order by
帶前提的查詢where,應用算術表達式,應用邏輯表達式,應用between症結字,應用in症結字,
隱約查詢like
在查詢中應用聚合函數:sum(x),avg(x),min(x),max(x),count(x),count(*)
應用分組查詢group by,having子句
distinct症結字
列別號
select top 6 * from sales order by qty desc
select au_id,au_fname,au_lname from authors where state in('ks','ca','mi')
select au_fname,au_lname,phone from authors where au_id like '72[234]-%'
select type,sum(price),avg(price),count(*) from titles group by type having type in('business','psycheology')


簡略子查詢:嵌套子查詢、相干子查詢;子查詢的select語句中不克不及應用order by子句,roder by子句只能對終究查詢成果排序。
嵌套子查詢:履行進程,先履行子查詢,子查詢獲得的成果不被顯示,而是傳給外層查詢,作為外層查詢的前提,然後履行外層查詢,並顯示成果。
嵌套子查詢的履行不依附於外層查詢,子查詢只履行一次。
帶有比擬運算符的子查詢,帶有in和not in的子查詢,帶有any或all的子查詢
相干子查詢:子查詢為外層查詢的每行履行一次,外層查詢將子查詢援用的列的值傳給了子查詢。
相干子查詢的履行依附於外層查詢,子查詢須要反復的履行。
帶有exists和not exists的相干子查詢。
多表聯接查詢:內聯接(inner join)、外聯接((left、right、full)outer join)、自聯接(self join)和穿插聯接(cross join)
在查詢上創立新表:select into語句起首創立一個新表,然後用查詢的成果填充新表。
表別號
select coursename from course where courseid in(select distinct courseid from grade where grade>10)
select studname from student where sudbirthday > any (select studbirthday from student where class = '信息系') and class<>'信息系'
select studname from student where exists (select * from grade where studid = student.studid and courseid = '01')
select stud1.* from student as stud1 join student as stud2 on stud2.studname = 'mm' and stud1.studsex = stud2.studsex
select * into girls from student where studsex='m'

4.視圖、索引和事務
視圖是由一個或多個數據表(根本表)導出的虛擬表或許查詢表,是關系數據庫體系供給給用戶以多種角度不雅察數據庫中數據的主要機制。
視圖的利益:可以或許簡化用戶的操作;視圖可以或許對秘密數據供給平安掩護。
創立視圖時,視圖的稱號存在sysobjects表中。有關視圖中所界說列的信息添加到syscolumns表中,而有關視圖相干性的信息添加到sysdepends表中。別的,create view語句的文本添加到syscomments表中。
在經由過程視圖向表中拔出數據時,假如insert語句列表中包括有視圖中沒有選擇的列和不許可為空值的列,這類操作是不許可的。
創立視圖:create view view_employee as select emp_id,fname,lname from employee
應用視圖:select * from view_employee
修正視圖:alter view view_employee as select emp_id,fname,job_id from employee where job_id>10
刪除視圖:drop veiw view_employee
檢查視圖構造:exec sp_help view_employee
檢查視圖界說信息:exec sp_helptext 'view_employee'

索引供給了一種基於一列或多列的值對表的數據行停止疾速拜訪的辦法。索引供給的是表中得邏輯次序。
集合索引基於數據行的鍵值在表內排序和存儲這些數據行。當數據表以某列為症結字樹立集合索引時,表中得數據行就以該列(集合索引鍵)的排次序序停止存儲。每一個表只能有一個集合索引。
非集合索引具有完整自力於數據行的構造,一個表可以樹立多個非集合索引。
創立集合索引:create clustered index studid_ind on stud(studid)
創立非集合索引:create unique index studfullname_ind on stud(fname desc,lname)
刪除索引:drop index stud.studid_ind
檢查stud表上得索引:exec sp_helpindex stud

事務是一種機制,是一個操作序列,它包括了一組數據庫操作敕令,而且一切的敕令作為一個全體一路向體系提交或撤消操作要求。
事務的特征:原子性(Atomicity)、分歧性(Consistenty)、隔離性(Isolation)、永遠性(Durability)。
事務分類:顯示事務、隱性事務、主動提交事務。

視圖、索引和事務的創立、應用、修正和刪除

5.Transact—SQL編程
全局變量:由體系界說和保護,其稱號以@@字符開首
部分變量:由用戶界說和賦值,其稱號以@字符開首
輸入語句:print
邏輯掌握語句:begin...end ;break ;case ;continue ; goto ; if...else ;return ; while
經常使用函數:行集函數,聚合函數,標量函數
轉換函數:convert(dt,e,s),cast()
數學函數:相對值abs(n),向上取整ceiling(n),向下取整floor(n),指定次冪power(n,y),四捨五入round(n,length),求符號sign(n),平方根sqrt(n)
日期和時光函數:dateadd(datepart,num,date),datediff(datepart,date1,date2),datename(datepart,date),datepart(datepart,date),getdate(),year(date),month(date),day(date)
字符串函數:lower(e),upper(e),left(e,i),right(e,i),replace(s1,s2,s3)用3調換1中的2,replicate(e,i)反復指定次數,stuff(s1,start,length,s2)用2調換1中指定地位,substring(expression,start,length)
元數據函數:db_id('database_name'),db_name(datebase_id),object_id('obj_name'),object_name(obj_id),col_length('table','column'),col_name(table_id,col_id)
聚合函數:avg(expr),count(expr),count(*),max(expr),min(expr),sum(expr)
select au_lname,au_fname,contory =
case state
when 'ut' then 'utah'
when 'ca' then 'california'
else 'world'
end,city from authors order by state desc

while(select avg(price) from titles)<30
begin
update titles set price = price * 2
if(select max(price) from titles)>50 break
else continue
end
print '價錢太高'

begin
insert into jobs values('a',80,234)
if @@error<>0 print '數據拔出掉敗'
else goto M
end
M:print '數據拔出勝利'

6.游標
游標是一種能從包括多條數據記載的成果集中每次提取一筆記錄的機制。將批操作釀成行操作,對成果集中得某行停止操作。
declare author_csr cursor read_only for --界說只讀游標
select au_fname,au_lname from authors where state = 'ca' order by au_fname,au_lname
declare @lname varchar(20),@fname varchar(20) --界說變量
open author_csr --翻開游標
fetch next from author_csr into @lname,@fname --履行一次數據讀取操作
while @@fetch_status=0 --輪回游標讀取數據
begin
print 'author name:'+@lname+''+@fname
fetch next from author_csr into @lname,@fname
end
close author_csr --封閉游標
deallocate author_csr --釋放游標

7.存儲進程
存儲進程(stored procedure)相似c說話中的函數,是一組為了完成特定功效的SQL語句集,經編譯後存儲在數據庫中。用戶經由過程指定存儲進程的名字餅給出參數來履行它。
經常使用的體系存儲進程:sp_database,sp_helpdb,sp_renamedb,sp_tables,sp_column,sp_help,sp_helpconstraint,sp_helpindex,sp_stored_procedure,sp_password
創立存儲進程:
create procedure book_num (@book_name varchar(26),@starttime datetime,@endtime datetime,@total int output)
as
select @total=count(jy.askbookid) from book,jyls jy where bookname like @book_name and book.isbn=jy.isbn and jy.starttime>=@starttime and endtime<=@endtime
應用存儲進程:
declare @book_name char(26),@total int
set @book_name='面向對象剖析和設計'
exec book_num @book_name,'2007-01-01','2007-11-01',@total output
select @book_name as bookname,@total as num

8.觸發器
觸發器是一種特別類型的存儲進程,重要是經由過程理論停止觸發而被履行。
觸發器的重要感化就是可以或許完成由主鍵和外鍵所不克不及包管的龐雜的參照完全性和數據的分歧性。其他功效:強化束縛,跟蹤變更,級聯運轉,存儲進程挪用。
SQL Server 2000支撐兩品種型觸發器:
after觸發器:請求只要履行某一操作以後,觸發器才被履行,且只能在表上界說。
instead of觸發器:表現其實不履行其所界說的操作,而僅是履行觸發器自己。既可以在表上界說,也能夠在視圖上界說,但對統一操作只能界說一個instead of觸發器。

任務道理:
當觸發insert觸發器時,新的數據行就會被拔出到觸發器表和inserted表中。觸發器經由過程檢討inserted表來肯定能否履行觸發器舉措或若何履行。
當在界說有觸發器的表上履行update語句時,原始行被移入到deleted表,更新行被移入inserted表。觸發器檢討deleted表和inserted表和被更新的表,來肯定能否更新了多行和若何履行觸發器舉措。
當觸發deleted觸發器後,從受影響的表中刪除的即將被放置到一個特別的deleted表中。

create trigger update_smoke_t_sale on smoke_t_sale for update
as
declare @newsalenum int,@smokeproductname varchar(40)
select @newsalenum= salenum from inserted
select @smokeproductname=smokeproductname from inserted
if update(salenum) --斷定能否更新
begin
update smoke_t_sale set saletotalprice=@newsalenum * saleprice where smokeproductname=@smokeproductname
insert into smoke_log(logContent) values('更新勝利')
end
else
print '未更新'

9.數據庫高等治理
SQL Server平安系統構造,4個品級:客戶機操作體系的平安性,SQL Server的登錄平安性,數據庫的應用平安性,數據對象的應用平安性
SQL Server驗證形式:windows身份驗證形式和混雜形式(windows身份驗證和SQL Server身份驗證)
登錄賬戶:用戶登錄(銜接)SQL Server辦事器的賬戶和暗碼。
腳色治理:辦事器腳色(擔任治理和保護SQL Server的組);數據庫腳色(是對某個數據庫具有雷同拜訪權限的用戶賬戶和組的聚集)
數據庫用戶:關於每一個請求拜訪數據庫的登錄賬戶,必需在要拜訪的數據庫中樹立該數據庫的拜訪賬戶,且與其登錄賬戶鏈接聯系關系,才可進入該數據庫拜訪。
權限治理:是指用戶能否能停止拜訪數據庫資本的響應操作。權限包含:語句權限、對象權限和暗示權限。

授與權限:
grant 語句 [...] to 平安賬戶[...]
grant 權限 [...] on 表或視圖[(列[,...])]|on 存儲進程|on用戶自界說函數 to 平安賬戶[,...]
謝絕權限:
deny 語句 [...] to 平安賬戶[...]
deny 權限 [...] on 表或視圖[(列[,...])]|on 存儲進程|on用戶自界說函數 to 平安賬戶[,...]
撤消權限:
revoke 語句 [...] from 平安賬戶[...]
revoke 權限 [...] on 表或視圖[(列[,...])]|on 存儲進程|on用戶自界說函數 from 平安賬戶[,...]

備份和恢復:
數據庫備份裝備,在停止數據庫備份之前,起首要創立備份裝備。包含:磁盤、磁帶和定名管道
SQL Server 備份戰略:只備份數據庫、備份數據庫和事務日記、差別備份。
backup database medicaldb to disk='medical_bk1' with name='medicaldb backup' description='medicaldb fullbackup' init
restore database medicaldb from medical_bk1

導入導出:
DTS(Data Transformation Service)是SQL Server供給的數據傳輸辦事。應用戶可以未來自完整分歧數據源的數據析取、轉換並歸並到單個或多個目標。

分別與附加:創立可挪動的數據庫。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved