环境搭建

安装

  • windows
    • MySQL官网:https://www.mysql.com
    • 点击Downloads,下载MySQL社区版本(MySQL Community),点击MySQL Community Server
    • 点击 go to download page,完成下载
    • 运行msi文件进行安装
    • 选择自定义方式(Custom)
    • 选择下载MySQL Server,点击待安装列表中的MySQL Server,点击Adanced options设置安装路径
    • 完成安装,进入配置环节
    • Config Type中选择MySQL模式
    • 选择连接模式并配置端口号
    • 设置Root用户密码,根据需要添加MySQL用户
    • 完成安装

配置环境变量

  • 在系统变量中选择Path,添加MySQL的bin目录路径

测试

  • 进入CMD
  • 命令行执行mysql -- version查看是否安装成功
  • 命令行执行mysql -uroot -p
  • 输入自己的root密码,登录root用户

卸载

  • windows
    • 停止MySQL服务
    • 卸载MySQL软件
    • 删除数据文件
    • 清除环境变量中MySQL配置

SQL(structured query language)语言

SQL规范

  • windows下大小写不敏感
  • Linux下大小写敏感
  • 每条命令以 ;或 \g 或 \G 结束
  • (建议)数据库名,表明,字段名小写,函数名。关键字名,变量名大写
  • 注释
    • 单行:# 或 -- ... --
    • 多行:/* ... */
  • 空值(null)参与运算,结果为null
  • 着重号( ` ... ` )区分表中属性名和关键字
  • 字符串存在隐式转换,转换不成功看做0(字符串比较时,按照ASCII码处理)
  • %代表含有不确定个个数的字符(包括0)
  • _ 一个下划线代表含有一个不确定的字符
  • \ 为转义字符
  • 指定某表的某字段时,以   表名.字段名   表示
  • 列的别名(只可在OREDER BY中识别使用):字段名 别名 / 字段名 AS 别名 / 字段名 “别名”
      1.  

运算符

  • 比较运算符(结果为真返回1,结果为假返回0,其他结果返回null)
    • =,<,<=,>,>=
    • <=>(安全等与:可以对null进行判断)
    • <> /  !=
    • IS NULL / IS NOT NULL
    • LEAST( ... )(返回最小值)
    • GREATEST( ... )(返回最大值)
    • BETWEEN   A   AND   B (判断是否在A,B之间,包括等于)
    • IN( ... )(判断是否符合IN中的某值)
    • LIKE (模糊匹配)
  •  正则表达式:
    • REGEXP(匹配字符串):待匹配内容   REGEXP   匹配条件
    • 通配符:
      1. ' ^ ' 匹配以该字符后面的字符开头的字符串;
      2. ' $ ' 匹配以该字符后面的字符结尾的字符串;
      3. ' . ' 匹配任意单字符串;
      4. '[ ... ]' 匹配括号内任意字符,- 表示范围;
      5. ' * ' 匹配零个或多个其前面的字符;
  • 逻辑运算符(AND优先级高于OR)
    1. 非:NOT 或  !
    2. 与:AND 或 &&
    3. 或:OR 或 ||
    4. 异或:XOR
  •  位运算符
    1. 按位与:&
    2. 按位或:|
    3. 按位异或:^
    4. 按位取反:~
    5. 左移:<<
    6. 右移:>>

子句

  • WHERE   约束条件:遵守指定约束
  • HAVING   函数:遵守函数约束
  • GROUP BY   列名1,...   :按列的值进行分组
  • ORDER BY(排序)
    • 字段名1   排序规则关键字,字段名2   排序规则关键字,...   (对查询的数据进行排序)
      1. 升序:ASC(ascend)(默认)
      2. 降序:DESC(descend)
  •  LIMIT(分页)
    • LIMIT   偏移量(默认为0),数据量;
    • LIMIT   数据量   OFFSET   偏移量;

关键字

  • DISTINCT:去重
  • ALL:全部(不去重)
  • BETWEEN   A   AND   B :判断是否在A,B之间,包括等于
  • IN( ... ):判断是否符合IN中的某值
  • LIKE :模糊匹配

函数

  • 聚集函数(用于 SELECT 子句或 HAVING 子句)
    • COUNT( * ):统计数据个数
    • COUNT( 列名 ):统计一列中值的个数
    • SUM( 列名 ):计算一列值的总和
    • AVG( 列名 ):计算一列值的平均值
    • MAX( 列名 ):计算一列值的最大值
    • MIN( 列名 ):计算一列值的最小值
  • 数值函数
    • Abs():取绝对值
    • Sign(x):返回符号(正1负-1)
    • Ceil(x):向上取整
    • Floor(x):向下取整
    • Rand():随机数(带参数时,相同参数对应生成的随机数相同)

