1. SQL查询

  1. 执行顺序
    3. select ... 聚合函数 from 表名
    1. where ...
    2. group by ...
    4. having ...
    5. order by ...
    6. limit ...

  2. group by
    1. 作用: 给查询结果进行分组
    2. 示例
      1. 查询表中一共有几个国家
        select country from sanguo group by country;
      2. 计算所有国家的平均攻击力
        select country,avg(gongji) from sanguo
        group by country;

        先分组 --> 再聚合 --> 再去重
        蜀国
        蜀国
        蜀国 --> 120 --> 蜀国
        魏国
        魏国 --> 110 --> 魏国
        吴国 --> 115 --> 吴国

      3. 查找所有国家中英雄数量最多的前2名的国家名称和英雄数量

        select country,count(id) as number from sanguo 
        group by country
        order by number desc
        limit 2;

    3. 注意
      1. group by 之后的字段名必须要为select之后的字段名
      2. 如果select之后的字段名和group by 之后的字段不一致,则必须对该字段进行聚合处理(聚合函数)

  3. having 语句
    1. 作用
      对查询的结果进行进一步筛选
    2. 示例
      1. 找出平均攻击力>105的国家的前2名,显示国家名和平均攻击力

        select country,avg(gongji) as power from sanguo
        group by country
        having power > 105
        order by power desc
        limit 2;
    3. 注意
      1. having语句通常和group by 语句联合使用, 过滤由group by 语句返回的记录集
      2. where 只能操作表中实际存在字段,having可操作由聚合函数生成的显示列

  4. distinct
    1. 作用: 不显示字段重复值
    2. 示例
      1. 表中都有哪些国家
        select distinct country from sanguo;

      2. 计算蜀国一共有多少个英雄
        select count(distinct id) from sanguo
        where country ='蜀国';
      3. 注意
        1. distinct和from之间所有字段都相同才会去重
        2. distinct不能对任何字段做聚合处理

  5. 查询表记录时做数学运算
    1. 运算符
      + - * / %
    2. 示例
      1. 查询时所有英雄攻击力翻倍
        select id,name,gongji*2 as gj from sanguo;

        ## sudo apt-get install python3-pip
        ## sudo pip3 install pymysql

2. 约束与索引

  1. 作用:保证数据的完整性、一致性、有效性
  2. 约束分类
    1. 默认约束(default)
      1. 插入记录,不给该字段赋值,则使用默认值
    2. 非空约束(not NULL)
      1.不允许该字段的值有NULL记录
        sex enum("M","F","S") not null default 'S'

  3. 索引
    1. 定义
      对数据库表的一列或多列的值进行排序的一种结构(Btree方式)
    2.优点
      加快数据检索速度
    3. 缺点
      1. 占用物理存储空间
      2. 当对表中数据更新时,索引需要动态维护,降低数据维护速度

    4. 索引示例
      1. 开启运行时间检测:
        show variables like "profiling"; # 查看是否开启
        set profiling=1;
      2. 执行查询语句
        select name from t1 where name='lucy99999';
      3. 查看执行时间
        show profiles;
      4. 在name字段创建索引
        create index name on t1(name);
      5. 再执行查询语句
        select name from t1 where name="lucy88888";
      6. 查看执行时间
        show profiles;

        set profiling=0; # 关闭运行时间检测

