日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

這篇文章主要介紹了MySQL Sql語句注釋大全,需要的朋友可以參考下MySQL的SQL語句里面是可以加注釋的,下面給大家介紹mysql sql語句注釋大全,一起看看吧!

 

 

1、說明:創(chuàng)建數(shù)據(jù)庫

CREATE DATABASE database-name

2、說明:刪除數(shù)據(jù)庫

drop database dbname

3、說明:備份sql

server

---

創(chuàng)建 備份數(shù)據(jù)的 device

USE

master

EXEC sp_addumpdevice'disk','testBack','c:mssql7backupMyNwind_1.dat'

---

開始 備份

BACKUPDATABASE pubsTO testBack

4、說明:創(chuàng)建新表

create table tabname(col1

type1 [not null]

[primary key],col2

type2 [not null],..)

根據(jù)已有的表創(chuàng)建新表:

A:create table tab_newlike tab_old

(使用舊表創(chuàng)建新表)

B:create table tab_newas select col1,col2…from tab_old

definition only

5、說明:刪除新表

drop table tabname

6、說明:增加一個(gè)列

Alter table tabnameadd column col

type

注:列增加后將不能刪除。DB2中列加上后數(shù)據(jù)類型也不能改變,唯一能改變的是增加varchar類型的長度。

7、說明:添加主鍵:Alter table tabnameadd primary key(col)

說明:刪除主鍵:Alter table tabnamedrop primary key(col)

8、說明:創(chuàng)建索引:create [unique]index idxnameon tabname(col….)

刪除索引:drop index idxname

注:索引是不可更改的,想更改必須刪除重新建。

9、說明:創(chuàng)建視圖:create view viewnameas select statement

刪除視圖:drop view viewname

10、說明:幾個(gè)簡單的基本的sql語句

選擇:select *from table1where 范圍

插入:insert into table1(field1,field2)values(value1,value2)

刪除:delete from table1where 范圍

更新:update table1set field1=value1where 范圍

查找:select *from table1where field1like '%value1%'---like的語法很精妙,查資料!

排序:select *from table1order by field1,field2

[desc]

總數(shù):select count as totalcountfrom table1

求和:select sum(field1)as sumvaluefrom table1

平均:select avg(field1)as avgvaluefrom table1

最大:select max(field1)as maxvaluefrom table1

最小:select min(field1)as minvaluefrom table1

11、說明:幾個(gè)高級查詢運(yùn)算詞

A:UNION 運(yùn)算符

UNION 運(yùn)算符通過組合其他兩個(gè)結(jié)果表(例如

TABLE1 和 TABLE2)并消去表中任何重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng) ALL 隨UNION 一起使用時(shí)(即UNION ALL),不消除重復(fù)行。兩種情況下,派生表的每一行不是來自

TABLE1 就是來自 TABLE2。

B:EXCEPT 運(yùn)算符

EXCEPT 運(yùn)算符通過包括所有在

TABLE1 中但不在 TABLE2 中的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng) ALL 隨EXCEPT 一起使用時(shí)

(EXCEPT ALL),不消除重復(fù)行。

C:INTERSECT 運(yùn)算符

INTERSECT 運(yùn)算符通過只包括

TABLE1 和 TABLE2 中都有的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表。當(dāng) ALL 隨INTERSECT 一起使用時(shí)

(INTERSECT ALL),不消除重復(fù)行。

注:使用運(yùn)算詞的幾個(gè)查詢結(jié)果行必須是一致的。

12、說明:使用外連接

A、left (outer)join:

左外連接(左連接):結(jié)果集幾包括連接表的匹配行,也包括左連接表的所有行。

SQL:select a.a,

a.b, a.c, b.c, b.d, b.f from aLEFT OUT JOIN bON a.a

= b.c

B:right (outer)join:

右外連接(右連接):結(jié)果集既包括連接表的匹配連接行,也包括右連接表的所有行。

C:full/cross (outer)join:

全外連接:不僅包括符號連接表的匹配行,還包括兩個(gè)連接表中的所有記錄。

12、分組:Group by:

一張表,一旦分組完成后,查詢后只能得到組相關(guān)的信息。

組相關(guān)的信息:(統(tǒng)計(jì)信息)count,sum,max,min,avg 分組的標(biāo)準(zhǔn))

在SQLServer中分組時(shí):不能以text,ntext,image類型的字段作為分組依據(jù)

在selecte統(tǒng)計(jì)函數(shù)中的字段,不能和普通的字段放在一起;

13、對數(shù)據(jù)庫進(jìn)行操作:

