1. 程式人生 > >T-SQL

T-SQL

刪除索引 lec mar create maxsize lena size 5.1 ade

.數據庫的創建在開發中的步驟

1.1收集信息

1.2概念設計(E-R圖)

1.3詳細設計(數據庫模型圖)

1.4審核數據庫(三大範式)

2.1 E-R

矩形:實體

橢圓:屬性

菱形:關系

3.1 映射關系

一對一,一對多,多對一,多對多

4.1 三大範式

第一範式:每一列都要保證原子性,分的不能再分了

第二範式:在滿足1NF基礎上,每一張表只能表述一件事(有主鍵)

第三範式:在滿足2NF基礎上 ,確保除主鍵之外的列都必須和主鍵有直接的關系,而不是間接地關系

.建庫建表建約束

2.1 建庫

建庫:create database myschool;

三種文件格式:主文件.mdf,次要文件

.ndf,日誌文件.ldf

create database myschool

--主文件

on [primary]

(

name=‘‘, --邏輯名稱

filename=‘。mdf,-- 文件路徑

size=10,--初始大小

maxsize=100 ,--最大大小

filegrowth=10 增長率 不能加百分號

),

--次要文件

(

name=‘‘, --邏輯名稱

filename=.ndf,-- 文件路徑

size=10,--初始大小

maxsize=100 ,--最大大小

filegrowth=10 增長率 不能加百分號

)

on log

(

name=‘‘, --邏輯名稱

filename=

.ldf,-- 文件路徑

size=10,--初始大小

maxsize=100 ,--最大大小

filegrowth=10 增長率 不能加百分號

)

給數據庫添加文件

alter database myschool

add file

--次要文件

(

name=‘‘, --邏輯名稱

filename=.ndf,-- 文件路徑

size=10,--初始大小

maxsize=100 ,--最大大小

filegrowth=10 增長率 不能加百分號

)

2.2 建表

Create table 表名

(

數據類型 數據特性(null or not null

)

自動增長列 identity(1,1)

比如

Create table student

( id int identity(1,1) not null

)

刪除表 drop table 表名

刪除數據 delete 表名,truncate 表名

2.3 鍵約束

2.3.1 主鍵約束

Alter table 表名

Add constraint pk_約束名 primary key (列名)

2.3.2 唯一約束

Alter table 表名

Add constraint uq_約束名 unique (列名)

2,3.3 檢查約束

Alter table 表名

Add constraint ck_約束名 check (列名<=100

2.3.4 默認約束

Alter table 表名

Add constraint df_約束名 default(‘默認值’) for 列名

2.3.5 外鍵約束

Alter table 外鍵表

Add constraint fk_約束名 foreign key 列名 references 主鍵表(列名)

2.3.6 刪除約束

Alter table 表名

Drop constraint 約束名

2.4建視圖

2.4.1 創建

If exists (select * from sys.objects where name=’視圖名’)

Drop view 視圖名

Create view 視圖名 as sql語句

註意: 視圖中不能單獨的使用order by 必須與top 同時出現

2.4.2 修改

Alter view 視圖名

三.sql編程

3.1 定義變量

局部變量Declare @變量名 數據類型=

全部變量 @@error 錯誤號,@@identity 獲取最近一次的值 @@version版本號

3.2 賦值

3.2.1 set

set @變量名=or(set @變量名=(子查詢)) ,一次只能給一個變量賦值

3,2,2 select

Select @變量名 =,select @變量名=字段,@變量名=字段 from 表,可以給多個變量賦值;當返回多個數據的時候取最後一個

3.3 轉換數據類型

3.3.1 convert

Convert (數據類型,變量)

特殊的可以對datetime 類型的字段轉換 比如convert(字段,102)

3.3.2 Cast

Cast(變量名 as 數據類型)

3.4 if else

If (條件)

Begin

---sql

End

Else

Begin

--sql

end

3.5 while

While(條件)

Begin

End

3.6Case

Case when 條件 then 結果

When 條件 then 結果

Else

End

3.7 GO

批處理,把多條sql打個包一起發送服務器執行,執行速度加快

四:子查詢

select * from ( 子查詢 )別名

4.1 in

Select * from 表名 where 列名 in(子查詢)

Select * from 表名 where 列名 in(‘’,’’,’’)

4,2 not in

Select * from 表名 where 列名 not in(子查詢)

Select * from 表名 where 列名 not in(‘’,’’,’’)

4.3 exists and not exists

exists 用法1

if exists (select * from table ===) 判斷是否能查出數據,如果能則返回true,否則返回false

exists 用法2

select * from student where exists(select * from grade where grade.gradeid=student.gradeid)

註意:exists 用法2in 用法2效率高

.存儲過程

5.1 創建一個無參的存儲過程

Create proc 存儲過程名稱

As

Sql 語句

Go

5.2 創建一個有輸入參數的存儲過程

Creta proc 存儲過程名稱

@變量名 數據類型

As

Sql 語句

Go

5.3 創建一個有默認值的存儲過程

Creta proc 存儲過程名稱

@變量名 數據類型=’默認值’

As

Sql 語句

Go

5.4 創建一個有輸入有輸出的存儲過程

Create proc 存儲過程名

@輸入變量 數據類型,

@輸出變量 數據類型 output

As

Sql語句

Go

5.5 調用存儲過程

Exec 存儲過程名稱

Execute 存儲過程名稱

經驗:當遇到go的時候 exec 可以省略

5.6 事務

開啟事務 begin transaction

提交事務 commit transaction

事務回滾 rollback transaction

.索引

6.1 唯一索引

不能有相同的兩行數據,當創建一個唯一約束的時候系統自動分配一個唯一索引

6.2 主鍵索引

特殊的唯一索引,當創建一個主鍵約束的時候,系統自動分配一個聚集的主鍵索引

註意:如果不想讓主鍵占用聚集索引,可以在創建的時候,把非聚集表現出來

6.3 聚集索引

根據系統算法排列的,一張表只能有一個聚集索引(類似與拼音查字典)

6.4 非聚集索引

根據數據邏輯排列,一張表可以有多個非聚集索引(類似與偏旁部首和筆畫)

6.5 全文索引

針對於大型的數據文本類型比如(long,text,key查詢;

其它索引都是匹配查詢

6.6 復合索引

說明:可以給多列創建一個索引

6.7 創建索引

Create [unique][nonclustered][clustered]

Index ix_索引名稱 on table (列名,列名..)

With fillfactor=20 (不能加百分號)

6.9 刪除索引

Drop index table.索引名稱

6.10 指定索引查詢

Select * from table with(index=索引名稱) where

T-SQL