MySQL クイック クエリ ビュー

MySQLのクイックチェック

日々の仕事や勉強の中で、mysql のステートメント、キーワード、操作などを忘れることがよくあるため、最近少し時間をとって mysql に関する次の内容を書きました。辞書のようなものです


mysql パスワードのリセット
データ型
演算子共通関数データの整合性データベースの基本操作
テーブル自体の操作テーブル内のデータの操作サブクエリマルチテーブル接続インデックスこの記事ではSQL ステートメントの前処理カスタム関数とストアド プロシージャMySQL でのプログラミング











導入

ビューは、select ステートメントを通じて 1 つ以上のテーブルまたは他のビューから派生した仮想テーブルです。ビューにはデータは格納されません。ビューから取得されるデータは、ビューが参照するテーブルから取得されます。

例で使用されるテーブル

mysql> create table people(id int primary key auto_increment,
	name char(10) not null, 
	age int not null,sex enum('f','m'),sar float);
Query OK, 0 rows affected (0.02 sec)


mysql> desc people;
+-------+---------------+------+-----+---------+----------------+
| Field | Type          | Null | Key | Default | Extra          |
+-------+---------------+------+-----+---------+----------------+
| id    | int           | NO   | PRI | NULL    | auto_increment |
| name  | char(10)      | NO   |     | NULL    |                |
| age   | int           | NO   |     | NULL    |                |
| sex   | enum('f','m') | YES  |     | NULL    |                |
| sar   | float         | YES  |     | NULL    |                |
+-------+---------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

使用したテーブルのデータ

mysql> insert into people(name,age,sex,sar) values('铁子',23,'m',20000);
Query OK, 1 row affected (0.01 sec)

mysql> insert into people(name,age,sex,sar) values('潘子',18,'m',5000.4);
Query OK, 1 row affected (0.01 sec)

mysql> insert into people(name,age,sex,sar) values('嘎子',18,'m',5400.4);
Query OK, 1 row affected (0.01 sec)

mysql> insert into people(name,age,sex,sar) values('嘎叔',60,'m',15400.4);
Query OK, 1 row affected (0.01 sec)

mysql> insert into people(name,age,sex,sar) values('潘叔',60,'m',15450.8);
Query OK, 1 row affected (0.01 sec)

mysql> insert into people(name,age,sex,sar) values('老同志',69,'m',15450.8);
Query OK, 1 row affected (0.01 sec)

mysql> select * from people;
+----+-----------+-----+------+---------+
| id | name      | age | sex  | sar     |
+----+-----------+-----+------+---------+
|  1 | 铁子      |  23 | m    |   20000 |
|  2 | 潘子      |  18 | m    |  5000.4 |
|  3 | 嘎子      |  18 | m    |  5400.4 |
|  4 | 嘎叔      |  60 | m    | 15400.4 |
|  5 | 潘叔      |  60 | m    | 15450.8 |
|  6 | 老同志    |  69 | m    | 15450.8 |
+----+-----------+-----+------+---------+
6 rows in set (0.00 sec)

ビューの作成

CREATE
    [OR REPLACE]
    [ALGORITHM = {
   
   UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = 用户]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW 视图名 [(视图字段名,...)]
    AS 查询语句
    [WITH [CASCADED | LOCAL] CHECK OPTION]
  • ビューの作成: ビューを作成し、追加または置換して既存のビューを置き換えます
  • アルゴリズム: アルゴリズムを表示:
    • 未定義: MySQL はアルゴリズムを自動的に選択します
    • merge: ビュー定義とビュー ステートメントをマージし、ビュー定義の特定の部分がステートメントの対応する部分を置き換えます。
    • temptable: ビューの結果を一時テーブルに保存し、その一時テーブルを使用してステートメントを実行します。
    • 定義者: 定義者。ビューを作成したユーザーを示します。記述されていない場合、デフォルトは現在のユーザーです。
    • SQL セキュリティ: 実行権限を持つユーザーを指定します:
      • 定義者: 定義者が所有する権限で実行します。デフォルト値
      • invoker: 呼び出し元の権限で実行します。
  • チェック オプション付き: ビューによって参照されるテーブルへの行の挿入または更新を制限するために使用されます。select ステートメントで他のソースの列を使用する場合は、select ステートメントの権限が必要です。または replace がある場合は、drop 権限も必要です。
  • cascaded: デフォルト値。これは、ビューを更新するときに、関連するすべてのビューとテーブルの条件が満たされる必要があることを意味します。
  • local: ビューを更新するときに、ビュー自体の定義を満たす必要があるだけであることを意味します。
# 创建一个视图将表people中年龄大于等于60的人
mysql> create or replace view v_old_people (姓名,年龄,性别)
	as select name,age,sex from people where age >= 60;
Query OK, 0 rows affected (0.00 sec)

もっと

ビューの削除

DROP VIEW [IF EXISTS]
    视图名 [, 视图名] ...


# 删除视图v_old_people
mysql> drop view v_old_people;
Query OK, 0 rows affected (0.01 sec)

もっと

ビューの変更

ALTER
    [ALGORITHM = {
   
   UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = user]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]

説明ViewMoreの作成と同じ

ビュービュー

ビューの定義

SHOW CREATE VIEW 视图名;

show table status like '视图名';



mysql> SHOW CREATE VIEW v_old_people;
+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View         | Create View                                                                                                                                                                                                                                                | character_set_client | collation_connection |
+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| v_old_people | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_old_people` (`姓名`,`年龄`,`性别`) AS select `people`.`name` AS `name`,`people`.`age` AS `age`,`people`.`sex` AS `sex` from `people` where (`people`.`age` >= 60)       | utf8mb4              | utf8mb4_0900_ai_ci   |
+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.00 sec)


mysql> show table status like 'v_old_people';
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------+----------+----------------+---------+
| Name         | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------+----------+----------------+---------+
| v_old_people | NULL   |    NULL | NULL       | NULL |           NULL |        NULL |            NULL |         NULL |      NULL |           NULL | 2021-05-27 14:45:52 | NULL        | NULL       | NULL      |     NULL | NULL           | VIEW    |
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------+----------+----------------+---------+
1 row in set (0.00 sec)

データを見る

select 字段名[,...] from 视图名;

mysql> select * from v_old_people;
+-----------+--------+--------+
| 姓名      | 年龄   | 性别   |
+-----------+--------+--------+
| 嘎叔      |     60 | m      |
| 潘叔      |     60 | m      |
| 老同志    |     69 | m      |
+-----------+--------+--------+
3 rows in set (0.00 sec)

もっと

おすすめ

転載: blog.csdn.net/weixin_45345384/article/details/117326786
おすすめ