数据库SQL实战练习5

1、获取select * from employees对应的执行计划

explain select * from employees

2、将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分

CREATE TABLE employees ( emp_no int(11) NOT NULL,
birth_date date NOT NULL,
first_name varchar(14) NOT NULL,
last_name varchar(16) NOT NULL,
gender char(1) NOT NULL,
hire_date date NOT NULL,
PRIMARY KEY (emp_no));

select e1.last_name || ' ' || e2.first_name
from employees e1 , employees e2
where e1.emp_no = e2.emp_no

3、创建一个actor表,包含如下列信息

在这里插入图片描述

create table actor
(
    actor_id smallint(5) not null primary key,
    first_name varchar(45) not null,
    last_name varchar(45) not null,
    last_update timestamp not null default (datetime('now','localtime'))
)

4、对于表actor批量插入如下数据

CREATE TABLE IF NOT EXISTS actor (
actor_id smallint(5) NOT NULL PRIMARY KEY,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update timestamp NOT NULL DEFAULT (datetime(‘now’,‘localtime’)))
在这里插入图片描述

insert into actor values(1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),
(2,'NICK','WAHLBERG','2006-02-15 12:34:33');

5、对于表actor批量插入如下数据,如果数据已经存在,请忽略,不使用replace操作

CREATE TABLE IF NOT EXISTS actor (
actor_id smallint(5) NOT NULL PRIMARY KEY,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update timestamp NOT NULL DEFAULT (datetime(‘now’,‘localtime’)))
在这里插入图片描述

insert or ignore into actor values(3,'ED','CHASE','2006-02-15 12:34:33')

6、对于如下表actor,其对应的数据为:

在这里插入图片描述
创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表。 actor_name表结构如下:在这里插入图片描述

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;

7、针对如下表actor结构创建索引:

CREATE TABLE IF NOT EXISTS actor (
actor_id smallint(5) NOT NULL PRIMARY KEY,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update timestamp NOT NULL DEFAULT (datetime(‘now’,‘localtime’)))
对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);

8、针对actor表创建视图actor_name_view,只包含first_name以及last_name两列,并对这两列重新命名,first_name为first_name_v,last_name修改为last_name_v:

CREATE TABLE IF NOT EXISTS actor (
actor_id smallint(5) NOT NULL PRIMARY KEY,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update timestamp NOT NULL DEFAULT (datetime(‘now’,‘localtime’)))

create view actor_name_view
as 
select first_name as first_name_v , last_name as last_name_v
from actor

9、针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引。

CREATE TABLE salaries (
emp_no int(11) NOT NULL,
salary int(11) NOT NULL,
from_date date NOT NULL,
to_date date NOT NULL,
PRIMARY KEY (emp_no,from_date));
create index idx_emp_no on salaries(emp_no);

-- 强制索引。
select * from salaries indexed by idx_emp_no where emp_no = 10005;
-- MySQL中语句 select * from salaries  force index idx_emp_no where emp_no = 10005;
发布了45 篇原创文章 · 获赞 6 · 访问量 2065

猜你喜欢

转载自blog.csdn.net/qq_22583191/article/details/104152709