3.索引

  1. 普通索引(index)

    1. 使用规则
      1. 可设置多个字段
      2. 字段值无约束
      3. key标志:MUL
    2. 创建index
      1. 创建表时
        create table 表名(...
        index(字段名), index(字段名));
      2. 在已有表中创建索引
        create index 索引名 on 表名(字段名);
        create index name on t3(name);
    3. 查看索引
      1. desc 表名; --> KEY标志为: MUL
      2. show index from 表名\G
    4. 删除索引
      drop index 索引名 on 表名;

  2. 唯一索引(unique)
    1. 使用规则
      1. 可设置多个字段
      2. 约束:字段值不允许重复,但可为NULL
      3. KEY标志: UNI
    2. 创建
      1. 创建表时创建
        unique(字段名),
        unique(字段名)
      2. 已有表
        create unique index 索引名 on 表名(字段名);
    3.查看索引、删除索引 同 普通索引一样

  3. 主键索引(primary key)
    自增长属性(auto_increment,配合主键一起使用)
    1. 使用规则
      1. 只能有一个主键字段
      2. 约束:不允许重复,且不能为NULL
      3. KEY标志: PRI
      4. 通常设置记录编号字段id, 能唯一锁定一条记录
    2. 创建
      1. 创建表时
        (id int primary key auto_increment,)auto_increment=10000; ##设置自增长起始值
        已有表添加自增长属性:
          alter table 表名 modify id int
          auto_increment;
        已有表重新指定起始值:
          alter table 表名 auto_increment=20000;
      2. 已有表
        alter table 表名 add primary key(id);
    3. 删除
      1. 删除自增长属性(modify)
        alter table 表名 modify id int;
      2. 删除主键索引
        alter table 表名 drop primary key;

4.数据导入

  1. 作用:把文件系统的内容导入到数据库中
  2. 语法
    load data infile "文件名"
    into table 表名
    fields terminated by "分隔符"
    lines terminated by "\n";

  3. 将scoretable.csv文件导入到数据库的表中
    1. 在数据库中创建对应的表
      create table scoretab(
      id int,
      name varchar(15),
      score float(5,2),
      number bigint,
      class char(7)
      );
      show create table scoretab;
    2. 把文件拷贝到数据库的默认搜索路径中
      1. 查看默认搜索路径
        show variables like "secure_file_priv";
        /var/lib/mysql-files/
      2. 拷贝文件
        sudo cp ~/scoretable.csv /var/lib/mysql-files/
    3. 执行数据导入语句
      load data infile "文件名"
      into table 表名
      fields terminated by "分隔符"
      lines terminated by "\n";
    4. 文件权限
      rwxrw-rw- 1 chenchuan chenchuan scoretable.csv
        所有者 所属组

        rwx: chenchuan用户
        rw-: 同组其它用户
        rw-: 其他组的其它用户(mysql用户)
        r--> 4
        w--> 2
        x--> 1
      chmod 644 文件名 rw-r--r--
    5. Excel表格如何转化为CSV文件
      1. 打开Excel文件 -> 另存为 —> CSV(逗号分隔)
    6. 更改文件编码格式
      1.用记事本/编辑器 打开,文件->另存为->选择编码

5.数据导出

  1. 作用
    将数据库中表的记录导出到系统文件里
  2. 语法格式
    select ... from 表名
    into outfile "/var/lib/mysql-files/文件名"
    fields terminated by "分隔符"
    lines terminated by "\n";
  3. 把MOSHOU库下的sanguo表英雄的姓名、攻击值、国家导出来,sanguo.txt
    select name, gongji, country from MOSHOU.sanguo
    into outfile "/var/lib/mysql-files/sanguo.txt"
    fields terminated by " "
    lines terminated by "\n";

  4. 将mysql库下的user表 user、host两个字段的值导出到user.txt
    select user,host from mysql.user
    into outfile "/var/lib/mysql-files/user.txt"
    fields terminated by " "
    lines terminated by "\n";

