MYSQLテーブルの包括的な概要

MYSQLテーブルの包括的な概要

1. テーブルを作成する

1.1. テーブルを作成するための基本構文

CREATE TABLE テーブル名 (column_name_1 column_type_1 制約、
column_name_2 column_type_2 制約、…)


column_nameは列の名前です
column_typeは列のデータ型です
contraintsこの列の制約条件です

1.1.1. シンプルなテーブルを作成する

mysql> テーブル orders を作成します (ordername varchar(10),createtime date,ordermoney decimal(10,2),ordernumber int(2));
クエリは正常、影響を受けた行は 0 行 (0.23 秒)

1.1.2. 作成テーブル定義の表示

構造定義:

mysql> desc 注文;
+-------------+---------------+------+-----+--------+-------+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+-------------+---------------+------+-----+--------+-------+
| 注文名 | varchar(10) | はい | | NULL | |
| 作成時刻 | 日付 | はい | | NULL | |
| ordermoney | 小数点(10,2) | はい | | NULL | |
| 注文番号 | int(2) | YES | | NULL | |
+-------------+---------------+------+-----+--------+-------+
セット内の 4 行 (0.00 秒)

表の詳細な定義:

詳細なテーブル定義を表示します。

mysql> show テーブル orders \G;
************************** 1. 行 ****************************
       表: 注文
テーブルの作成: CREATE TABLE `orders` (
  `ordername` varchar(10) デフォルト NULL,
  `createtime` 日付 デフォルト NULL、
  `ordermoney` 小数点(10,2) デフォルト NULL,
  `ordernumber` int(2) デフォルト NULL
) エンジン=InnoDB デフォルト文字セット=latin1
セット内の 1 行 (0.00 秒)

エラー:
クエリが指定されていません


このことから、テーブルのENGINE (ストレージエンジン)はInnoDBであることがわかります。

CHARSETLatin1です

\G 」オプションを使用すると、レコードをフィールドに従って垂直に配置できるため、より長いコンテンツを含むレコードを簡単に表示できます。

2. テーブルを削除する

注文:

DROP TABLE テーブル名


注文を削除:

mysql> テーブル注文を削除する
    -> ;
クエリは正常、影響を受けた行は 0 行 (0.14 秒)


3. テーブルを変更する

3.1、テーブルタイプの変更コマンド

ALTER TABLE テーブル名 MODIFY [列] 列定義 [FIRST | AFTER 列名]


例: ordersテーブルのnameフィールド定義を変更し、 varchar(10)varchar(20)に変更します。

mysql> テーブル orders を変更して ordername varchar(20);
クエリは正常、影響を受けた行は 0 行 (0.11 秒)
レコード: 0 重複: 0 警告: 0

mysql> desc 注文;
+-------------+---------------+------+-----+--------+-------+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+-------------+---------------+------+-----+--------+-------+
| 注文名 | varchar(20) | はい | | NULL | |
| 作成時刻 | 日付 | はい | | NULL | |
| ordermoney | 小数点(10,2) | はい | | NULL | |
| 注文番号 | int(2) | YES | | NULL | |
+-------------+---------------+------+-----+--------+-------+
セット内の 4 行 (0.00 秒)

3.2. フィールド名変更​​コマンド

ALTER TABLE テーブル名 CHANGE [列] 古い列名 列定義
[FIRST|AFTER col_name]


例: ordersテーブルのordernumberordernumbersに変更する

mysql> テーブル orders を変更し、列 ordernumber ordernumbers int(4);
クエリは正常、影響を受けた行は 0 行 (0.06 秒)
レコード: 0 重複: 0 警告: 0

mysql> desc 注文;
+--------------+--------------+-----+-----+---------+-------+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+--------------+--------------+-----+-----+--------+-------+
| 注文名 | varchar(20) | はい | | NULL | |
| 作成時刻 | 日付 | はい | | NULL | |
| ordermoney | 小数点(10,2) | はい | | NULL | |
| 順序番号 | int(4) | YES | | NULL | |
+--------------+--------------+-----+-----+---------+-------+
セット内の 4 行 (0.00 秒)


特記事項: change と modify はどちらもテーブルの定義を変更できます。違いは、change 後に列名を 2 回記述する必要があることです。これは不便です。しかし、change の利点は、列名を変更できるが、modify では変更できないことです。

