画布 1
Linux 与 SQL 知识梳理
  Linux 与 Bash 编程
    L1
      Linux 系统与 Shell 环境准备
        Linux 的发行版
          Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS
        Linux 安装
          云服务器
          虚拟机安装
        Linux 的访问方式
          ssh 登录
            Windows：cmd/powershell/gitbash 等命令行
            MasOS：terminal 终端
            ssh [ -p 端口 ] 用户名@服务的 ip
          图形界面登录
            SecureCRT
            mobaxterm
      Linux 常用命令之文件处理
        帮助命令
          --help
            命令 --help
          man
            man 命令
              显示下一屏：空格键
              一次滚动一行：回车键
              往前一屏：b
              退出：q
          自动补全
            tab键
          历史命令
            上下键
        文件管理
          查看文件信息
            ls
              -a 显示指定目录下所有内容
              -l 用列表的方式显示文件的详细信息
              ll -> ls -l
            查看当前路径下全部文件的详细信息：ls -al
          切换工作目录
            cd
              cd 绝对路径
              cd 相对路径
              cd
                快速切换到家目录
          显示当前的工作目录
            pwd
          创建新目录
            mkdir
              mkdir 目录名
              -p 递归创建目录
                mkdir -p 目录/目录/目录
          创建一个空文件
            touch
              touch 文件名
          拷贝
            cp
              cp 源文件路径 目标目录
                拷贝文件
              cp -a 源目录路径 目标目录
                拷贝目录
          移动、重命名
            mv
              mv 文件路径/文件名 目标路径
                移动文件
              mv 文件名 新文件名
                重命名文件
          删除文件或目录
            rm
              -f 强制删除
              -r 删除目录
              -i 互动模式
              rm 文件名
                删除文件
              rm -r 目录名
                删除目录
          建立链接文件
            ln
              ln 源文件 目标路径/文件名
                硬链接
                  只能链接文件
                    不常用
              ln -s 源文件路径 目标路径
                软链接
          查找文件
            find
              find 目录 -name 条件
              find ./ -name '*.txt'
          打包与压缩
            tar
              打包文件：tar -cvf xx.tar 文件名1 文件名2
              查看打包文件：tar -tf xx.tar
              提取文件内容：tar -xf xx.tar -C 路径
              gzip 方式压缩：tar -zcvf xx.tar.gz 要被压缩的文件或目录
                常用方式
                tar -zcvf 路径/压缩包文件名.tar.gz 文件1 文件2 目录1
              bzip2 方式压缩：tar -jcvf xx.tar.bz2 要被压缩的文件或目录
              解压： tar -xvf xx.tar.bz2 -C 目录
                tar -xvf 压缩包文件名.tar.gz -C 解压缩的文件要放置的目录
        文本查看
          查看或者合并文件内容
            cat
              cat 文件名
              cat 文件1 文件2 > 新文件名
          取出文件前面几行
            head
              head 文件名
                默认显示前10 行
              head -n 数字 文件名
                -n 指定显示的行数
          取出文件后面几行
            tail
              -n 指定显示的行数
          分屏显示
            more
            less
              less 文件名
                显示下一屏：空格键
                往前一屏：b
                退出：q
        文本编辑
          vi/vim
            进入插入模式：i
            进入命令模式：ESC
            保存退出
              :wq
            强制退出
              :q!
          vim 文件名
        文本处理
          三剑客
            内容检索
              grep
                grep 参数 搜索内容 文件名
                -v 取反
                -n 显示匹配行还有行号
                -i 忽略大小写
            语言解析引擎
              awk
                awk 'pattern{action}'
            查找替换内容
              sed
          管道
            |
              命令1 | 命令2 | 命令3
                cat lan | grep -n 'java'
          输出重定向
            >
          字符串的输出
            echo
              把内容输出到屏幕
              echo 123 > number
                简单的创建文件
        文件属性
          第1位
            - 文件
            d 目录
            l 链接文件
          后9位
            r 读取权限
              4
            w 写入权限
              2
            x 执行权限
              1
            - 没有权限
              0
            第1组，3位：该文件所有者拥有的权限
            第2组，3位：所有者同组用户拥有的权限
            第3组，3位：其他用户拥有的权限
        用户管理
          查看当前用户
            whoami
          查看登录用户
            who
          切换用户
            su
              切换root账号：su
              切换普通账号：su 账号
          退出登录
            exit
        权限管理
          修改文件权限
            chmod
              chmod 三位数字 文件名
              chmod 777 1.txt
          修改文件所有者
            chown
          修改文件所属组
            chgrp
        磁盘管理
          查看已挂载磁盘或分区使用情况
            df
              -h：以G或者T或者M人性化方式显示
              -i：查看inode使用情况
              -T：查看文件系统类型
          查看所有磁盘和分区使用情况
            lsblk
          统计文件占用磁盘大小
            du
              -s：列出总和
              -h：人性化显示容量信息
        进程管理
          查看进程信息
            ps
              ps aux
              ps -ef
          动态显示进程
            top
          终止进程
            kill
              kill -9 pid值
        网络管理
          查看网卡信息
            ifconfig
          测试远程主机连通性
            ping
              ping 服务器地址
          打印Linux网络系统的状态信息
            netstat
              -t 列出所有tcp链接
              -n 用数字的形式显示地址和端口号
              -p 显示进程的pid值
              netstat -tnp
    L2
      Linux 常用命令之性能统计
        查看 CPU 信息
          cat /proc/cpuinfo
        查看系统负载与进程 cpu 占用
          top
        内存(MEM)占用统计
          free
          ps
          cat /proc/meminfo
          top
        查看网络连接
          netstat -tnp | head -10
      Linux 常用统计命令
        排序
          sort
        去重
          uniq
        统计数量
          wc
      Linux 进程与线程
        ps 进程列表快照
          ps -ef
            unix 风格参数
          ps aux
            bsd 风格参数
          ps --pid pidlist
            gnu 风格参数
        top 交互式进程观测
        kill killall 结束进程
        fg 进程切换到前台
        bg 进程切换到后台
        ctrl z 挂起进程
    L3
      Linux 三剑客与管道使用
        程序运行环境输入与输出
          标准输入 0
          标准输出 1
          错误输出 2
        管道连接符 | 可以连接多个程序的执行
      Linux 三剑客之 grep
        文件检索
          grep pattern -r dir/
            递归搜索
          grep -H 111 /tmp/1
            展示匹配文件名
          grep -l 111 /tmp/1
            只展示匹配文件名
        范围约束
          grep -i pattern file
            忽略大小写
          grep -v pattern file
            不显示匹配的行
          grep -E pattern file
            使用扩展正则表达式
      Linux 三剑客之 sed
        语法结构
          sed [addr]X[options]
      Linux 三剑客之 awk
        语言解析引擎
        `awk 'pattern{action}'
      Linux 进阶命令
        接口请求
          curl
        处理 json
          jq
      Linux 环境配置
        PATH 变量配置
        应用安装
          Python
          Java
          nodejs
          maven
          Android SDK
    L4
      Bash 编程语法
        变量
          Variable_name=value
        数据类型
          字符串
          数组
        控制语句 if
        循环语句 for
        while 循环
        函数
      Bash 脚本编写
        Bash 脚本创建
          touch bash_script.sh
          vim或者vi bash_script.sh
        Bash 执行
          chmod +x bash_script.sh
          ./bash_script.sh
        注释
          #
          << BLOCK和BLOCK之间
          ''
        读取输入
          read
        算术运算
        关系运算符
  SQL 语法与数据库
    L1
      数据库的基本概念
        数据库
          某种有组织的方式存储的数据集合
          是存储和管理数据的仓库
          本质是一个文件系统
        数据库管理系统
          DBMS
          数据库管理软件
        数据库分类
          关系型数据库
            MySQL、Oracle、Postgres、SQLite、SQLServer
          非关系型数据库（NoSQL）
            MongoDB、Redis、HBase、Neo4j
      MySql 的安装与配置
        开启 mysql 服务
          net start mysql
        登录
          mysql -h主机IP -u用户名 -p密码
        修改密码
          alter user 'root'@'localhost' identified by '密码';
        退出
          exit
        关闭 mysql 服务
          net stop mysql
      数据库客户端工具
        WorkBench
        Navicat
      MySql 介绍
        目录结构
          bin：可执行文件
          lib：依赖库
          docs：文档
          include：包含文件
          share：存放字符集等信息
        数据库表
          表：包含数据库中所有数据的数据库对象
          表名：每个表的唯一标识
          模式（schema）：关于数据库和表的布局及特性的信息
          列：表中每列称为一个字段
          行：表中的一个记录
      SQL 简介
        结构化查询语言
        用于存取数据以及查询、更新和管理关系数据库系统
        分类
          DDL
            数据定义语言
          DML
            数据操作语言
          DQL
            数据查询语言
          DCL
            数据控制语言
      DDL 数据库操作-创建
        创建数据库
          CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] 数据库名
CHARACTER SET [=] 字符集
      DDL 数据库操作-查看
        查看所有数据库
          SHOW DATABASES;
        选择数据库为当前数据库
          USE 数据库名;
        查看数据库定义信息
          SHOW CREATE DATABASE 数据库名;
      DDL 数据库操作-修改
        修改数据库
          ALTER {DATABASE} [数据库名]
CHARACTER SET [=] 字符集
      DDL 数据库操作-删除
        删除数据库
          DROP DATABASE [IF EXISTS] 数据库名;
      DDL 数据库表操作简介
        数据类型
          数字类型
          字符串类型
          日期和时间类型
      DDL 数据库表操作-创建
        创建表
          CREATE TABLE 数据表名 (
列名1 属性,
列名2 属性…
);
        复制表
          CREATE TABLE数据表名
{LIKE 源数据表名 | (LIKE 源数据表名)}
      DDL 数据库表操作-查看
        查看表名
          SHOW TABLES;
        查看表结构
          DESC 数据表名;
          DESC 数据表名 列名;
      DDL 数据库表操作-修改
        添加新列
          ALTER TABLE 表名 ADD 列名 列属性;
        修改列定义
          ALTER TABLE 表名 MODIFY 列名 列属性;
        修改列名
          ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
        删除列
          ALTER TABLE 表名 DROP 列名;
        修改表名
          ALTER TABLE 旧表名 RENAME AS 新表名;
          RENAME TABLE 旧表名 To 新表名;
      DDL 数据库表操作-删除
        删除表
          DROP TABLE [IF EXISTS] 数据表名;
      DML 表数据操作-插入
        数据插入
          INSERT INTO 数据表名
(列名1, 列名2...)
VALUES(值1, 值2...);
      DML 表数据操作-修改
        数据修改
          UPDATE 数据表名
SET 列名1=值1 [, 列名2=值2...]
[WHERE 条件表达式]
      DML 表数据操作-删除
        通过 DELETE 语句删除数据
          DELETE FROM 数据表名
WHERE 条件表达式
        通过 TRUNCATE TABLE 语句删除数据
          TRUNCATE TABLE 数据表名
      DQL 表查询操作-简介
        单表查询
          SELECT * FROM 表名;
        字段查询
          SELECT 列名 FROM 表名;
        起别名
          为表起别名
            SELECT 列名 FROM 表名 表别名;
          为字段起别名
            SELECT 列名 AS 别名 FROM 表名;
        去重
          SELECT DISTINCT 列名 FROM 表名;
        运算查询
          SELECT (列名 运算表达式) FROM 表名;
      DQL 表查询-条件查询
        条件查询语法
          SELECT 列名 FROM 表名 WHERE 条件表达式
        比较大小
          WHERE <列名> [> < <= >= = <> !=] <值>
        使用 BETWEEN 进行模糊查询
          WHERE <列名> [NOT] BETWEEN <起始表达式> AND <结束表达式>
        使用 IN 进行模糊查询
          WHERE <列名> IN <(常量列表)>
        判断是否为空
          WHERE <列名> IS [NOT] NULL
        逻辑运算符
          多个条件同时成立
            AND
            &&
          多个条件任一成立
            OR
            ｜｜
          不成立
            NOT
        通配符
          匹配任意多个字符
            %
          匹配一个字符
            _
      DQL 表查询操作-排序
        SELECT 列名 FROM 表名
[WHERE 条件表达式]
ORDER BY 列名1 [ASC / DESC],
列名2 [ASC / DESC]
      DQL 表查询操作-聚合函数
        统计指定列不为 NULL 的记录行数
          COUNT()
        计算指定列的最大值
          MAX()
        计算指定列的最小值
          MIN()
        计算指定列的数值和
          SUM()
        计算指定列的平均值
          AVG()
        聚合查询
          SELECT 聚合函数(列名) FROM 表名;
      DQL 表查询操作-分组
        SELECT 分组列/聚合函数 FROM 表名
GROUP BY 分组列
[HAVING 条件];
      DQL 表查询操作-limit 关键字
        SELECT 列名1, 列名2...
FROM 表名
LIMIT [开始的行数], <查询记录的条数>
      SQL 约束-主键约束
        主键：一列（或一组列），其值能够唯一标识表中每一行
        添加主键约束
          列名 字段类型 PRIMARY KEY
          ALTER TABLE emp2 ADD PRIMARY KEY(eid);
      SQL 约束-非空约束
        某一列不予许为空
        列名 字段类型 NOT NULL
      SQL 约束-唯一约束
        表中的某一列的值不能重复
        列名 字段类型 UNIQUE
      SQL 约束-默认值
        用来指定某列的默认值
        列名 字段类型 DEFAULT 默认值
    L2
      多表简介
        在数据库设计中使用多张表格来实现数据存储的要求
      SQL 约束-外键约束
        从表中与主表的主键对应的字段
          CONSTRAINT [外键约束的名称] FOREIGN KEY (外键字段) REFERENCES [主表名称(主键字段)]
      多表关系简介
        一对多
        多对多
        一对一
      多表查询
        通过查询多张表格获取数据，至少涉及两张表
      多表查询-内连接查询
        INNER JOIN
        select [字段名称] from [表1]inner join [表2] on [条件]
      多表查询-外连接查询
        左外连接
          LEFT OUTER JOIN
          SELECT [字段] FROM [左表] LEFT JOIN [右表] ON [条件]
        右外连接
          RIGHT OUTER JOIN
          SELECT [字段] FROM [左表] RIGHT JOIN [右表] ON [条件]
      子查询简介
        一个查询语句嵌套在另一个查询语句内部
        From型子查询
        in/not in 型子查询
        where型子查询
    L3
      数据库进阶
      redis 内存数据库
      mongodb nosql 数据库
      neo4j 图数据库