zoukankan      html  css  js  c++  java
  • MYSQL练习随笔

    解法练习

    案例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
     
    解题命令
    select title,description
    from film 
    where film_id in(select film_id from film_category 
                 where category_id in(select category_id from category w
                                     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';
    --常规解法

    名词解释补充

    Explain解释

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

    explain select * from employees

    连接字符串

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

    --MySQL、SQL Server、Oracle等数据库支持CONCAT方法,
    而本题所用的SQLite数据库只支持用连接符号"||"来连接字符串
     
    --CONCAT方法:
    select CONCAT(CONCAT(last_name," "),first_name) as name  from employees
    --或者
    select CONCAT(last_name," ",first_name) as name  from employees
     
    --本题中使用:
    select last_name||" "||first_name as name  from employees

    插入数据时,已有则忽略

    insert IGNORE into ‘表’
    values()

    创建索引

    CREATE UNIQUE INDEX ... ON ... 创建唯一索引值
    CREATE INDEX ... ON ... 创建普通索引值
    --
    CREATE UNIQUE INDEX uniq_idx_firstname ON actor(first_name);
    CREATE INDEX idx_lastname ON actor(last_name);

    MYSQL中常用的强制性操作

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

    截取字符串

    substr(字符串,起始位置,长度)
    起始位置:截取的子串的起始位置(注意:字符串的第一个字符的索引是1)。值为正时从字符串开始位置 开始计数,值为负时从字符串结尾位置开始计数。
    长度:截取子串的长度
    --例 取first_name最后两位
    select first_name from employees
    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() 函数

    group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’]
    --分组后连接
  • 相关阅读:
    tcp粘包解决
    socket网络编程
    logging模块
    异常处理
    hashlib configparser模块
    列表推导式和生成器表达式和内置函数
    迭代器与生成器
    装饰器
    函数
    文件操作
  • 原文地址:https://www.cnblogs.com/dabaige/p/11779843.html
Copyright © 2011-2022 走看看