ホームページ >データベース >SQL >SQL コマンド、テーブル処理、および高度な SQL 知識ポイントの概要について話しましょう。

SQL コマンド、テーブル処理、および高度な SQL 知識ポイントの概要について話しましょう。

WBOY
WBOY転載
2022-02-24 18:06:573860ブラウズ

この記事では、データベース言語 SQL に関する関連知識を提供します。主に SQL 命令、テーブル処理、および SQL の高度なスキルに関連する問題を紹介します。皆様のお役に立てれば幸いです。

SQL コマンド、テーブル処理、および高度な SQL 知識ポイントの概要について話しましょう。

# 推奨学習:

mysql ビデオ チュートリアル

##1. SQL コマンド

# #SQL 命令は、SQL を使用してデータベース内のテーブル データを保存、読み取り、処理する方法を指します。

一般的な SQL 命令には次のものが含まれます。

1.1 SELECT: 選択

(1) 機能: データベーステーブルからデータを選択します。テーブル内の 1 つまたは複数の列のすべてのデータを読み取る機能。

テーブルとは何ですか?テーブルは、データを保存することを目的としたデータベース内の構造です。

(2) ステートメント:

select カラム名 1、カラム名 2... from テーブル名

1.2 DISTINCT: 区別 (選択)

# (1) 機能: データを処理するときに、テーブル内の異なるデータ値を見つける必要がありますつまり、各値が出現する回数に関係なく、列の個別の値に何が含まれているかを知る必要があります。現時点では、distinct を使用してください。

(2) ステートメント:

テーブル名から個別の列名を選択します

1.3 WHERE: クエリあり条件

(1) 関数: 条件付きで選択的に情報をクエリする必要がある場合は、where

( 2) ステートメントを使用します。

select カラム名 from table name where 条件

1.4 AND OR: AND、OR (接続条件)

(1) 機能: where の複雑な条件は、2 つ以上の単純な条件を and または or で接続して構成されます。 SQL ステートメントには、単純な条件が無限に存在する可能性があります。

#(2) ステートメント:

単純条件 1 および|または単純条件 2 のテーブル名から列名を選択します...

##1.5 IN: 不連続な範囲の値を取得する (where と連携)

(1) 関数: in 節、通常は where が続きます。組み合わせて使用​​すると、条件が不連続な範囲の値を取ることを意味します

(2) ステートメント: select columns name from table name where columns name ascondition in (value) 1, 値 2, 値 3...) 存在します

(3) 補足: in 節の括弧内の値が 1 つだけの場合は、次と同等です。 ... where 列名 = 値 1

1.6 BETWEEN: 連続範囲の値を取得します (where で調整)

(1) 機能: in コマンドは、データベース内の値を 1 つまたは複数の不連続な値の範囲内で取得するコマンドであり、behind コマンドは、データベース内の値を連続した範囲内で取得するコマンドです。通常、where と組み合わせて使用​​されます。

(2) ステートメント: select columns name from table name where columns name between value 1 and value 2

1.7 LIKE: 検索モードあり (where と連携)

(1) 機能: パターンに基づいて必要なデータを検索します。通常、where と組み合わせて使用​​されます。

(2) ステートメント: select columns name from table name where 列名は {mode}

(3 ) {モード}:

たとえば、A_B は、A が A で始まり B で終わることを意味し、中間には 1 文字しか存在できません。ABC% は、で始まる文字列を意味します。 ABC、�C は ABC で終わる文字列を意味し、�C% はパターン ABC を含む文字列を表します。

1.8 ORDER BY: ソート

(1) 機能: 取得したデータを体系的に表示します。ソート表示、正順または逆順です。

(2) ステートメント: select columns name from table name where 条件は列名順 [ASC, DESC]

(3) [ ] はオプション、必須ではないことを意味します。 ASC は小さいものから大きいものへを意味し、DESC はその逆を意味します。デフォルトでは ASC が使用されます。

(4) 注: where が存在する場合は、where を order by 句の前に置く必要があります。

(5) 補足: 複数の列名を同時にソートできます。列名 1 [ASC, DESC]、列名 2 [ASC, DESC] の順に並べます。両方の列を小さいものから大きいものにソートすることを選択した場合、この句の結果は次のようになります: 列名 1 を小さいものから大きいものにソートします。同じ列名 1 を持つクエリ結果が複数ある場合、これらの結果は列名 2 に従って昇順に並べられます。

