著者について: クラウド コンピューティング ネットワークの運用保守担当者。ネットワークと運用保守の技術と乾物を日々共有しています。
公式アカウント:ネットワーク堂
座右の銘:頭を下げて道を急ぎ、礼儀正しく
個人ホームページ: Netdouのホームページ
目次
2. T-SQL ステートメントを使用してデータ テーブルを操作する
3. T-SQL ステートメントを使用してデータをクエリする
前に書いてある
このシリーズの記事では、SQL Server のサーバー T-SQL クエリ ステートメントについて説明し、ビデオを同期してインストールを説明します。
ビデオ チュートリアル: T-SQL クエリ ステートメントのチュートリアル
前のレビュー: Windows Server 2016 - SQL サーバーのデータベースとテーブルの管理
導入
SQL Server は Microsoft によって開発されたリレーショナル データベース管理システムであり、現在では世界で主流のデータベースの 1 つです。使いやすさ、優れたスケーラビリティ、関連ソフトウェアの高度な統合という利点があり、1 台のラップトップから、または高出力のクラウド サーバー クラスタに基づいて、またはその中間の任意の方法で実行できます。
1. SQL の概要
1.SQLとT-SQL
SQL (構造化クエリ言語)
- リレーショナルデータベースの標準言語
- 非手続き型言語
- 統一言語
T-SQL は、Microsoft SQL Server 上の SQL の拡張バージョンである Transact-SQL の略称であり、アプリケーションが SQL Server と通信できるようにするために使用される主な言語です。T-SQL は、標準 SQL DDL および DML 関数に加えて、プログラミングをより柔軟にするための拡張関数、システム ストアド プロシージャ、およびプログラミング構造 (IF や WHILE など) を提供します。
2. T-SQLの構成
DML: データ操作言語
- データのクエリ、挿入、削除、および変更
DDL: データ定義言語
- データベースとデータベース オブジェクトを作成し、その列を定義します
DCL: データ制御言語
- データベースコンポーネントのストレージ権限、ストレージ権限などを制御します。
2. T-SQL ステートメントを使用してデータ テーブルを操作する
1. データを挿入する
insert [INTO] <表名> [列名] values <值列表>
# 可选 必须 可选
- [列名]を省略した場合、<値のリスト> はテーブル内のフィールドの順序と一致します。
- カンマで区切られた複数の列名と複数の値のリスト
例:
従業員テーブルにデータ行を挿入します。
insert into employee (姓名, 身份证号, 职务, 出生日期, 基本工资)
VALUES ('郭靖', '111222333444555666',
'运维工程师, '1995/1/1', 8000)
2. データを更新する
UPDATE <表名> SET <列名 = 更新值> [WHERE <更新条件>]
# 可选,用来限制更新条件
- WHERE句を省略すると、テーブル内のすべてのデータ行が更新されます。
例:
従業員テーブルの Huang Rong の基本給を11000に変更します
update employee SET 基本工资='11000'
WHERE 姓名='黄蓉'
3. データを削除する
(1) DELETE文
DELETE FROM <表名> [WHERE <删除条件>]
# 可选的, 用来限制删除条件
- WHERE句を省略すると、テーブル内のすべてのデータ行が削除されます。
例:
従業員テーブルのYang Guoのレコードを削除します。
DELETE FROM employee WHERE 姓名='杨过'
(2) Truncate Table文
Truncate table <表名>
例:
従業員テーブル内のすべてのレコードを削除します
Truncate table employee
(3) テーブルの削除とトランケートの違い
条件付き削除 |
トランザクションログを記録する |
識別子列をリセット |
外部キー制約 |
|
消去 |
where句を使用した条件による削除 |
はい、データは復元できます |
いいえ |
外部キー制約のあるテーブルに使用可能 |
テーブルの切り詰め |
テーブル全体のみをクリアできます |
いいえ、データは復元できません |
識別子列を0にリセット |
外部キー制約のあるテーブルには使用できません |
- Truncate Table はより高速に実行され、大きなデータ テーブルをクリアするために使用されます。
- Truncate Tableを実行する前にデータが削除できることを確認してください
3. T-SQL ステートメントを使用してデータをクエリする
1.構文構造の選択
SELECT select_list 指定查询内容
[INTO new_table_name] 把查询结果存放到一个新表中
FROM table_name 指定查询源
[ WHERE search_conditions ] 指定查询条件
[GROUP BY group_by_expression] 指定查询结果的分组条件
[HAVING search_conditions] 指定分组搜索条件,与GROUP BY子句一起使用
[ORDER BY order_expression [ASC|DESC] ] 指定查询结果的排序方式
2. 条件式
- 等しくない: <> または ! =
- 値の範囲を指定します: ... と ... の間。
- 空ですか: isnull
- ファジー クエリ: のように、ワイルドカード % と _ とともによく使用されます。
- データ範囲内: in()
比較演算子 |
意味 |
= |
等しい |
> |
以上 |
< |
未満 |
>= |
以上 |
<= |
以下 |
<> |
等しくない |
!= |
等しくない |
間 |
値の包含範囲(包含境界)を指定し、開始値と終了値を区切るにはAndを使用します。 |
NULL[ではない] |
null 値と非 null 値のどちらを検索するかを指定します |
のように |
ファジークエリ、指定された文字列とのパターンマッチング |
で |
データ範囲内ですか |
3. 論理式
論理演算子を使用した結合条件
演算結果は論理値です
- 正誤_ _
論理演算子 |
意味 |
そして |
2 つの条件を結合し、両方の条件が true の場合に True と評価します。 |
または |
2 つの条件を結合し、 2 つの条件のいずれかがTrueの場合に True と評価します。 |
ない |
他の演算子とともに使用される否定演算 |
4. クエリ列
テーブル内のすべての列をクエリする
SELECT * FROM table_name
従業員テーブル 内のすべての従業員情報をクエリします。
SELECT * FROM employee
例:
従業員テーブルの名前、役職、および基本給与の列の内容をクエリします。
SELECT 姓名,职务,基本工资 FROM employee
テーブル内の特定の行をクエリする - 条件付きクエリ
SELECT select_list FROM table_name WHERE search_conditions
例:
すべての運用および保守エンジニアの名前を照会します。
SELECT 姓名 FROM employee WHERE 职务=’运维工程师’
基本給が8000~10000の従業員の全情報を問い合わせる
SELECT * FROM employee
WHERE 基本工资 BETWEEN 8000 AND 10000
基本給が 10000 未満または20000 を超える従業員のすべての情報をクエリする
SELECT * FROM employee
WHERE 基本工资<10000 OR 基本工资>20000
基本給が8000 、9000 、1000である従業員のすべての情報をクエリします。
SELECT * FROM employee WHERE 基本工资 IN (8000,9000,10000)
ID 番号が66で始まる従業員のすべての情報を照会します。
SELECT * FROM employee WHERE 身份证号 LIKE “66%”
ヤンという名前の運用保守エンジニアの情報を照会します。
SELECT * FROM employee
WHERE 姓名 LIKE '杨%' AND 职务=’运维工程师’
コメントが空でない従業員のすべての情報を照会します
SELECT * FROM employee WHERE 备注 is not NULL
従業員テーブルの最初の5行のデータをクエリします。
SELECT top 5 * FROM employee
5. クエリ結果セットの列名を変更します。
SELECT column_name AS column_alias FROM table_name
# 改变结果集的列名称
リスト:
従業員テーブルの名前と ID 番号の 2 つの列のデータをクエリします。
SELECT 姓名 AS name, 身份证号 as idcard FROM employee
6. クエリ結果の並べ替え
SELECT select_list
FROM table_name
ORDER BY column_name [ ASC | DESC ]
# 升序 降序
デフォルトは昇順 ( ASC ) ソートです。
例:
従業員テーブル内のすべての従業員情報をクエリし、基本給の高い順にクエリ結果を表示します。
SELECT * FROM employee ORDER BY 基本工资 DESC
重複排除
SELECT DISTINCT column_name FROM table_name
従業員テーブル内の従業員のすべての役職をクエリします。
SELECT DISTINCT 职务 FROM employee
7. SELECT を使用して新しいデータを生成する
SELECT select_list INTO new_table_name #把一个表中的数据经过筛选插入到另一个表中
FROM table_name
例:
従業員テーブル内のすべての従業員の名前、ID 番号、および役職を含む新しいテーブルnew01を作成します。
SELECT 姓名,身份证号,职务 INTO new01 FROM employee
UNION キーワードを使用する
INSERT INTO table-name [column_name]
SELECT select_list1 UNION
SELECT select_list2 UNION
……
SELECT select_listn
UNION は、複数の異なるデータまたはクエリ結果を新しい結果セットに結合します。
従業員テーブル内の全従業員の名前、役職、生年月日と、新しく入力した従業員2名に関する情報を新しいテーブルnew03に保存します。
INSERT INTO new03 (姓名,职务,出生日期)
SELECT '欧阳锋','人事经理','1988-08-08' UNION
SELECT '一灯','财务经理','1977-07-07' UNION
SELECT 姓名,职务,出生日期 FROM employee
実際の事例
- 3. 従業員テーブル内のすべての従業員情報をクエリします。
- 4. 従業員テーブルの名前、役職、および基本給与の列の内容をクエリします。
- 5. すべての運用および保守エンジニアの名前を照会します。
- 6. 基本給が 8000 ~ 10000 の従業員のすべての情報をクエリする
- 7. 基本給が 10000 未満または 20000 を超える従業員のすべての情報をクエリする
- 8. 基本給が 8000、9000、1000 である従業員のすべての情報をクエリします。
- 9. ID 番号が 66 で始まる従業員のすべての情報を照会します。
- 10. ヤンという名前の運用保守エンジニアの情報を照会します。
- 11. コメントが空でない従業員のすべての情報を照会する
- 12.従業員テーブルの最初の 5 行のデータをクエリします。
- 13. 従業員テーブルの「名前」と「IDカード番号」の2つの列のデータをクエリすると、クエリ結果の「名前」列の名前が「名前」として表示され、「IDカード番号」の名前が表示されます。 「」列は「idcard」と表示されます
- 14. 従業員テーブル内のすべての従業員情報をクエリし、基本給の高い順にクエリ結果を表示します。
- 15. 従業員テーブルにどのジョブがあるかをクエリします (重複したジョブを削除します)。
- 16. 従業員テーブルで、ID 番号の左から 3 桁目が 0 であることをリストします。CTO を除く、すべての従業員の名前、ID 番号、役職、基本給が表示されます。名前フィールドには名前が表示され、クエリの結果は、基本給が高から低の順にランク付けされていることに準拠しています。
- 17. 従業員テーブル内のすべての従業員の名前、ID 番号、および役職を含む新しいテーブル new01 を作成します。
- 18. 従業員テーブル内の基本給が 15,000 以上であるすべての従業員の名前、役職、および生年月日を新しいテーブル new02 に保存します。(事前にテーブルnew02を作成しておきます)
- 19. 従業員テーブル内のすべての従業員の名前、役職、生年月日と、新しく入力した 2 人の従業員の関連情報を新しいテーブル new02 に保存します。(事前にテーブルnew02を作成しておきます)
- 新たに入社した社員2名の情報は以下のとおりです。
- 「欧陽峰」、「人事部長」、「1988-08-08」
- 「ワンライト」、「財務マネージャー」、「1977-07-07」