1. SQLの分類
SQL言語は機能的に主に以下の3つに分類されます。
- DDL (データ定義言語、データ定義言語) に準拠したこれらのステートメントは、データベース、テーブル、ビュー、インデックスなどのさまざまなデータベース オブジェクトを定義し、データベースやデータ テーブルの構造の作成、削除、変更にも使用できます。主なステートメントのキーワードには、CREATE、DROP、ALTERなどが含まれます。
- DML (データ操作言語、データ操作言語)。データベース レコードの追加、削除、更新、クエリを実行し、データの整合性をチェックするために使用されます。主なステートメントのキーワードには、INSERT、DELETE、UPDATE、SELECTなどが含まれます。SELECT は SQL 言語の基礎であり、最も重要です。
- DCL (データ制御言語、データ制御言語)。データベース、テーブル、フィールド、ユーザーのアクセス権、
セキュリティ レベルを定義するために使用されます。主なステートメントのキーワードには、GRANT、REVOKE、COMMIT、ROLLBACK、SAVEPOINTなどが含まれます。
2. SQL言語の規則と仕様
- SQL は 1 行以上に記述できます。読みやすくするために、必要に応じてインデントを使用して、句を別の行に記述します。
- 各コマンドは ; または \g または \G で終わります
- キーワードを省略したり、複数行に分割したりすることはできません
句読点について:
- すべての ()、一重引用符、および二重引用符がペアで終わっていることを確認する必要があります。
- 英語は半角入力方式を使用する必要があります
- 文字列型、日時型のデータはシングルクォート(' ')で表現可能
- 列のエイリアスには二重引用符 (" ") を使用してください。省略することはお勧めしません。
3. SQL ケースの仕様 (推奨準拠)
- MySQL は Windows では大文字と小文字が区別されません
- MySQL は Linux 環境では大文字と小文字が区別されます。データベース名、テーブル名、テーブル エイリアス、および変数名は厳密に大文字と小文字が区別されます。キーワード、関数名、列名 (またはフィールド名)、列エイリアス (フィールド エイリアス) は大文字と小文字が区別されます。鈍感な。
- 統一された記述標準を採用することをお勧めします。データベース名、テーブル名、テーブルの別名、フィールド名、フィールドの別名などはすべて小文字で、SQL キーワード、関数名、バインド変数などはすべて大文字です。
4. 注意事項
单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字(--后面必须包含一个空格。)
多行注释:/* 注释文字 */
5. 命名規則(今のところ)
- データベース名とテーブル名は 30 文字を超えてはならず、変数名は 29 文字に制限されます
- A ~ Z、a ~ z、0 ~ 9、_ 合計 63 文字のみを含める必要があります
- データベース名、テーブル名、フィールド名などのオブジェクト名にはスペースを含めないでください
- 同じ MySQL ソフトウェア内でデータベースに同じ名前を付けることはできません。同じライブラリ内でテーブルに同じ名前を付けることはできません。同じテーブル内でフィールドに同じ名前を付けることはできません。
- フィールドが予約語、データベース システム、または一般的なメソッドと競合しないことを確認する必要があります。どうしても使用したい場合は、 SQL文中で
`(強調記号)を使用して囲んでください。 - フィールド名と型の一貫性を保つ フィールドに名前を付け、データ型を指定するときは、必ず一貫性を確保してください。あるテーブルでデータ
型が整数である場合は、別のテーブルの文字に変更しないでください。
例:
#以下两句是一样的,不区分大小写
show databases;
SHOW DATABASES;
#创建表格
#create table student info(...); #表名错误,因为表名有空格
create table student_info(...);
#其中order使用``飘号,因为order和系统关键字或系统函数名等预定义标识符重名了
CREATE TABLE `order`();
select id as "编号", `name` as "姓名" from t_stu; #起别名时,as都可以省略
select id as 编号, `name` as 姓名 from t_stu; #如果字段别名中没有空格,那么可以省略""
select id as 编 号, `name` as 姓 名 from t_stu; #错误,如果字段别名中有空格,那么不能省略""
6. データインポートコマンド
コマンドラインクライアントでmysqlにログインし、sourceコマンドを使用してSQLファイルをインポートします。
mysql> source d:\mysqldb.sql
7. テーブル構造の表示
DESCRIBE または DESC コマンドを使用して、テーブル構造を示します。
DESCRIBE employees;
或
DESC employees;
mysql> desc employees;
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| employee_id | int(6) | NO | PRI | 0 | |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(25) | NO | | NULL | |
| email | varchar(25) | NO | UNI | NULL | |
| phone_number | varchar(20) | YES | | NULL | |
| hire_date | date | NO | | NULL | |
| job_id | varchar(10) | NO | MUL | NULL | |
| salary | double(8,2) | YES | | NULL | |
| commission_pct | double(2,2) | YES | | NULL | |
| manager_id | int(6) | YES | MUL | NULL | |
| department_id | int(4) | YES | MUL | NULL | |
+----------------+-------------+------+-----+---------+-------+
11 rows in set (0.00 sec)
このうち、各フィールドの意味は次のように説明されます。
- フィールド:フィールド名を示します。
- タイプ: フィールドのタイプを示します。バーコードと商品名はテキスト型で、価格は整数型です。
- Null: 列に NULL 値を格納できるかどうかを示します。
- キー: 列にインデックスが付けられているかどうかを示します。PRI は列がテーブルの主キーの一部であることを示し、UNI は列が UNIQUE インデックスの一部であることを示し
、MUL は列内の特定の値が複数回出現できることを示します。 - デフォルト: 列にデフォルト値があるかどうか、デフォルト値がある場合はその値が何かを示します。
- 追加: AUTO_INCREMENT など、取得可能な特定の列に関連する追加情報を示します。