[SQL]SQL server 常用代码
判斷數據庫是否存在
USE eshop --選取數據庫
GO
IF(EXISTS(SELECT*FROM sysdatabases WHERE name=‘eshop’)) --判斷eshop是否存在
DROP DATABASE eshop --刪除
GO
1
2
3
4
5
新建數據庫和日志
–新建數據
CREATE DATABASE eshop
ON PRIMARY
(
NAME=eshop,
FILENAME=‘E:\SQLDemo\eshop\eshop.mdf’,
SIZE=5MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=1MB
)
–新建日志
LOG ON
(
NAME=eshop_log,
FILENAME=‘E:\SQLDemo\eshop\eshop_log.ldf’,
SIZE=1MB,
MAXSIZE=2MB,
FILEGROWTH=10%
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
報告和查詢
sp_helpdb eshop --報告
1
select * from sys.databases where name=‘eshop’ --新建查詢
1
修改數據庫
ALTER DATABASE eshop_new MODIFY NAME=eshop --修改邏輯名 eshop_new改為eshop
1
GO
ALTER DATABASE eshop SET SINGLE_USER --SINGLE_USER單用戶訪問 MULTI_USER多用戶訪問
1
2
–打開數據庫
USE eshop
GO
–修改表,添加列
ALTER TABLE biao ADD lieID SMALLDATETIME NULL
1
2
3
4
5
–修改數據庫類型
ALTER TABLE biao ALTER COLUMN lieID DATETIME
1
2
–刪除列
ALTER TABLE biao DROP COLUMN lieID
1
2
–刪除表
DROP TABLE biao
1.detete from 表名 ----逐行刪除,不會重置主鍵自增
2.truncate table 表名 --刪除整個表,主鍵自增會重新計算,從1開始
1
2
3
4
–按條件修改表中的數據
update biao set lieID=‘數據’ where lieID=2;
–lieID+=1 自增1 去掉where語句修改表內所有數據
1
2
3
–按條件刪除表中的數據
DELETE FROM biao WHERE lieID> 20
1
2
3
–修改列所有數據為當前時間
update product set lieID=getdate()
1
2
–按條件修改
update product set lieID=1888 where ProID=10101
1
2
添加新數據
–添加數據
INSERT INTO biao(ziduan1,ziduan2,ziduan3)VALUES(‘duiying1’,‘duiying2’,‘duiying3’)
–寫出表中"字段",并寫入"對應"類型數據
1
2
3
–添加多行數據
INSERT INTO biao(ziduan1,ziduan2,ziduan3)VALUES(‘duiying1’,‘duiying2’,‘duiying3’),(‘duiying4’,‘duiying5’,‘duiying6’)
1
2
–插入其他表查詢的統計數據
INSERT INTO beicharu SELECT biao1.lieID,SUM(biao2.lieID) FROM biao1,biao2 WHERE biao1.waijian=biao2.waijian GROUP BY biao1.fenzu
1
2
3
脫機&聯機
USE master
go
alter database eshop set offline --脫機offline 聯機online
1
2
3
分離&附加
–分離
EXEC sp_detach_db eshop
1
2
–附加
EXEC sp_attach_db @dbname=‘eshop’,
@filename1=‘E:\SQLDemo\eshop\eshop.mdf’,
@filename2=‘E:\SQLDemo\eshop\eshop_log.ldf’
1
2
3
4
修改 擴充 新建
修改數據庫屬性
ALTER DATABASE eshop
MODIFY FILE
(
NAME=eshop,
size=10MB,
FILEGROWTH=8MB
)
1
2
3
4
5
6
7
8
擴充日志文件
ALTER DATABASE eshop
MODIFY FILE
(
NAME=eshop_log,
size=10MB,
FILEGROWTH=15%
)
1
2
3
4
5
6
7
8
–新建次要文件
ALTER DATABASE eshop
ADD FILE
(
NAME=eshop1,
FILENAME=‘E:\SQLDemo\eshop\eshop1.ndf’,
size=8MB,
FILEGROWTH=3MB
)
1
2
3
4
5
6
7
8
9
數據庫文件收縮
數據庫收縮
DBCC SHRINKDATABASE (eshop,65) --收縮數據庫到65%
1
2
文件收縮
DBCC SHRINKFILE (eshop,7) --將文件收縮到7兆
1
2
新建表
–新建
CREATE TABLE product
(
ProID int NOT NULL, --列名,數據類型(int,varchar(50),smallmoney,datetime ),允許null值(是null,否not null)
)
1
2
3
4
5
–判斷是否存在,存在刪除表
USE master
GO
IF EXISTS(SELECT * FROM sysobjects WHERE name=‘product’)
DROP TABLE product
1
2
3
4
5
–創建新表時設置標識種子6000,自增為1
CREATE TABLE biao
(
name int NOT NULL IDENTITY(6000,1)
)
1
2
3
4
5
數據約束管理
添加主鍵
USE eshop
GO
ALTER TABLE biao
ADD CONSTRAINT PK_biao PRIMARY KEY (lieID)
1
2
3
4
刪除主鍵
ALTER TABLE biao
DROP CONSTRAINT PK_biao
1
2
添加外鍵約束
ALTER TABLE biao
ADD CONSTRAINT FK_waibiao_zhubiao FOREIGN KEY(lieID) REFERENCES zhubiao(lieID)
–外鍵_主鍵
1
2
3
定義唯一約束
ALTER TABLE biao
ADD CONSTRAINT QU_lieID
UNIQUE([lieID])
1
2
3
刪除唯一約束
ALTER TABLE biao
DROP CONSTRAINT FK_waibiao_zhubiao
1
2
添加默認約束
ALTER TABLE class
ADD CONSTRAINT DF_class DEFAULT ‘電子信息工程學院’ FOR DeptName
1
2
定義檢查約束
alter table eshop
add constraint CK_eshop_ziduan CHECK(ziduan =‘男’ or zhubiao = ‘女’)
–刪除檢查約束同上
1
2
3
刪除約束
ALTER TABLE biao
DROP CONSTRAINT FK_waibiao_zhubiao
1
2
索引操作
聚集索引
–ps:當表已經設置了主鍵或唯一值,系統自動為表創建索引
CREATE CLUSTERED INDEX IX_suoyinname ON biao(ziduan)
1
2
非聚集索引
CREATE NONCLUSTERED INDEX IX_suoyinname ON biao(ziduan)
1
禁用索引
ALTER INDEX IX_suoyinname ON biao DISABLE
1
啟用索引
ALTER INDEX IX_suoyinname ON biao REBUILD
1
顯示存儲過程的定義文本
SP_HELPTEXT biao
1
儲存過程操作
無參存儲過程,用于直接執行存儲的代碼
create procedure guoname
AS
select ziduan from biao
–無參調用
EXEC guoname
1
2
3
4
5
帶參存儲過程
create procedure guoname
@bl1 nvarchar(50),@bl2 float
AS
select ziduan from biao where lie1 = @bl1,lie2 = @bl2
–帶參調用
EXEC guoname @lie1 = ‘我是參數’,@bl2 = ‘66’
1
2
3
4
5
6
輸入和輸出存儲過程
create procedure guoname
@bl1 nvarchar(50),@bl2 float output
AS
select @bl2 = ziduan from biao where lie1 = @bl1
–輸入和輸出調用
declare @bl2 float
exec guoname ‘1501’,@bl2 output
SELECT @bl2 as 總成績
1
2
3
4
5
6
7
8
修改儲存過程
alter procedure guoname
AS
select ziduan from biao
1
2
3
–查詢儲存過程
SP_HEPLTEXT guoname
–刪除儲存過程
DROP PROCEDURE guoname
1
2
3
4
流程控制語句
begin
…語句塊
end
1
2
3
多分支流程語句
select lie1 as 列表1 ,lie2 as 列表2 ,分類條件=
case lie3
when 200 then ‘等于200’
when 300 then ‘等于300’
else ‘啥也不是’
end
from biao
1
2
3
4
5
6
7
goto,return語句
if 1=2
goto code1
else
goto code2
code1:
begin
print ‘等于’
return
end
code2:
begin
print ‘不等于’
return
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
循環語句
–定義變量
declare @a int, @b int ,@c int
–賦值
set @a=20202
set @b=0
set @c=0
–當條件小于3000
while(select lieID from biao where lie1=@a)<3000
begin
–修改表內數據,直到不符合循環條件
update biao set lieID= lieID+50 where lie1=@a
–記錄次數
set @c=@c+1
end
–查詢最后的結果
select @b=lieID from biao where lie1=@a
select @a as ‘編號’,@b as ‘最后的價格’ ,@c as ‘累加的次數’
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
例圖:
創建管理觸發器(DML&DDL)
ps:用于數據庫變動時被動觸發
創建觸發器
create trigger chufa on biao
after insert as print ‘成功在biao添加一條記錄’
1
2
create trigger chufa on biao
instead of insert as print ‘禁止在biao添加記錄’
1
2
create trigger chufa on biao
–delete禁止刪除,update禁止修改
after update as
if update(lieID)
begin
print ‘禁止修改biao表內的lieID’
–數據庫修改未儲存時,可恢復到之前狀態
rollback
end
1
2
3
4
5
6
7
8
9
將新添加的數據插入到新表中
create trigger tri_chufa_insert on biao
for insert as
begin
declare @name varchar(50),@address VARCHAR(50)
select @name = inserted.lie1,@address = inserted.lie2
from inserted insert into xinbiao (lie1,lie2)
values(@name,@address)
end
1
2
3
4
5
6
7
8
禁止刪除和修改數據庫內的表
create trigger tri_chufa on database
for drio_table,alter_table as
–回滾
rollback
————————————————
版權聲明:本文為CSDN博主「禿頭菜鳥」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_19883981/article/details/105237824
總結
以上是生活随笔為你收集整理的[SQL]SQL server 常用代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#仿QQ皮肤-常用用户控件EnterF
- 下一篇: 在Simulink中对S 函数进行参数传