Goods as select goods_id,goods_name from goods;
mysql> select * from baseGoods;
+----------+------------+
| goods_id | goods_name |
+----------+------------+
| 1 | 苹果 |
| 2 | 西瓜 |
| 3 | 香蕉 |
| 4 | 白菜 |
| 5 | 韭菜 |
| 6 | 茄子 |
| 7 | 哈密瓜 |
+----------+------------+
这样就可以不出现销售价格列了。当然我们也可以修改视图,修改视图也比较简单:alter view 视图名 as select语句,比如对于avgPrice视图,我们还想看到商品名称:
mysql> alter view avgPrice as select cat_id,goods_name, avg(shop_price) from goods group by cat_id;
mysql> select * from avgPrice;
+--------+------------+-----------------+
| cat_id | goods_name | avg(shop_price) |
+--------+------------+-----------------+
| 1 | 白菜 | 2.133333 |
| 2 | 苹果 | 5.595000 |
+--------+------------+-----------------+
删除视图:mysql> drop view avgPrice;
16)索引index
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引是一个索引包含多个列。
对字段建立索引可以大大提高查询速度。假如我们创建了一个mytable表:
mysql> desc mytable;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID | int(11) | NO | | NULL | |
| username | varchar(16) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
MySQL索引类型包括:
(1)普通索引,这是最基本的索引,它没有任何限制。它有以下几种创建方式:
-- 创建索引
CREATE INDEX indexName ON mytable(username(10)); -- 单列索引
-- CREATE INDEX indexName ON mytable(username(10),Id(11)); -- 组合索引
-- indexName为索引名,mytable表名,username和Id为列名, 如果是CHAR,VARCHAR类型,前缀长度可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定前缀长度。
#实例演示:创建普通索引
mysql> create index indexName on mytable(username(10));
mysql> desc mytable;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID | int(11) | NO | | NULL | |
| username | varchar(16) | NO | MUL | NULL | |
+----------+-------------+------+-----+---------+-------+
#修改索引
mysql> alter table mytable add index indexName (username(10));
mysql> desc mytable;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID | int(11) | NO | | NULL | |
| username | varchar(16) | NO | MUL | NULL | |
+----------+-------------+------+-----+---------+-------+
#删除索引
mysql> drop index indexName on mytable;
mysql> desc mytable;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID | int(11) | NO | | NULL | |
| username | varchar(16) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
?
(2)唯一索引:它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式(仅仅在创建普通索引时关键字 INDEX 前加 UNIQUE
#创建唯一索引
mysql> create unique index indexName on mytable(username(10));
#修改唯一索引
mysql> alter table mytable add unique index indexName (username(10));
#删除唯一索引
mysql> drop index indexName on mytable;
?
(3)主键索引:它是一种特殊的唯一索引,不允许有空值。在建表的时候同时创建的主键即为主键索引。主键索引无需命名,一个表只能有一个主键。主键索引同时可是唯一索引或者全文索引,但唯一索引或全文索引不能共存在同一索引。
#通过修改表结构来创建主键索引
mysql> alter table mytable add primary key(ID);
mysql> desc mytable;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID | int(11) | NO | PRI | NULL | |
| username | varchar(16) | NO | | NULL | |
+----------+-------------+------+-----+---------+---