2020.4.22 Mysql Day1

发布于 2020-04-22  89 次阅读


Table of Contents
# 1.复习内容
 
 
 
# 2.灵感代办
 
*   ## linux文件目录作用
 
    *   /media 是媒体设备,U盘光驱,设备挂载在目录下
    *   /mnt让用户临时挂载系统,比如光驱
    *   /opt 应该是option 一些软件安装在其中
    *   /proc 是虚拟目录,映射系统的一些信息
    *   /sbin是Super User,系统管理员的程序
    *   /usr 重要目录,用于的应用程序 类似program files
    *   /var 存放不断扩充的的文件 比如日志
    *   /bin 存放的是最经常使用的命令
    *   /boot 启动Linux的一些核心文件,镜像连接
    *   /dev linux的外部设备
    *   /etc 系统管理的配置文件都在其中
    *   /lib 系统的动态链接库 类似windows 的dll
    *   /lost+found 一般是空的,非法关机会存放一些文件
    *   https://www.runoob.com/linux/linux-system-contents.html
 
*   ## 书单整理
 
    *   财经类
        *   在股市遇见你
        *   滚雪球
        *   穷查理宝典
        *   投资哲学-保守主义的指挥
        *   金融的逻辑
    *   历史类:明朝那些事
    *   其他:
        *   思考快与慢
        *   社会心理学
        *   心理学与生活
        *   定位
        *   细节
        *   国富论
        *   个体化
        *   定力
    *   文案
        *   文案创作与完全手册
        *   一个广告人的自白
    *   设计
        *   马上学好设计
        *   设计配色原理
        *   让创意更有粘性
    *   产品
        *   上瘾
        *   用户体验要素
        *   人人都是产品经理
        *   启示录
    *   管理
        *   奈飞的文化手册
        *   卓有成效的管理者
        *   战略节奏
    *   社交
        *   超级聊天术
    *   认识自我
        *   如何衡量你的人生
        *   成功心理学
        *   做出好决定
        *   习惯的力量
        *   自控力
        *   伯恩斯新情绪疗法
        *   搞定1-无压力的艺术
        *   **精力管理**
        *   **拆出你的沟通力**
        *   沟通力的艺术
        *   非暴力沟通
    *   商业类
        *   影响力
        *   逆袭销售
        *   浪潮之巅
        *   洞见
 
 
 
# 3.学习内容
 
*   ### mysql四大数据类型
 
    *   #### 数值类型
 
        *   int smallint bigint tinyint float(m,n) double decimal
 
    *   #### 字符类型
 
        *   char() varchar() text longtext blob longblob
        *   数据库里面一般不存储视频之类的,都存一个地址
        *   固定长度就用定长varchar(10),char(10)
 
    *   ### 枚举类型
 
        *   enum,set
        *   enum(1,2,3,4,5) 只能选其中一个
        *   一个是单选,一个是多选,只能从其中选一个
 
    *   #### 日期时间类型
 
        *   date time year datetime timestamp
        *   datetime **timestamp** 都是很常用的,
        *   timestamp默认返回当前系统时间
 
    *   #### 日期时间函数
 
        *   NOW()查看现在的世界
        *   CURDATE() 当前年月日
        *   CURTIME()
        *   YEAR(字段名)
        *   TIME(字段名)
        *   DATE(字段名)
 
    *   #### <span style="color:red;">日期时间运算(笔试题重要)</span>
 
        *   select * from 表名 where 字段名 运算符(NOW()-interval 间隔)
        *   **间隔单位: 1 day | 3month | 2 year**
        *   <span style="color:red;">-interval是一个语法,加上之后就可以让时间和间隔单位做运算</span>
        *   select * from table where time > (NOW() -interval YEAR(1))
 
*   ### Mysql运算符
 
    *   #### 数值比较
 
        *   \> >= < <= = !=
        *   数值不可以连续比较 2<id<3
 
    *   #### 逻辑比较
 
        *   and or
 
    *   #### 范围内比较
 
        *   <span style="color:red;">between 值1 and 值2 in() 、not()</span>
 
    *   #### 模糊比较
 
        *   where 字段 like 表达式 “”%|_”
            *   %代表0到多个
            *   _代表一个
        *   where 字段 regex  ””
 
    *   #### 空值判断
 
        *   is Null \is Not NULL
        *   查询为空值的信息 ,需要用is ,用==查询不出来
 
*   ### 查询
 
    *   #### order by
 
        *   给查询结果进行排序,永远放在倒数第二,倒是第一是limit
        *   asc  升序  desc 降序
 
    *   #### limit
 
        *   限制显示查询记录的条数(永远放在倒数第一)
        *   limit n 显示前n条
        *   <span style="color:red;">limit m,n 从m+1开始,显示n,显示n条</span>
        *   limit可以分页,每页显示10条,显示第六页
 
