36.
对于如下表actor,其对应的数据为:
创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表。 actor_name表结构如下:
actor_id | first_name | last_name | last_update |
---|---|---|---|
1 | PENELOPE | GUINESS | 2006-02-15 12:34:33 |
2 | NICK | WAHLBERG | 2006-02-15 12:34:33 |
列表 | 类型 | 是否为NULL | 含义 |
---|---|---|---|
first_name | varchar(45) | not null | 名字 |
last_name | varchar(45) | not null | 姓氏 |
CREATE TABLE 'actor_name'('first_name' varchar(45) not null,
'last_name' varchar(45) not null);
INSERT INTO actor_name
VALUES
('PENELOPE','GUINESS'),('NICK','WAHLBERG')
注意插入数据的语句
37. 针对如下表actor结构创建索引:对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname
CREATE UNIQUE INDEX uniq_idx_firstname ON actor(first_name);
CREATE INDEX idx_lastname ON actor(last_name);
注意创建索引的语句,创建唯一索引的列不能有重复值,创建普通索引的列可以有重复值,索引可以加快查询速度,唯一索引还能防止数据重复
38. 针对actor表创建视图actor_name_view,只包含first_name以及last_name两列,并对这两列重新命名,first_name为first_name_v,last_name修改为last_name_v
CREATE VIEW actor_name_view AS
SELECT first_name AS first_name_v, last_name AS last_name_v
FROM actor
注意创建视图的语句,视图可以简化数据操作保证数据安全性等,比如说一个比较复杂的查询不想每次都写很多语句,就可以写个视图。下次查询的时候是需要使用select * from视图名就可以了,或者给特定用户开放某些表的读取权限,但要加一些行和列的限制,也可以写个视图。
39. 针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引。
SELECT *
FROM salaries
INDEXED BY idx_emp_no
WHERE emp_no = 10005
强制索引在SQLite 中用INDEXED BY 索引名 ,MYSQL 中用FORCE INDEX (索引名),强制索引可以加快查询速度
40. 存在actor表,现在在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为'0000-00-00 00:00:00'
ALTER TABLE actor ADD 'create_date' datetime not null DEFAULT ('0000-00-00 00:00:00')
注意增加字段的语句