ホームページ  >  記事  >  データベース  >  MYSQL クラシック ステートメントの完全なコレクション - 開発

MYSQL クラシック ステートメントの完全なコレクション - 開発

黄舟
黄舟オリジナル
2016-12-20 16:36:101548ブラウズ

1. 姓の画数で並べ替え:
Select * From TableName Order By CustomerName Collat​​e 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)
select @list=@list+','+b. 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.. (binary_checksum(*)) from B)
print 'equal'
else
print 'notqual'
6. すべてのプロファイラプロセスを強制終了します:
DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses WHERE Program_name IN('SQL profiler',N'SQL Profiler')
EXEC sp_msforeach_worker '?'
7.レコード検索:
開始から N 件のレコード
上位 N 件を選択 * テーブルから
----------------------------------
N から Mレコード (プライマリ インデックス ID が必要)
Select Top M-N * From table Where ID in (Select Top M ID From table) Order by ID Desc
---------------------- -------------
N to end Record
Select Top N * From table Order by ID Desc
Case
例 1: テーブルに 10,000 件を超えるレコードがあります。テーブル RecID は自己増加するフィールドで、テーブルの 31 番目から 40 番目のレコードを検索する SQL ステートメントを記述します。
recid が入っていない A から上位 10 個の recid を選択 (A から上位 30 個の recid を選択)
分析: このように書くと、テーブル内に recid が論理インデックスを持っている場合、いくつかの問題が発生します。
Select top 10 recid from A where... はインデックスから検索されますが、後続の select top 30 recid from A はデータ テーブル内で検索されるため、インデックス内の順序はデータ テーブル内の順序と一致しない可能性があります。結果は、「クエリされたものは元の必要なデータではありません」になります。
解決策
1. order by select top 30 recid from A order 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: 現在のデータベースを取得Select Name from sysobjects where xtype='u' and status>=0
where id in (select id from sysobjects where type = 'u' and name = 'table name')
2 つのメソッドの効果は同じです
11 : 特定のテーブルに関連するビュー、ストアド プロシージャ、関数を表示します
select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%table name%'
12: すべて表示現在のデータベースのストアド プロシージャ
select name as Stored Procedure name 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 <> 0x01
14: 特定のテーブルのフィールドとデータ型をクエリします
select column_name,data_type from information_schema.columns where table_name = 'テーブル名'
15: 異なるサーバーデータベース間のデータ操作
--リンクの作成 Server
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', 'リモートサーバー名またはIPアドレス'
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, 'username', 'password'
--クエリ例
select * from ITSV.Database name.dbo.Table name
--インポート例
select * into table from ITSV.Database name.dbo .テーブル名
--将来使用されなくなったらリンクサーバーを削除します
exec sp_dropserver 'ITSV ', 'droplogins'
--リモート/LANデータの接続(openrowset/openquery/opendatasource)
--1. openrowset
-クエリ例
select * from openrowset( 'SQLOLEDB ', 'SQL Server name'; 'username'; 'password', Database name.dbo.テーブル名)
——ローカルテーブルを生成
select * into table from openrowset('SQLOLEDB ', 'SQLサーバー名'; 'ユーザー名'; 'パスワード', データベース名.dbo.テーブル名)
--ローカルテーブルをリモートテーブルにインポートします
insert openrowset('SQLOLEDB', 'sqlサーバー名'; 'ユーザー名'; 'パスワード', データベース名.dbo.テーブル名)
select *fromローカルテーブル
--ローカルテーブルを更新します
b を更新します b. 列 A=a. openrowset( 'SQLOLEDB ', 'SQL サーバー名'; 'ユーザー名'; 'パスワード', データベース名.dbo.テーブル名) を内部結合ローカル テーブルとして b on a.column1=b.column1
--Openquery を使用するには接続の作成が必要です
--まずリンク サーバーを作成するために接続を作成します
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', 'リモート サーバー名または IP アドレス'
--Query
select * FROM openquery(ITSV, 'SELECT * FROM database.dbo.table name')
--ローカルテーブルをリモートテーブルにインポートします
insert openquery(ITSV, 'SELECT * FROM database.dbo.テーブル名') )
select * from local table
--Update local table
update b set b.Column B=a.Column B
FROM openquery(ITSV, 'SELECT * FROM database.dbo.table name') as a a. 列A=b. 列A
--3. opendatasource/openrowset
SELECT * FROM opendatasource( 'SQLOLEDB ', 'データソース=ip/サーバー名;ユーザーID=ログイン名;パスワード=パスワード' ).test .dbo.roy_ta
--ローカルテーブルをリモートテーブルにインポートします
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=Login name;Password=password').Database.dbo .テーブル名
select * from local table


上記は、MYSQL の古典的なステートメント - 開発の章の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。