MySQL修炼之路三的更多相关文章

  1. MySQL修炼之路四

    1. 外键(foreign key) 1. 定义:让当前表字段的值在另一个表的范围内选择 2. 语法 foreign key(参考字段名) references 主表(被参考字段名) on delet ...

  2. MySQL修炼之路一

    1. MySQL概述 1. 什么是数据库 存储数据的仓库 2. 都有哪些公司在用数据库 金融机构.游戏网站.购物网站.论坛网站 ... ... 3. 提供数据库服务的软件 1. 软件分类 MySQL. ...

  3. MySQL修炼之路二

    1. 表字段的操作 1. 语法: alter table 表名 执行动作: 2. 添加字段(add) alter table 表名 add 字段名 数据类型: alter table 表名 add 字 ...

  4. MySQL修炼之路五

    1. 存储引擎和锁 1. 存储引擎(处理表的处理器) 1. 基本操作 1. 查看所有存储引擎 mysql>show engines; 2. 查看已有表的存储引擎 mysql>show cr ...

  5. 微博MySQL优化之路--dockone微信群分享

    微博MySQL优化之路 数据库是所有架构中不可缺少的一环,一旦数据库出现性能问题,那对整个系统都回来带灾难性的后果.并且数据库一旦出现问题,由于数据库天生有状态(分主从)带数据(一般还不小),所以出问 ...

  6. Java工程师修炼之路(校招总结)

    Java工程师修炼之路(校招总结) 前言 在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司的研发岗offer,包括百度,阿里,腾讯,今日头条,网易, ...

  7. windows+mysql集群搭建-三分钟搞定集群

    注:本文来源:  陈晓婵   <  windows+mysql集群搭建-三分钟搞定集群   > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...

  8. iOS攻城狮修炼之路

    自己总结的学习iOS的笔记,打造一个全面的知识体系,iOS攻城狮修炼之路[持续更新中] iOS学习笔记01-APP相关 iOS学习笔记02-UIScrollView iOS学习笔记03-UITable ...

  9. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

随机推荐

  1. postman 用环境变量Environment实现多服务器版本

    现存问题 在测试API期间,往往存在多种环境,对应IP地址(或域名也不同) 比如: Prod: http://116.62.25.57/ucows 用于开发完成发布到生产环境 Dev: http:// ...

  2. [转].gitignore文件不起作用的解决方案

    .gitignore文件不起作用的解决方案 觉得有用的话,欢迎一起讨论相互学习~Follow Me 转载地址 https://www.cnblogs.com/liugp/p/10399282.html ...

  3. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案-Onvif(三)使用Onvif协议进行设备PTZ云台控制

    背景分析 熟悉EasyNVR产品的盆友们应该都知道,EasyNVR主要完成的是RTSP视频流到RTMP/HLS/Flv的转码,并提供了一套api和一个可视化管理平台来便于调用.同时支持ONVIF协议进 ...

  4. [PHP] 浅谈 Laravel Authentication 的 guards 与 providers

    从文档的简单介绍上来讲,有一些抽象. 个人感觉,对于概念上的大多数不理解主要还是来自于 文档不是讲设计思路,而是实际操作. 查看英文文档,通常来说可以给你最准确的直觉,而本地翻译一般比较字面或者带有理 ...

  5. (CSDN 迁移) jFinal找不到或无法加载主类

    错误: 找不到或无法加载主类 com.demo.common.DemoConfig 项目上右键 -> Build Path -> Order and Export 修改顺序: 从上到下依次 ...

  6. asp.net中的html標籤runat=server時的映射

    asp.net中的html控制項runat=server時的映射 1.標準xhtml標籤:http://blog.csdn.net/TangZhongxin/archive/2009/07/31/43 ...

  7. 图论 --- 三维空间bfs

    <传送门> [题目大意] 给你一个三维的迷宫,让你计算从入口走到出口最少步数. [题目分析] 其实和二维迷宫还是一样的,还是用队列来做,由于BFS算法一般是不需要回溯的,所以我们就用不着还 ...

  8. Python之路【第九篇】:Python面向对象

    阅读目录 一.三大编程范式 编程范式即编程的方法论,标识一种编程风格: 大家学习了基本的python语法后,大家可以写python代码了,然后每个人写代码的风格不同,这些不同的风格就代表了不同的流派: ...

  9. 深度学习-Wasserstein GAN论文理解笔记

    GAN存在问题 训练困难,G和D多次尝试没有稳定性,Loss无法知道能否优化,生成样本单一,改进方案靠暴力尝试 WGAN GAN的Loss函数选择不合适,使模型容易面临梯度消失,梯度不稳定,优化目标不 ...

  10. MySQL8.0 下载安装启动(Windows10)

    2019年6月13日20:13:21 MySQL8.0 下载安装启动(Windows10) 下载 下载地址:https://dev.mysql.com/downloads/mysql/8.0.html ...