首页 > 其他分享 >牛客SQ-actor表:223-232

牛客SQ-actor表:223-232

时间:2022-10-21 15:48:46浏览次数:45  
标签:last name SQ actor 牛客 223 id SELECT first

223. 使用join查询方式找出没有分类的电影id以及其电影名称
SELECT film_id, title
FROM film t1 LEFT JOIN film_category t3 USING(film_id)
WHERE category_id IS NULL
224. 使用子查询的方式找出属于Action分类的所有电影对应的title,description
# 题目要求使用子查询,也就是尽量不关联表
SELECT title, description
FROM film
WHERE film_id IN (
    SELECT film_id
    FROM film_category
    WHERE category_id = (
        SELECT category_id
        FROM category
        WHERE name = 'Action'
    )
)

/*
# 如果可以关联表
SELECT f.title, f.description
FROM film as f INNER JOIN film_category AS fc ON f.film_id = fc.film_id
               INNER JOIN category AS c ON c.category_id = fc.category_id
WHERE c.name = 'Action'
*/
227. 创建一个actor表,包含如下列信息

image

/*
考察点是建表语法:
CREATE TABLE table_name(
    column_name 数据类型 是否允许null
);
主键列在是否允许NULL后空格PRIMARY KEY,用来设置表的主键。
多列间用逗号隔开。

CREATE TABLE actor(
    `actor_id` SMALLINT(5) NOT NULL PRIMARY KEY COMMENT'主键id', -- 用`着重号`括住字段名称更规范
    `first_name` VARCHAR(45) NOT NULL COMMENT'名字',
    `last_name` VARCHAR(45) NOT NULL COMMENT'姓氏',
    `last_update` TIMESRAMP NOT NULL DEFAULT(datetime('now','localtime')) COMMENT'日期'
);
*/

# 不是很懂大小写
DROP TABLE IF EXISTS actor;
CREATE TABLE IF NOT EXISTS actor(
    actor_id SMALLINT(5) NOT NULL COMMENT'主键id',
    first_name VARCHAR(45) NOT NULL COMMENT'名字',
    last_name VARCHAR(45) NOT NULL COMMENT'姓氏',
    last_update DATE NOT NULL COMMENT'日期',
    PRIMARY KEY (actor_id)
);
228. 对于表actor批量插入如下数据(不能有2条insert语句)

image