分離數(shù)據(jù)庫:

sp_detach_db; 附加數(shù)據(jù)庫:sp_attach_db 后接表明,附加需要完整的路徑名

14.如何修改數(shù)據(jù)庫的名稱:

sp_renamedb'old_name','new_name'

二、提升

1、說明:復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a

新表名:b) (Access可用)

法一:select *into bfrom awhere 1<>1(僅用于SQlServer)

法二:select top 0

* into bfrom a

2、說明:拷貝表(拷貝數(shù)據(jù),源表名:a

目標(biāo)表名:b) (Access可用)

insert into b(a,

b, c) select d,e,ffrom b;

3、說明:跨數(shù)據(jù)庫之間表的拷貝(具體數(shù)據(jù)使用絕對路徑)

(Access可用)

insert into b(a,

b, c) select d,e,ffrom bin ‘具體數(shù)據(jù)庫'where 條件

例子:..from bin '"&Server.MAppath(".")&"data.mdb"

&"' where..

4、說明:子查詢(表名1:a

表名2:b)

select a,b,cfrom awhere aIN (select dfrom b

) 或者: select a,b,cfrom awhere aIN (1,2,3)

5、說明:顯示文章、提交人和最后回復(fù)時(shí)間

select a.title,a.username,b.adddatefrom table a,(select max(adddate)

adddate from table where table.title=a.title)

b

6、說明:外連接查詢(表名1:a

表名2:b)

select a.a,

a.b, a.c, b.c, b.d, b.f from aLEFT OUT JOIN bON a.a

= b.c

7、說明:在線視圖查詢(表名1:a

)

select *from (SELECT a,b,cFROM a)

T where t.a

> 1;

8、說明:between的用法,between限制查詢數(shù)據(jù)范圍時(shí)包括了邊界值,not between不包括

select *from table1where time between time1and time2

select a,b,c,from table1where anot between 數(shù)值1and 數(shù)值2

9、說明:in 的使用方法

select *from table1where a

[not]in (‘值1','值2','值4','值6')

10、說明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒有的信息

delete from table1where not exists

( select *from table2where table1.field1=table2.field1

)

11、說明:四表聯(lián)查問題:

select *from aleft inner join bon a.a=b.bright inner join con a.a=c.cinner join don a.a=d.dwhere .....

12、說明:日程安排提前五分鐘提醒

SQL:select *from 日程安排where datediff('minute',f開始時(shí)間,getdate())>5

13、說明:一條sql

語句搞定數(shù)據(jù)庫分頁

select top 10

b.* from (select top 20

主鍵字段,排序字段 from 表名order by 排序字段desc)

a,表名 b where b.主鍵字段

= a.主鍵字段 order by a.排序字段

具體實(shí)現(xiàn):

關(guān)于數(shù)據(jù)庫分頁:

declare @startint,@end int

@sql

nvarchar(600)

set @sql='select top'+str(@end-@start+1)+'+from Twhere ridnot in(select top'+str(@str-1)+'Ridfrom Twhere Rid>-1)'

exec sp_executesql

@sql

注意:在top后不能直接跟一個(gè)變量,所以在實(shí)際應(yīng)用中只有這樣的進(jìn)行特殊的處理。Rid為一個(gè)標(biāo)識列,如果top后還有具體的字段,這樣做是非常有好處的。因?yàn)檫@樣可以避免top的字段如果是邏輯索引的,查詢的結(jié)果后實(shí)際表中的不一致(邏輯索引中的數(shù)據(jù)有可能和數(shù)據(jù)表中的不一致,而查詢時(shí)如果處在索引則首先查詢索引)

14、說明:前10條記錄

select top 10

* form table1 where 范圍

15、說明:選擇在每一組b值相同的數(shù)據(jù)中對應(yīng)的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產(chǎn)品分析,按科目成績排名,等等.)

select a,b,cfrom tablename

ta where a=(select max(a)from tablename

tb where tb.b=ta.b)

16、說明:包括所有在

TableA 中但不在 TableB和TableC 中的行并消除所有重復(fù)行而派生出一個(gè)結(jié)果表

(select afrom tableA

) except (select afrom tableB)except (select afrom tableC)

17、說明:隨機(jī)取出10條數(shù)據(jù)

select top 10

* from tablenameorder by newid()

18、說明:隨機(jī)選擇記錄

select newid()

19、說明:刪除重復(fù)記錄

1),delete from tablenamewhere idnot in (select max(id)from tablenamegroup by col1,col2,...)

2),select distinct *into temp from tablename

