/*****切換數據庫*****/sql
use master
go -- 批處理shell
/*****指定位置新建文件夾*****/
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
/*****新建表******/日誌
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 條件 同上左變右