1.9 関数

(1) 関数: データベースの多くの内容は数値の形で存在します。これらの数値に対して操作を実行する場合、いくつかの定義された関数を通じて直接実行できます。

# (2) 共通関数:

##AVG: 平均値

#COUNT: 数

MAX: 最大値

## MIN

: 最小値

SUM

: 合計

(3) ステートメント:
select 関数名 (列名) from テーブル名

1.10 COUNT: count

( 1 ) 機能: Count、テーブル内で見つかった適格なエントリの総数をカウントします。

(2) ステートメント:

select count(column name) from table name

(3) 注:

count は、テーブル内に個別のエントリがいくつあるかを確認するために、distinct と一緒によく使用されます。

1.11 GROUP BY: 分類

(1) 機能: 複数の列を選択する場合name また、列名の少なくとも 1 つに関数のアプリケーションが含まれている場合は、group by コマンドを使用する必要があります。この場合、他のすべての列名でグループ化されていることを確認する必要があります。つまり、

関数を含む列名に加えて、それを group by 句 に配置する必要があります。 (2) ステートメント:

select 列名 1 sum(列名 2) from テーブル名グループ by 列名 1

1.12 HAVING:

(1) 関数: 関数が生成する値の条件を設定します。 。

having 句は SQL 文の最後にあります。

#having 句を含む SQL には、必ずしも group by 句が含まれるとは限りません。

(2) ステートメント:

select カラム名 1, sum (カラム名 2) from table name group by columns name 1 getting (関数条件)

(3) 注: 関数列のみが選択されている場合は、group by 句は必要ありません。

1.13 ALIAS: エイリアス(テーブルまたはカラム用)

(1) 関数: テーブル用の関数および列のエイリアス。

列名のエイリアス: これは、SQL によって生成された結果を読みやすくするためのものです。

テーブル エイリアス: from 句のテーブル名の後にスペースを残し、使用するテーブル エイリアスをリストします。

つまり、これら 2 つのエイリアスは、置換されるテーブル名または列名の後に配置され、テーブル名または列名とスペースで区切られます。

(2) ステートメント:

select table alias.Column name 1 columns name 1

Column alias from table nameTable alias (3) 注: 列のエイリアスは、列名の直後だけでなく、...

sum(column など) 関数の後にも配置できます。 name) カラムエイリアス

...

1.14 テーブル接続

(1) 関数: 2 つのテーブルを介して同じ列が 2 つのテーブルを接続します。

where 句はテーブル接続において重要な役割を果たします。

where の使用を誤ると、デカルト結合 (2 つのテーブルの 2 行ごとのすべての可能な組み合わせ) が発生する可能性があります。

1.15 外部接続

(1) 機能:

私たちがよく呼ぶ左結合は内部結合です。内部接続の場合、データが選択される前に、両方のテーブルが同じ値を持つ必要があります。

値が別のテーブルに存在するかどうかに関係なく、テーブル内のすべての情報をリストしたい場合。現時点では、外部接続 (SQL OUTER JOIN) が必要です。

(2) ステートメント: 外部接続の構文はデータベースによって異なります。たとえば、Oracle では、where 句ですべてのデータを選択するテーブルの後に ( ) を追加して、このテーブル内のすべてのデータが必要であることを示します。

(3) 注: 2 番目のテーブルに相対データがない場合、SQL は NULL を返します。

1.16 CONCATENATE: 連結文字

(1) 機能: 異なる列名で得られた結果を連結します。 。各データベースによって提供されるメソッドは異なる場合があります:

#MySQL: CONCAT()

#Oracle: CONCAT(), ||

SQL サーバー:

(2) ステートメント:

concat(文字 1、文字 2、文字 3...)

は、文字 1、文字 2、および文字 3 を連結することを意味します。

(3) 注: Oracle の concat() では、パラメータは 2 つだけ許可されます。つまり、一度に結合できる文字列は 2 つだけです。ただし、 || を使用すると、複数の文字列を一度に連結できます。

1.17 SUBSTRING: インターセプト文字

(1) 機能: SQL の部分文字列関数を使用して Part を取得します。データの列の。

