SQL刷题第七天 牛客

题一:创建一个actor表,包含如下列信息

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

列表类型是否为NULL含义
actor_idsmallint(5)not null主键id
first_namevarchar(45)not null名字
last_namevarchar(45)not null姓氏
last_updatetimestampnot null最后更新时间,默认是系统的当前时间

方法(创建表【create table】、主键【primary key】) :

create table actor(
    actor_id smallint(5) primary key,
    first_name varchar(45) not null,
    last_name varchar(45) not null,
    last_update date not null);

 题二:批量插入数据,不使用replace操作

题目已经先执行了如下语句:

drop table if exists 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  DATETIME NOT NULL);
insert into actor values ('3', 'WD', 'GUINESS', '2006-02-15 12:34:33');

对于表actor插入如下数据,如果数据已经存在,请忽略(不支持使用replace操作)

actor_idfirst_namelast_namelast_update
'3''ED''CHASE''2006-02-15 12:34:33'

方法(insert into ... values、ignore):

# insert ignore表示,如果中已经存在相同的记录,则忽略当前新数据;
insert  ignore into actor
values(3,'ED','CHASE','2006-02-15 12:34:33')

题三: 创建一个actor_name表

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

actor_idfirst_namelast_namelast_update
1PENELOPEGUINESS2006-02-15 12:34:33
2NICKWAHLBERG2006-02-15 12:34:33

请你创建一个actor_name表,并且将actor表中的所有first_name以及last_name导入该表.

actor_name表结构如下,题目最后会查询actor_name表里面的数据来对比结果输出:

列表类型是否为NULL含义
first_namevarchar(45)not null名字
last_namevarchar(45)not null姓氏

方法(创表,插入查询的的数据): 

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;

题四:对first_name创建唯一索引uniq_idx_firstname

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

(注:在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作,

mysql支持ALTER TABLE创建索引)

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  datetime NOT NULL);

对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname

方法(CREATE INDEX【单列索】 /CREATE UNIQUE INDEX【唯一索引】):

CREATE INDEX idx_lastname ON actor(last_name);
CREATE UNIQUE INDEX uniq_idx_firstname ON actor(first_name);

题五:针对actor表创建视图actor_name_view

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

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 datetime NOT NULL);

后台会插入2条数据:

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

然后打印视图名字和插入的数据

方法(创建视图【create view】):

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

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值