牛客网MySql31~40(concat ignore index )
32.将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分
分析:使用concat函数
SELECT CONCAT(last_name,' ',first_name)
FROM employees;
33.创建一个actor表,包含如下列信息
CREATE TABLE actor(
actor_id SMALLINT(5) PRIMARY KEY NOT NULL,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update date NOT NULL
);
34.请你对于表actor批量插入如下数据(不能有2条insert语句哦!)
INSERT INTO actor
VALUES
(1 ,'PENELOPE' ,'GUINESS', '2006-02-15 12:34:33'),
(2 ,'NICK' ,'WAHLBERG', '2006-02-15 12:34:33');
35.对于表actor插入如下数据,如果数据已经存在,请忽略
分析:考察的是关键字ignore
insert into:插入数据,如果主键重复,则报错
insert repalce:插入替换数据,如果存在主键或unique数据则替换数据
insert ignore:如果存在数据,则忽略。
INSERT IGNORE INTO actor
VALUES ('3', 'WD', 'GUINESS', '2006-02-15 12:34:33') ;
36. 请你创建一个actor_name表,并且将actor表中的所有first_name以及last_name导入该表.
分析:考察的是创建表
MYSQL创建数据表的三种方法:
- 常规创建
create table if not exists 目标表 - 复制表格
create 目标表 like 来源表 - 将table1的部分拿来创建table2
create table if not exists actor_name
(
first_name varchar(45) not null,
last_name varchar(45) not null
)
select first_name,last_name
from actor
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;
37.对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname
ALTER TABLE actor
ADD UNIQUE INDEX uniq_idx_firstname(first_name);
ALTER TABLE actor
ADD INDEX idx_lastname(last_name);
DROP INDEX uniq_idx_firstname ON actor;
MySQL中四种方式给字段添加索引:
-
添加主键
ALTER TABLE tbl_name ADD PRIMARY KEY (col_list); // 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
-
添加唯一索引
ALTER TABLE tbl_name ADD UNIQUE index_name (col_list); // 这条语句创建索引的值必须是唯一的。
-
添加普通索引
ALTER TABLE tbl_name ADD INDEX index_name (col_list); // 添加普通索引,索引值可出现多次。
-
添加全文索引
ALTER TABLE tbl_name ADD FULLTEXT index_name (col_list); // 该语句指定了索引为 FULLTEXT ,用于全文索引。
38.针对actor表创建视图actor_name_view,只包含first_name以及last_name两列,并对这两列重新命名,first_name为first_name_v,last_name修改为last_name_v
视图:
视图是从一个或几个基本表(或视图)中导出的虚拟的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。视图看上去非常像数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的基表,而有些则不能(仅仅能查询)
视图相关语句
create view 视图名 as select 字段名 from 表名;
drop view 视图名[,视图名…];
CREATE VIEW actor_name_view
AS
SELECT first_name AS first_name_v, last_name AS last_name_v
FROM actor;
39.针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引
使用走强制索引的原因:
mysql优化器认为走全表扫描更快
那么此时就需要告诉优化器,强制使用XXX索引,可以增快查询速度。
CREATE INDEX idx_emp_no ON salaries(emp_no);
SELECT *
FROM salaries
FORCE INDEX (idx_emp_no)
WHERE emp_no = 10005;
40.现在在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为’2020-10-01 00:00:00’
ALTER TABLE actor
ADD (create_date datetime DEFAULT '2020-10-01 00:00:00' NOT NULL);