# 方法1. VALUES (value1, value2, ...), (value1, value2, ...), ..., (value1, value2, ...)
INSERT INTO actor
VALUES 
(1, 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33'), 
(2, 'NICK', 'WAHLBERG', '2006-02-15 12:34:33');

# 方法2. UNION SELECT 批量插入
INSERT INTO actor
SELECT 1, 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33'
UNION SELECT 2, 'NICK', 'WAHLBERG', '2006-02-15 12:34:33';
229. 对于表actor插入如下数据,如果数据已经存在,请忽略(不支持使用replace操作)

image

INSERT OR IGNORE INTO actor 
VALUES ('3', 'ED', 'CHASE', '2006-02-15 12:34:33');
  • INSERT INTO
    插入数据,数据库会检查主键,如果出现重复会报错
  • REPLACE INTO
    插入替换数据,需求表中有 PRIMARY KEY, 或者 UNIQUE 索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和 INSERT INTO 一样
  • INSERT IGNORE
    如果中已经存在相同的记录,则忽略当前新数据
230. 创建一个actor_name表,并且将actor表中的所有first_name以及last_name导入该表。actor_name表结构如下,题目最后会查询actor_name表里面的数据来对比结果输出

image

DROP TABLE IF EXISTS actor_name;
CREATE TABLE IF NOT EXISTS actor_name(
    first_name VARCHAR(45) NOT NULL COMMENT'名字',
    last_name VARCHAR(45) NOT NULL COMMENT'姓氏'
);
INSERT INTO actor_name (first_name, last_name)
SELECT first_name, last_name
FROM actor;

# 因为实际上只是导入数据,所以可以一句话搞定建表+插入数据
CREATE TABLE IF NOT EXISTS `actor_name` SELECT first_name, last_name FROM `actor`;
231. 针对如下表actor结构创建索引:对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname

(注:在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作;mysql支持 ALTER TABLE 创建索引)
image

# 考察点:给指定表或者视图的某列添加索引 CREATE [UNIQUE/...] INDEX indexName ON tableName(colName);
CREATE UNIQUE INDEX uniq_idx_firstname ON actor(first_name); -- 创建唯一索引
CREATE INDEX `idx_lastname` ON actor(last_name); -- 创建普通索引
# 可以对索引名用着重符号
232. 针对actor表创建视图actor_name_view,只包含first_name以及last_name两列,并对这两列重新命名,first_name为first_name_v,last_name修改为last_name_v。

后台会插入2条数据:insert into actor values ('1', 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33'), ('2', 'NICK', 'WAHLBERG', '2006-02-15 12:34:33');然后打印视图名字和插入的数据
image

# 1
CREATE VIEW actor_name_view AS
SELECT first_name AS first_name_v, last_name AS last_name_v
FROM actor;

# 2
CREATE VIEW actor_name_view (first_name_v, last_name_v) AS
SELECT first_name, last_name
FROM actor;

标签:last,name,SQ,actor,牛客,223,id,SELECT,first
From: https://www.cnblogs.com/Jojo-L/p/16812929.html

相关文章

  • SQL Server 根据一个表数据修改另外一个表数据
    今天在写代码的时候发现一个有趣的问题,同时也暴露了之前写的代码有问题,还好之前没有出现重复的情况,及时发现了这个问题,及时改了回来,不然就GG了下面先上代码,再给大家解说一......
  • 阿里云RDS的mysql的sql_mode=only_full_group_by问题
    使用groupby分组时,查询字段没有分组的字段就会报错[Err]1055-Expression#1ofSELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'test.u......
  • Linux 安装MySQL大表(千万行、亿级行表)操作新增字段、索引等,部署工具gh-ost
    安装go依赖包yum-yinstallbisonedgawkgcclibc6-devmake 下载go安装包[root@wjq~]#wgethttps://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.g......
  • ZABBIX监控MySQL
    zabbix3.0server已自带MySQL的模板了,只需配置好agent客户端,然后在web端主机增加模板就行了。同时部署:zabbix_agent安装zabbix_agent客户端操作:1.数据库用户授权登录my......
  • 数据库 使用Kettle同步数据时报错Caused by: java.sql.SQLException: Incorrect stri
    使用kettle向mysql8.0数据库同步数据时遇到的报错,这是数据库表的编码问题。可以通过修改Mysql数据库默认字符集及相关库表、字段字符字符集解决。检查数据库表相关编码设......
  • MySQL 索引
    MySQL索引概念聚簇索引将数据存储和索引放到了一块,找到了索引也就找到了数据。ps:MySQL的InnoDB引擎中,索引数据结构是B+树,主键索引叶子节点的值存储的就是MySQL的数......
  • Mysql 之 幻读
    文章目录​​1.面试问题​​​​2.什么是幻读​​​​3.如何结局幻读​​​​4.实验验证​​​​5.加锁分析​​​​6.总结​​1.面试问题MySQL记录锁+间隙锁可以防止删除......
  • MySQL常用语句整理
    该文章整理于牛客刷题中遇到的语法等问题该文章整理于牛客刷题中遇到的问题​​SQL​​​执行语句:​​**select–>where–>groupby–>having–>orderby......
  • 【第7天】SQL进阶-插入记录(SQL 小虚竹)
    回城传送–》《32天SQL筑基》文章目录​​零、前言​​​​一、练习题目​​​​二、SQL思路​​​​插入记录:SQL110插入记录(一)​​​​初始化数据​​​​解法​​​​扩......
  • MySQL中value和values的区别
    1.概况value和values都是用于插入数据时的关键字,从单词我们会联想到是不是value用于插入单挑数据,values用于插入多条数据,实际上他们并不是这样的,value可以用于插入单......