1、首先,建立乙個表,然後通過儲存過程往該表中插入100條記錄以下是引用片段:
create table teachers(id int primary key not
null identity(10000,100),tea_name varchar(50),
tea_age int default 20)
create procedure insert1000teachers
as declare @tea_name varchar(50)
declare @tea_age int
declare @index int
declare @count int
set @index=1
set @count=100
while @index<@count
begin
set @tea_age=30*rand()
set @tea_name='teacher'
set @tea_name=@tea_name+convert(varchar,@index)
insert into teachers(tea_name,tea_age)
values(@tea_name,@tea_age)
set @index=@index+1
end2、建立資料庫
以下是引用片段:
create database test1
on primary
( name=t1_dat,
filename='d:/test_database/1/t1_dat.mdf',
size=1,
filegrowth=15%,
maxsize=50
), (
name=t2_dat,
filename='d:/test_database/1/t2_dat.ndf',
size=1,
maxsize=unlimited,
filegrowth=1
) log on
( name=t_log,
filename='d:/test_database/1/t_log.ldf',
size=1,
maxsize=unlimited,
filegrowth=1
)3、增加乙個資料檔案到指定的資料庫
以下是引用片段:
alter database test1
add
file
( name=t3_dat,
filename='d:/test_database/1/t3_dat.ndf',
size=1,
maxsize=unlimited,
filegrowth=1
)4、增加組
以下是引用片段:
alter database test1
add
filegroup filegroup1
5、增加乙個資料檔案到指定的組
以下是引用片段:
alter database test1
add file
( name=t4_dat,
filename='d:/test_database/1/t4_dat.ndf'
) to filegroup filegroup1
6、物件重新命名
更改欄位名:sp_rename 'teachers.tea_name','tea_name1','column'
更改表名:sp_rename 'dbo.teachers','teachers1'
7、檢視儲存過程的內容:
sp_helptext insert1000teachers
8、採用儲存過程實現:根據儲存過程中的內容,查詢儲存過程的名字
以下是引用片段:
create procedure getprocedurebybodywords
@patpro varchar(100),--儲存過程中的任意內容
@proname varchar(50) --儲存過程的部分或者全名,或者為null
as begin
select name from sysobjects where id in
(select id from syscomments where text like '%'+@patpro+'%')
and name like case when @proname is null then '%' else '%'+@proname+'%' end
end如有儲存過程名為insert1000teachers,操作如下可得其全名
exec getprocedurebybodywords 'insert','insert1000'
9、採用觸發器備份資料表中的資料:
建立測試資料表:
乙個用於插入資料,test3
另乙個作為備份,test3_bak
以下是引用片段:
create table test3(id int primary key not null
identity(1,1),uname varchar(20),uage int);
create table test3_bak(id int primary key not
null identity(1,1),bid int,uname varchar(20),
uage int,active char(1));
編寫備份用的觸發器,只有更新或者是插入的時候才觸發
以下是引用片段:
alter trigger test3_bak_insert_update
on test3
for insert,update
as declare @id int
declare @uname varchar(20)
declare @uage int
begin
select @id=id,@uname=uname,@uage=uage from inserted
if @id<>0
begin
update test3_bak set active='0' where bid=@id
insert into test3_bak(bid,uname,uage,active)
values(@id,@uname,@uage,'1')
end
end測試資料:
以下是引用片段:
insert into test3(uname,uage) values('flb',20)
insert into test3(uname,uage) values('flb1',21)
insert into test3(uname,uage) values('flb2',22)
update test3 set uage=100 where id=27
delete from test3 where id=20
以下是引用片段:
select * from test3
select * from test3_bak
SQL server 之資料庫大彙總
sql 資料庫的基本知識,從前邊的每一章都進行了總結,可是整個框架的總結到今天才開始完工,下邊從我想的思路對其進行了總結聯絡。資料庫是將現實世界中的實體 entity 用聯絡 relationship 關聯起來的整體 也成關聯式資料庫 其中最主要的物件就是表 table 另外檢視 view 是為了我...
SqlServer 資料庫 三大 正規化
1 概述 一般地,在進行資料庫設計時,應遵循三大原則,也就是我們通常說的三大正規化,即第一正規化要求確保表中每列的原子性,也就是不可拆分 第二正規化要求確保表中每列與主鍵相關,而不能只與主鍵的某部分相關 主要針對聯合主鍵 主鍵列與非主鍵列遵循完全函式依賴關係,也就是完全依賴 第三正規化確保主鍵列之間...
SQLServer2005資料庫快照的簡單使用
原文 sqlserver2005資料庫快照的簡單使用 sqlserver2005 資料庫快照 的簡單使用 快照理論 資料庫快照就是儲存某個資料庫在快照那一瞬間的狀態.快照和備份原理上有所不同 但是功能有一點相同那就是可以將資料還原為備份的那個時刻 快照的原理是新建乙個資料庫指標 在原資料庫沒有變化的...