この記事では、データベース言語 SQL に関する関連知識を提供します。主に SQL 命令、テーブル処理、および SQL の高度なスキルに関連する問題を紹介します。皆様のお役に立てれば幸いです。
# 推奨学習: ##1. SQL コマンド一般的な SQL 命令には次のものが含まれます。
1.1 SELECT: 選択
テーブルとは何ですか?テーブルは、データを保存することを目的としたデータベース内の構造です。
(2) ステートメント:
select カラム名 1、カラム名 2... from テーブル名1.2 DISTINCT: 区別 (選択)
(2) ステートメント:
テーブル名から個別の列名を選択します1.3 WHERE: クエリあり条件
( 2) ステートメントを使用します。
select カラム名 from table name where 条件1.4 AND OR: AND、OR (接続条件)
#(2) ステートメント:
単純条件 1 および|または単純条件 2 のテーブル名から列名を選択します...##1.5 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 で調整)
(2) ステートメント: select columns name from table name where columns name between value 1 and value 2
1.7 LIKE: 検索モードあり (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: ソート
(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) 関数: データベースの多くの内容は数値の形で存在します。これらの数値に対して操作を実行する場合、いくつかの定義された関数を通じて直接実行できます。 # (2) 共通関数: ##AVG: 平均値 #COUNT: 数 MAX: 最大値 : 最小値 : 合計 1.10 COUNT: count (2) ステートメント: (3) 注: 1.11 GROUP BY: 分類 関数を含む列名に加えて、それを group by 句 に配置する必要があります。 (2) ステートメント: select 列名 1 sum(列名 2) from テーブル名グループ by 列名 1 having 句は SQL 文の最後にあります。 (2) ステートメント: (3) 注: 関数列のみが選択されている場合は、group by 句は必要ありません。 1.13 ALIAS: エイリアス(テーブルまたはカラム用) 列名のエイリアス: これは、SQL によって生成された結果を読みやすくするためのものです。 テーブル エイリアス: from 句のテーブル名の後にスペースを残し、使用するテーブル エイリアスをリストします。 つまり、これら 2 つのエイリアスは、置換されるテーブル名または列名の後に配置され、テーブル名または列名とスペースで区切られます。 (2) ステートメント: Column alias from table nameTable alias (3) 注: 列のエイリアスは、列名の直後だけでなく、... ... where 句はテーブル接続において重要な役割を果たします。 where の使用を誤ると、デカルト結合 (2 つのテーブルの 2 行ごとのすべての可能な組み合わせ) が発生する可能性があります。 (1) 機能: 私たちがよく呼ぶ左結合は内部結合です。内部接続の場合、データが選択される前に、両方のテーブルが同じ値を持つ必要があります。 値が別のテーブルに存在するかどうかに関係なく、テーブル内のすべての情報をリストしたい場合。現時点では、外部接続 (SQL OUTER JOIN) が必要です。 (2) ステートメント: 外部接続の構文はデータベースによって異なります。たとえば、Oracle では、where 句ですべてのデータを選択するテーブルの後に ( ) を追加して、このテーブル内のすべてのデータが必要であることを示します。 (3) 注: 2 番目のテーブルに相対データがない場合、SQL は NULL を返します。 (1) 機能: 異なる列名で得られた結果を連結します。 。各データベースによって提供されるメソッドは異なる場合があります: #MySQL: CONCAT() SQL サーバー: (2) ステートメント: concat(文字 1、文字 2、文字 3...) (3) 注: Oracle の concat() では、パラメータは 2 つだけ許可されます。つまり、一度に結合できる文字列は 2 つだけです。ただし、 || を使用すると、複数の文字列を一度に連結できます。
#データベースが異なると、この関数の名前は異なります: MySQL: substr(), substring() Oracle: substr() SQL サーバー: substring() (2) ステートメント: は、pos 位置から始まる文字を選択することを意味します。この構文は SQL Server には適用されません。 は、str の pos 位置から開始して、長さ len の文字列を選択することを意味します。 データベースが異なるとメソッドが異なります: MySQL: トリム()、rtrim()、ltrim() #Oracle: rtrim()、ltrim() SQL サーバー: rtrim()、ltrim() #(2) ステートメント: trim([[位置] [削除する文字列] from] string) (3) 注: If If there is no削除する文字列のリスト。空白がある場合は空白が削除されます。 2. テーブル処理 2.1 CREATE TABLE: テーブルの作成
create table テーブル名 # # (列名 1 属性、 列名 2 属性、 ## 列名 3 属性); (1) 機能: どのデータをテーブルに保存できるか、または借用できるかを指定するために使用されます。後で alter table ステートメントによって指定されます。 (2) 一般的な制限は次のとおりです: not null unique check 主キー 外部キー ## (1) 効果: 列の値を許可しない場合null 値を持ちますが、制限が適用されます。列の値に null を含めることが許可されていない場合は、その列に not null を指定する必要があります。 (2) ステートメント: create table table name (column名前 1 属性 not null、 列名 2 属性 not null、
(2) ステートメント:
(column名前 1 属性は null ではありません unique、 列名 3 属性は null );
主キーとして指定された列には、一意の特性が含まれている必要があります。ただし、一意の列が必ずしも主キーであるとは限りません。 (2) ステートメント:
(column名前 1 属性 check(列名 1>10) not null unique, カラム名 3 属性);
(1) 関数: 主キー )テーブル内で一意の値です。 つまり、テーブル内の各行の値を一意に確認するために使用されます。 主キーは、元のデータ内の列または人工列 (元の値と関係のない列) にすることができます。 主キーには 1 つ以上の列を含めることができます。主キーに複数の列が含まれる場合、それは複合キーと呼ばれます。 (2) ステートメント: MySQL の場合: create table table Name (列名 1 属性チェック (列名 1>10) not null unique, 列名 2 属性 not null, 列名 3 属性、 主キー(列名 1)); #create table テーブル名 #(列名 1 属性チェック(列名前 1>10) null でない一意の 、列名 2 属性が null でない、# ##列名3 属性); #SQL Server の場合: #create table table name 列名 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 であってはなりません。 (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 #列名 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: 新しいビュー (2) ステートメント: create view ビュー名を SQL ステートメントとして; このうち、SQL ステートメントは、次のようになります: select columns name from table name; (3) 注: ビューを使用して 2 つのテーブルを接続できます。この場合、ユーザーは結合操作を実行して 2 つの異なるテーブルから検索することなく、1 つのビューテーブルから必要な情報を直接見つけることができます。 2.9 CREATE INDEX: 新しいインデックスの作成 インデックスは、表から必要な情報をすばやく見つけるのに役立ちます。 テーブルにインデックスがない場合、データベース システムはレポートされたデータ全体を読み出す必要があります。このプロセスはテーブル スキャンと呼ばれます。 適切なインデックスが存在する場合、データベース システムはまずこのインデックスを使用してテーブル内の必要なデータの場所を見つけ、次にその位置に直接移動してデータを取得します。高速化 データを取得する速度。 インデックス作成は、システム効率の向上に役立ちます。インデックスは 1 つ以上の列をカバーできます。 (2) ステートメント: create Index インデックス名 (列名 1、列名 2); (1) 機能: テーブルの作成後、テーブルの構造を変更する必要がある場合があります。たとえば、列の追加、列の削除、列名の変更、列属性の変更などです。 (2) 文: alter テーブル名 カラム名 [変更方法] [変更方法] 共通は: #列を追加: 列名 2 属性を追加 ##列属性の変更: 列名 2 の新しい属性を変更
(2) ステートメント: ##2.12 TRUNCATE TABLE: テーブルの内容をクリア (2) ステートメント: truncate table テーブル名 2.13 INSERT INTO: コンテンツをテーブルに挿入します (2) ステートメント: テーブル名 (列 1、列 2...) の値に挿入します。 (値 1、値 2...) テーブル名 1 に挿入 (列 1、列 2...) 列名 3、列名を選択テーブル名 2 から 4 2.14 更新: テーブルの内容を更新 (2) ステートメント: テーブル名セット列名 1= 新しい値の条件を更新します。 2.15 DELETE FROM: a を削除します。行または複数行 (2) ステートメント: delete from table name where 条件 # #3高度な SQL Rankingrank 中央値中央値 累積合計累計値 合計に対する合計の割合 合計に対する累積パーセント 3.1 UNION: merge ユニオンの制限の 1 つは、2 つの SQL ステートメントによって生成される列が同じ属性タイプである必要があることです。 さらに、 union を使用すると、異なるデータ値のみが表示されます。つまり、結果の値は繰り返されません。個別の を選択します。 (2) ステートメント: SQL union ##SQL ステートメント 2 (3) 注: SQL ステートメントで (または両方のステートメントを一緒に) select disinct 列名を使用すると、まったく同じ結果が得られる可能性があります。 (1) 機能: 2 つの SQL ステートメントの結果をマージすることも目的とします。 違いは、union all では、データ値が重複しているかどうかに関係なく、条件を満たすすべてのデータがリストされることです。結果値は再現可能です。 (2) ステートメント: SQL ステートメント 1 Union all SQL ステートメント 2 (1) 機能: Union と同様に、intersect も 2 つの SQL ステートメントによって生成された結果を処理します。 違いは、union は基本的に OR であるのに対し、intersect は AND に似ていることです。つまり、union は結合であり、intersect は結合 です。 (2) ステートメント: SQL ステートメント 1 intersect SQL ステートメント 2 (3) 注: intersect コマンドでは、異なる値のみが表示されます。一度リストアップされます。 (1) 関数: mius 2 つの SQL ステートメントに適用されることを指します。 まず最初の SQL ステートメントによって生成された結果を見つけて、次にこれらの結果が 2 番目の SQL ステートメントの結果の中にあるかどうかを確認します。存在する場合、最初のデータは削除され、最終結果には表示されません。 2 番目の SQL ステートメントで生成された結果が最初の SQL ステートメントで生成された結果に存在しない場合、このデータも破棄されます。 (減算と似ていますか? 最終的には、最初の SQL ステートメントにのみ現れ、2 番目の SQL ステートメントには現れない項目だけが残ります) (2) ステートメント: ##minus SQL ステートメント 2 #(3) 注: マイナス コマンドを使用すると、異なる値は 1 回だけリストされます。 3.5 サブクエリ where 句または Having 句に別の SQL ステートメントを挿入すると、サブクエリが作成されます。 サブクエリの役割は、まずテーブルを結合するために使用できます。次に、サブクエリが 2 つのテーブルを結合する唯一の方法である場合があります。 (2) ステートメント: select 列名 1 from テーブル名 1 where 列名 2 [比較演算子] ( selectテーブル名 2 から列名 2 where 条件) このうち、[比較オペランド] は等しいオペランド (=、>=、>、 基本的に、 。 存在する場合、システムは外側のクエリで 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 (2) ステートメント: select #条件 1 の場合、結果 1 条件 2 の場合、結果 2 #[else result n] テーブル名から #終了 (3) 補足: 条件は数値でも式でも構いません。 else 句は必要ありません。 推奨学習: mysql ビデオ チュートリアル1.9 関数
select 関数名 (列名) from テーブル名
( 1 ) 機能: Count、テーブル内で見つかった適格なエントリの総数をカウントします。
(1) 機能: 複数の列を選択する場合name また、列名の少なくとも 1 つに関数のアプリケーションが含まれている場合は、group by コマンドを使用する必要があります。この場合、他のすべての列名でグループ化されていることを確認する必要があります。つまり、
(1) 関数: 関数が生成する値の条件を設定します。 。
(1) 関数: テーブル用の関数および列のエイリアス。
(1) 関数: 2 つのテーブルを介して同じ列が 2 つのテーブルを接続します。
1.15 外部接続
1.16 CONCATENATE: 連結文字
1.17 SUBSTRING: インターセプト文字
(1) 機能: SQL の部分文字列関数を使用して Part を取得します。データの列の。
(1) 機能: trim() 関数は、文字列内の文字の先頭または末尾を削除するために使用されます。最も一般的なのは、先頭または末尾の空白を削除することです。
テーブル処理手順では、SQL を使用してデータベース内の各テーブルを処理し、追加、削除、変更する方法を参照します。 、など。
(1) 機能: データベースにテーブルを作成します
##(2) ステートメント:
2.2 CONSTRAINT: 制限
2.3 NOT NULL: 列の値を NULL 以外に制限する
2.4 UNIQUE: 列の値を一意になるように制限します
( 1) 機能: 列内の値が異なることを確認します。 create table table name
(3) 注: 2.5 CHECK
(1) 機能: 列内のすべての値が次のとおりであることを確認します。一貫した特定の条件。 create table table name
(3) 注: MySQL データベースにはチェック制限がまだ実装されていません。 2.6 主キー:主キー
#Oracle の場合:
(列名 1 属性チェック(列名 1>10) not null 一意の主キー、
2.7 外部キー: 外部キー
(1)機能: ビューテーブルを仮想テーブルとして使用できます。通常のテーブルとは異なり、テーブルには実際にデータが格納されますが、ビューはテーブル上に構築された構造であり、それ自体は実際にデータを格納しません。
(1) 機能:
#2.10 ALTER TABLE: テーブルの変更
2.11 DROP TABLE: テーブルの削除
(1) 機能: データベースからテーブルをクリアします (テーブルを削除します) )
(1) 関数: テーブル内のすべてのデータをクリアします (テーブルは削除しません)
(1)機能: データはフォームに入力されます。
(1)機能: テーブル内のデータを変更します。
# (1) 機能: 場合によっては、一部のデータをデータベースから直接削除する必要があります。 (1 つ以上の行が削除されます)
SQL を使用してより複雑な操作を実行する方法、および SQL を使用してこれらの操作を実行する方法:
(1) 機能: 目的は、2 つの SQL ステートメントの結果を結合することです。この観点からすると、union は join に似ています。
ステートメント 1
3.2 UNION ALL
##3.3 INTERSECT
#3.4 MINUS
#SQL ステートメント 1
(1) 機能: サブクエリ。1 つの SQL ステートメントに別の SQL を入れます。
(1) 関数: case は if- として使用されます。 then-else のような論理キーワード。
以上がSQL コマンド、テーブル処理、および高度な SQL 知識ポイントの概要について話しましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。