CREATE DATABASE database -<code>name 🎜🎜2. 説明: データベースを削除します 🎜🎜drop database dbname code> code>🎜🎜<code>3. 説明: バックアップ SQL サーバー 🎜🎜--- バックアップ データを作成するデバイス 🎜🎜USE マスター 🎜🎜 EXEC sp_addumpdevice 'disk' 、 'testBack' 、 code> 'c:mssql7backupMyNwind_1.dat' 🎜🎜--- バックアップを開始 🎜🎜BACKUP DATABASE pubs TO testBack 🎜🎜4. 説明: 新しいテーブルを作成します 🎜🎜create table tabname(col1 type1 [ not null ] [ primary code> key ],col2 type2 [ not null ],...) 🎜🎜既存のテーブルに基づいて新しいテーブルを作成します:🎜🎜A: create table tab_new like tab_old (古いテーブルを使用して新しいテーブルを作成します) 🎜🎜B: create table tab_new as select col1,col2… from tab_old 定義 only 🎜🎜5. 説明: 新しいテーブルを削除します 🎜🎜drop table タブ名 🎜🎜6. 説明: 列を追加します 🎜🎜Alter table tabname add column col type 🎜🎜注: 追加した列は削除できません。 DB2 では、列の追加後にデータ型を変更することはできません。変更できるのは、 varchar 型の長さを増やすことだけです。 🎜🎜7. 説明: 主キーを追加します: Alter table tabname add code> <code>primary key (col) 🎜🎜説明: 主キーを削除します: Alter table tabname drop primary key (col) ) 🎜🎜8. 説明: インデックスを作成します: create [ unique ] <code>index idxname on tabname(col….) 🎜🎜インデックスの削除: code><code>drop index idxname 🎜🎜注: インデックスを変更する場合は、削除する必要があります。そしてそれを再構築します。 🎜🎜9. 説明: ビューを作成します: create view viewname as code> <code>select statement 🎜🎜ビューの削除: drop view viewname 🎜🎜10. 説明: いくつかの単純な基本 SQL ステートメント 🎜🎜Select: select * code> code><code>from table1 where Range 🎜🎜Insert: insert code> <code>into table1(field1,field2) values (value1,value2) 🎜🎜削除 : 削除 from table1 where 範囲 🎜🎜 更新: update table1 set field1=value1 where 範囲 🎜🎜検索: select * from table1 where field1 like '%value1%' ---like の構文は非常に絶妙です。 🎜🎜並べ替え: select * from table1 order by field1,field2 [ desc ] 🎜🎜合計数: select count as totalcount from table1🎜 🎜<code>合計: select sum (field1) as sumvalue <code>from table1 🎜🎜Average: select avg (フィールド1) as 平均値 from table1 🎜
最小値: select min (field1 ) as minvalue from table1 🎜🎜 説明: いくつかの高度な機能。クエリ Operator 🎜🎜A: UNION Operator 🎜🎜UNION Operator は単一の A を渡します結果テーブルは、他の 2 つの結果テーブル (TABLE1 と TABLE2 など) を結合し、テーブル内の重複行を削除することによって導出されます。 ALL が UNION と一緒に使用される場合 (つまり、 UNION >ALL)、重複行は削除されません。どちらの場合も、派生テーブルのすべての行は TABLE1 または TABLE2 から取得されます。 🎜🎜B: EXCEPT Operator 🎜🎜EXCEPT Operator pass all 結果の導出TABLE1 にはあるが TABLE2 には存在しない行を取得し、重複する行を削除することにより、テーブルを作成します。 ALL が EXCEPT とともに使用される場合 ( EXCEPT ALL )、重複行は削除されません。 🎜🎜C: INTERSECT 演算子 🎜🎜INTERSECT 演算子には、次のものが含まれます。 TABLE1 と TABLE2 の両方から行を取得し、重複する行を削除することで結果テーブルを作成します。 ALL が INTERSECT とともに使用される場合 ( INTERSECT ALL )、重複行は削除されません。 🎜🎜注: 演算子ワードを使用するいくつかのクエリ結果行は一貫している必要があります。 🎜🎜12. 説明: 外部接続を使用します 🎜🎜A, left ( external ) join : 🎜🎜左外部結合 (左結合): 結果セットには、結合テーブルの行 (左側の結合テーブルのすべての行を含む)。 🎜🎜SQL: select a.a、a.b、a.c、b.c、b.d、b.f from a LEFT OUT JOIN b ON a.a = b.c 🎜🎜B: 右 ( 外側 ) join : 🎜🎜右外部結合 (右結合): 結果セットには、結合テーブルの一致する結合行と右結合テーブルのすべての行の両方が含まれます。 🎜🎜C: full / cross ( external ) join : 🎜🎜完全外部結合: シンボリック接続テーブルの一致する行だけでなく、ただし、結合テーブルには 2 つの All レコードも含まれます。 🎜🎜12. グループ: グループ by : 🎜🎜 テーブルの場合、グループ化が完了すると、クエリ後にグループ関連の情報のみを取得できます。 🎜🎜 グループ関連情報:(統計情報) count , sum / code><code>、 max 、 min 、 avg グループ化の標準) 🎜🎜 SQL Server でグループ化する場合: text、ntext、image タイプのフィールドはグループ化の基準として使用できません 🎜 🎜 selecte 統計関数のフィールドは通常のフィールドと一緒に配置できません。 🎜🎜13. データベースを操作します。 🎜🎜 データベースの接続解除: sp_detach_db; データベースの接続: sp_attach_db の後には、接続に完全なパス名が必要であることを示します 🎜🎜14. データベースの名前を変更する方法: 🎜🎜 sp_renamedb 'old_name' 、 'new_name' 🎜🎜2. 🎜🎜 <code>1. 説明: テーブルをコピーします (構造のみをコピーします、ソース テーブル名: a、新しいテーブル名: b) (アクセス可能) 🎜🎜方法 1: select code> <code>* into b from a where 1<>1 (SQlServer のみ) 🎜🎜方法 2: select top 0 * into b from a 🎜🎜2. : テーブルのコピー (データのコピー、ソース テーブル名: a ターゲット テーブル名: b) (アクセス可能) 🎜🎜insert into b(a 、 b、 c ) select d,e,f from b; 🎜🎜3. 説明 : データベース間でのテーブルのコピー (特定のデータに絶対パスを使用) (Access で利用可能) 🎜
例:.. from b in '"&Server.MapPath(" .")&"data.mdb" &"' where .. 🎜🎜4、说明:子查询(表名1:a表名2:b) 🎜🎜select a,b,c from a どこ a IN ( select d from b ) または: select a,b,c from a where a IN (1,2,3) 🎜🎜5、说明:显示文章、提交人と最終回回時間 🎜🎜select a.title,a.username,b.adddate from 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 <code>a LEFT OUT JOIN b ON a.a = b.c 🎜🎜7、说明:在線上图查询(表名1:a ) 🎜🎜select * code><code>from ( SELECT a,b,c FROM a ) T where t.a > 1; 🎜🎜8、注釈: 間 の使用法、 間 制限查询データ范围には边界值が含まれます。 は含まれません 間 は含まれません 🎜🎜select * from table1 where time between time1 <code>and time2 🎜🎜select a,b,c, from table1 where a not between 数值1 と 数值2 🎜🎜9、说説明: in の使用方法 🎜🎜select * from table1 where a [ not ] in ('值1','值2','值4','值6') 🎜🎜10、说明:两张关联表、删除主表中すでに副表中に存在しない情報 🎜🎜delete from table1 どこ 存在しない が存在します ( select * from table2 where table1.field1=table2.field1 ) 🎜🎜11、说明:四表联查问题: 🎜🎜選択 * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .... 🎜🎜12、说明:日程安排提前五分钟提醒 🎜🎜SQL: select * from 日程安排 where datediff( '分' ,f开開始時刻间,getdate ())>5 🎜🎜13、说明:一条sql语句搞定データ据库分页 🎜🎜select top 10 b.* from ( select top 20 主键字段,排序字段 <code>from 表名 order by 排序字段 desc<code>) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 🎜🎜特定の实现: 🎜🎜データ库分页に関するもの: 🎜
@sql nvarchar(600) 🎜🎜 set @sql=' select top '+str(@ end -@start +1)+'+ from T where rid not in ( select top '+str(@str-1)+'Rid >from T where Rid>-1)' 🎜🎜 exec sp_executesql @sql 🎜🎜注: top の後に変数を直接続けることはできないため、実際のアプリケーションでのみ使用できます。このような特殊な加工が施されています。 Rid は識別列です。 top の後に特定のフィールドがある場合、これは非常に有益です。これにより、 top のフィールドが論理的にインデックス付けされている場合、クエリ結果後の実際のテーブルの不一致を回避できるためです (論理インデックス内のデータは、論理インデックス内のデータと一致しない可能性があります)。データテーブル)、クエリがインデックス内にある場合は、インデックスが最初にクエリされます) 🎜🎜14. 説明: 最初の 10 レコード 🎜🎜select code> <code>top code> 10 * form table1 where Range 🎜🎜15 説明: を選択します。同じ b 値を持つデータの各グループ内の対応するデータ a の最大レコードのすべての情報 (このような使用法は、月次フォーラムランキング、月次売れ筋商品分析、科目スコアによるランキングなどに使用できます) 🎜🎜select code> <code>a,b,c from tablename ta where a=( select max (a) from テーブル名 tb where tb.b=ta.b) 🎜🎜16. 説明: TableA にはすべての行を含めますが、TableB と TableC には含めず、重複する行をすべて削除して導出します。結果テーブル code>🎜🎜<code>( select a from tableA ) 以外 ( select a from tableB) 以外 code> ( select a from tableC) 🎜🎜17、説明: データをランダムに 10 個取り出します 🎜🎜select top 10 * from tablename order by newid() 🎜🎜18 説明: ランダムに選択します。 records 🎜🎜select newid() 🎜🎜19. 説明: 重複したレコードを削除します 🎜🎜1),<code>削除 code> from テーブル名 where id not <code>in ( select max (id) from <code>テーブル名 group by col1,col2,...) 🎜🎜2), select distinct * into temp from code> <code>テーブル名 🎜 🎜 delete from テーブル名 🎜🎜 code><code>insert into tablename select * from temp 🎜🎜評価: この操作には大量のデータの移動が含まれます。このアプローチは、大量のデータ操作には適していません。 🎜🎜3)、例: 何らかの理由でデータを外部テーブルにインポートする場合 初めてデータの一部だけがインポートされましたが、特定の場所を特定するのが難しいため、次回からはすべてをインポートすることしかできません。重複フィールドが大量に生成されます。 重複フィールドを削除する方法 🎜🎜alter table tablename 🎜🎜--自動インクリメント列を追加します 🎜🎜add column_b int identity(1,1) 🎜 🎜 削除 from tablename <code>where column_b not in ( 🎜🎜select code> <code>max (column_b) from tablename group by code> <code>column1,column2,...) 🎜🎜alter table tablename drop code> column column_b 🎜 🎜20. 説明: データベース内のすべてのテーブル名をリストします。 🎜
21、说明:列出表里の全ての列名 🎜🎜select name from syscolumns where id=object_id( 'TableName' ) 🎜🎜22、説明:列表示タイプ、ベンダー、個数フィールド、以タイプフィールド排列、 case は、 select 内の case のように、複数の選択を都合よく実行できます。 🎜🎜 select type, sum ( case vender when 'A' then pcs else 0 end)、 sum ( case vender >when 'C' then pcs else 0 end )、 sum ( case vender when 'B' then pcs else 0 end ) FROM テーブル名 group by type🎜🎜<code>显示結果: 🎜🎜タイプベンダーPC 🎜🎜電脑 A 1 🎜🎜電脑 A 1 🎜🎜光盘 B 2 🎜🎜光盘 A 2 🎜🎜手机 B 3 🎜🎜手机 C 3 🎜 🎜23、说明:初期化表table1 🎜🎜TRUNCATE TABLE table1 🎜🎜24、说明: 10 から 15 の選択 🎜🎜select top 5 * from ( select top 15 * from table order <code>by id asc ) table_别名 order by id desc 🎜🎜三、技巧 🎜🎜1、1=1、1=2の使用、在SQL 句句組み合わせ時に使用される多くの 🎜🎜“ where 1=1” は表示選択全部 “ where 1=2” 全部不選択、 🎜🎜如: 🎜🎜if @strWhere != ''🎜🎜<code>begin 🎜🎜set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere 🎜🎜end 🎜🎜else🎜🎜<code>begin 🎜🎜set @strSQL = 'select count(*) as Total from [' + @tblName + ']' 🎜🎜end 🎜🎜我们可以直接写成 🎜🎜 🎜🎜set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 ' + @strWhere 2、收缩データ据库 🎜🎜-- 重建インデックス code>🎜🎜<code>DBCC REINDEX 🎜🎜DBCC INDEXDEFRAG 🎜🎜--收缩数据和日志 🎜🎜DBCC SHRINKDB 🎜🎜DBCC SHRINKFILE 🎜🎜3、压缩データベース库 🎜🎜dbcc shrinkdatabase(dbname) 🎜🎜4、转移データベース库给新利用户既に存在する使用户权制限 🎜🎜exec sp_change_users_login 'update_one' , 'newname ' , 'oldname' 🎜🎜go 🎜🎜5、检查备份集 🎜🎜RESTORE VERIFYONLY from disk= 'E:dvbbs.bak' 🎜🎜6、修复データベース库 code>🎜🎜<code>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 NOCOUNT ON🎜🎜DECLARE @LogicalFileName sysname, 🎜🎜 @MaxMinutes INT 、 🎜🎜 @NewSize INT 🎜
SELECT @LogicalFileName = 'tablename_log' , -- 日志文件名 🎜🎜@MaxMinutes = 10, -- ログのラップに許可される時間の制限. 🎜🎜 @NewSize = 1 -- 你想设定的日志文件の大小(M) 🎜🎜セットアップ / 初期化 🎜🎜DECLARE @OriginalSize int 🎜🎜SELECT @OriginalSize = サイズ 🎜🎜 FROM sysfiles 🎜🎜 WHERE name = @LogicalFileName 🎜🎜SELECT '元のサイズ ' + db_name () + ' LOG は ' + 🎜🎜 CONVERT (</code ><code>VARCHAR (30),@OriginalSize) + ' 8K ページまたは ' + 🎜🎜 < /code><code>CONVERT ( VARCHAR (30),(@OriginalSize*8/1024)) + 'MB' 🎜🎜 FROM sysfiles 🎜🎜 WHERE name = @LogicalFileName 🎜🎜CREATE TABLE DummyTrans 🎜🎜 < /code><code>(DummyColumn char (8000) not null ) 🎜🎜DECLARE @Counter INT , 🎜🎜 @StartTime DATETIME、 🎜🎜 @TruncLog VARCHAR (255) 🎜🎜 SELECT @StartTime = GETDATE(), 🎜🎜 @TruncLog = 'BACKUP LOG ' < code>+ db_name() + ' WITH TRUNCATE_ONLY' 🎜🎜DBCC SHRINKFILE (@LogicalFileName, @NewSize) 🎜🎜EXEC (@TruncLog) 🎜🎜-- 必要に応じてログをラップします。 🎜🎜WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- 期限が切れていない 🎜🎜 AND @OriginalSize = ( SELECT size FROM sysfiles WHERE name = @LogicalFileName) 🎜🎜 AND (@OriginalSize * 8 /1024) > @NewSize 🎜🎜 BEGIN -- 外側のループ。 🎜🎜SELECT @Counter = 0 🎜🎜 WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < @OriginalSize / 16) 50000)) 🎜🎜 BEGIN -- update 🎜🎜 INSERT</code > <code>DummyTrans VALUES ( 'Fill Log' ) DELETE</ code> <code>DummyTrans 🎜🎜 SELECT @Counter = @Counter + 1 🎜🎜 END 🎜🎜 EXEC (@TruncLog) 🎜🎜 END< /code>🎜🎜<code>SELECT '最終サイズ ' + db_name() + ' LOG は ' + 🎜🎜 CONVERT ( VARCHAR (30), size ) + ' 8K ページまたは ' + 🎜🎜 CONVERT ( VARCHAR (30),( size *8/1024)) + 'MB' 🎜🎜 FROM sysfiles 🎜🎜 WHERE name = @LogicalFileName 🎜🎜DROP TABLE DummyTrans 🎜🎜SET NOCOUNT OFF 🎜🎜8、说明:特定の表を変更します 🎜🎜exec< /code> <code>sp_changeobjectowner 'tablename' , 'dbo' 🎜🎜9、保存変更変更全表 🎜🎜CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch 🎜🎜@OldOwner as</code > <code>NVARCHAR(128), 🎜🎜@NewOwner as NVARCHAR(128) 🎜🎜AS< /code>🎜🎜<code>DECLARE @ Name as NVARCHAR(128) 🎜
DECLARE @OwnerName as NVARCHAR(128) 🎜🎜DECLARE curObject CURSOR FOR 🎜🎜select '名前' = name ,🎜🎜<code> 'Owner' = user_name(uid) 🎜🎜from sysobjects code>🎜🎜<code>where user_name(uid)=@OldOwner 🎜🎜order by name code>🎜🎜<code>OPEN curObject 🎜🎜FETCH NEXT FROM curObject INTO @ 名前 , @Owner 🎜🎜WHILE(@@FETCH_STATUS=0) ) 🎜🎜BEGIN 🎜🎜if @Owner=@OldOwner 🎜🎜begin 🎜🎜 set @OwnerName = @OldOwner + '.' + rtrim(@ Name )🎜🎜 exec sp_changeobjectowner @OwnerName, @NewOwner 🎜🎜end 🎜🎜 -- @name、@NewOwner、@OldOwner を選択します🎜🎜FETCH NEXT FROM curObject INTO @ Name , @Owner 🎜🎜END 🎜🎜 close curObject 🎜🎜deallocate curObject 🎜🎜GO 🎜🎜10、SQL SERVER中直循環环写入力据 🎜🎜declare @i int 🎜🎜set @i=1 🎜🎜while @i<30 🎜🎜begin 🎜🎜 insert < code>into test (userid) values (@i) 🎜🎜 set @i=@i+1 🎜🎜end 🎜🎜案例: 🎜🎜有如下表,要求就裱中全沒有及格的成績,每次增長0.1 的基礎上,他們剛好及格: 🎜🎜 Name score</code >🎜🎜<code> Zhangshan 80 🎜🎜 Lishi 59 🎜🎜 Wangwu 50 🎜🎜 Songquan 69 🎜🎜while(( select min</code ><code>(スコア) from tb_table)<60) 🎜🎜begin 🎜🎜update</ code> <code>tb_table set score =score*1.01 🎜🎜where score<60 🎜🎜if ( select min (スコア) from tb_table) >60 🎜🎜 break 🎜🎜 else 🎜🎜 続行 🎜🎜終了 🎜🎜数据开発行-经典 🎜🎜1.按姓氏笔画排序: 🎜🎜Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as // 少到多 🎜🎜2.数据库加密: 🎜🎜select encrypt( '原初密码' ) 🎜🎜select pwdencrypt( >'原始密码' ) 🎜🎜select pwdcompare( '原初密码' 、 '加密后密码' ) = 1 -- 同一;否则不同一 encrypt('原始密码') 🎜🎜 select pwdencrypt( '原始密码' ) 🎜🎜select pwdcompare ( '原始密码' , '加密後密码' ) = 1 - - 同じ;否か不同じ 🎜🎜3.表中字段を取得: 🎜🎜declare @list varchar (1000)、 🎜🎜@sql nvarchar(1000) 🎜
sysobjects a,syscolumns b where a.id=b.id and a.name = '表A' select @list=@list+ ',' +b. name from sysobjects a,syscolumns b where a.id=b.id and a. name = '表A'
set @sql = 'select ' + right (@list,len(@list)-1)+ ' from 表A' 🎜🎜exec (@sql) 🎜🎜4.查看硬盘分区: 🎜 🎜EXEC master..xp_fixeddrives 🎜🎜5.比较A,B表有無相等: 🎜🎜if ( select checksum_agg(binary_checksum(*)) from A) 🎜🎜 >= 🎜🎜 ( select checksum_agg(binary_checksum(*)) from <code>B) 🎜🎜print '相等' 🎜🎜else 🎜🎜print code><code>'不相等' 🎜🎜6.杀掉すべてのイベント探査者手順: 🎜🎜DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill ' +RTRIM(spid ) FROM master.dbo.sysprocesses 🎜🎜WHERE program_name IN ( 'SQL プロファイラ' ,N 'SQL イベント探索器' ) 🎜🎜EXEC sp_msforeach_worker '?' 🎜🎜7.记录搜索: 🎜🎜开头到N条记录 🎜🎜選択 上 N * From 表 🎜 🎜--------------------------------- 🎜🎜N到M条记录(要有主インデックス ID) 🎜🎜Select Top M-N * From 表 <code>どこ ID in ( Select Top M ID From 表) Order by ID 説明 🎜🎜---------------------------------- code>🎜🎜<code>N到结尾记录 🎜🎜Select Top N * From 表 順序 by ID 説明 🎜🎜パターン例 🎜🎜 例 1: テーブルには 130 個の記述があり、テーブルの最初のフィールド RecID は独自の長いフィールドであり、SQL 句を書き込み、テーブルの 31 番目から 40 番目のフィールドを抽出します。 >🎜🎜<code> select top 10 reid from A どこ recid not in ( select top 30 reid from A) 🎜🎜分析:如果这样写会产生或问题,如果 🎜🎜 select top 10recid from A where ……はインデックス中から、その次の面の select top 30 reid from A はデータテーブル内にありますが、これはインデックス内の順序がデータテーブル内の不一致である可能性があるため、この結果が発生します 🎜🎜解決策 🎜🎜1、 order by select top 30 reid from A order <code>by ricid 如果该字句不自增长,就会出现问题 🎜🎜2、那个子查询中も追加条件: select top 30 recid from A where recid>-1🎜🎜例 2: テーブル内の最後の条項が確認されますが、このテーブルにどのようなデータが共有されているか、およびテーブル構造が不明です。 🎜🎜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:获取当前のデータベース库内のすべてのユーザー表 🎜
10: テーブルのすべてのフィールドを取得します 🎜🎜select name from syscolumns where id=object_id( 'テーブル名') 🎜🎜select name from syscolumns / code><code>where id in ( select id from sysobjects where type = 'u' and > code> name = 'テーブル名' ) 🎜🎜この 2 つのメソッドは同じ効果があります code>🎜🎜11: テーブルに関連するビュー、ストアド プロシージャ、関数を表示する 🎜🎜select a.* from sysobjects a、syscomments b where a.id = b.id and b .text like '%table name%' 🎜🎜12: 現在のデータベース内のすべてのストアド プロシージャを表示します 🎜 🎜 select name as ストアド プロシージャ名 from sysobjects > where xtype= 'P' 🎜🎜13: ユーザーが作成したすべてのデータベースをクエリします 🎜🎜 select * from master..sysdatabases D where sid not in ( select sid from master..syslogins where name = 'sa' ) 🎜🎜または 🎜🎜select dbid、 name AS DB_NAME from master..sysdatabases where sid <> 🎜🎜14:特定のテーブルのフィールドとデータ型をクエリします 🎜🎜select column_name,data_type from information_schema.columns 🎜🎜< code>where table_name = 'テーブル名' 🎜🎜15: 異なるサーバーデータベース間のデータ操作 🎜🎜< code >-- リンク サーバーを作成します🎜🎜exec sp_addlinkedserver 'ITSV ' , ' ' 、 'SQLOLEDB ' 、 'リモート サーバー名または IP アドレス' 🎜🎜 exec sp_addlinkedsrvlogin 'ITSV ' , 'false ' ,</ code> <code>null 、 'ユーザー名' 、 'パスワード' 🎜🎜 --クエリ例 🎜🎜select * from ITSV.Database name.dbo.Table name > 🎜🎜 -- インポート例 🎜🎜select * into Table from ITSV.データベース名.dbo.テーブル名 🎜🎜--将来使用されなくなったらリンクサーバーを削除します 🎜🎜exec sp_dropserver 'ITSV ' , 'droplogins ' 🎜🎜--リモートに接続/ LAN データ (openrowset /openquery/opendatasource) 🎜🎜--1、openrowset 🎜🎜--クエリの例 🎜🎜select * from openrowset( 'SQLOLEDB ' , 'sql サーバー名'</code ><code>; 'ユーザー名' ; 'パスワード' 、データベース名.dbo。テーブル名) 🎜🎜 -- ローカルテーブルを生成 🎜🎜select * into テーブル code>from openrowset( 'SQLOLEDB ' , 'SQL サーバー名' < code>; 'ユーザー名' ; 'パスワード' 、データベース名.dbo.table name)</ code>🎜🎜<code>-- ローカル テーブルをリモート テーブルに挿入します 🎜🎜insert openrowset( 'SQLOLEDB '</コード><コード>、 <コード>'SQLサーバー名'<コード>; <コード>'ユーザー名'<コード>< code>'パスワード', データベース名.dbo.テーブル名) 🎜🎜select * from</code > <code> ローカル テーブル 🎜🎜--ローカル テーブルを更新 🎜🎜update b 🎜🎜set</ code> <code >b.A列=a.A列 🎜
on a.column1=b.column1 🎜🎜--openquery を使用して接続を作成する必要があります 🎜🎜-- 接続を作成します最初の接続によりリンク サーバーが作成されます 🎜🎜exec sp_addlinkedserver 'ITSV ' , ' ' , 'SQLOLEDB ' , 'リモートサーバー名または IP アドレス' 🎜🎜< code> --Query🎜🎜select * 🎜🎜FROM openquery(ITSV, ' SELECT * FROM database.dbo.Table name' ) 🎜🎜-- ローカル テーブルをリモート テーブルに入力します 🎜🎜insert</code > < code>openquery(ITSV, 'SELECT * FROM database.dbo.table name' ) 🎜🎜select * from ローカル テーブル 🎜🎜--ローカル テーブルを更新します 🎜🎜update b 🎜🎜set b.Column B=a.Column B 🎜🎜FROM openquery(ITSV, code> 'SELECT * FROM database.dbo.table name' ) as a 🎜🎜inner </ code> <code>join ローカルテーブル b on a.Column A=b.Column A 🎜🎜- -3. opendatasource/openrowset 🎜🎜SELECT * 🎜🎜FROM opendatasource( < code> 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=login name;Password=password' ).test.dbo .roy_ta 🎜🎜--ローカルテーブルをリモートテーブルに挿入します 🎜🎜insert opendatasource( 'SQLOLEDB '</ code> <code>, 'Data Source=ip/ServerName;User ID=ログイン名;Password=パスワード' ).Database.dbo.Table name 🎜🎜 select * from ローカルテーブル 🎜🎜SQL Server 基本関数 🎜🎜 SQL Server の基本関数 🎜🎜1. 文字列関数の長さと分析 🎜🎜1、datalength(Char_expr) は文字数を含む文字列を返しますが、そうではありません。次のスペースを含めます。 🎜🎜2, substring (expression,start,length) 文字列の添字は「1」からとります。 "、start は開始位置、length は文字列の長さです。実際のアプリケーションでは、len(expression) を使用して長さを取得します。 🎜🎜3, right (char_expr ,int_expr) は文字列の右側の int_expr 文字を返し、 left を使用してその逆を行います。 🎜 🎜4, isnull (check_expression, replace_value) check_expression が空の場合は、replacement_value の値が返されます。空でない場合は、check_expression 文字操作クラスが返されます。 🎜🎜5、Sp_addtype カスタム データ型 🎜🎜例: EXEC sp_addtype 誕生日、日時、< /code><code>'NULL' 🎜🎜 6, set nocount { on < code>|off } 🎜🎜 返された結果から、Transact-SQL ステートメントの影響を受ける行数に関する情報が除外されます。ストアド プロシージャに実際のデータをあまり返さないステートメントが含まれている場合、この設定によりネットワーク トラフィックが大幅に削減され、パフォーマンスが大幅に向上します。 SET NOCOUNT 設定は、解析時ではなく、実行時または実行時に設定されます。 🎜🎜SET NOCOUNT が ON の場合、カウントは返されません (トランザクションによって影響を受ける行数を示します)。 SQL ステートメント)。 🎜🎜SET NOCOUNT は OFF 、カウントを返します 🎜🎜常識< /code> code>🎜🎜<code>SQL クエリ内: from 追跡できるテーブルまたはビューの最大数: 256 🎜🎜SQL ステートメントでは Order by で表示されます。クエリの場合、最初に並べ替えてから 🎜🎜SQL では、 nvarchar は Unicode コードであるため、最大容量は 8000、nvarchar の場合は 4000 です。 🎜🎜 🎜🎜SQLServer2000 同期レプリケーション テクノロジの実装手順 🎜🎜1. 準備作業 🎜🎜1. 、サブスクライブサーバーは同じ名前の Windows ユーザーを作成し、公開されたスナップショットフォルダーへの有効なアクセスユーザーと同じパスワードを設定します 🎜🎜--管理ツール 🎜🎜- -コンピュータ管理 🎜🎜--ユーザーとグループ 🎜
-- 新しいユーザー 🎜🎜-- 管理者グループに属する Windows にログインするユーザー (SynUser) を作成します 🎜🎜2. 公開サーバー上で、公開されたスナップショット ファイルの保存ディレクトリとして新しい共有ディレクトリを作成します。 操作: 🎜🎜My Computer -- D: PUB という名前の新しいディレクトリを作成します: PUB 🎜🎜-- この新しく作成したディレクトリを右クリック 🎜🎜--プロパティ--共有 🎜🎜 -- [このフォルダを共有する] を選択します 🎜🎜 -- [権限] ボタンを使用して特定のユーザー権限を設定し、最初の手順で作成したユーザー (SynUser) がフォルダに対する権限を持っていることを確認します。すべての権限 🎜🎜--OK 🎜🎜3. SQL エージェント (SQLSERVERAGENT) サービスの起動ユーザーを設定します (この設定はパブリッシュ/サブスクライブ サーバーの両方に対して行われます)< /code>🎜 🎜<code>スタート --プログラム--管理ツール--サービス 🎜🎜--SQLSERVERAGENTを右クリック 🎜🎜 --プロパティ--ログイン --「このアカウント」を選択します 🎜🎜--最初の手順で作成したWindowsログインユーザー名(SynUser)を入力または選択します 🎜🎜-- 「パスワード」を入力します。 ユーザーのパスワード 🎜🎜4. 接続中の権限の問題を解決するために SQL Server 認証モードを設定します (パブリッシュ/サブスクライブ サーバーがこの設定を行います) 🎜🎜Enterpriseマネージャー 🎜🎜 -- SQL インスタンスを右クリック -- プロパティ 🎜🎜 -- セキュリティ -- 認証 🎜🎜 -- [SQL Server] を選択しますand Windows" 🎜🎜--OK 🎜🎜5. パブリッシャーサーバーとサブスクライバーサーバーで相互に登録します 🎜🎜Enterprise Manager</code > 🎜🎜<code>--SQL Server グループを右クリックします 🎜🎜--新しい SQL Server の登録... 🎜🎜--次のステップ--利用可能なサーバーを入力します登録するリモート サーバーの名前 -- 追加 🎜🎜--次のステップ--接続して使用し、2 番目の「SQL Server Authentication」を選択します 🎜🎜- -次のステップ 1-- ユーザー名とパスワード (SynUser) を入力します 🎜🎜--次のステップ-- SQL Server グループを選択するか、新しいグループを作成します 🎜🎜--次のステップ - - 完了 🎜🎜6. コンピュータ名ではなくIPのみを使用できる人は、サーバーエイリアスを登録します(このステップは実装では使用されません) 🎜🎜 (接続側で構成します。たとえば、サブスクライブサーバーで構成されている場合は、サーバー名に公開サーバーの IP を入力します) 🎜🎜Start --プログラム--Microsoft SQL Server--クライアントネットワークユーティリティ 🎜🎜--エイリアス--追加 🎜🎜--ネットワークライブラリ「tcp/ip」を選択します-- サーバー エイリアスの SQL サーバー名を入力します 🎜🎜--接続パラメータ--サーバー名に SQL サーバーの IP アドレスを入力します 🎜🎜-- SQL ポートを変更し、「ポートを動的に決定する」の選択をキャンセルし、対応するポート番号を入力します。 🎜🎜2. 公開サーバーを構成します。 code>🎜🎜<code>エンタープライズマネージャーを開き、パブリッシャー (B、C、D) で次の手順を実行します。 🎜🎜(1) [パブリッシャー、サブスクライバーサーバーの構成] を選択します。 [ツール] ドロップダウン メニューの [コピー] サブメニューと [配布] 構成の公開および配布ウィザードが表示されます 🎜🎜(2) [次へ] 配布サーバーを選択し、公開サーバーの使用を選択できます。それ自体を配布サーバーまたは他の SQL サーバーとして指定します (自分で選択します) 🎜🎜(3) [次のステップ] スナップショット フォルダーを設定します 🎜🎜デフォルトの \servernamePub を採用します</code >🎜🎜<code>(4) [次のステップ] 構成をカスタマイズします code>🎜🎜次のいずれかを選択できます: はい、ディストリビューション データベースのプロパティを設定して発行者を有効にするか、発行設定を設定します</code >🎜🎜<code>いいえ、次のデフォルト設定を使用します (推奨) 🎜🎜< code>(5) [次のステップ] ディストリビューション データベースの名前と場所をデフォルト値に設定します🎜🎜(6) [次のステップ] 公開サーバーとして選択した公開サーバーを有効にします 🎜🎜(7) [次のステップ] 公開するデータベースと公開タイプを選択します 🎜🎜(8) [次のステップ] 登録済みサブスクライバ サーバーを選択します 🎜🎜(9) [次のステップ ステップ] 設定を完了します 🎜🎜2. パブリケーションを作成します 🎜🎜公開サーバー B、C、D 上 🎜🎜(1) [ツール] メニューの [コピー] サブメニューから [パブリケーションの作成と管理] コマンドを選択します 🎜 🎜(2) パブリケーションを作成するデータベースを選択し、[パブリケーションの作成] をクリックします 🎜🎜 (3) [パブリケーションの作成] のプロンプトダイアログボックスで [次へ] をクリックします発行ウィザード] を選択すると、ダイアログ ボックスが表示されます。ダイアログボックスの内容は 3 つのタイプからコピーされます。ここで最初のものを選択します。これはデフォルトのスナップショット パブリケーションです (他の 2 つについてはヘルプを確認できます)。 🎜🎜(4) [次へ] をクリックすると、サブスクライブできるデータベースを指定する必要があります。パブリケーションサーバータイプに 🎜🎜SQLSERVERを使用すると、orACLEやACCESSなどの異なるデータベース間でのデータレプリケーションが可能になります。 🎜🎜しかし、ここではデータベースサーバーを実行することを選択します "SQL SERVER 2000" 🎜🎜(5) Single [次へ] をクリックすると、アーティクルを定義するためのダイアログ ボックスが表示されます。つまり、パブリッシュするテーブルを選択します。 🎜🎜注: トランザクション パブリッシングが以前に選択されていた場合は、このステップの主キーを持つテーブル。 Table 🎜
(7) カスタム パブリケーション プロパティ ウィザードによって提供されるオプション: 🎜🎜カスタム データをフィルターします、匿名サブスクリプションとその他のカスタム属性を有効にする 🎜🎜指定された方法に従ってパブリケーションを作成する場合はいいえ (カスタマイズされた方法が推奨されます) 🎜🎜(8)[次へ] フィルターを選択します パブリッシングメソッド 🎜🎜(9)[次のステップ] 匿名サブスクリプションを許可するかどうかを選択できます 🎜🎜1) 署名サブスクリプションを選択した場合は、サブスクライバーを公開サーバー 🎜🎜メソッド: [ツール]->[コピー]->[公開、サブスクライバー、および配布のプロパティを構成する]->[サブスクライバー]に追加 🎜🎜それ以外の場合、サブスクライバ サーバーでサブスクリプションをリクエストするときにプロンプトが表示されます: 匿名サブスクリプションを許可しないようにパブリケーションを変更してください🎜🎜それでも匿名サブスクリプションが必要な場合は、次の解決策を使用してください 🎜🎜 [Enterprise Manager]->[コピー]->[コンテンツの公開]->[プロパティ]->[サブスクリプション オプション] 匿名のサブスクリプション リクエストを許可するかどうかを選択します 🎜🎜2)匿名でサブスクライブすることを選択した場合、サブスクライバ サーバーの設定時に上記のプロンプトは表示されません 🎜🎜(10)[次のステップ] スナップショット エージェントのスケジュールを設定します 🎜🎜( 11)[次のステップ] 構成を完了します 🎜🎜パブリケーションが作成されると、パブリケーションが作成されたデータベースは共有データベースになります 🎜🎜データがあります 🎜🎜srv1 .Library name..author には、id、 name 、phone、 🎜🎜srv2 のフィールドがあります。 .author にはフィールドがあります: id、 name 、telphone、adress 🎜🎜要件: 🎜🎜srv1.Library name ..author が srv1 にレコードを追加します .Library name..author レコードが追加されます 🎜🎜srv1.Library name..author の電話フィールドが更新され、その後、srv1.Library name の対応するフィールド telphone が更新されます..作者が更新されました 🎜🎜 --*/ 🎜🎜--大まかな処理手順 🎜🎜--1. に接続サーバーを作成します。 srv1 は srv1 で srv2 を操作し、同期を実現します。 code>🎜🎜exec sp_addlinkedserver 'srv2' , '' 、 'SQLOLEDB' 、 'SQL インスタンス名または srv2 の IP' code>🎜🎜<code>exec sp_addlinkedsrvlogin 'srv2' , 'false' 、 null 、 'ユーザー名' 、 'パスワード' 🎜🎜go 🎜🎜 -2. 2 台のコンピューター srv1 と srv2 で、msdtc (分散トランザクション処理サービス) を起動し、自動的に開始するように設定します 🎜🎜 。マイ コンピュータ --コントロール パネル--管理ツール--サービス--分散トランザクション コーディネーターを右クリック--プロパティ--スタートアップ--そしてスタートアップの種類を自動スタートアップに設定します 🎜🎜 go🎜🎜--次に、上記の同期処理ストアド プロシージャを定期的に呼び出すジョブを作成します 🎜🎜Enterprise Manager 🎜🎜- -管理 🎜🎜--SQL Serverエージェント 🎜🎜--ジョブを右クリック 🎜🎜--新しいジョブ 🎜🎜--「全般」項目にジョブ名を入力します🎜🎜--「ステップ」項目 🎜🎜--新規 🎜🎜 --" 「ステップ名」にステップ名を入力します 🎜🎜--「種類」で「Transact-SQL Script (TSQL)」を選択します 🎜🎜-- 「データベース」の実行コマンド データベース 🎜🎜--「コマンド」、実行するステートメントを入力します: exec p_process 🎜🎜--OK 🎜🎜--「スケジュール」項目🎜🎜--新しいスケジュール 🎜🎜--「名前」にスケジュール名を入力してください 🎜🎜- -「スケジュール タイプ」で希望のものを選択します。 ジョブ実行スケジュール 🎜🎜--「定期的」を選択した場合 🎜🎜--「変更」をクリックしてタイムスケジュールを設定します。 code>🎜🎜<code>次に、SQL Agent サービスを開始し、自動的に開始するように設定します。そうしないと、ジョブは実行されません。 🎜🎜設定方法: 🎜🎜マイ コンピュータ -- コントロール パネル -- 管理ツール -- サービス -- SQLSERVERAGENT を右クリック -- プロパティ -- スタートアップの種類 -- [自動起動] を選択 -- OK。 🎜🎜--3. 実装 同期方法 2、スケジュールされた同期 🎜🎜--srv1 に次の同期ストアド プロシージャを作成します 🎜🎜create proc p_process code>🎜🎜as 🎜🎜-- 変更されたデータを更新します 🎜🎜update b set name =i. name ,telph/code>🎜🎜
|
from
srv2.Library name.dbo.author b / code>
どこ
not
exists(
select
*
から
作成者
どこ
id=b.id)
🎜🎜go
🎜🎜🎜🎜🎜 🎜
🎜
上記では、さまざまな側面を含む mysql の SQL ステートメントのコレクションを紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。 🎜
🎜
🎜