*   ### Mysql普通查询
 
  1.  ### mysql语句执行顺序
 
     1.  where …
     2.  group by …、
     3.  select … 聚合函数 from 表名
     4.  having ..
     5.  order by .. 永远倒数第二
     6.  limit  永远倒数第一
 
  2.  ### 聚合函数(铁三角)
 
     1.  铁三角 : group by having 聚合函数
     2.  max(),min(),avg(),count(),sum()
 
  3.  ### group by语句
 
      1.  一样的就是一组
      2.  group by columnName
      3.  要把列聚合处理(group by后面的已经去重)
 
  4.  ### having语句
 
      1.  对分组聚合后的结果再次筛选
      2.  having一般都和group by  结合进行使用
      3.  where后面只能跟实际存在的值(字段)做判断
      4.  having可以操作聚合函数后的值(判断运算)
 
  5.  ### distinct语句
 
      1.  使用distinct如果from不止一个字段,那么这些字段的组合才是去重标准(name,age)两个都相同,才去重
      2.  使用distinct,**后面的字段就**不能使用聚合函数
      3.  使用组合count(distinct name) 去重之后的数量
 
  6.  ### 查询表记录时候做数学运算
 
      1.  在查询的时候就可以做计算
      2.  在原有记录上更新
          1.  update sanguo set attack =attack*2 where country=‘蜀国’;
 
* ## 索引概述
 
    *   ### 索引概述
 
      1.  如果没有索引,全是从头查到尾,非常慢
      2.  定义:对数据库一列多列的排序(Btree方式 二分查找)
      3.  索引的缺点:耗费资源,耗费空间
      4.  表中的数据更新时,索引也在自动改变,降低数据维护速度
 
    *   ### 索引分类
 
        *   #### 索引创建在哪个字段?
 
            *   经常用来查询的字段
            *   经常用来where条件判断的字段
            *   经常用来做order by的字段
 
        *   #### 普通(MUl) and 唯一 (UNI)
 
            *   ##### 使用:
 
                *   可以设置多个字段
                *   主键只可以选一个字段使用
 
            *   ##### 普通索引:
 
                *   字段无约束(可重复,为空),KEY标志位MUL
 
            *   ##### 唯一索引:
 
                *   字段值不能重复,可以为空,KEY为UNI
 
            *   #### 创建普通索引and唯一索引
 
                *   #####  新建表时候创建
 
                    创建表的时候创建,在语句后添加
 
                    *   index(字段名) 多个字段需要重复写多次
                    *   unique(字段名) 多个字段需要重复写多次
 
                *   ##### 已有表中创建
 
                    *   create [unique] index 索引名 on 表名(字段名)
 
                *   ##### 查看索引
 
                    *   desc 表名;–>KEY标志
                    *   show index from 表名\G
                    *   \G就是分组显示
 
                *   #### 删除索引
 
                    *   drop index 索引名 on 表名;
 
        *   #### 主键(PRI)and自增长(auto_increment)
 
            *   #### 使用规则
 
                *   表中只能有一个主键
                *   主键有约束:不能重复不能为null
                *   KEY的标志:PRI
                *   通常主键都是id字段,能唯一锁定一条记录
 
            *   #### 创建主键
 
                *   id int primary key auto_increment;
                *   也可以跟在创建语句的后面primary key(id)(括号里)
                *   可以在创建语句后(括号外)跟着auto_increment=1000是auto的初始值
 
            *   #### 已有表加主键
 
                *   alter table 表名 add primary key(id)
 
            *   #### 已有表操作自增长属性
 
                *   添加自增长属性
                    *   alter table 表名 modify id int auto_increment
                *   重新制定起始值
                    *   alter table 表名 auto_increment=2000
 
            *   #### 删除主键
 
                *   删除自增长属性 modify
                *   删除主键索引:(要先删除自增长)alter table 表名 drop primary key;
 
# 4.扩展延伸知识
 
*   ## msyql常用函数
 
    *   https://juejin.im/post/5db28dec5188252dcf2f04a3
 
*   ## JavaScript预编译
 
    *   预编译就是解决函数执行顺序
 
*   ### typeof() 有一个特殊的点
 
    *   typeof()包裹的 ,如果没定义不保存,undefined
 
*   ### null的特殊点
 
    *   null是为了对象占位,所以typeof(null) 反对的是对象
 
*   ### JavaScript运算符的优先级
 
*   ### 记忆力增强
 
    *   多读,多看,多记,形成质变
 
*   ### mysql数据库一定要注意
 
    *   commit()
    *   close()
 
*   ### pymysql批量插入
 
    *   应该使用executemany()
    *   可以插入大量的数据,只用一个io请求,效率很高
 
*   ### 查看mysql里面的默认变量
 
    *   show variables ;
    *   set variables; 用set可以设置变量的值
    *   可以使用 like 模糊查询
 
*   ### mysql中用*的缺点
 
    *   所有索引都会失效
 
*   ### mysql语句执行时间的检测
 
    *   1.开启 set profiling = 1
    *   2.执行sql
    *   3.查看 show p  rofiles
 
*   ### mysql语句desc的作用
 
    *   查看表结构
 
*   ### 创建mysql中的反引号
 
    *   mysql中反引号是分辨关键字与列名的,建议加上
 
*   ### 创建唯一索引的注意(Unique)
 
    *   创建唯一索引的时候需要加index
    *   create unique index 索引名 on 表名(字段名)
 
*   #### mysql alter使用总结
 
    *   ![](https://raw.githubusercontent.com/wangjieares/PicGo/master/20200422191235.png)
 
 
 
# 5.知识内容个人梳理
 
 
 
# 6.今天都复习了之前的什么内容