4.2 学习笔记
Mysql 数据库专题1.本专题的学习重点1、熟悉Mysql数据库的连接工具2、掌握查询的SQL语句的编写2.什么是数据库数据库就是存储数据的仓库3.为什么要学数据库Mysql在测试过程中有时候需要通过访问数据库验证数据的正确性比如验证统计报表....4.企业主流的数据库类型有哪些大型数据库oracle中型数据库mysqlsql-server小型数据库access5.Mysql数据库的连接工具navicatsongy6.Navicat工具的使用1、获取数据库账号信息2、根据账号信息进行连接7.数据库及表的概念数据库一个数据库服务器可以多个数据库每个数据库可以多个表数据库与表的关系一对多表存储数据的最小单元类比为仓库中的货架8.sql语句的基本查询1.基本格式select 字段名1字段名2.... from 表名2. sql注释1单行注释-- 注释内容2多行注释/* 注释内容 */3.查询表中部分字段的数据 select 字段名 from 表名4.查询表中全部字段的数据: select * from 表名9. where过滤查询1.select 字段名1字段名2.... from 表名 where 条件2. 条件表达式/字段列 比较运算符/特殊比较运算符 值3. 普通比较运算符 ! 4.字符串转换为日期函数 STR_TO_DATE(str,format)例如select * from EMP where HIREDATE STR_TO_DATE(2019-01-01,%Y-%m-%d)5. 多个条件条件连接用or需要查询的结果只需要满足其中一个and 需要查询的结果需要同时满足所有的条件and or的优先级and的优先级高于or类比and相当于乘除法or相当加减法()的优先级最高6.特殊比较运算符a. like 模糊查询 只知道某个字段的部分值常用的特殊字符% 任意个任意字符_ 一个字符的占位符比如select * FROM EMP where ENAME like %S%-- 查询名称中首字母是S的员工信息select * FROM EMP where ENAME like S%-- 查询名称中最后一个字母是S的员工信息select * FROM EMP where ENAME like %S-- 查询名称中第二个字母是O的员工信息select * FROM EMP where ENAME like _O%b. between...and 在两者之间包含边界值比如select * from EMP where SAL between 4000 and 8000;c. isnull是空的 null不等于空格比如select * from EMP where COMM0 or COMM IS NULLd. is notnull不是空的e. in在...里面in (1个或者多个值)比如select * from EMP where EMPNO not in (7566,7839,7902)f. not非一般跟not like/not between and /not in比如select * from EMP where EMPNO not in (7566,7839,7902)10.查询前几行的数据limit使用格式select 字段列1,字段列2... from 表名 limit 偏移数n行偏移数第一行的偏移数从0开始的比如select * from EMP limit 0,5简写 select * from EMP limit 5-- 每页展示5条数据 打印出第二页的数据:select * from EMP limit 5,511.distinct的使用对字段列数据去重复 放到字段列前面比如-- 有员工的部门有哪些select DISTINCT EMP.DEPTNO from EMP12.排序a.排序规则升序从小到大 asc 默认就是升序排列降序从大到小 descb. 格式order by 放到select语句的最后order by 字段名1 asc/desc , 字段名2 asc/desc多个列排序先按照第一个列排序当第一个列的值相同的情况下才会按照第二个列排序13.常用函数a.用于数据的统计b.常用五个函数最大值 max(字段列/计算列)最小值 min(字段列/计算列)平均值 avg(字段列/计算列)求和 sum(字段列/计算列)统计列的个数 count(字段列/计算列)比如-- 查询员工的最高工资工资底薪提成select max(salif(COMM is null,0,COMM))count()函数在使用的时候重复数据也数个数,如果存在null列不进行统计一般用聚合函数和group by 配合14.分组1.group by2.什么情况下需要用到group by涉及对多个组数据进行统计的情况下就需要用到group by3. 分组的字段如何决定是根据哪个字段的值进行分组那对应的分组字段就根据这个字段进分组4. 格式select 字段列1,字段列2... from 表名 where 条件group by 字段名5. 规则sql语句中包含group by 那么select 后面跟的字段除了函数group by后面有的字段select后面才可以有6. 比如-- 统计部门的平均底薪/* 统计的步骤1、进行分组 相同部门的分到一个组 ----》3个组2、再对每个组进行统计 avg()*/select DEPTNO, avg(SAL),sum(SAL),count(SAL) from EMP group by DEPTNO7. having分组过滤对分组后数据的过滤 having放到group by 后面比如 -- 查询岗位平均工资大于6000的岗位及岗位平均工资select job,avg(SAL) from EMP group by job having avg(SAL)6000;8. 数据过滤wherewhere条件中不可以跟函数having对分组后数据过滤后面可以跟函数15. 子查询什么子查询1特点sql语句中包含一对括号在执行子查询的时候先会执行子查询再执行主查询2使用场景当需求中存在未知值的情况下一般使用子查询还有子查询可以作为表/条件使用3子查询的分类单行子查询多行子查询子查询作为条件使用一般会包含in16.多表连接1使用场景需要查询的信息可能来自两个或者多个表那么就需要使用到多表查询的sql2 多表连接a.内连接(1)内连接表示方式select * from EMP,DEPT where EMP.DEPTNODEPT.deptnoinner join..onselect * from EMP inner join DEPT on EMP.DEPTNODEPT.deptno(2) 重点/难点找对应的关联条件表1.主键表2.外键主键唯一标识某行数据的列外键与其他表建立关联的列(3)比如select * fromEMP,DEPTwhere EMP.DEPTNODEPT.deptnob. 外连接(1) 左连接left join..on...左连接以左表为准左表的数据全有通过关联条件跟右表建立连接与之匹配的记录则连接否则返回Null(2) 右连接right join..on...右连接以右表为准右表的数据全有通过关联条件跟左表建立连接与之匹配的记录则连接否则返回Null17.行转列 条件查询a. case when 条件1 then 内容1when 条件2 then 内容2.......when 条件n then 内容nelse 其他内容 endb. 比如select *,case when sal8000 then 初级测试工程师when sal8000 and sal15000 then 中级测试工程else 高级测试工程师 end
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2479998.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!