3.3. テーブルフィールドの追加コマンド

ALTER TABLE テーブル名 ADD [COLUMN] 列定義 [FIRST | AFTER 列名]


例: varchar(3)型の新しいフィールドusername ordersテーブルに追加します。

mysql> テーブル orders を変更し、列 username varchar(30);
クエリは正常、影響を受けた行は 0 行 (0.39 秒)
レコード: 0 重複: 0 警告: 0

mysql> desc 注文;
+-------------+---------------+------+-----+--------+-------+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+-------------+---------------+------+-----+--------+-------+
| 注文名 | varchar(20) | はい | | NULL | |
| 作成時刻 | 日付 | はい | | NULL | |
| ordermoney | 小数点(10,2) | はい | | NULL | |
| 注文番号 | int(2) | YES | | NULL | |
| ユーザー名 | varchar(30) | はい | | NULL | |
+-------------+---------------+------+-----+--------+-------+
セット内の行数は 5 です (0.00 秒)

3.4. テーブル列フィールドの削除コマンド

ALTER TABLE テーブル名 DROP [列] col_name


例: ordersテーブルからusernameフィールドを削除します。

mysql> テーブル order を変更し、列 username を削除します。
クエリは正常、影響を受けた行は 0 行 (0.53 秒)
レコード: 0 重複: 0 警告: 0

mysql> desc 注文;
+-------------+---------------+------+-----+--------+-------+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+-------------+---------------+------+-----+--------+-------+
| 注文名 | varchar(20) | はい | | NULL | |
| 作成時刻 | 日付 | はい | | NULL | |
| ordermoney | 小数点(10,2) | はい | | NULL | |
| 注文番号 | int(2) | YES | | NULL | |
+-------------+---------------+------+-----+--------+-------+
セット内の 4 行 (0.00 秒)

3.5. テーブル名変更コマンド

ALTER TABLE テーブル名 RENAME [TO] 新しいテーブル名


例:テーブル名ordersgoodsorders変更されます

mysql> テーブル orders を変更し、 goodsorders の名前を変更します。
クエリは正常、影響を受けた行は 0 行 (0.16 秒)

mysql> desc 注文;
エラー 1146 (42S02): テーブル 'ordermanage.orders' が存在しません
mysql> desc goodsorders;
+--------------+--------------+-----+-----+---------+-------+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+--------------+--------------+-----+-----+--------+-------+
| 注文名 | varchar(20) | はい | | NULL | |
| 作成時刻 | 日付 | はい | | NULL | |
| ordermoney | 小数点(10,2) | はい | | NULL | |
| 順序番号 | int(4) | YES | | NULL | |
+--------------+--------------+-----+-----+---------+-------+
セット内の 4 行 (0.00 秒)
 


4. DMLステートメント

insertselectupdatedelete

4.1. レコード挿入コマンド

テーブル名 (フィールド1、フィールド2、...フィールドn) に値 (値1、値2、...値n) を挿入します。


例: goodsordersテーブルにordernameを挿入します。ordername はzhangcreatetime2021-05-12ordermoney100.00ordernumbers1です。

mysql> goodsorders (ordername,createtime,ordermoney,ordernumbers) に値を挿入します ('zhang','2021-05-12',100.00,1);
クエリは正常、1 行が影響を受けました (0.03 秒)


(field1, field2, ... fieldn)の部分を省略することもできます。

mysql> goodsorders に値を挿入します ('zhang1'、'2021-05-12'、1001.00、11)。
クエリは正常、1 行が影響を受けました (0.05 秒)

4.2. データ挿入コマンドの表示

4.2.1、すべてを照会する

SELECT * FROM テーブル名 [WHERE 条件]


例: goodsordersに挿入されたすべてのデータを表示する

mysql> goodsorders から * を選択します。
+-----------+------------+-------------+--------------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 |
+-----------+------------+-------------+--------------+
| 張 | 2021-05-12 | 100.00 | 1 |
| zhang1 | 2021-05-12 | 1001.00 | 11 |
+-----------+------------+-------------+--------------+
セット内の 2 行 (0.00 秒)


「*」はすべてのレコードを選択する必要があることを示します。

4.2.2. ユニークレコードコマンドキーワードのクエリ

明確な


例:非繰り返し作成時間 (createtime) のデータを非goodsordersでクエリする