delete from tablename

insert into tablenameselect *from temp

評價(jià):

這種操作牽連大量的數(shù)據(jù)的移動,這種做法不適合大容量但數(shù)據(jù)操作

3),例如:在一個(gè)外部表中導(dǎo)入數(shù)據(jù),由于某些原因第一次只導(dǎo)入了一部分,但很難判斷具體位置,這樣只有在下一次全部導(dǎo)入,這樣也就產(chǎn)生好多重復(fù)的字段,怎樣刪除重復(fù)字段

alter table tablename

--添加一個(gè)自增列

add column_bint identity(1,1)

delete from tablenamewhere column_bnot in(

select max(column_b) from tablenamegroup by column1,column2,...)

alter table tablenamedrop column column_b

20、說明:列出數(shù)據(jù)庫里所有的表名

select name from sysobjectswhere type='U' //

U代表用戶

21、說明:列出表里的所有的列名

select name from syscolumnswhere id=object_id('TableName')

22、說明:列示type、vender、pcs字段,以type字段排列,case可以方便地實(shí)現(xiàn)多重選擇,類似select 中的case

select type,sum(case venderwhen 'A' then pcselse 0end),sum(case venderwhen 'C' then pcselse 0end),sum(case venderwhen 'B' then pcselse 0end)FROM tablenamegroup by type

顯示結(jié)果:

type

vender pcs

電腦

A 1

電腦

A 1

光盤

B 2

光盤

A 2

手機(jī)

B 3

手機(jī)

C 3

23、說明:初始化表table1

TRUNCATE TABLE table1

24、說明:選擇從10到15的記錄

select top 5

* from (select top 15

* from table order by idasc)

table_別名 order by iddesc

三、技巧

1、1=1,1=2的使用,在SQL語句組合時(shí)用的較多

“where 1=1”

是表示選擇全部 “where 1=2”全部不選,

如:

if

@strWhere !=''

begin

set @strSQL

= 'select

