软件测试工程师学习笔记13 - 数据库篇
软件测试工程师学习笔记 -13一、入门必读二、Linux三、数据库3.MySQL一、入门必读二、Linux三、数据库 数据库:Database。是按照数据结构来组织、存储和管理数据的仓库。3.MySQL...
一、入门必读
二、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
- 图中3的部分为内连接结果
- 外连接
-
图中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
-
- 自关联子查询
- 自关联是同一张表做连接查询。自关联下,一定要找同一张表可关联的不同字段。
- 举例:现有中国省市表
- 省表结构province:
- proid :省编号
- pname:省名称
- 市表结构citys:
- cityid:市编号
- cname:市名称
- proid:市所属省编号
- 合并两个表,合并后表areas结构:
- id;/* 省/市的编号 */
- name;/* 省/市的名称 */
- pid;/* 如果是市,则显示所属省编号 */
- 查询广东省所有的城市:
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语句的次数远大于其他语句,因此索引很有必要。大量数据插入时,可以先删除索引,再插入数据,最后添加索引,这样可以提高数据插入的效率
- 即目录。语法
更多推荐
所有评论(0)