T-SQLデータクエリ

5994 ワード

簡単な検索
構文:
select列名from表名where列名=値
1、イコールではない:<><!=>だがT-SQL文には該当しない(<>)
2、別名
(1)as(2)スペース
(3)=(右から左へ)例:select名前=UserName from dbo.User_tb
3、NULL値where列名is nullを調べます。(もし元にデータがあったら、削除されたら、is nullは調べられません。)
例:select AdContect,AdNum from dbo.Address_tb where AdNum is null
Is NULLと‘’の違い
Is NULL:データが入力されたことがなく、住所がありません。
'':もとはデータがありましたが、削除されました。住所があります。
4、照会では定数列(定数の情報をクエリの結果集に追加し、統計と計算を容易にする)を使用します。
例:select UserNoIIdユーザー番号、UserSex性別、UserName as名前、“登録”as登録状況from dbo.User_tb
5、トップキーワードで照会する
(1)限られた行数を返す
例:select top 2 UserNodasユーザー番号、UserNameユーザ名from dbo.User_tb
(2)指定されたパーセンテージのキーワードPERCENTを返します。
注:百分率で正確なデータではなく大体のデータに達することができます。
二:文字列関数
1、charidex関数:1つの文字列で他の文字列を検索し、検索したら戻ります。
文法:charidex('検索する文字列'、'ソース文字列')は、開始位置を指定しないで、デフォルトでは1から開始します。
3つのパラメータcharidex('検索する文字列','ソース文字列',10)は、開始位置を指定します。
使用目的は必要な文字列を抽出することです。
2、len関数:文字列の長さ
構文:len(列名)
例:select LEN(UserOpenid)from dbo.User_tb where UserName="張三"
3、left関数:文字列の左から指定文字を切り取ります。
left(列、切り取りの個数)
select LEFT(UserOpenid,charidex(‘1’,UserOpenid)-1)
from dbo.User_tb where UserName="張三"
4、replace関数:文字列を置換する
文法:replace(「元の文字列」「文字列を置換する」「新しい文字列」)
最後のパラメータが空の場合は、2番目のパラメータを削除するのに相当します。
5、stuff関数:文字列を別の文字列に挿入し、最初の開始位置から指定の長さを削除します。
stuff(「元文字列」、「位置開始」、「長さ削除」、「新しい文字列の挿入」)
例:select STUFF(UserOpenid,2,3,‘j 34’)
from dbo.User_tb where UserName="張三"
三、あいまい検索
(likeと一緒に使う)ワイルドカード:1,%:1つ以上の文字の代わりにクラスの文字
2、-      

3、[]:    [0-9]

