view視圖,視圖是什麼?視圖就是一個虛擬的表,定義我們所想要看到的一個view,純屬個人理解~
1、創建一個view數據庫
mysql> CREATE DATABASE view; Query OK, 1 row affected (0.00 sec) mysql> SHOW DATABASES; +----------------------+ | Database | +----------------------+ | information_schema | | mysql | | performance_schema | | test | | view | +----------------------+ 11 rows in set (0.00 sec)
2、進入view庫並創建我們定義的view表
mysql> USE view #進入view庫 Database changed mysql> CREATE VIEW user_info AS #創建user_info view的表 -> SELECT user,password,host FROM mysql.user; #定義只從mysql.user取出user,password,host Query OK, 0 rows affected (0.00 sec)
3、查看是否是我們所想定義的那樣
mysql> SHOW TABLES; #查看錶是否創建成功 +----------------+ | Tables_in_view | +----------------+ | user_info | +----------------+ 1 row in set (0.00 sec) mysql> SELECT * FROM user_info; #如我們所想定義的那樣 +------+-------------------------------------------+-----------+ | user | password | host | +------+-------------------------------------------+-----------+ | root | | localhost | | root | | jroa | | root | | 127.0.0.1 | | root | | ::1 | | | | localhost | | | | jroa | | oa | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 127.0.0.1 | +------+-------------------------------------------+-----------+ 7 rows in set (0.00 sec)
再通過一個例子來擴展下!~~
1、創建兩張正常表,分別爲表a 及 表b ~好像哪裏乖乖的^-^
mysql> CREATE TABLE a ( #創建表a -> id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL, -> name VARCHAR(60) NOT NULL, -> price DOUBLE NOT NULL -> ); Query OK, 0 rows affected (0.01 sec) mysql> CREATE TABLE b( #創建表b -> id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL, -> name VARCHAR(60) NOT NULL, -> qty INT NOT NULL, -> gen_time DATETIME NOT NULL -> ); Query OK, 0 rows affected (0.04 sec)
2、爲倆張表造點數據
mysql> DESC a; #查看錶a結構 +-------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(60) | NO | | NULL | | | price | double | NO | | NULL | | +-------+------------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) mysql> DESC b; #查看錶b結構 +----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(60) | NO | | NULL | | | qty | int(11) | NO | | NULL | | | gen_time | datetime | NO | | NULL | | +----------+------------------+------+-----+---------+----------------+ 4 rows in set (0.02 sec) mysql> INSERT INTO a (name,price) VALUES #插入數據 -> ('apple',3.5), -> ('pear',3.2), -> ('banana',4.5), -> ('oracle',5.5); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> INSERT INTO b (name,qty,gen_time) VALUES #插入數據 -> ('apple',5,now()), -> ('banana',7,now()); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0
3、定義我們的view表
mysql> CREATE VIEW deail AS #創建view表,表名爲deail -> SELECT a.name AS Name, #定義字段名稱映射 -> a.price AS Price, #定義字段名稱映射 -> b.qty AS Qty, #定義字段名稱映射 -> a.price * b.qty AS Total #定義a字段乘以b字段的結果映射 -> FROM a,b WHERE a.name=b.name; #從表a 及 表b讀取,並且條件爲表倆邊那麼相等 Query OK, 0 rows affected (0.00 sec)
4、驗證是否是我們所想的那樣
mysql> SELECT * FROM deail; #果真如我們想的那樣 +--------+-------+-----+-------+ | Name | Price | Qty | Total | +--------+-------+-----+-------+ | apple | 3.5 | 5 | 17.5 | | banana | 4.5 | 7 | 31.5 | +--------+-------+-----+-------+ 2 rows in set (0.00 sec)
5、再插入倆條數據進行佐證
mysql> INSERT INTO a (name,price) VALUES #插入倆條數據,好像又是怪怪的^-^ -> ('XX',4.8), -> ('OO',5.7); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> INSERT INTO b (name,qty,gen_time) VALUES #這裏同樣插入倆條數據,好像也是怪怪的 -> ('XX',7,now()), -> ('OO',6,now()); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM deail; #驗證結果 +--------+-------+-----+-------+ | Name | Price | Qty | Total | +--------+-------+-----+-------+ | apple | 3.5 | 5 | 17.5 | | banana | 4.5 | 7 | 31.5 | | XX | 4.8 | 7 | 33.6 | | OO | 5.7 | 6 | 34.2 | +--------+-------+-----+-------+ 4 rows in set (0.00 sec)