DDL(数据定义语言)

  • CREATE
    • 创建数据库

      CREATE   schema / database   数据库名

      CREATE   schema / database   数据库名   character set   字符集名称

    • 创建表

      CREATE   TABLE   IF NOT EXISTS   表名(

        属性名   数据类型   NOT NULL/NULL(是否接收空值)  DEFAULT value(默认值)  AUTO_INCREMENT(是否自增(一个表中只有一个列拥有这个属性))  PRIMARY KEY(设置为主键)

        属性名   ...

        PRIMARY KEY(主键名)(创建主键)

        CONSTRAINT   外键名称   FOREIGN KEY(属性名)   REFERENCES   表名(属性名)   ON DELETE   约束类型   ON UPDATE   约束类型(外键约束)

        约束类型:CASCADE  //主键表和外键表同时删除/更新对应行

                         SET NULL  //主键表删除/更新对应行,外键表中外键列设为空

             NO ACTION / RESTRICT  //拒绝删除/更新主键表

      )ENGINE = 存储引擎(默认InnoDB)

  • ALTER  
    • 修改数据库

      ALTER   schema / database   数据库名   character set   字符集名称

    • 修改数据表
      • 添加列:ALTER   TABLE   表名   ADD   列名   类型
      • 删除列:ALTER   TABLE   表名   DROP COLUMN   列名
      • 修改列:ALTER   TABLE   表名   MODIFY COLUMN   列名   类型
      • 添加主键:ALTER   TABLE   表名   ADD PRIMART KEY(列名) 
      • 删除主键:
        1. ALTER   TABLE   表名   MODIFY   列名   类型,DROP   PRIMATY KEY
        2. ALTER   TABLE   表名   DROP   PRIMATY KEY
  • DROP
    • 删除数据库

      DROP   schema / database   数据库名

    • 删除数据表

      DROP   TABLE   表名   //删除全部数据和结构,立即释放空间

      TRANCATE   TABLE   表名   //删除全部数据,保留结构,立即释放空间

      DELETE   TABLE   表名   //删除全部数据,保留结构,MyISAM引擎立即释放空间,InnoDB不释放空间

  • RENAME
  • TRUNCATE

DML(数据操作语言)

  • INSERT
    • 单条数据插入

      INSERT   INTO   表名(属性1,属性2,...)   VALUES   (值1,值2,...)

    • 子查询插入

      INSERT   INTO   表名1(属性1,属性2,...)   SELECT   (属性1,属性2,...)   FROM   表名2   (子句)

  • DELETE

    DELETE   FROM   表名

  • UPDATE

    UPDATE   表名   SET   字段1=表达式1 ...

  • SELECT
    • 查找某表中的某些或全部信息:

      SELECT   字段1,字段2,表达式   别名,...(*代表表中全部字段) FROM   表名

    • 查找某表中的满足某些条件的某些或全部信息:

      SELECT   字段1,字段2,...   FROM   表名   WHERE   约束条件

    • 去除重复行:

      SELECT DISTINCT ... FROM ...

    • 显示表结构:

      DESCRIBE / DESC 表名

 DCL(数据控制语言)

  • COMMIT
  • ROLLBACK
  • SAVEPOINT
  • GRANT
  • REVOKE

多表查询

  • 对 n 个表进行多表查询,至少需要 n-1 个连接条件
  • 连接条件
    • 等值/非等值
    • 自连/非自连(同一个表在逻辑上分为两个表)
    • 内连(结果只有匹配连接条件的数据)/外连(结果包含不匹配连接条件的数据)
      • UNION:返回两个查询的结果集的并集并去重
      • UNION ALL:返回两个查询的结果集的并集但不去重(UNION ALL 效率更高)
      •  外连接实现
        1. 左外连接:FROM   表名1   LEFT(OUTER)JOIN   表名2   ON   连接条件1
        2. 右外连接:FROM   表名1   RIGHT(OUTER)JOIN   表名2   ON   连接条件1
        3. 满外连接:对下图中的左上和右中/左中和右上使用UNION ALL实现
      • 内连接实现
        • FROM   表名1   JOIN   表名2   ON   连接条件1   JOIN   表名3   ON   连接条件2   ...

MySQL命令

  • 数据导入:source 文件绝对路径
  • 进入数据库:use 数据库名
  • 数据库备份:mysqldump -h 主机名 -u 用户名 -p 密码 数据库名 > 文件路径
  • 数据库还原:mysql -h 主机名 -u 用户名 -p 密码 数据库名 < 文件路径