4、[^]:      [0-9]
12345例:select*from dbo.Address_tb where AdCity like'%福州%
Likeの特徴:
1、文字型と一緒にのみ使用できます。
2、照会結果の個数が不定です。
beetween....and 2つの既知の値の間の未知の値を調べます。
例:select UserNameユーザ名、UserBirthday生年月日from dbo.User_tb where UserBirthday
between'199-01-01'and'199-12-30'
特徴:1、クエリは、起止値2、開始値が終了値より小さい3、実際には以上である。以下の形で4、数値型と日付型で使用できます。
notを使って反対に取ります。not between…and
In列挙値の範囲内でクエリーを行います。
例:select*from dbo.User_tb where UserSex in(1)
特徴:1、文字型、日付型、数値型とともに2、通常はサブクエリー3、
使用or接続に相当するクエリ
四、重合関数
集計関数:count、sum、avg、max、min
五、グループ化関数
1、文法:
select集計関数、グループの列fromテーブル名where条件group byグループの列
クエリーの列に制限があります。集合関数以外はグループの列でなければなりません。
例:select COUNT(*)as総人数、UserSex性別from dbo.User_tb
group by UserSex
2、並べ替えorder by昇順:asc降順:desc
コツ:「毎」、「各」の後の名称はグループの項目です。
例:select COUNT(*)as総人数、UserSex性別from dbo.User_tb
group by UserSex order by UserSex desc
3、グループを選別する(having)
Whereはグループ化前の条件フィルタに使用され、Havingはグループ化後の条件フィルタに使用されます。
文法:select...from...where...group by...having...order by...
六、日付関数
1、getdate:現在のシステム日付を取る
select GETDATE()
2、Dateadd:指定された数値を指定の日付部分に追加した後の日付
YY-年MM-月DD-日DW-日QQ-四半期
select DATEadd(MM,2,GETDATE()
パラメータ2はマイナス、小数点以下で調整できます。
3、datediff:2つの日付の間の指定日付の間
select DATEdiff(MM,‘2017-4-1’,GETDATE()
4、dateam:日付で日付を指定する文字列形式
select DATENAME(DW,GETDATE()
5、datepart:日付で指定された日付部分の型式
select DATEPART(DAY,GETDATE()
七、数学関数
1、乱数:ランドの戻り値:0~1の間
select rand([100])
ランダムシードを指定すると、返ってきた乱数は同じです。逆に、システムは自動的に割り当てられます。したがって、毎回の戻り値は違います。
3、ceiling:英訳天井、正数進数は大きい値を取って、マイナスは小数を切り捨てて大きい値に行きます。
select CEILING(9.0002)
select CEILING(-9.0002)
4、flor:英訳床板は、ceilingと反対です。
select flor(9.0002)
select flor(-9.0002)
八、unionで合併クエリを検索する
1、文法:
Select…from.表名1
ユニオン
Select…from…表名2
2、特徴
(1)連結テーブルの列の数、データの種類は同じでなければなりません。
(2)unionデフォルト取外し重複値は反union allを取ります。
(3)実行順序は左から右へ
(4)select intoと一緒に使用できますが、intoは最初のselectに入れなければなりません。
(5)並べ替え、order byは最後のselectに置く
タイプ変換:covert(データタイプ、列名)
例:select UserSex性別、UserName名前、UserNcニックネームfrom dbo.User_tb
ユニオン
select AdUserNo,AdContact,AdNum from dbo.Address_tb
九、子供の検索
1、一つのクエリ文にもう一つのクエリ文が含まれています(先にサブクエリを実行した後、親のクエリを実行します)。
構文:
Select…from表1 where列1=(サブクエリ)
特徴:
(1)ペアの括弧に入れなければなりません。
(2)「=」の比較演算子は、他の比較演算子と一緒に使用することもできます。
(3)whereの条件として
(4)order by字句は現れません。使うなら、父の照会に入れるしかないです。
方法:既知の項目に従って未知の項目を調べます。
例:select*from dbo.Henhouse_tb where HenFreNo=
(
select FreNod from dbo.Farmatb where FUserNo=
(
select UserNod from dbo.Userwhere UserName=‘张三’
)
)
2、inとnot in子クエリ
サブクエリーで返した列の値が複数の場合、キーワードinを使用します。
構文:
Select...from whereクエリー表式in(サブクエリ)
Not inは反対を取り、不一致の情報を表示します。
In:親クエリーをマッチングさせることができます。複数の単列の値を返します。
Not in:取得したクエリー条件の表現をサブクエリから返された結果と比較し、不一致の情報を表示します。
注:キーワードdistinctは重複データを削除します。
4、exists子検索
構文:
If exists(サブクエリ)
Begin
ステートメントブロック
End
Exists:サブクエリは記録を調べて、結果は本当で、さもなくばうそです。
Not Exists:サブクエリでは記録が確認できません。結果は本当です。そうでないと偽です。
5、all、any、someクエリー(any、some同等)
(1)>all:親クエリーの列の値は、サブクエリーが返した値リストの各値より大きくなければなりません。
(2)>any:親クエリーの列の値は、少なくとも、サブクエリの戻り値リストのうちの1つより大きくなければなりません。
some:同じ
1
(3)=anyはサブクエリinと同じです。親クエリーの列の値は、サブクエリーで返される値のリストに存在しなければなりません。
(4)<>anyとnot in
<>any:親が照会した結果列の値とサブクエリーが返した値のリストの中に一つだけ違っていればいいです。(ORまたはの関係に相当します。親が照会している列はサブクエリの値aに等しくないです。あるいはbに等しくないです。またはcに等しくないです。)
Not in:親クエリーの結果列の値は、サブクエリの戻り値のリスト123(andに相当する関係)が存在しない必要があります。親クエリーの列は、サブクエリの値aに等しくなく、bに等しくなく、cに等しくないです。
十、内外接続
1、インナージョン…onを接続する
特徴:1、地位は同じで、主と次の区別がない。
2、まず両表のデータを乗算し、where条件で重複部分を選択する1例:select*from dbo.User_tb inner join dbo.Address_tb on
dbo.Addresstb.AdUserNo=dbo.User_tb.UserNoId
2、外部リンク
(1)左外部接続:left join....on子文で左表を指定しているので、行
(2)右外接続:right join…on右表のすべての整合行
(3)左右の接続間で交換可能
(4)不適合でNULLの空き値を使用する
例:select UserNameユーザ名、UserBirthday誕生日、AdResアドレスfrom dbo.User_tb
left join dbo.Address_tb on
dbo.Addresstb.AdUserNo=dbo.User_tb.UserNoIId——————————————著作権声明:本文はCSDNブロガー「Blackucxm」のオリジナル文章で、CC 4.0 BY-SA著作権契約に従い、転載は原文の出所リンクと本声明を添付してください。リンク:https://blog.csdn.net/Black_c…