MySQL基础学习思维导图

MySQL:

  • CRUD(创,读,更,删)

    • 表单结构

      • 表由表名,行,列,列名构成(本质为二维数组
      • 表中,一列为一个字段
      • 主键:标识数据(一个表最多有一个),用主键和其他表关联
      • 类型:VARCHAR,INT,DOUBLE,DATETIME,BIGINT
      • 创造:CREATE,读取:READ,更新:UPDATE,删除:DELETE
    • 创建表格

      • CREATE TABLE `user`
      • (`id` INT(10)NOT NULL, `gmt_created` datetime , `gmt_modified` datetime NOT NULL,PRIMARY KEY ( `id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;
    • 插入语句

      • INSERT INTO table_name(field1,field2,...fieldN)
      • VALUES(value1,value2,...valueN);
    • 查询SELECT

      • SELECT field1,field2,.... FROM table_name;
      • SELECT * FROM table_name WHERE condition;
      • where条件中相等用=
    • Limit子句

      • SELECT * FROM table_name LIMIT parameter(参数);
    • 排序(ORDER BY子句)

      • 语法:SELECT * FROM table_name ORDER BY field_name;
      • 加上ORDER BY win_rate DESC;表示反向排序(高到低)
    • 更新/删除

      • 更新语法:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
      • update语句必须加入where限定条件,否则的话,update语句会对整列起作用
      • 删除语法:DELETE FROM table_name [WHERE Clause]
      • 备份与恢复
  • 查询优化

    • LIKE查询

      • 语法:SELECT * FROM table_name WHERE condition LIKE condition;
      • SQL LIKE子句中,我们使用百分号%字符来表示任意字符,如果没有使用任何%,那么此时的LIKE就相当于=
      • ‘%A%’表示含有A,%A表示以A结尾,A%表示以A开头
    • AND和OR

      • 语法:SELECT * FROM table_name WHERE conditionA AND/OR condtionB;
    • IN和NOT IN

      • 语法:SELECT * FROM table_name WHERE column IN (condtionA,condtionB);
    • NULL值的处理

      • 概念:null是MySQL字段的数据类型的属性,本身不属于任何数据类型,但NULL的值也不等于是空值,空值是不占用存储空间的,但NULL占用存储空间。
      • MySQL为了处理NULL值提供了三种运算符:1. IS NULL 2. IS NOT NULL 3.<=>比较操作符。
      • 语法:SELECT field_name1,field_name2FROM table_nameWHERE field_name2 IS NOT NULL/IS NULL;
  • MySQL字符串处理

    • CONCAT函数

      • 语法:SELECT concat(column_name1,str,column_name2),column_name3 from table_name
    • TRIM函数

      • 语法:TRIM (str)
      • 作用:去除不需要的空格
      • 语法拓展:精确去除前面或者后面的TRIM( BOTH|LEADING前|TRAILING后 removed_str FROM str);
      • REPLACE()函数
        • 如果要修改字符串中间的值可以使用replace函数
        • 语法:UPDATE table_name SET colunm_name = REPLACE(column_name,string_find,string_to_replace) WHERE conditions;(不如直接使用update函数改完)
  • MySQL的关联查询

    • 左连接

      • 多个表格记录关联查询,简称关联查询,关联查询有很多种:常见的有左连接,右连接,内连接。
      • 左连接语法:SELECT *FROM TableA LEFT JOIN TableB ON condition;
      • 左连接就是返回左表的所有数据,即使右表没有匹配的数据(此时右表会以null的形式匹配数据。)
    • 表结构的设计规范

      • 1.表必须要有主键
      • 2.一个字段只表示一个含义
      • 3.总是包含两个日期字段:gmt_created(创建日期),gmt_modified(修改日期),且这两个字段不应该包含有额外的业务逻辑。
      • 4.MySQL中,gmt_created,gmt_modified使用datetime类型
      • 5.禁止使用复杂的数据类型(数组或者自定义类型等)
      • 6.禁止使用无力外键,应该使用逻辑外键
      • 7.禁止物理删除,应该使用逻辑删除is_deleted(逻辑删除,又叫做软删除,假删除,是一种数据库操作,使用标记将数据标为不可用,从而不从数据库中删除数据本身,使用适当的方法可以恢复被删除的数据。)
    • 右连接

      • 右连接就是返回右表的所有数据,即使左表没有匹配的数据
      • 语法:SELECT *FROM TableA RIGHT JOIN TableB ON condition;
    • 内连接

      • 当左右连接无法满足所有的查询需要时,就需要用到内连接了
      • INNER连接
        • 得到的是两个表的内部共有的数据
        • 语法:SELECT *FROM table_a INNER JOIN table_bON table_a.id = table_b.student_id;(此处的inner可以省略,只写join,效果是一样的)
        • 除开共有数据的外连接:SELECT *FROM table_a LEFT JOIN table_b ON table_a.id = table_b.student_idWHERE table_b.student_id IS NULL;
      • UNION关键词
        • 有时需要联合查询所有的内容,即查询两表的全部内容,可以写:SELECT *FROM table_a LEFT JOIN table_bON table_a.id = table_b.student_idUNION DISTINCTSELECT *FROM table_a RIGHT JOIN table_b ON table_a.id=table_b.student_id;(相当于同时执行两个表的左右连接。)

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值