mysql> goodsorders から * を選択します。
+-----------+------------+-------------+--------------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 |
+-----------+------------+-------------+--------------+
| 張 | 2021-03-11 | 50.00 | 1 |
| li | 2020-05-12 | 70.00 | 15 |
| li | 2020-03-12 | 70.00 | 15 |
| li | 2020-03-11 | 70.00 | 15 |
| li | 2021-03-11 | 70.00 | 15 |
+-----------+------------+-------------+--------------+
セット内の行数は 5 です (0.00 秒)

mysql> goodsorders から別の createtime を選択します。
+------------+
| 作成時間 |
+------------+
| 2021-03-11 |
| 2020-05-12 |
| 2020-03-12 |
| 2020-03-11 |
+------------+
セット内の 4 行 (0.00 秒)

このことから、重複した時間データ2021-03-11が削除されたことがわかります。

4.2.3. 複数条件クエリキーワード

whereの後の条件はフィールドの '=' 比較であり、>、<、>=、<=、!= などの比較演算子も使用できます。
また、 or や and などの論理演算子を使用して、複数の条件間で複数条件の結合クエリを実行することもできます。

例: ordername='li'かつcreatetime2020-03-11である非goodsordersを照会する

mysql> select * from goodsorders where ordername='li'and createtime ='2020-03-11';
+-----------+------------+-------------+--------------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 |
+-----------+------------+-------------+--------------+
| li | 2020-03-11 | 70.00 | 15 |
+-----------+------------+-------------+--------------+
セット内の 1 行 (0.00 秒)

4.2.4、クエリ名の並べ替え

SELECT * FROM テーブル名 [WHERE CONDITION] [ORDER BY フィールド1 [DESC|ASC] , フィールド2 
[DESC|ASC]、...フィールドn [DESC|ASC]]


例: goodsordersテーブルのレコードを作成時間順に並べ替える

mysql> select * from goodsorders order by createtime;
+-----------+------------+-------------+--------------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 |
+-----------+------------+-------------+--------------+
| li | 2020-03-11 | 70.00 | 15 |
| li | 2020-03-12 | 70.00 | 15 |
| li | 2020-05-12 | 70.00 | 15 |
| 張 | 2021-03-11 | 50.00 | 1 |
| li | 2021-03-11 | 70.00 | 15 |
+-----------+------------+-------------+--------------+
セット内の 5 行 (0.01 秒)

4.2.5. 指示の全部ではなく一部を表示する

SELECT ... [LIMIT offset_start, row_count]


offset_startレコードの開始オフセットを示します。
row_count表示される行数を示します

例 1 : goodsordersテーブルの最初の 3 つのレコードをcreatetiemでソートして表示します。

mysql> select * from goodsorders order by createtime limit 3;
+-----------+------------+-------------+--------------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 |
+-----------+------------+-------------+--------------+
| li | 2020-03-11 | 70.00 | 15 |
| li | 2020-03-12 | 70.00 | 15 |
| li | 2020-05-12 | 70.00 | 15 |
+-----------+------------+-------------+--------------+
セット内の 3 行 (0.00 秒)


例 2: goodsordersテーブルの 2 番目のレコードからcreatetiemでソートされた 3 つのレコードを表示する場合:

mysql> select * from goodsorders order by createtime limit 2,3;
+-----------+------------+-------------+--------------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 |
+-----------+------------+-------------+--------------+
| li | 2020-05-12 | 70.00 | 15 |
| 張 | 2021-03-11 | 50.00 | 1 |
| li | 2021-03-11 | 70.00 | 15 |
+-----------+------------+-------------+--------------+
セット内の 3 行 (0.00 秒)

4.2.6. 統計、集計命令

