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

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

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

1. 説明: テーブルをコピーします (構造のみをコピーします、ソーステーブル名: a 新しいテーブル名: b) (アクセス可能)
方法 1: SELECT * 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. 説明:データベース間でテーブルをコピー(特定のデータには絶対パスを使用)(アクセス可能)
insert into b(a, b, c) select d,e,f from b in '特定のデータベースの where 条件
例: ..from b in '"&Server.MapPath(".")&"data.mdb" &"' where..
4. 説明: サブクエリ (テーブル名 1:テーブル名 2 : b)
select a,b,c from a where a IN (select d from b) or: 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. 説明: 外部接続クエリ(Table name 1: a Table name 2: b) Select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c 7. 説明: オンラインビュークエリ(テーブル名1: a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
8. 説明: between の使用はクエリデータ範囲を制限し、境界値を含みます、not between は含まれません
select * from table1 where time between time1 と time2
select a,b,c, from table1 where a not between value1 と value2
9 説明: inselect * from table1 where a [not] in ('value1 ','value2','value) の使用方法4','値6')
10. 説明:関連する2つのテーブル、副テーブルにない主テーブルの情報を削除
存在しないテーブル1から削除(テーブル1.フィールド1=テーブル2のテーブル2から*を選択します。 field1)
11. 説明: 4 つのテーブルの結合クエリの問題:
select * 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.説明: 5 分前にリマインダーをスケジュールする
SQL: select * from Schedule where datediff(' minutes',f start time,getdate())>5
13. 説明: SQL ステートメント データベースのページングを完了する
上位 10 を選択 b. * from (上位 20 個の主キー フィールドを選択、テーブル名からフィールドを並べ替える順序で並べ替えフィールドの説明) a, テーブル名 b where b.主キー フィールド = a.主キー フィールド order by a.並べ替えフィールド
具体的な実装:
概要データベースページング:
declare @start int,@end int
@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 は識別列です。先頭の後に特定のフィールドがある場合、これは非常に有益です。これにより、最上位フィールドに論理インデックスが作成されている場合、クエリ結果後の実際のテーブルの不整合を回避できるため (論理インデックス内のデータはデータ テーブル内のデータと一致しない可能性があり、クエリ中にインデックス内にある場合は、インデックスが最初にクエリされます)
14. 説明: 上位 10 を選択 * フォーム table1 where range
15. 説明: 同じ b 値を持つデータの各グループで最大の a を持つレコードのすべての情報を選択します (同様の使用法が可能です)フォーラム月間ランキング、月間売れ筋商品分析、科目スコア別ランキングなどに使用されます)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta .b)
16. 説明: TableA にはすべての行を含めますが、TableB と TableC には含めず、重複する行をすべて削除して結果テーブルを導出します
(テーブルAからaを選択) 例外(テーブルBからaを選択) 以外(テーブルCからaを選択)
17. 説明: データをランダムに10個取り出す
上位10を選択 * from tablename order by newid()
18. 説明: ランダムselect records
select newid()
19. 説明: 重複したレコードを削除します
1)、id が含まれていないテーブル名から削除します (col1,col2,... によるテーブル名グループから max(id) を選択します
2)、select unique * into temp from tablename
delete from tablename
insert into tablename select * from temp
コメント: この操作には大量のデータの移動が含まれます。このアプローチは、大容量のデータ操作
3) には適していません。外部テーブルへのインポート 何らかの理由で、初めてデータの一部のみがインポートされましたが、特定の場所を特定するのが困難です。この方法では、次回はすべてのデータしかインポートできないため、大量のデータが生成されます。重複フィールドの削除方法
alter table tablename
--自動インクリメント列を 1 つ追加します
add column_bintidentity(1,1)
delete from tablenamewhere column_b not in(
select max(column_b) from tablename group by column1 ,column2,...)
alter table tablenamedrop column column_b
2 0. 説明: データベース内のすべてのテーブル名をリストします
Select name from sysobjects where type='U' // U はユーザーを表します
21. 説明: すべてリストしますテーブル内の列名
Select name from syscolumns where id=object_id('TableName ')
22. 説明: type、vendor、pcs フィールドを type フィールドで並べてリストします。 Case は、 と同様に、複数の選択を簡単に実装できます。選択中のケース。
select type,sum(case ベンダー when 'A' then pcs else 0 end),sum(case ベンダー when 'C' then pcs else 0 end),sum(case ベンダー when 'B' then pcs else 0 end) FROM tablename group by type
表示結果:
typevender pcs
Computer A 1
Computer A 1
CD B 2
CD A 2
携帯電話B 3
携帯電話C 3
23. 説明:テーブルtable1の初期化
TRUNCATE TABLE table1

24 , 説明: 10から15までのレコードを選択します
select top 5 * from (select top 15 * from table order by id asc) table_alias order by id desc

上記はMYSQLクラシックステートメント - 改善の章の内容です、関連コンテンツの詳細については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


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