count(*) as Total from [' +

@tblName + ']

where ' +

@strWhere

end

else

begin

set @strSQL

= 'select

count(*) as Total from [' +

@tblName + ']'

end

我們可以直接寫成

錯(cuò)誤!未找到目錄項(xiàng)。

set @strSQL

= 'select

count(*) as Total from [' +

@tblName + ']

where 1=1 安定 '+

@strWhere 2、收縮數(shù)據(jù)庫

--重建索引

DBCC

REINDEX

DBCC

INDEXDEFRAG

--收縮數(shù)據(jù)和日志

DBCC

SHRINKDB

DBCC

SHRINKFILE

3、壓縮數(shù)據(jù)庫

dbcc

shrinkdatabase(dbname)

4、轉(zhuǎn)移數(shù)據(jù)庫給新用戶以已存在用戶權(quán)限

exec sp_change_users_login'update_one','newname','oldname'

go

5、檢查備份集

RESTORE

VERIFYONLY from disk='E:dvbbs.bak'

6、修復(fù)數(shù)據(jù)庫

ALTER DATABASE [dvbbs]SET SINGLE_USER

GO

DBCC

CHECKDB('dvbbs',repair_allow_data_loss)WITH TABLOCK

GO

ALTER DATABASE [dvbbs]SET MULTI_USER

GO

7、日志清除

SET NOCOUNTON

DECLARE @LogicalFileName

sysname,

@MaxMinutesINT,

@NewSizeINT

USE

tablename --

要操作的數(shù)據(jù)庫名

SELECT @LogicalFileName

= 'tablename_log',--

日志文件名

@MaxMinutes

= 10, --

Limit on time allowed to wrap log.

@NewSize

= 1 --

你想設(shè)定的日志文件的大小(M)

Setup

/ initialize

DECLARE @OriginalSizeint

SELECT @OriginalSize

= size

FROM sysfiles

WHERE name =

@LogicalFileName

SELECT 'Original

Size of ' +

db_name() + '

LOG is ' +

CONVERT(VARCHAR(30),@OriginalSize)

+ '

8K pages or ' +

CONVERT(VARCHAR(30),(@OriginalSize*8/1024))

+ 'MB'

FROM sysfiles

WHERE name =

@LogicalFileName

CREATE TABLE DummyTrans

(DummyColumnchar (8000)not null)

DECLARE @Counter INT,

@StartTime

DATETIME,

@TruncLog VARCHAR(255)

SELECT @StartTime

= GETDATE(),

@TruncLog

= 'BACKUP

LOG ' +

db_name() + '

WITH TRUNCATE_ONLY'

DBCC

SHRINKFILE (@LogicalFileName, @NewSize)

EXEC (@TruncLog)

--

Wrap the log if necessary.

WHILE

@MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) --

time has not expired

AND @OriginalSize

= (SELECT size FROM sysfilesWHERE name =

@LogicalFileName)

AND (@OriginalSize

* 8 /1024) > @NewSize

BEGIN --

Outer loop.

SELECT @Counter

= 0

WHILE

((@Counter < @OriginalSize / 16) AND (@Counter

< 50000))

BEGIN --

update

INSERT DummyTransVALUES ('Fill

Log')DELETE DummyTrans

SELECT @Counter

= @Counter + 1

END

EXEC (@TruncLog)

END

SELECT 'Final

Size of ' +

db_name() + '

LOG is ' +

CONVERT(VARCHAR(30),size)

+ '

8K pages or ' +

CONVERT(VARCHAR(30),(size*8/1024))

+ 'MB'

FROM sysfiles

WHERE name =

@LogicalFileName

DROP TABLE DummyTrans

SET NOCOUNTOFF

8、說明:更改某個(gè)表

exec sp_changeobjectowner'tablename','dbo'

9、存儲更改全部表

CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch

@OldOwneras NVARCHAR(128),

@NewOwneras NVARCHAR(128)

AS

DECLARE @Name as NVARCHAR(128)

DECLARE @Owner as NVARCHAR(128)

DECLARE @OwnerName as NVARCHAR(128)

DECLARE curObjectCURSOR FOR

select 'Name' =name,

'Owner' =

user_name(uid)

from sysobjects

where user_name(uid)=@OldOwner

order by name

OPEN curObject

FETCH NEXT FROM curObjectINTO @Name,

@Owner

WHILE(@@FETCH_STATUS=0)

BEGIN

if

@Owner=@OldOwner

begin

set @OwnerName

= @OldOwner + '.' +

rtrim(@Name)

exec sp_changeobjectowner

@OwnerName, @NewOwner

end

--

select @name,@NewOwner,@OldOwner

FETCH NEXT FROM curObjectINTO @Name,

@Owner

END

close curObject

deallocate curObject

GO

10、SQL

SERVER中直接循環(huán)寫入數(shù)據(jù)

declare @iint

set @i=1

while

@i<30

begin

insert into test

(userid) values(@i)

set @i=@i+1

end

案例:

有如下表,要求就裱中所有沒有及格的成績,在每次增長0.1的基礎(chǔ)上,使他們剛好及格:

Name score

Zhangshan

80

Lishi

59

Wangwu

50

Songquan

69

while((select min(score)from tb_table)<60)

begin

update tb_tableset score

=score*1.01

where score<60

if

(select min(score)from tb_table)>60

break

else

continue

end

數(shù)據(jù)開發(fā)-經(jīng)典

1.按姓氏筆畫排序:

Select *From TableNameOrder By CustomerNameCollate Chinese_PRC_Stroke_ci_as

//從少到多

2.數(shù)據(jù)庫加密:

select encrypt('原始密碼')

select pwdencrypt('原始密碼')

select pwdcompare('原始密碼','加密后密碼')

= 1--相同;否則不相同

encrypt('原始密碼')

select pwdencrypt('原始密碼')

select pwdcompare('原始密碼','加密后密碼')

= 1--相同;否則不相同

3.取回表中字段:

declare @listvarchar(1000),

@sql

nvarchar(1000)

select @list=@list+','+b.name from sysobjects

a,syscolumns b where a.id=b.idand a.name='表A'

set @sql='select

'+right(@list,len(@list)-1)+'

from 表A'

exec (@sql)

4.查看硬盤分區(qū):

EXEC master..xp_fixeddrives

5.比較A,B表是否相等:

if

(select checksum_agg(binary_checksum(*))from A)

=

(select checksum_agg(binary_checksum(*))from B)

print'相等'

else

print'不相等'

6.殺掉所有的事件探察器進(jìn)程:

DECLARE hcforeachCURSOR GLOBAL FOR SELECT 'kill

'+RTRIM(spid)FROM master.dbo.sysprocesses

WHERE program_nameIN('SQL

profiler',N'SQL

事件探查器')

EXEC sp_msforeach_worker'?'

7.記錄搜索:

開頭到N條記錄

Select Top N

* From 表

-------------------------------

N到M條記錄(要有主索引ID)

Select Top M-N

* From 表Where IDin (Select Top M

ID From 表)Order by ID Desc

----------------------------------

N到結(jié)尾記錄

Select Top N

* From 表Order by IDDesc

案例

例如1:一張表有一萬多條記錄,表的第一個(gè)字段

RecID 是自增長字段, 寫一個(gè)SQL語句,找出表的第31到第40個(gè)記錄。

select top 10

recid from Awhere recidnot in(select top 30

recid from A)

分析:如果這樣寫會產(chǎn)生某些問題,如果recid在表中存在邏輯索引。

select top 10

recid from Awhere……是從索引中查找,而后面的select top 30

recid from A則在數(shù)據(jù)表中查找,這樣由于索引中的順序有可能和數(shù)據(jù)表中的不一致,這樣就導(dǎo)致查詢到的不是本來的欲得到的數(shù)據(jù)。

解決方案

1,

用order by select top 30

recid from Aorder by ricid

如果該字段不是自增長,就會出現(xiàn)問題

2,

在那個(gè)子查詢中也加條件:select top 30

recid from Awhere recid>-1

例2:查詢表中的最后以條記錄,并不知道這個(gè)表共有多少數(shù)據(jù),以及表結(jié)構(gòu)。

set @s

= 'select

top 1 * from T where pid not in (select top ' +

str(@count-1)

+ '

pid from T)'

print

@s exec sp_executesql

@s

9:獲取當(dāng)前數(shù)據(jù)庫中的所有用戶表

select Name from sysobjectswhere xtype='u' and status>=0

10:獲取某一個(gè)表的所有字段

select name from syscolumnswhere id=object_id('表名')

select name from syscolumnswhere idin (select idfrom sysobjectswhere type

= 'u' and name ='表名')

兩種方式的效果相同

11:查看與某一個(gè)表相關(guān)的視圖、存儲過程、函數(shù)

select a.*from sysobjects

a, syscomments b where a.id

= b.id and b.textlike '%表名%'

12:查看當(dāng)前數(shù)據(jù)庫中所有存儲過程

select name as 存儲過程名稱from sysobjectswhere xtype='P'

13:查詢用戶創(chuàng)建的所有數(shù)據(jù)庫

select *from master..sysdatabases

D where sidnot in(select sidfrom master..sysloginswhere name='sa')

或者

select dbid,name AS DB_NAMEfrom master..sysdatabaseswhere sid

<> 0x01

14:查詢某一個(gè)表的字段和數(shù)據(jù)類型

select column_name,data_typefrom information_schema.columns

where table_name

= '表名'

15:不同服務(wù)器數(shù)據(jù)庫之間的數(shù)據(jù)操作

--創(chuàng)建鏈接服務(wù)器

exec sp_addlinkedserver 'ITSV

','

','SQLOLEDB

','遠(yuǎn)程服務(wù)器名或ip地址

'

exec sp_addlinkedsrvlogin 'ITSV

','false

',null,'用戶名

','密碼

'

--查詢示例

select *from ITSV.數(shù)據(jù)庫名.dbo.表名

--導(dǎo)入示例

select *into 表from ITSV.數(shù)據(jù)庫名.dbo.表名

--以后不再使用時(shí)刪除鏈接服務(wù)器

exec sp_dropserver 'ITSV

','droplogins

'

--連接遠(yuǎn)程/局域網(wǎng)數(shù)據(jù)(openrowset/openquery/opendatasource)

--1、openrowset

--查詢示例

select *from openrowset('SQLOLEDB

','sql服務(wù)器名

';'用戶名

';'密碼

',數(shù)據(jù)庫名.dbo.表名)

--生成本地表

select *into 表from openrowset('SQLOLEDB

','sql服務(wù)器名

';'用戶名

';'密碼

',數(shù)據(jù)庫名.dbo.表名)

--把本地表導(dǎo)入遠(yuǎn)程表

insert openrowset('SQLOLEDB

','sql服務(wù)器名

';'用戶名

';'密碼

',數(shù)據(jù)庫名.dbo.表名)

select *from 本地表

--更新本地表

update b

set b.列A=a.列A

from openrowset('SQLOLEDB

','sql服務(wù)器名

';'用戶名

';'密碼

',數(shù)據(jù)庫名.dbo.表名)as ainner join 本地表

b

on a.column1=b.column1

--openquery用法需要創(chuàng)建一個(gè)連接

--首先創(chuàng)建一個(gè)連接創(chuàng)建鏈接服務(wù)器

exec sp_addlinkedserver 'ITSV

','

','SQLOLEDB

','遠(yuǎn)程服務(wù)器名或ip地址

'

--查詢

select *

FROM openquery(ITSV, 'SELECT

* FROM 數(shù)據(jù)庫.dbo.表名 ')

--把本地表導(dǎo)入遠(yuǎn)程表

insert openquery(ITSV, 'SELECT

* FROM 數(shù)據(jù)庫.dbo.表名 ')

select *from 本地表

--更新本地表

update b

set b.列B=a.列B

FROM openquery(ITSV, 'SELECT

* FROM 數(shù)據(jù)庫.dbo.表名 ')as a

inner join 本地表

b on a.列A=b.列A

--3、opendatasource/openrowset

SELECT *

FROM opendatasource('SQLOLEDB

', 'Data

Source=ip/ServerName;User ID=登陸名;Password=密碼 ' ).test.dbo.roy_ta

--把本地表導(dǎo)入遠(yuǎn)程表

insert opendatasource('SQLOLEDB

', 'Data

Source=ip/ServerName;User ID=登陸名;Password=密碼 ').數(shù)據(jù)庫.dbo.表名

select *from 本地表

SQL

Server基本函數(shù)

SQL

Server基本函數(shù)

1.字符串函數(shù)

長度與分析用

1,datalength(Char_expr)

返回字符串包含字符數(shù),但不包含后面的空格

2,substring(expression,start,length)

取子串,字符串的下標(biāo)是從“1”,start為起始位置,length為字符串長度,實(shí)際應(yīng)用中以len(expression)取得其長度

3,right(char_expr,int_expr)

返回字符串右邊第int_expr個(gè)字符,還用left于之相反

4,isnull(

check_expression , replacement_value )如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作類

5,Sp_addtype

自定義數(shù)據(jù)類型

例如:EXEC sp_addtype

birthday, datetime, 'NULL'

6,set nocount

{on|off}

使返回的結(jié)果中不包含有關(guān)受

Transact-SQL 語句影響的行數(shù)的信息。如果存儲過程中包含的一些語句并不返回許多實(shí)際的數(shù)據(jù),則該設(shè)置由于大量減少了網(wǎng)絡(luò)流量,因此可顯著提高性能。SETNOCOUNT

設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。

SET NOCOUNT

為 ON 時(shí),不返回計(jì)數(shù)(表示受

Transact-SQL 語句影響的行數(shù))。

SET NOCOUNT

為 OFF 時(shí),返回計(jì)數(shù)

常識

在SQL查詢中:from后最多可以跟多少張表或視圖:256

在SQL語句中出現(xiàn)Order by,查詢時(shí),先排序,后取

在SQL中,一個(gè)字段的最大容量是8000,而對于nvarchar(4000),由于nvarchar是Unicode碼。

SQLServer2000同步復(fù)制技術(shù)實(shí)現(xiàn)步驟

一、

預(yù)備工作

1.發(fā)布服務(wù)器,訂閱服務(wù)器都創(chuàng)建一個(gè)同名的windows用戶,并設(shè)置相同的密碼,做為發(fā)布快照文件夾的有效訪問用戶

--管理工具

--計(jì)算機(jī)管理

--用戶和組

--右鍵用戶

--新建用戶

--建立一個(gè)隸屬于administrator組的登陸windows的用戶(SynUser)

2.在發(fā)布服務(wù)器上,新建一個(gè)共享目錄,做為發(fā)布的快照文件的存放目錄,操作:

我的電腦--D:

新建一個(gè)目錄,名為: PUB

--右鍵這個(gè)新建的目錄

--屬性--共享

--選擇"共享該文件夾"

--通過"權(quán)限"按紐來設(shè)置具體的用戶權(quán)限,保證第一步中創(chuàng)建的用戶(SynUser)

具有對該文件夾的所有權(quán)限

--確定

3.設(shè)置SQL代理(SQLSERVERAGENT)服務(wù)的啟動用戶(發(fā)布/訂閱服務(wù)器均做此設(shè)置)

開始--程序--管理工具--服務(wù)

--右鍵SQLSERVERAGENT

--屬性--登陸--選擇"此賬戶"

--輸入或者選擇第一步中創(chuàng)建的windows登錄用戶名(SynUser)

--"密碼"中輸入該用戶的密碼

4.設(shè)置SQL

Server身份驗(yàn)證模式,解決連接時(shí)的權(quán)限問題(發(fā)布/訂閱服務(wù)器均做此設(shè)置)

企業(yè)管理器

--右鍵SQL實(shí)例--屬性

--安全性--身份驗(yàn)證

--選擇"SQL

Server 和 Windows"

--確定

5.在發(fā)布服務(wù)器和訂閱服務(wù)器上互相注冊

企業(yè)管理器

--右鍵SQL

Server組

--新建SQL

Server注冊...

--下一步--可用的服務(wù)器中,輸入你要注冊的遠(yuǎn)程服務(wù)器名

--添加

--下一步--連接使用,選擇第二個(gè)"SQL

Server身份驗(yàn)證"

--下一步--輸入用戶名和密碼(SynUser)

--下一步--選擇SQL

Server組,也可以創(chuàng)建一個(gè)新組

--下一步--完成

6.對于只能用IP,不能用計(jì)算機(jī)名的,為其注冊服務(wù)器別名(此步在實(shí)施中沒用到)

(在連接端配置,比如,在訂閱服務(wù)器上配置的話,服務(wù)器名稱中輸入的是發(fā)布服務(wù)器的IP)

開始--程序--Microsoft

SQL Server--客戶端網(wǎng)絡(luò)實(shí)用工具

--別名--添加

--網(wǎng)絡(luò)庫選擇"tcp/ip"--服務(wù)器別名輸入SQL服務(wù)器名

--連接參數(shù)--服務(wù)器名稱中輸入SQL服務(wù)器ip地址

--如果你修改了SQL的端口,取消選擇"動態(tài)決定端口",并輸入對應(yīng)的端口號

二、

正式配置

1、配置發(fā)布服務(wù)器

打開企業(yè)管理器,在發(fā)布服務(wù)器(B、C、D)上執(zhí)行以下步驟:

(1)

從[工具]下拉菜單的[復(fù)制]子菜單中選擇[配置發(fā)布、訂閱服務(wù)器和分發(fā)]出現(xiàn)配置發(fā)布和分發(fā)向?qū)?/p>

(2)

[下一步] 選擇分發(fā)服務(wù)器 可以選擇把發(fā)布服務(wù)器自己作為分發(fā)服務(wù)器或者其他sql的服務(wù)器(選擇自己)

(3)

[下一步] 設(shè)置快照文件夾

采用默認(rèn)\servernamePub

(4)

[下一步] 自定義配置

可以選擇:是,讓我設(shè)置分發(fā)數(shù)據(jù)庫屬性啟用發(fā)布服務(wù)器或設(shè)置發(fā)布設(shè)置

否,使用下列默認(rèn)設(shè)置(推薦)

(5)

[下一步] 設(shè)置分發(fā)數(shù)據(jù)庫名稱和位置 采用默認(rèn)值

(6)

[下一步] 啟用發(fā)布服務(wù)器 選擇作為發(fā)布的服務(wù)器

(7)

[下一步] 選擇需要發(fā)布的數(shù)據(jù)庫和發(fā)布類型

(8)

[下一步] 選擇注冊訂閱服務(wù)器

(9)

[下一步] 完成配置

2、創(chuàng)建出版物

發(fā)布服務(wù)器B、C、D上

(1)從[工具]菜單的[復(fù)制]子菜單中選擇[創(chuàng)建和管理發(fā)布]命令

(2)選擇要創(chuàng)建出版物的數(shù)據(jù)庫,然后單擊[創(chuàng)建發(fā)布]

(3)在[創(chuàng)建發(fā)布向?qū)的提示對話框中單擊[下一步]系統(tǒng)就會彈出一個(gè)對話框。對話框上的內(nèi)容是復(fù)制的三個(gè)類型。我們現(xiàn)在選第一個(gè)也就是默認(rèn)的快照發(fā)布(其他兩個(gè)大家可以去看看幫助)

(4)單擊[下一步]系統(tǒng)要求指定可以訂閱該發(fā)布的數(shù)據(jù)庫服務(wù)器類型,

SQLSERVER允許在不同的數(shù)據(jù)庫如

orACLE或ACCESS之間進(jìn)行數(shù)據(jù)復(fù)制。

但是在這里我們選擇運(yùn)行"SQL

SERVER 2000"的數(shù)據(jù)庫服務(wù)器

(5)單擊[下一步]系統(tǒng)就彈出一個(gè)定義文章的對話框也就是選擇要出版的表

注意:

如果前面選擇了事務(wù)發(fā)布 則再這一步中只能選擇帶有主鍵的表

(6)選擇發(fā)布名稱和描述

(7)自定義發(fā)布屬性

向?qū)峁┑倪x擇:

我將自定義數(shù)據(jù)篩選,啟用匿名訂閱和或其他自定義屬性

根據(jù)指定方式創(chuàng)建發(fā)布 (建議采用自定義的方式)

(8)[下一步]

選擇篩選發(fā)布的方式

(9)[下一步]

可以選擇是否允許匿名訂閱

1)如果選擇署名訂閱,則需要在發(fā)布服務(wù)器上添加訂閱服務(wù)器

方法:

[工具]->[復(fù)制]->[配置發(fā)布、訂閱服務(wù)器和分發(fā)的屬性]->[訂閱服務(wù)器] 中添加

否則在訂閱服務(wù)器上請求訂閱時(shí)會出現(xiàn)的提示:改發(fā)布不允許匿名訂閱

如果仍然需要匿名訂閱則用以下解決辦法

[企業(yè)管理器]->[復(fù)制]->[發(fā)布內(nèi)容]->[屬性]->[訂閱選項(xiàng)]

選擇允許匿名請求訂閱

2)如果選擇匿名訂閱,則配置訂閱服務(wù)器時(shí)不會出現(xiàn)以上提示

(10)[下一步]

設(shè)置快照 代理程序調(diào)度

(11)[下一步]

完成配置

當(dāng)完成出版物的創(chuàng)建后創(chuàng)建出版物的數(shù)據(jù)庫也就變成了一個(gè)共享數(shù)據(jù)庫

有數(shù)據(jù)

srv1.庫名..author有字段:id,name,phone,

srv2.庫名..author有字段:id,name,telphone,adress

要求:

srv1.庫名..author增加記錄則srv1.庫名..author記錄增加

srv1.庫名..author的phone字段更新,則srv1.庫名..author對應(yīng)字段telphone更新

--*/

--大致的處理步驟

--1.在

srv1 上創(chuàng)建連接服務(wù)器,以便在 srv1 中操作 srv2,實(shí)現(xiàn)同步

exec sp_addlinkedserver'srv2','','SQLOLEDB','srv2的sql實(shí)例名或ip'

exec sp_addlinkedsrvlogin'srv2','false',null,'用戶名','密碼'

go

--2.在

srv1 和 srv2 這兩臺電腦中,啟動 msdtc(分布式事務(wù)處理服務(wù)),并且設(shè)置為自動啟動

。我的電腦--控制面板--管理工具--服務(wù)--右鍵

Distributed Transaction Coordinator--屬性--啟動--并將啟動類型設(shè)置為自動啟動

go

--然后創(chuàng)建一個(gè)作業(yè)定時(shí)調(diào)用上面的同步處理存儲過程就行了

企業(yè)管理器

--管理

--SQL

Server代理

--右鍵作業(yè)

--新建作業(yè)

--"常規(guī)"項(xiàng)中輸入作業(yè)名稱

--"步驟"項(xiàng)

--新建

--"步驟名"中輸入步驟名

--"類型"中選擇"Transact-SQL

腳本(TSQL)"

--"數(shù)據(jù)庫"選擇執(zhí)行命令的數(shù)據(jù)庫

--"命令"中輸入要執(zhí)行的語句:

exec p_process

--確定

--"調(diào)度"項(xiàng)

--新建調(diào)度

--"名稱"中輸入調(diào)度名稱

--"調(diào)度類型"中選擇你的作業(yè)執(zhí)行安排

--如果選擇"反復(fù)出現(xiàn)"

--點(diǎn)"更改"來設(shè)置你的時(shí)間安排

然后將SQL

Agent服務(wù)啟動,并設(shè)置為自動啟動,否則你的作業(yè)不會被執(zhí)行

設(shè)置方法:

我的電腦--控制面板--管理工具--服務(wù)--右鍵

SQLSERVERAGENT--屬性--啟動類型--選擇"自動啟動"--確定.

--3.實(shí)現(xiàn)同步處理的方法2,定時(shí)同步

--在srv1中創(chuàng)建如下的同步處理存儲過程

create proc

p_process

as

--更新修改過的數(shù)據(jù)

update bset name=i.name,telphone=i.telphone

from srv2.庫名.dbo.author

b,author i

where b.id=i.idand

(b.name <>

i.name or b.telphone

<> i.telphone)

--插入新增的數(shù)據(jù)

insert srv2.庫名.dbo.author(id,name,telphone)

select id,name,telphonefrom author

i

where not exists(

select *from srv2.庫名.dbo.authorwhere id=i.id)

--刪除已經(jīng)刪除的數(shù)據(jù)(如果需要的話)

|干貨|北大教授教學(xué)總結(jié)的Mysql Sql語句注釋大全實(shí)例分享

 

 

分享到:
標(biāo)簽:注釋 Mysql
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定