#データベースが異なると、この関数の名前は異なります:

MySQL: substr(), substring()

Oracle: substr()

SQL サーバー: substring()

(2) ステートメント:

substr(str, pos)

は、pos 位置から始まる文字を選択することを意味します。この構文は SQL Server には適用されません。

sub(str, pos, len)

は、str の pos 位置から開始して、長さ len の文字列を選択することを意味します。

1.18 TRIM: 文字列の先頭または末尾の指定内容を削除します

(1) 機能: trim() 関数は、文字列内の文字の先頭または末尾を削除するために使用されます。最も一般的なのは、先頭または末尾の空白を削除することです。

データベースが異なるとメソッドが異なります:

MySQL: トリム()、rtrim()、ltrim()

#Oracle: rtrim()、ltrim()

SQL サーバー: rtrim()、ltrim()

#(2) ステートメント: trim([[位置] [削除する文字列] from] string)

(3) 注: If If there is no削除する文字列のリスト。空白がある場合は空白が削除されます。

2. テーブル処理

テーブル処理手順では、SQL を使用してデータベース内の各テーブルを処理し、追加、削除、変更する方法を参照します。 、など。

2.1 CREATE TABLE: テーブルの作成

(1) 機能: データベースにテーブルを作成します

##(2) ステートメント:

create table テーブル名

# # (列名 1 属性、 列名 2 属性、

## 列名 3 属性);

2.2 CONSTRAINT: 制限

(1) 機能: どのデータをテーブルに保存できるか、または借用できるかを指定するために使用されます。後で alter table ステートメントによって指定されます。

(2) 一般的な制限は次のとおりです:

not null

unique

check

主キー

外部キー

2.3 NOT NULL: 列の値を NULL 以外に制限する

## (1) 効果: 列の値を許可しない場合null 値を持ちますが、制限が適用されます。列の値に null を含めることが許可されていない場合は、その列に not null を指定する必要があります。

(2) ステートメント:

create table table name

(column名前 1 属性 not null

列名 2 属性 not null

## 列名3 属性);

2.4 UNIQUE: 列の値を一意になるように制限します

( 1) 機能: 列内の値が異なることを確認します。

(2) ステートメント:

create table table name

(column名前 1 属性は null ではありません

unique

列名 2 属性は null ではありません、

列名 3 属性は null );

(3) 注:

主キーとして指定された列には、一意の特性が含まれている必要があります。ただし、一意の列が必ずしも主キーであるとは限りません。

2.5 CHECK

(1) 機能: 列内のすべての値が次のとおりであることを確認します。一貫した特定の条件。

(2) ステートメント:

create table table name

(column名前 1 属性

check(列名 1>10) not null unique,

列名 2 属性 not null,

カラム名 3 属性);

(3) 注: MySQL データベースにはチェック制限がまだ実装されていません。

2.6 主キー:主キー

(1) 関数: 主キー )テーブル内で一意の値です。

つまり、テーブル内の各行の値を一意に確認するために使用されます。

主キーは、元のデータ内の列または人工列 (元の値と関係のない列) にすることができます。

主キーには 1 つ以上の列を含めることができます。主キーに複数の列が含まれる場合、それは複合キーと呼ばれます。

(2) ステートメント:

MySQL の場合:

create table table Name

(列名 1 属性チェック (列名 1>10) not null unique,

列名 2 属性 not null,

列名 3 属性、

主キー(列名 1));

#Oracle の場合:

#create table テーブル名

#(列名 1 属性チェック(列名前 1>10) null でない一意の

主キー

列名 2 属性が null でない、#​​

##列名3 属性);

#SQL Server の場合:

#create table table name

(列名 1 属性チェック(列名 1>10) not null 一意の主キー、

列名 2 属性 not null、

列名 3 属性);

(3) 既存のテーブル構造を変更して主キーを設定する方法:

MySQL: alter table table name add Primary key (カラム名 2)

Oracle: alter table テーブル名 add 主キー (カラム名 2)

SQL Server: alter table テーブル名 add主キー (列名 2)

(4) 注: alter ステートメントを使用して主キーを追加する前に、次のことを行う必要があります。主キー列が null 以外に設定されているかどうかとして使用されていることを確認します。つまり、主キー列は null であってはなりません。

