2021-07-24 刷题38、39、40题
SQL38 针对actor表创建视图actor_name_view
SQL 38 题目
解答:
CREATE VIEW actor_name_view AS
SELECT first_name as first_name_v,last_name as last_name_v FROM actor;
MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。
数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。
视图可以从原有的表上选取对用户有用的信息,那些对用户没用,或者用户没有权限了解的信息,都可以直接屏蔽掉,作用类似于筛选。这样做既使应用简单化,也保证了系统的安全。
如有疑惑,请参考以下连接:
SQL39 针对上面的salaries表emp_no字段创建索引idx_emp_no
SQL 39 题目
解答,在Mysql中:
create index idx_emp_no on salaries(emp_no);
select * from salaries FORCE INDEX (idx_emp_no) where emp_no = 10005;
解题思路:先创建索引,再创建强制索引查询,(题目这里默认已经创建索引)。索引名一定要加括号,否则错误。
强制索引:FORCE INDEX(<索引名>);
SELECT * FROM <表名> FORCE INDEX (<索引名>)
疑问:什么是强制索引,强制索引什么时候用,优缺点?
SQL40 在last_update后面新增加一列名字为create_date
SQL 40 题目
解答:
默认值:DEFUALT的用法,修改表ALTER的用法,添加列ADD的用法
ALTER TABLE actor add(creat_date datetime not null DEFAULT '2020-10-01 00:00:00')