SELECT [フィールド1,フィールド2,…フィールドn] fun_name 
テーブル名から
[WHERE 条件]
[GROUP BY フィールド1、フィールド2、... フィールドn
[ロールアップ付き]
[where_contition がある]


パラメータの説明:

  • 1. fun_name 、実行する集計操作、つまり集計関数を示します。よく使用されるのは、 sum (合計)、 count (*)(レコード数)、 max (最大値)、 min (最小値)です。
  • 2. GROUP BYキーワードは、分類して集計するフィールドを示します。たとえば、部門別に従業員数をカウントする場合は、 group by の後に部門を記述する必要があります。
  • 3. WITH ROLLUP分類集計後に結果を再集計するかどうかを示すオプションの構文です。
  • 4. HAVINGキーワードは、分類された結果が条件によってさらにフィルタリングされることを示します。

注: having と where の違いは、having は集計後に結果をフィルタリングするのに対し、where は集計前にレコードをフィルタリングすることです。ロジックが許す場合は、where を使用して最初にレコードをフィルタリングする必要があります。これにより、結果セットが削減されるため、集計の効率が大幅に向上します。最後に、ロジックに基づいて、さらにフィルタリングするために having を使用するかどうかを確認できます。

例 1: goodsordersテーブル内のレコードの合計数をクエリしてカウントする

mysql> goodsordersからcount(1)を選択します。
+----------+
| カウント(1) |
+----------+
| 5 |
+----------+
セット内の 1 行 (0.00 秒)


例2:これを基に、作成日( createtime )別に統計をグループ化します。

mysql> goodsorders group by createtimeからcreatetime、count(1)を選択します。
+------------+-----------+
| 作成時間 | カウント(1) |
+------------+-----------+
| 2020-03-11 | 1 |
| 2020-03-12 | 1 |
| 2020-05-12 | 1 |
| 2021-03-11 | 2 |
+------------+-----------+
セット内の 4 行 (0.00 秒)


例3:これを基に、作成日( cretetime )でグループ化してカウントし、合計数を計算する必要があります。

mysql> collectcreatetime,count(1) from goodsorders group by createtime with rollup;
+------------+-----------+
| 作成時間 | カウント(1) |
+------------+-----------+
| 2020-03-11 | 1 |
| 2020-03-12 | 1 |
| 2020-05-12 | 1 |
| 2021-03-11 | 2 |
| NULL | 5 |
+------------+-----------+
セット内の 5 行 (0.02 秒)


最後の行にnullで表示される数字が合計数です。

例4: createtime日(createtime)でグループ化してカウントし、その数が1より大きい場合

mysql> goodsorders group から createtime,count(1) を選択します。createtime で count(1)>1 を持ちます。
+------------+-----------+
| 作成時間 | カウント(1) |
+------------+-----------+
| 2021-03-11 | 2 |
+------------+-----------+
セット内の 1 行 (0.00 秒)


例5: goodsordersテーブルの注文金額( ordermoney )の合計金額、最小金額、最大金額を照会する

mysql> goodsorders から * を選択します。
+-----------+------------+-------------+--------------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 |
+-----------+------------+-------------+--------------+
| 張 | 2021-03-11 | 50.00 | 1 |
| li | 2020-05-12 | 70.00 | 15 |
| li | 2020-03-12 | 70.00 | 15 |
| li | 2020-03-11 | 70.00 | 15 |
| li | 2021-03-11 | 70.00 | 15 |
+-----------+------------+-------------+--------------+
セット内の行数は 5 です (0.00 秒)

mysql> goodsorders から sum(ordermoney),max(ordermoney),min(ordermoney) を選択します。
+-+-----------------+-----------------+
| 合計(注文金額) | 最大(注文金額) | 最小(注文金額) |
+-+-----------------+-----------------+
| 330.00 | 70.00 | 50.00 |
+-+-----------------+-----------------+
セット内の1行(0.02秒)

4.2.7. テーブル結合

  • 1.左結合:右テーブルと一致しないレコードも含め、左テーブルのすべてのレコードを含めます。キーコマンド: 左left join
  • 2.右結合:左テーブルと一致しないレコードも含め、右テーブルのすべてのレコードを含めます。関連付け命令: right join

例1:ここで別のユーザーテーブル( member )を作成し、 goodordersを使用して左結合を実行し、関連するユーザーテーブル情報を照会します。

mysql> メンバーから * を選択します。
+------+-------------+
| ID | メンバー名 |
+------+-------------+
| 15 | 張 |
| 1 | 李 |
| 13 | リス |
+------+-------------+
セット内の 3 行 (0.00 秒)

mysql> goodsorders から * を選択します。
+-----------+-------------+------------+--------------+-----------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 | メンバー ID |
+-----------+-------------+------------+--------------+-----------+
| 張 | 2021-03-11 | 50.00 | 1 | 15 |
| li | 2020-05-12 | 70.00 | 15 | 1 |
| li | 2020-03-12 | 70.00 | 15 | 1 |
| li | 2020-03-11 | 70.00 | 15 | 3 |
| li | 2021-03-11 | 70.00 | 15 | 1 |
+-----------+-------------+------------+--------------+-----------+
セット内の行数は 5 です (0.00 秒)

mysql> goodsorders から * を選択し、goodsorders.memberid = member.id でメンバーを結合します。
+-----------+------------+-------------+--------------+------------+------------+
| 注文名 | 作成時間 | 注文金額 | 注文番号 | メンバーID | ID | メンバー名 |
+-----------+------------+-------------+--------------+------------+------------+
| 張 | 2021-03-11 | 50.00 | 1 | 15 | 15 | 張 |
| li | 2020-05-12 | 70.00 | 15 | 1 | 1 | li |
| li | 2020-03-12 | 70.00 | 15 | 1 | 1 | li |
| li | 2021-03-11 | 70.00 | 15 | 1 | 1 | li |
| li | 2020-03-11 | 70.00 | 15 | 3 | NULL | NULL |
+-----------+------------+-------------+--------------+------------+------------+
セット内の行数は 5 です (0.00 秒)

例 2 : membergoodsordersのデータは変更されません。正しい結合クエリと結果を見てみましょう。

mysql> goodsorders から * を選択し、goodsorders.memberid = member.id でメンバーを右結合します。
+-----------+------------+-------------+--------------+------------+------------+
| 注文名 | 作成時間 | 注文金額 | 注文番号 | メンバーID | ID | メンバー名 |
+-----------+------------+-------------+--------------+------------+------------+
| 張 | 2021-03-11 | 50.00 | 1 | 15 | 15 | 張 |
| li | 2020-05-12 | 70.00 | 15 | 1 | 1 | li |
| li | 2020-03-12 | 70.00 | 15 | 1 | 1 | li |
| li | 2021-03-11 | 70.00 | 15 | 1 | 1 | li |
| NULL | NULL | NULL | NULL | NULL | 13 | リス |
+-----------+------------+-------------+--------------+------------+------------+
セット内の行数は 5 です (0.00 秒)

ここで逆転が発生し、左側のgoodsordersテーブルのデータ エントリが空になります。

4.2.8. サブクエリ、関連キーワード

主にinnot in=!=existsnot existsなどが含まれます。

例: goodsordersテーブルから、members テーブルのすべてのユーザーのレコードをクエリする

mysql> メンバーから * を選択します。
+------+-------------+
| ID | メンバー名 |
+------+-------------+
| 15 | 張 |
| 1 | 李 |
| 13 | リス |
+------+-------------+
セット内の 3 行 (0.00 秒)

mysql> goodsorders から * を選択します。
+-----------+-------------+------------+--------------+-----------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 | メンバー ID |
+-----------+-------------+------------+--------------+-----------+
| 張 | 2021-03-11 | 50.00 | 1 | 15 |
| li | 2020-05-12 | 70.00 | 15 | 1 |
| li | 2020-03-12 | 70.00 | 15 | 1 |
| li | 2020-03-11 | 70.00 | 15 | 3 |
| li | 2021-03-11 | 70.00 | 15 | 1 |
+-----------+-------------+------------+--------------+-----------+
セット内の行数は 5 です (0.00 秒)

mysql> select * from goodsorders where memberid in(select id from member);
+-----------+-------------+------------+--------------+-----------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 | メンバー ID |
+-----------+-------------+------------+--------------+-----------+
| 張 | 2021-03-11 | 50.00 | 1 | 15 |
| li | 2020-05-12 | 70.00 | 15 | 1 |
| li | 2020-03-12 | 70.00 | 15 | 1 |
| li | 2021-03-11 | 70.00 | 15 | 1 |
+-----------+-------------+------------+--------------+-----------+
セットに4行(0.05秒)

4.2.9. 共同指示の記録

t1から*を選択
ユニオン|ユニオン すべて
t2から*を選択
…
ユニオン|ユニオン すべて
tn から * を選択します。


UNIONUNION ALLの主な違いは次のとおりです。

UNION ALL結果セットを直接結合します。
UNIONUNION ALLの結果に対してDISTINCTを実行し、重複レコードを削除します。

例1: memberテーブルとgoodsordersテーブルのユーザーidセット(memberid)を表示する

mysql> goodsorders から memberid を選択し、 union all から member から id を選択します。
+----------+
| メンバーID |
+----------+
| 15 |
| 1 |
| 1 |
| 3 |
| 1 |
| 15 |
| 1 |
| 13 |
+----------+
セット内の行数は 8 です (0.00 秒)

例2:上記の結果から重複レコードを削除して表示したい場合

mysql> goodsorders union から memberid を選択します。member から id を選択します。
+----------+
| メンバーID |
+----------+
| 15 |
| 1 |
| 3 |
| 13 |
+----------+
セット内の 4 行 (0.00 秒)

4.3. レコード更新コマンド

UPDATE テーブル名 SET フィールド1=値1,フィールド2.=値2,…フィールドn=値n [WHERE 条件]


例: goodsordersテーブルのordername zhangの注文金額( ordermoney ) 50変更します。

mysql> 商品注文を更新し、ordermoney=50.00 を設定します。ordername='zhang';
クエリは正常、1 行が影響を受けました (0.09 秒)
一致した行: 1 変更された行: 1 警告: 0

mysql> goodsorders から * を選択します。
+-----------+------------+-------------+--------------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 |
+-----------+------------+-------------+--------------+
| 張 | 2021-05-12 | 50.00 | 1 |
| zhang1 | 2021-05-12 | 1001.00 | 11 |
+-----------+------------+-------------+--------------+
セット内の 2 行 (0.00 秒)

アップデート時にエラー コード 1175 が発生した場合:

エラーコード: 1175。セーフ更新モードを使用しており、KEY 列を使用する WHERE なしでテーブルを更新しようとしました。セーフ モードを無効にするには、環境設定でオプションを切り替えます。

解決:

1. まずステータスを照会します。

'SQL_SAFE_UPDATES' のような変数を表示します。


2. セーフアップデートモードをオフにするには、次の SQL を実行します。

SQL_SAFE_UPDATES = 0 を設定します。


または

SQL_SAFE_UPDATES を false に設定します。
 

4.4. レコード名の削除

DELETE FROM テーブル名 [WHERE 条件]


例: goodsordersテーブル内のordernamezhang1であるすべてのレコードを削除します。

mysql> ordername = 'zhang1' の場合、goodsorders から削除します。
クエリは正常、1 行が影響を受けました (0.06 秒)

mysql> goodsorders から * を選択します。
+-----------+------------+-------------+--------------+
| 注文名 | 作成時刻 | 注文金額 | 注文番号 |
+-----------+------------+-------------+--------------+
| 張 | 2021-05-12 | 50.00 | 1 |
+-----------+------------+-------------+--------------+
セット内の1行(0.02秒)
 


4.5. 初期化テーブル

例:テーブル内のすべてのデータをクリアする

mysql> varc から * を選択します。
+------+------+
| 上 | c |
+------+------+
| アルファベット | アルファベット |
+------+------+
セット内の1行(0.03秒)

mysql> テーブル varc を切り捨てます。
クエリは正常、影響を受けた行は 0 行 (0.25 秒)

mysql> varc から * を選択します。
空のセット (0.00 秒)
 

5. DCLステートメント

DCLステートメントは主にデータベースシステム内の操作オブジェクトの権限を管理するために使用されます。

5.1 データベースユーザーを作成する

例:初期パスワードが123で、 ordermanageデータベース内のすべてのテーブルに対するSELECT/INSERT権限を持つ、 user1という名前のデータベース ユーザーを作成します。

mysql> '123' で識別される 'user1'@'localhost' に ordermanage.* の select、insert 権限を許可します。
クエリは正常、影響を受けた行は 0 行、警告は 1 件 (0.06 秒)

mysql>終了
さよなら


C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql -uuser1 -p123
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは82です
サーバーバージョン: 5.7.17-log MySQL コミュニティサーバー (GPL)

Copyright (c) 2000, 2016, Oracle およびその関連会社。無断複写・転載を禁じます。

OracleはOracle Corporationおよびその関連会社の登録商標です。
その他の名称は各社の商標である場合があります。
所有者。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

mysql> データベースを表示します。
+--------------------+
| データベース |
+--------------------+
| 情報スキーマ |
|注文管理|
+--------------------+
セット内の 2 行 (0.00 秒)

これに基づいて、このユーザー( user1 )のinsert権限は取り消されます。

mysql> 'user1'@'localhost' からの ordermanage.* への挿入を取り消します。
クエリは正常、影響を受けた行は 0 行 (0.02 秒)

mysql>終了
さよなら

C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql -uuser1 -p123
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは84です
サーバーバージョン: 5.7.17-log MySQL コミュニティサーバー (GPL)

Copyright (c) 2000, 2016, Oracle およびその関連会社。無断複写・転載を禁じます。

OracleはOracle Corporationおよびその関連会社の登録商標です。
その他の名称は各社の商標である場合があります。
所有者。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

mysql> ordermanage を使用します。
データベースが変更されました

mysql> メンバー値に挿入('11','ss');
エラー 1142 (42000): テーブル 'member' に対するユーザー 'user1'@'localhost' への INSERT コマンドが拒否されました
マイSQL>

このことから、挿入権限が不十分で挿入が失敗していることがわかります。

MYSQL テーブルの紹介に関するこの記事はこれで終わりです。MYSQL テーブルに関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL でよく使用されるデータベースとテーブル シャーディング ソリューションの概要
  • MySQLパーティションテーブルは月別に分類されています
  • MySQLはデータテーブル内の既存のテーブルを分割します
  • MySQL テーブル分割後にスムーズにオンラインになる方法
  • MySQLシリーズ マルチテーブル結合クエリ92および99構文例詳細チュートリアル
  • MySQL内部一時テーブルの具体的な使用法
  • MySQLが内部一時テーブルを使用するタイミングについて簡単に説明します。
  • Python で MySQL テーブル情報を収集して集計する詳細な例

<<:  この記事ではCSSの組み合わせセレクターの使い方を説明します

>>:  Linuxブートサービスを起動する2つの方法

推薦する

Linux での MySQL 5.6 バイナリのインストール プロセス

1.1 バイナリインストールパッケージをダウンロードするhttps://dev.mysql.com/...

Vueはデジタル千単位区切り形式をグローバルに実装します

この記事の例では、Vue がデジタル 3 桁区切り形式をグローバルに実装するための具体的なコードを参...

EclipseでTomcatを作成する原理の詳細な説明

ローカルEclipse上にTomcatサーバーを作成する場合、 tomcaインストールディレクトリの...

MySQLを5.7にアップグレードすると、WordPressはデータをインポートするときにエラー1067を報告します

最近MySQLを5.7にアップグレードしましたが、WordPressでデータのインポート時にエラーが...

Linuxでmysqlの定期的なコールドバックアップを実装するためにmysqldump+expect+crontabを使用するアイデアの詳細な説明

目次1. 遭遇した問題2. アイデア3. コード1. 遭遇した問題私たちは皆、mysqldump を...

Dockerイメージをパッケージ化し、リモートサーバーにプッシュしてk8sにデプロイする方法

目次1. Dockerファイル2. pom 構成3. イメージプッシュ4. k8s デプロイメント前...

操作タイムアウトがないときにMySQLサーバーがアクティブに切断される問題を解決します

MySQL サービスを使用する場合、通常の状況では、MySQL のタイムアウト設定は 8 時間 (2...

Linux で so または実行可能プログラムの依存ライブラリを表示します

Linux で実行可能プログラムまたは so の依存ライブラリを表示します。 Linux の実行可能...

CentOS7 での MySQL 8.0.16 のインストールと設定のチュートリアル

MySQLの古いバージョンをアンインストールします(古いバージョンがない場合は、この手順をスキップし...

MySQL 8.0.15 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15のインストールと設定方法を参考までに紹介します。具体的な内容は...

Vue を使用した Amap アプリケーション開発のベスト プラクティス

目次序文非同期読み込みパッケージコンポーネントコンポーネントの使用インターフェースをカスタマイズする...

レスポンシブ Web をデザインするにはどうすればいいですか?レスポンシブウェブデザインのメリットとデメリット

最近レスポンシブ デザインについて学んでいて、これについていくつか整理してみました。写真の一部はイン...

vueプロジェクトは特定の領域に透かしを描くことを実現する

この記事では、Vueを使用して特定の領域に透かしを描く方法を紹介します。具体的な内容は次のとおりです...

スクロールバーのスタイルを設定するための CSS サンプルコード

スクロール バーのスタイルを設定するための CSS 実装コードは次のとおりです。 •::-webki...