2.7 外部キー: 外部キー

(1) 機能: 外部キーは 1 つまたは複数のポイントを指します。別の A テーブルの主キー列に。

外部キーの目的は、値の参照整合性を判断することです。つまり、承認された値のみがデータベースに保存されます。

(2) ステートメント:

MySQL の場合:

create table table名前 1

(列名 1 属性チェック(列名 1>10) not null unique、

列名 2 属性 not null、

列名 3 属性、

主キー (列名 1)

#外部キー (列名 2) はテーブル名 2 (主キー列) を参照します );

##Oracle の場合:

create table テーブル名 1

##(列名 1 属性チェック(列名 1>10) not null 一意の主キー、

#列名 2 の属性が null ではありません。

##列名 3 の属性参照テーブル名 2 (主キー列)

);

SQL Server の場合:

#create table テーブル名 1

(列名 1 属性チェック(列名1>10) null ではない一意の主キー、

列名 2 属性が null ではない、

列名 3 属性参照テーブルname 2 (主キー列) );

(3) 既存のテーブル構造を変更して外部キーを設定する方法:

MySQL: alter table テーブル名 1 外部キー (カラム名 2) 参照テーブル名 2 (カラム名 2) を追加

Oracle: alter table テーブル名 1 add(constraint xxx) 外部キー(列名 2) 参照 テーブル名 2(列名 2)

SQL Server: alter table テーブル名 1 add 外部キー(列名 2) 参照テーブル名 2 (列名 2)

2.8 CREATE VIEW: 新しいビュー

(1)機能: ビューテーブルを仮想テーブルとして使用できます。通常のテーブルとは異なり、テーブルには実際にデータが格納されますが、ビューはテーブル上に構築された構造であり、それ自体は実際にデータを格納しません。

(2) ステートメント: create view ビュー名を SQL ステートメントとして;

このうち、SQL ステートメントは、次のようになります: select columns name from table name;

(3) 注: ビューを使用して 2 つのテーブルを接続できます。この場合、ユーザーは結合操作を実行して 2 つの異なるテーブルから検索することなく、1 つのビューテーブルから必要な情報を直接見つけることができます。

2.9 CREATE INDEX: 新しいインデックスの作成

(1) 機能:

インデックスは、表から必要な情報をすばやく見つけるのに役立ちます。

テーブルにインデックスがない場合、データベース システムはレポートされたデータ全体を読み出す必要があります。このプロセスはテーブル スキャンと呼ばれます。

適切なインデックスが存在する場合、データベース システムはまずこのインデックスを使用してテーブル内の必要なデータの場所を見つけ、次にその位置に直接移動してデータを取得します。高速化 データを取得する速度。

インデックス作成は、システム効率の向上に役立ちます。インデックスは 1 つ以上の列をカバーできます。

(2) ステートメント: create Index インデックス名 (列名 1、列名 2);

#2.10 ALTER TABLE: テーブルの変更

(1) 機能: テーブルの作成後、テーブルの構造を変更する必要がある場合があります。たとえば、列の追加、列の削除、列名の変更、列属性の変更などです。

(2) 文: alter テーブル名 カラム名 [変更方法]

[変更方法] 共通は:

#列を追加: 列名 2 属性を追加

#列を削除: 列名 2 を削除

列名の変更: 古い列名、新しい列名、新しい属性の変更

##列属性の変更: 列名 2 の新しい属性を変更

2.11 DROP TABLE: テーブルの削除

(1) 機能: データベースからテーブルをクリアします (テーブルを削除します) )

(2) ステートメント:

drop table テーブル名

##2.12 TRUNCATE TABLE: テーブルの内容をクリア

(1) 関数: テーブル内のすべてのデータをクリアします (テーブルは削除しません)

(2) ステートメント: truncate table テーブル名

2.13 INSERT INTO: コンテンツをテーブルに挿入します

(1)機能: データはフォームに入力されます。

(2) ステートメント:

テーブル名 (列 1、列 2...) の値に挿入します。 (値 1、値 2...)

テーブル名 1 に挿入 (列 1、列 2...) 列名 3、列名を選択テーブル名 2

から 4 2.14 更新: テーブルの内容を更新

(1)機能: テーブル内のデータを変更します。

(2) ステートメント: テーブル名セット列名 1= 新しい値の条件を更新します。

