ホームページ >データベース >mysql チュートリアル >MySQL SQL 構文と SQL 解析シーケンスのソース コード分析
SQL (Structured Query Language) は、[リレーショナル データベース] にアクセスするための標準言語として標準です。 Oracle、DB2、SQL Server、PostgreSQL、MySQL などの多くのデータベース製品がサポートしています。過去数年間、NoSQL は当初 SQL を必要としないと主張していましたが、最終的には SQL テクノロジと互換性を持たせるために「Not Only SQL」に修正する必要がありました。
現在の一般的なバージョンは SQL 92 標準です。 MySql を含む他のデータベースも、MySQL の limit キーワードなど、SQL 92 または SQL 99 の標準に基づいて独自の SQL ステートメントの一部を拡張しています。
DDL
データベース オブジェクト、データベース、テーブル、列などを定義するために使用されるデータ定義言語。作成、変更、削除など。
DML
データ操作言語は、データベース内のテーブルのレコードを更新するために使用されます。挿入、更新、削除など。
DCL
データ制御言語は、データベースのアクセス許可、セキュリティ レベルなどを定義するために使用されます。 Grant など。
DQL:
クエリに使用されるデータ クエリ言語。 select、from、where など。
# 语法顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition> ORDER BY <order_by_condition> LIMIT <limit_number> # 解析顺序 FROM <left_table> ON <join_condition> <join_type> JOIN <right_table> -- 这一步和上一步,会循环执行 WHERE <where_condition> -- 这一步会循环执行,多个条件从左往右 GROUP BY <group_by_list> HAVING <having_condition> SELECT -- 分组之后才执行SELECT DISTINCT <select_list> ORDER BY <order_by_condition> LIMIT <limit_number> -- 这一步是MySQL独有的语法,前面都是SQL92标准
左のテーブルと右のテーブルを計算します。 FROMデカルト積、仮想テーブル VT1
select * from seller join product;##ON 仮想テーブル VT1 を生成した後、ON キーワードでフィルタリングします。 match
select * from seller s join product p on s.id = p.id;#OUTER JOIN
select * from seller s right join product p on s.id = p.id;
FROM 句に 3 つ以上のテーブルが含まれている場合、前の結合接続によって生成された結果 VT3 と次のテーブルに対して上記の手順が繰り返されます
WHERE
GROUP BY
-- mysql 8 默认开启了 only_full_group_by select version(),@@sql_mode; -- 需要把这个选项关掉, set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; -- 后执行group by 正常 select * from user group by name;
HAVING
SELECT
DISTINCT
-- 下面无效 select id, distinct name from user; -- 下面有效 select distinct name from user;
DISTINCT の後に複数の列を追加する場合、スプライシング複数の列をまとめて重複を削除します
#特定の列に基づいて重複を削除し、データの行全体を表示したい場合は、GROUP BY## を使用できます。 # ORDER BY
Sort
Paging
以上がMySQL SQL 構文と SQL 解析シーケンスのソース コード分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。