這是一篇關於SQLServer數據庫知識的文章,下面是小編為您提供的一些內容,希望對您有所幫助
經過一段時間的學習,也對數據庫有了一些認識。
數據庫基本是由表,關系,操作組成;對於初學者首先要學的:
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 contin