2.15 DELETE FROM: a を削除します。行または複数行

# (1) 機能: 場合によっては、一部のデータをデータベースから直接削除する必要があります。 (1 つ以上の行が削除されます)

(2) ステートメント: delete from table name where 条件

# #3高度な SQL

SQL を使用してより複雑な操作を実行する方法、および SQL を使用してこれらの操作を実行する方法:

Rankingrank

中央値中央値

累積合計累計値

合計に対する合計の割合

合計に対する累積パーセント

3.1 UNION: merge

(1) 機能: 目的は、2 つの SQL ステートメントの結果を結合することです。この観点からすると、union は join に似ています。

ユニオンの制限の 1 つは、2 つの SQL ステートメントによって生成される列が同じ属性タイプである必要があることです。

さらに、

union を使用すると、異なるデータ値のみが表示されます。つまり、結果の値は繰り返されません。個別の を選択します。 (2) ステートメント:

SQL

ステートメント 1

union

##SQL ステートメント 2

(3) 注: SQL ステートメントで (または両方のステートメントを一緒に) select disinct 列名を使用すると、まったく同じ結果が得られる可能性があります。

3.2 UNION ALL

(1) 機能: 2 つの SQL ステートメントの結果をマージすることも目的とします。

違いは、union all では、データ値が重複しているかどうかに関係なく、条件を満たすすべてのデータがリストされることです。結果値は再現可能です。

(2) ステートメント:

SQL ステートメント 1

Union all

SQL ステートメント 2

##3.3 INTERSECT

(1) 機能: Union と同様に、intersect も 2 つの SQL ステートメントによって生成された結果を処理します。

違いは、union は基本的に OR であるのに対し、intersect は AND に似ていることです。つまり、union は結合であり、intersect は結合 です。

(2) ステートメント:

SQL ステートメント 1

intersect

SQL ステートメント 2

(3) 注: intersect コマンドでは、異なる値のみが表示されます。一度リストアップされます。

#3.4 MINUS

(1) 関数:

mius 2 つの SQL ステートメントに適用されることを指します。

まず最初の SQL ステートメントによって生成された結果を見つけて、次にこれらの結果が 2 番目の SQL ステートメントの結果の中にあるかどうかを確認します。存在する場合、最初のデータは削除され、最終結果には表示されません。

2 番目の SQL ステートメントで生成された結果が最初の SQL ステートメントで生成された結果に存在しない場合、このデータも破棄されます。

(減算と似ていますか? 最終的には、最初の SQL ステートメントにのみ現れ、2 番目の SQL ステートメントには現れない項目だけが残ります)

(2) ステートメント:

#SQL ステートメント 1

##minus

SQL ステートメント 2

#(3) 注: マイナス コマンドを使用すると、異なる値は 1 回だけリストされます。

3.5 サブクエリ

(1) 機能: サブクエリ。1 つの SQL ステートメントに別の SQL を入れます。

where 句または Having 句に別の SQL ステートメントを挿入すると、サブクエリが作成されます。

サブクエリの役割は、まずテーブルを結合するために使用できます。次に、サブクエリが 2 つのテーブルを結合する唯一の方法である場合があります。

(2) ステートメント:

select 列名 1 from テーブル名 1 where 列名 2 [比較演算子] ( selectテーブル名 2 から列名 2 where 条件)

このうち、[比較オペランド] は等しいオペランド (=、>=、>、

基本的に、

exists は、内部クエリが結果を生成するかどうかをテストするために使用されます

存在する場合、システムは外側のクエリで SQL を実行します。そうしないと、SQL ステートメント全体で結果が生成されません。

(2) ステートメント:

select columns name 1 from table name 1 where names (select columns name 2 from table name) 2 where 条件)3.7 CASE

(1) 関数: case は if- として使用されます。 then-else のような論理キーワード。

(2) ステートメント:

select

case (列名)

#条件 1 の場合、結果 1

条件 2 の場合、結果 2

#...

#[else result n]

テーブル名から

#終了

(3) 補足: 条件は数値でも式でも構いません。 else 句は必要ありません。

推奨学習: mysql ビデオ チュートリアル

以上がSQL コマンド、テーブル処理、および高度な SQL 知識ポイントの概要について話しましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。