3、SQL练习(21-30)
大约 1 分钟
注:该页题目均来自与牛客网
21. 批量插入数据,不使用replace操作
insert ignore into actor value (3,'ED','CHASE','2006-02-15 12:34:33');
这里可以使用 ignore
然后 replace de 含义如下
update tbl_student set user_name=REPLACE(user_name,'A','a');
22.将select 和 insert 连用
create table actor_name (
first_name varchar(45) not null,
last_name varchar(45) not null
);
insert into actor_name select first_name, last_name from actor;
23.创建索引
create unique index uniq_idx_firstname on actor(first_name);
create index idx_lastname on actor(last_name);
24.创建视图
create view actor_name_view as
select first_name as first_name_v
, last_name as last_name_v from actor;
25.使用固定索引查询内容
select * from salaries
force index(idx_emp_no)
where emp_no = 10005;
select *
from salaries
indexed by idx_emp_no
where emp_no = 10005
26.修改表
alter table actor
add column create_date datetime not null default '2020-10-01 00:00:00';
27.创建触发器
create trigger audit_log after insert on employees_test
for each row
begin
insert into audit value(new.id,new.name);
end;
28.删除emp_no重复的记录,只保留最小的id对应的记录。
delete from titles_test where id not in (
select * from (select min(id) from titles_test group by emp_no) as a
)
这个题目很有意思,因为我们删除后需要显示出来,子查询的含义找出min(id)的元组,这里必须要使用select 函数,然后使用 as a 不然则会报错。
29.修改表数据
update titles_test
set to_date = null ,from_date = '2001-01-01'
where to_date = '9999-01-01';
30.使用replace 函数修改值
update titles_test set emp_no = replace(emp_no,10001,10005)
where id = 5;
