牛客网MySql31~40

牛客网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创建数据表的三种方法:

  1. 常规创建
    create table if not exists 目标表
  2. 复制表格
    create 目标表 like 来源表
  3. 将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中四种方式给字段添加索引:

  1. 添加主键

    ALTER TABLE tbl_name ADD PRIMARY KEY (col_list);
    // 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
    
  2. 添加唯一索引

    ALTER TABLE tbl_name ADD UNIQUE index_name (col_list);
    // 这条语句创建索引的值必须是唯一的。
    
  3. 添加普通索引

    ALTER TABLE tbl_name ADD INDEX index_name (col_list);
    // 添加普通索引,索引值可出现多次。
    
  4. 添加全文索引

    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);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值