SQL server 建庫建表建約束語句(自整理)

1、切換到系統數據庫

/*****切換數據庫*****/sql

use master
go -- 批處理shell

2、先檢測數據庫中是否已經存在須要建立的表 if exists

/*****指定位置新建文件夾*****/
exec xp_cmdshell 'mkdir E:\222',no_output -- 調用系統已存在的存儲過程數據庫

/*****檢測是否存在****/
-- 檢測數據庫
if exists (select * from sysdatabases where name = 'SQL')
-- 檢測表,視圖,存儲過程,索引
if exists (select * from sysobjects where name = 'SQL')ide

/*****刪除數據庫******/
drop database SQL
go函數

/*****新建數據庫******/spa

if exists(select * from sysdatabases where name = 'AAA')     -- 查詢方法
drop database AAA                                                                 -- 若是返回有數據執行刪除數據庫
create database AAA                                                              -- 建立數據庫
on primary                            
(
    name = 'aa.mdf',                         -- 數據庫名稱 *.mdf
    filename = 'E:\TTT\aa.mdf',        -- 保存路徑
    size = 10mb,                               -- 初始大小
    maxsize = 100mb,                      -- 增加最大值
    filegrowth = 15%                        -- 增加率
)
log on                
(    
    name = 'aa.ldf'                           -- 日誌文件名稱 *.ldf
    ,filename = 'E:\TTT\aa.ldf'         -- 保存路徑,基本同上
    ,size = 1mb
    ,maxsize =10mb
    ,filegrowth = 15%
)
go.net

3、建立 表 表名

/*****新建表******/日誌

