一、入门必读

二、Linux

三、数据库

       数据库:Database。是按照数据结构来组织、存储和管理数据的仓库。

2.MySQL深入

1)连接查询

当查询结果来源于多张表时,需要将多张表连接成一张大的数据集,再选择合适的结果返回。连接查询可以通过连接运算符(连接条件)实现多个表查询。

       连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。
       在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。
       连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,然后通过连接进行查询。

  • 内连接:查询结果只显示两个表满足连接条件的部分
    • 图中3的部分为内连接结果
      内连接
    • 格式: SELECT * FROM Student INNER JOIN SC ON S.Sno = SC.Sno
    • 实际使用中常常省略inner join,格式: SELECT * FROM Student,SC WHERE S.Sno = SC.Sno
  • 外连接
    • 图中1、3联合起来为左连接,图中2、3联合起来为右连接外连接

    • 左连接:内连接加上左边表其他数据,右表其他数据使用null填充。格式: SELECT Sno,Sname Class,Cno,Grade FROM S LEFT OUTER JOIN SC ON S.Sno = SC.Sno

    • 右连接:内连接加上右边表其他数据,左表其他数据使用null填充。格式: SELECT Sno,Sname,Class,Cno,Grade FROM S RIGHT OUTER JOIN SC ON S.Sno = SC.Sno

  • 自关联子查询
    • 自关联是同一张表做连接查询。自关联下,一定要找同一张表可关联的不同字段。
    • 举例:现有中国省市表
    1. 省表结构province:
      • proid :省编号
      • pname:省名称
    2. 市表结构citys:
      • cityid:市编号
      • cname:市名称
      • proid:市所属省编号
    3. 合并两个表,合并后表areas结构:
      • id;/* 省/市的编号 */
      • name;/* 省/市的名称 */
      • pid;/* 如果是市,则显示所属省编号 */
    4. 查询广东省所有的城市:select * from areas a1 inner join areas a2 on a1.id = a2.pid where a1.name = ‘广东省’;
    • 子查询,嵌套到主查询里。子查询作为主查询的数据源或者条件,是可单独运行的查询语句。主查询不能独立运行,依赖于子查询结果。
      • 标量子查询,返回结果只有一行、一列
      • 列子查询,子查询返回多行
      • 表级子查询,子查询返回多行多列

2)内置函数

  • 字符串函数
    • 拼接字符串concat(str1,str2……)
    • length 返回字符串字符的个数: length(str),如果字符串中包含utf-8格式的汉字,一个汉字length返回3
    • 内置函数可以在where条件后面使用
    • 截取字符串
      • select left (str,len) 左边截取字符
      • select right(str,len)右边截取字符
      • select substring (str,pos,len)字符串从pos起len个字符,pos 从1开始计数
  • 去除空格
    • ltrim (str)返回删除左侧空格的字符串 str;
    • rtrim (str)返回删除右侧空格的字符串 str;
    • trim (str)返回删除两侧空格的字符串 str;
  • 求四舍五入值
    • round(n,d),n表示原数,d表示小数位置,默认为0
  • 随机数
    • rand(),值为 0-1.0 的浮点数
  • 日期时间函数
    • 当前日期 current_date()
    • 当前时间 current_time()
    • 返回时间与日期 now()
  • 了解存储过程
    • 存储过程 procedure,是一条或者多一条语句的集合

    • 语法:
      create procedure 存储过程名称(参数列表) begin sql 语句 end

    • 调用 :call 存储过程名称()

    • 删除: drop procedure 存储过程 -此处不需要括号

  • 了解视图
    • 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦。因此定义视图,其本质就是对查询的封装。
    • 语法: create view 视图名称 as select 语句
    • 删除: drop view 视图名称
  • 了解事务
    • 事务广泛用于订单系统、银行系统等多种场景
    • 所谓事务,它是一个操纵序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。要么都成功,要么都失败
    • rollback 回滚事务,放弃修改
    • commit 提交事务,修改生效
  • 了解索引
    • 即目录。语法 create index 索引名称 on 表名(字段名称(长度))
    • 查看索引。语法 show index from 表名
    • 删除索引。语法drop index 索引名称 on 表名
    • 优点:提高了select语句的查询速度
    • 缺点:更新表速度变慢,因为不仅保存数据,还要保存索引文件
    • 实际应用中,执行select语句的次数远大于其他语句,因此索引很有必要。大量数据插入时,可以先删除索引,再插入数据,最后添加索引,这样可以提高数据插入的效率
Logo

更多推荐