SQL SERVER基礎文学習(三)
9283 ワード
1. JoinTips:(1). Inner JoinとJoin
(2). Left Joinは、右のテーブルが一致していなくても、左のテーブルのすべてのローを返します.
(3). Right Join、左のテーブルが一致していなくても、右のテーブルのすべてのローを返します.
(4). Full Join、すべての行を返します
2. Unionが複数のselect文をマージした結果
Tips:Select文には同じ数の列が必要で、同じデータ型がある必要があります.列の順序も同じでなければなりません.Unionはデフォルトで異なる値を返します.Union Allは、重複する値の結果を返す列名を最初のselect文の列名にすることができます.
3.SelectIntoは一つの表からデータを選んで別の表に挿入し、よくバックアップコピー或いはアーカイブ記録に用いられる
Tips:(1). externaldatabaseから選択
(2). 表2が既に存在する場合はInsert Into
4.Constraint制約
(1). Not Null
(2). Unique制約は一意で、各テーブルに複数のuniqueがあります.
unique名を設定しなくてもいいです.システムにはデフォルト値がありますが、設定をお勧めします.使いやすいです.複数の列を同時に設定できます
(3). Primary Key制約は一意で、各テーブルにはprimary keyが1つしかありません.
(4). Foreign key
(5). Check制約列の値の範囲
(6). デフォルト設定
クエリー・テーブルにdefault制約があるかどうか
テーブルの制約の表示
Select alias_name1.column_name, alias_name2.column_name
From table_name1 as alias_name1
Inner join table_name2 as alias_name2
On alias_name1.column3 = alias_name2.column4
Order by alias_name1.column_name1
(2). Left Joinは、右のテーブルが一致していなくても、左のテーブルのすべてのローを返します.
Select alias_name1.column_name, alias_name2.column_name
From table_name1 as alias_name1
Left join table_name2 as alias_name2
On alias_name1.column_name3 = alias_name2.column_name4
Order by alias_name1.column_name1
(3). Right Join、左のテーブルが一致していなくても、右のテーブルのすべてのローを返します.
Select alias_name1.column_name, alias_name2.column_name
From table_name1 as alias_name1
Right join table_name2 as alias_name2
On alias_name1.column_name3 = alias_name2.column_name4
Order by alias_name1.column_name1
(4). Full Join、すべての行を返します
Select alias_name1.column_name, alias_name2.column_name
From table_name1 as alias_name1
Full join table_name2 as alias_name2
On alias_name1.column_name3 = alias_name2.column_name4
Order by alias_name1.column_name1
2. Unionが複数のselect文をマージした結果
Tips:Select文には同じ数の列が必要で、同じデータ型がある必要があります.列の順序も同じでなければなりません.Unionはデフォルトで異なる値を返します.Union Allは、重複する値の結果を返す列名を最初のselect文の列名にすることができます.
Select column_name(s) from table_name1
Union
Select column_name(2) from table_name2
3.SelectIntoは一つの表からデータを選んで別の表に挿入し、よくバックアップコピー或いはアーカイブ記録に用いられる
Select *
Into new_table_name
From old_table_name
Tips:(1). externaldatabaseから選択
Select *
Into new_table_name
From externaldatabase_name.dbo.table_name
(2). 表2が既に存在する場合はInsert Into
Insert Into table2_name(column1, column2,…)
Select table1_column1,table1_column2,… From table1_name
4.Constraint制約
(1). Not Null
(2). Unique制約は一意で、各テーブルに複数のuniqueがあります.
unique名を設定しなくてもいいです.システムにはデフォルト値がありますが、設定をお勧めします.使いやすいです.複数の列を同時に設定できます
Alter Table table_name Add unique (column_name)
Alter Table table_name Add constraint uq_name unique (column_name1,column_name2)
Alter Table table_name Drop constraint uq_name
(3). Primary Key制約は一意で、各テーブルにはprimary keyが1つしかありません.
Alter Table table_name Add constraint pk_name Primary Key (column_name1,column_name2)
Alter Table table_name Drop constraint pk_name
(4). Foreign key
Alter Table table_name1 Add constraint fk_name Foreign Key(column_name1) References table_name2(column_name2)
Alter Table table_name Drop constraint fk_name
(5). Check制約列の値の範囲
Alter Table table_name Add constraint chk_name Check (column_name1 > 3 and column_name2 like '%abc%')
Alter Table table_name Drop constraint chk_name
(6). デフォルト設定
Alter Table table_name Add constraint df_name default 'dafult_value' for column_name
Alter Table table_name Drop constraint df_name
クエリー・テーブルにdefault制約があるかどうか
Select * from sys.default_constraints Where sys.default_constraints.parent_object_id=OBJECT_ID('table_name')
テーブルの制約の表示
EXEC sp_helpconstraint 'table_name'