create table aaa
(
 -- 列名 類型 非空 主鍵 標識列(開始數,增加率)
    bb int not null primary key identity(1,1) ,  
    cc varchar(20) not null ,
    dd varchar(50) not null check (len(dd)>9),      -- 添加 檢查約束 (值 = '' or and '值')
    ee nvarchar(20) not null default ('默認'),         -- 添加 默認約束    ('默認值')
    rr bit not null unique(rr),                                  -- 添加 惟一約束 (列名)
                                                                           -- 外鍵(列名)    來自哪一個表的哪一個(列名)
    oo int not null foreign key(oo) references aaa(bb) -- 添加 外鍵約束

go排序

select * from sql                 -- 查看錶
insert into sql  values ('')    -- 插入數據 索引

/*****刪除表***/
drop table sql
go

/*****建立視圖******/
drop view vw_sql                    -- 刪除試圖
go

create view vw_sql                -- 建立視圖
as                            -- 必須帶as 結尾必須帶go
                                -- T-SQL語句(各類子查詢嵌套)            
    select sqll,sqql from sql
go

select * from vw_sql            -- 查看視圖

/******建立索引******/
drop index sql.ix_sql            -- 刪除索引

create clustered index ix_sql        -- 建立時指定是否彙集索引 clustered|noclustered 
on sql(ssql)                                   -- 建立表的時候指定了主鍵,則該列默認爲彙集索引
with fillfactor = 20                         -- 彙集索引 速度比 非彙集索引快,比自動建立的快上一點點
go                                                 -- with 填充因子 0~100 基本不超過80

select * from sql         -- 利用索引查看信息
with(index = ix_sql)    -- with(index = 索引名) 查看後面可跟着條件 where

/******建立存儲過程*******/
drop proc proc_sql     -- 刪除存儲過程
go

create proc proc_sql -- 建立存儲過程
as
     -- T-SQL語句
    select * from sql
go

exec proc_sql         -- 查看存儲過程


-- 無參的存儲過程
create proc proc_sql1
as
    select * from sql
go
exec proc_sql -- 使用

-- 有參的存儲過程
create proc proc_sql1
@error int = null                                        -- 輸入參數
as
    declare @rro int                                    -- 定義變量
    select @rro = '查詢獲得的值' from sql where sqll = @error    -- 利用傳進來的值做爲條件篩選獲得值再進行賦值 
    print cast(@rro as nvarchar(20))                    -- 打印輸出,須要轉換類型
go

exec proc_sql @error = '須要傳進去的值' -- 使用

-- 有輸出參數的存儲過程
@err int output                                            -- 做爲輸出參數必須帶有output關鍵字才正宗!
@error int = null                                          -- 輸入參數
as
    select @err = '查詢獲得的值' from sql where sqll = @error   -- 輸出參數接收查詢獲得的值,同時輸入參數也須要在使用的時候賦值
go

declare @i int                                            -- 做爲有性格的輸出參數,必須先建立一個小弟來接收
exec proc_sql @error = '須要傳進去的值',@err = @i output -- 使用
print @i                                                      -- 同時打印出輸出參數


/********事務**********/
begin transaction    -- 開始事務
commit transaction    -- 提交事務
rollback transaction-- 回滾事務

/********定義變量*******/
declare @error int    -- 定義變量 declare @變量 類型 全局變量能自定義!通常狀況下不須要!
print @error        -- 局部變量
print @@error        -- 全局變量

/********輸出**********/
print ''            -- 以文本形式輸出
select ''            -- 以表哥形式輸出

/********賦值**********/
set                    -- 通常用於接收自定義的值
select                -- 用於接收查詢出來後的值

/*****數據類型的轉換****/
CAST(@error as nvarchar(10)) -- 都是用於轉換類型
convert(int,@error)        -- 與sast區別在於時間類型,浮點類型 能夠經過第三個參數指定轉換後的樣式例:convert(datetime,@error,120)

/*****if結構|while循環|case多分支*************/
if        -- 條件1 
else if    -- 條件2
else    -- 條件1,2不經過時進入

while -- 條件
break -- 直接跳出循環
continue -- 結束本次循環進入下一次循環

case 
    when -- 條件 
    then -- 條件成立時輸出
    else -- 不成立的輸出
end
-- 例:case when @error > 0 then '正確' else '錯誤' end
-- 可作爲條件使用例:
-- (case when @error > 0 then 1 else 0 end = 0) or ~  若@error>0成立 輸出1跟條件=0不相等則表示整個條件爲假

/******子查詢********/
--  我大子查詢無處不在,可以配合增刪改查一塊兒使用
--  通常來講錶鏈接均可以用子查詢代替,但反過來卻不必定

-- 子查詢能夠出如今select,from,group by,order by,having,update,insert,dalate中
-- select (子查詢) 別名* from sql where sqll = (子查詢) 以上的sql中均可以出現子查詢

-- 當子查詢獲得返回的值不僅一個的時候 = 能夠替換成爲 in(範圍) 一樣 not in 的意思表示不在範圍裏
-- select * from sql where sqll in (select 獲得多個值 from sql where 條件)

-- exists 檢測是否存在 not exists 取反的意思
--if exists (子查詢)
--begin                -- 當子查詢數據是存在的執行sql語句1,不然執行else
    -- SQL語句1
--end
--else
--begin
    -- SQL語句2
--end 


/*********其餘*********/
begin -- 至關於括號的存在!()
end

go      -- 批處理 當寫好一段T-SQL語句後帶上這個可憐的娃。

as -- 或 空格 別名 通常列起別名 ‘列 as’ 表的話 就是 ‘表名 別名’ 中間間隔着一個空格

union -- 合併,把兩個表的數據進行合併顯示

raiserror -- 自定義錯誤信息 例:raiserror('錯誤信息顯示',16,1),第二個參數表示級別0~18自定義19~25系統定義,狀態分紅1~255種

 

-- 兩種方法輸出信息
select '' 
print ''


-- 插入數據
insert into aaa(cc,dd)  -- 插入數據 表名(列名)
values ('','')            --              ('值')

-- 更新修改數據
update aaa                -- 更改數據 表名
set cc = ''                -- set 列名 = '值'
where rr = ''            -- where(條件)

-- 刪除數據庫信息
delete from aaa                -- 刪除 表
where rr = ''            -- where (條件)
-- 刪除數據庫
use master
go
drop database aaa       -- 刪除

-- like 模糊查詢 _一個字符 % 多個字符 [1-9] 有範圍的查找 [^1-9]不在範圍裏 
-- 多列合併 select 列 + '.' + 列 from 表
-- between 值 and 值  在--之間 加入not表示取反的意思
-- in(值1,值2,值3) 可能取得值 有點相似or

-- 約束方法
-- check (len() 控制長度 and 與(兩個真) or 或(一個真) not 非(全是假) < 小於 > 大於 <> != 都表示不等於) 

-- 排序
-- order by (須要排序的列名) asc 順序 desc 倒序 若是都不加入就等因而順序排序
-- 分組
-- group by select count(*) from 表 group by sex 返回男女各有多少人--當看到題目要求‘每’的都須要分組查詢
-- 先分組後排序
-- 分組篩選 having 條件  -- 先分組後篩選
-- 順序爲 where 分組 篩選  

-- 查詢空值條件爲 where is null

-- 限制返回的行數:select top 行數 列名 from 表名 
-- 限制返回提取20%值:select top 20 percent 列名 from 表名

-- 部分經常使用函數
-- 獲取長度len() 
-- 更成大寫upper() 
-- 清除空格ltrim()左邊 pirim()右邊 trim()左右 
-- 替換字符:replace('段落','段落中的值','更替的值')
-- 返回右邊指定數目 pight('段落',數值)
-- 獲取指定字符的起始位置 charindex('某字符','段落') 返回下標數 

-- 日期函數 dd日 mm月 yy年
-- 獲取當前系統時間 getdate()
-- 日期的增長 dateadd(mm,4,'01/01/2009') 返回05/01/2009
-- 日期之間的相減 datediff(mm,'01/01/2009','05/01/2009')返回4
-- 獲得日期的某一部分datepart(dd,getdate())返回當前天數
-- 獲得某一天的日期用字符串表示 select dateame(DW,getdate()) 返回星期*

-- 數學函數
-- 隨機數值 select right(rand(),4)  right右查詢 left左查詢
-- 絕對值 abs(-23) 取相反數 返回23
-- 次方 power(5,2) 返回值 25
-- 平方根 sqrt(9) 返回值3

-- 系統函數
-- 轉換數據類型 convert(類型,值)
--                cast(值 as 類型)
-- sum() 函數 求和 select sum(列) from 表 返回某列的值相加後的結果
-- avg() 函數 平均值 同上相似,返回列的平均值
-- count() 函數 統計 同上相似,返回列的記錄數
-- max() min() 最大值最小值

-- 內連接 -- inner join 表名 on 條件 -- 外連接 -- left join 表名 on 條件 左查詢左邊的表數據會所有查詢顯示 -- right join 表名 on 條件 同上左變右

相關文章
相關標籤/搜索