/*视图(虚拟表)*/
CREATE [OR REPLACE] VIEW 视图名[列]
AS
SELECT
[WITH CHECK OPTION] /*子句用来限制通过改视图修改的记录要符合SELECT语句的指定条件*/
/*OR REPLACE替换已有的同名视图*/
SHOW CREATE VIEW 视图名;/*查看视图的定义语句*/
DESCRIBE 视图名;/*视图相关信息*/
# alter view v1(,,) as select...;/*修改视图*/
# drop view if exists v1,v2;/*删除视图*/
---------------------------------------------------------------
/*创建视图v1,来查看stuinfo中所有女生的基本信息*/
create or replace view v1 as
select * from stuinfo where stusex = '女' with check option;
/*创建v2,查看选课表中所有学生的学号及平均成绩*/
create or replace view v2(stuno,avg_stuscore) as
select stuno,avg(stuscore) from stumarks group by stuno;
/*创建v3,用来查看所有学生的学号,姓名,课程名及成绩*/
create or replace view v3(学号,姓名,课程名,成绩) as
select i.stuno,stuname,cname,stuscore
from stuinfo i join stumarks m on i.stuno=m.stuno
join stucourse c on m.cno=c.cno;
-----------------------------------------------------------
# 使用视图检索,更新基本表中的数据
select avg_stuscore from v2 where stuno='S003';/*查询v2视图中S003学生的平均成绩*/
insert into v1(stuno,stuname,stusex) valuse('S200','刘强','男');/*插入*/
update v1 set stubirth='' ehere stuno ='';/*修改*/
delete from v1 where stuno='';/*删除*/
索引
列是否适合创建索引,主要考虑出是是否现在WHERE后面,是否频繁更新,值域范围、排序或分组等。
索引名是由大家定义的,INDEX是创建普通索引时使用关键字。
普通索引不对索引列的值是否重复做要求。而唯一索引是要求索引列内容不得重复。
排序和分组的列上建立索引 ,可以提高升效率。
/*索引,提高数据查询速度*/
UNIQUE//唯一索引
# 使用CREATE INDEX 语句在已存在的表上创建索引
CREATE [UNIQUE] INDEX 索引名 ON 表名(字段名)
# 创建表的同时建立普通索引
CREATE TABLE t1(
字段名 数据类型 完整性约束条件,
......,
[UNIQUE] INDEX 索引名(字段名(长度)
);/*索引名默认是字段名*//*长度是指的是使用列前的多少个字符创建索引*/
# 使用ALTER TABLE 语句在已存在表上创建索引,修改表时创建*/
ALTER TABLE 表名 ADD [UNIQUE] INDEX 索引名(字段名)
ALTER TABLE t1 ADD INDEX multidx(id,name);/*给已有的t1表的id及name字段上建立多列索引*/
ALTER TABLE 表名 ADD UNIQUE(列名); /*唯一索引*/
ALTERTABLE table _ name ADD PRIMARY KEY (列名); /*主键是一种特殊的唯一索引*/