解法练习

案例1.子查询练习

字段 说明
film_id 电影id
title 电影名称
description 电影描述信息
category_id 电影分类id
name 电影分类名称
last_update 电影分类最后更新时间
film_id 电影id
category_id 电影分类id
last_update 电影id和分类id对应关系的最后更新时间

ilm表
 
CREATE TABLE IF NOT EXISTS film (
film_id smallint(5)  NOT NULL DEFAULT '0',
title varchar(255) NOT NULL,
description text,
PRIMARY KEY (film_id));
category表
 
CREATE TABLE category  (
category_id  tinyint(3)  NOT NULL ,
name  varchar(25) NOT NULL, `last_update` timestamp,
PRIMARY KEY ( category_id ));
film_category表
 
CREATE TABLE film_category  (
film_id  smallint(5)  NOT NULL,
category_id  tinyint(3)  NOT NULL, `last_update` timestamp);
 
使用子查询的方式找出属于Action分类的所有电影对应的title,description
 
解题命令
  1. select title,description
  2. from film
  3. where film_id in(select film_id from film_category
  4. where category_id in(select category_id from category w
  5. where name='Action'))
  6. --子查询解法
  7. select f.title,f.description
  8. from film as f inner join film_category as fc on f.film_id = fc.film_id
  9. inner join category as c on c.category_id = fc.category_id
  10. where c.name = 'Action';
  11. --常规解法

名词解释补充

Explain解释

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

  1. explain select * from employees

连接字符串

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

  1. --MySQLSQL ServerOracle等数据库支持CONCAT方法,
  2. 而本题所用的SQLite数据库只支持用连接符号"||"来连接字符串
  3.  
  4. --CONCAT方法:
  5. select CONCAT(CONCAT(last_name," "),first_name) as name from employees
  6. --或者
  7. select CONCAT(last_name," "first_name) as name from employees
  8.  
  9. --本题中使用:
  10. select last_name||" "||first_name as name from employees

插入数据时,已有则忽略

  1. insert IGNORE into ‘表’
  2. values()

创建索引

  1. CREATE UNIQUE INDEX ... ON ... 创建唯一索引值
  2. CREATE INDEX ... ON ... 创建普通索引值
  3. --例
  4. CREATE UNIQUE INDEX uniq_idx_firstname ON actor(first_name);
  5. CREATE INDEX idx_lastname ON actor(last_name);

MYSQL中常用的强制性操作

网址:https://www.jb51.net/article/49807.htm

截取字符串

  1. substr(字符串,起始位置,长度)
  2. 起始位置:截取的子串的起始位置(注意:字符串的第一个字符的索引是1)。值为正时从字符串开始位置 开始计数,值为负时从字符串结尾位置开始计数。
  3. 长度:截取子串的长度
  4. --例 first_name最后两位
  5. select first_name from employees
  6. order by substr(first_name,length(first_name)-1,2)
    --MYSQL中的Right函数
    SELECT first_name FROM employees ORDER BY RIGHT(first_name ,2);

 group_concat() 函数

  1. group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’]
    --分组后连接

MYSQL练习随笔的更多相关文章

  1. MySQL使用随笔

    001 查看版本 mysql --version mysql > select version(); mysql > status; 002 新建MySQL用户.授权 insert int ...

  2. Mysql查询优化随笔记录

    select SQL_CALC_FOUND_ROWS * from (select * from  oses_vehdata201606 union all  select * from  oses_ ...

  3. MySQL的随笔

    数据库引擎 MySQL5.0支持的存储引擎包括MyISAM,InnoDB.MEMORY.MERGE.BDB等等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表. MyISAM M ...

  4. 深入浅出mysql全文随笔

    进入mysql :mysql -uroot -p 1.DDL(Data Definition Languages)语句:数据定义语言 2.DML(Data Manipulation Language) ...

  5. MySQL学习随笔记录

    安装选custmer自定义安装.默认安装全部在c盘.自定义安装的时候有个advance port选项用来选择安装目录. -----------------------MySQL常见的一些操作命令--- ...

  6. MySQL -2- 体系结构--随笔小记

    简介与安装NoSQLRDBMS版本安装方式二进制安装,源码安装体系结构CS模型TCP/IPsocketmysql master thread 实例mysqld 的程序构成连接层 协议.验证.链接线程S ...

  7. MySQL/MariaDB随笔二

    mariaDB的二进制安装:系统版本和MariaDB版本 [root@ ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@ ~ ...

  8. MySQL/MariaDB随笔一

    1.yum 安装后先跑一下系统自带的安全脚本,否则数据库很不安全,任何人都可以登录 [root@xixi ~]# mysql_secure_installation NOTE: RUNNING ALL ...

  9. mysql时间随笔

    SELECT FROM_UNIXTIME(create_time,'%Y-%m-%d %H:%i:%s') FROM `order`; select date_add(FROM_UNIXTIME(cr ...

随机推荐

  1. Hive性能调优(一)----文件存储格式及压缩方式选择

    合理使用文件存储格式 建表时,尽量使用 orc.parquet 这些列式存储格式,因为列式存储的表,每一列的数据在物理上是存储在一起的,Hive查询时会只遍历需要列数据,大大减少处理的数据量. 采用合 ...

  2. Python—网络抓包与解包(pcap、dpkt)

    pcap安装 [root@localhost ~]# pip install pypcap 抓包与解包 # -*- coding:utf-8 -*- import pcap, dpkt import ...

  3. 4-8 pie与布局

    In [1]: %matplotlib inline import matplotlib.pyplot as plt   1.pie简单参数:plt.pie(x, explode=None, labe ...

  4. 1. 配置Java开发环境

    一.JDK & JRE & JVM 1. JDK是什么? JDK的全称是Java SE Development Kit,即Java标准版开发包,是Oracle提供的一套用于开发Java ...

  5. django框架创建app及使用、

    App 创建一个app : python manage.py startapp app01 admin: from django.contrib import admin # Register you ...

  6. rss订阅

    其实,本质上和爬虫没区别,只不过这是人家主动给你数据,而且是编排好格式后的数据 按个人主页url更新内容 去重,按照redis去重的方式 按时间保存内容 mysql 保存为时间格式(可以根据时间比较大 ...

  7. Vue.js 创建第一个应用

    VUE官网下载Vue.js文件或者用Vue的CDN地址 在项目中引入Vue.js文件 代码: <!doctype html> <html lang="en"> ...

  8. QDialog 设置成圆角

    void paintEvent(QPaintEvent *event) { Q_UNUSED(event); QBitmap bmp(this->size()); bmp.fill(); QPa ...

  9. C++ TCP客户端网络消息发送接收同步实现

    废话不多说, 直入主题, 我们在写客户单的时候希望在哪里发消息出去,然后在哪里返回消息(同步), 然后继续往下运行-, 而不是在这里发送了一个消息给服务端, 在另一个地方接受消息(异步) , 也不知道 ...

  10. C# 原子操作理解

    C#内置提供的原子操作 Interlocked.Increment:以原子操作的形式递增指定变量的值并存储结果. Interlocked.Decrement:以原子操作的形式递减指定变量的值并存储结果 ...