创建表并将旧数据导入新表
create table if not EXISTS `actor_name`//if not EXISTS非必写,表名必写 ( `first_name` varchar(45) not null, //字段名 数据类型(大小)是否非空或是否为主键等 `last_name` varchar(45) not null ); insert into actor_name(first_name,last_name) SELECt first_name,last_name from actor//插入数据需要从查询结果获取,不可以加values
添加唯一索引和普通索引
方法一: alter table actor add UNIQUE index uniq_idx_firstname(first_name); alter table actor add index idx_lastname(last_name); 方法二: create UNIQUE index uniq_idx_firstname on actor(first_name); create index idx_lastname on actor(last_name);
创建视图actor_name_view,只包含first_name以及last_name两列
方法一:
create view actor_name_view (first_name_v,last_name_v) as
select first_name,last_name from actor
方法二:
create view actor_name_view as
select first_name as first_name_v
,last_name as last_name_v
from actor
针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005,使用强制索引。
SELECt * from salaries force index(idx_emp_no) where emp_no=10005
在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为’2020-10-01 00:00:00’
alter table actor add create_date datetime NOT NULL default '2020-10-01 00:00:00'//通过alter table对表进行维护,注意,此处default后面的内容不可用括号括起来
构造一个触发器audit_log,在向employees_test表中插入一条数据的时候,触发插入相关的数据到audit中。
触发器使用格式 CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 本题实例 create trigger audit_log after insert on employees_test for each ROW begin insert into audit values(new.id,new.name);//关于new的介绍在下面 end
【NEW 与 OLD 详解】
MySQL 中定义了 NEW 和 OLD,用来表示
触发器的所在表中,触发了触发器的那一行数据。
具体地:
在 INSERT 型触发器中,NEW 用来表示将要(BEFORE)或已经(AFTER)插入的新数据;
在 UPDATE 型触发器中,OLD 用来表示将要或已经被修改的原数据,NEW 用来表示将要或已经修改为的新数据;
在 DELETE 型触发器中,OLD 用来表示将要或已经被删除的原数据;
使用方法: NEW.columnName (columnName 为相应数据表某一列名)



