热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库小笔记

sql结构化查询语言DQL数据查询语言DML数据操作语言DDL数据定义语言创建对象表视图索引DCL数据控制语言权限概念关系:可以理解是一张二维表,关系型

  • sql结构化查询语言
    DQL数据查询语言
    DML数据操作语言
    DDL数据定义语言 创建对象 表视图 索引
    DCL数据控制语言 权限

  • 概念
    关系:可以理解是一张二维表,关系型数据库就是二维表数据库 关系名是表名
    元组:二维表的一行,或是记录
    属性:一列 ,字段
    域:取值范围

  • DQL
    格式:select 列名 from 表名 where 条件1 and/or 条件2 groud by 列 having 分组条件 order by 排序
    注释格式 –
    条件用字符串来代表用双引号""括起来
    模糊查询 like %代表是任意多个字符 _代表是一个字符
    多条件联合查询 and or
    范围查询 在一个连续值的范围之内 between 1 and 10
    对查询结果进行排序 order by asc是升序默认 desc是降序 也可以进行多个列排序
    分页:limit
    select * from table limit 4 每次查询前4行
    select * from table limit 0,4 分别查询第几页 默认是从零开始的,每页显示几条数据
    举例:select * from table where sal>1000 order by sal desc limit 0,4

  • 函数 是数据库里的方法,直接调用
    单行函数:指的是操作一行数据返回一行数据,
    字符串函数:
    长度 select name,length(name)from emp;
    拼接 select concat(name,"=",sex) from emp;
    替换 select name,replace(sex,“1”,“男”)from emp;
    dual假表 是为了满足from后面的条件不然报错,
    其他函数:
    空值的处理 ifnull(a,b) a=null 显示b
    加密算法md5 不可逆加密 select MD5(123) from dual;
    多行函数 :处理多行数据只返回一个结果,把数据分成多个组,返回的数据条数和组数一样
    max最大值 min最小值 avg平均值 sum求和 count求总数
    注意不要把普通的列和组函数写在一起,语法不会错但是结果是错的,
    在这里插入图片描述
    在这里插入图片描述
    就是说这个很坑,数据库不报错,因为是先执行了组函数, 求出了一个值,在显示一条数据只能是名字的第一条数据了

  • 数据分组
    按照一个条件进行分组,每一个组返回对应结果,
    group by可以对指定列进行分组,
    having是可以对分组进行过滤
    where是行级过滤,处理表中的行数据,having是分组过滤,处理的是查询出来分组后的数据,
    能使用where就不要使用having ,
    注意分组的列和普通的列不能放在一起,会发生错乱
    select job,avg(sal) from emp group by job; 这是按照jop来分组,显示分组,显示分组sal的最大值,是可以的
    select job,avg(sal),name from emp group by job 这样是不会报错但是name是错误的,要注意分组列和普通列不能在一起 ,不能和组函数在一起,

  • 单表查询执行顺序
    from-where-group by-having-select-order by

  • 多表关联 99关联
    自然连接:会自动进行关联列相同的数据 也就等值连接
    select e.name,d.name from emp e,dept d where e.deptno=d.deptno and e.sal >2000; 这个是92语法 不用自动关联表,关联条件写在where后面
    select e.name,d.name from emp e natural join dept d where e.sal>2000; 99关联 用natura join来关联表
    还有一种是使用using关键字来进行指定条件的等值连接
    select e.name,d.name from emp e join dept d using(deptno) ; 这个就是可以使用指定等值列
    on 关键字可以可以进行等值连接和非等值连接 添加条件在on后面
    select e.name,d.name from emp e join dept d on(e.deptno=d.deptno);
    select e.name,d.name from emp e join dept d on(e.sal between s.losal and s.hisal);
    三表关联 :
    select e.name,d.name,s.grade from emp e,dept d,salgrads s where e.deptno = d.deptno and e.name = s.name 92语法
    select e.name,d.name,s.name from emp e join dept d join salgrade on(e.sal=s.sal and s.sal =d.sal);
    外连接: 多表连接时查询出的数据会忽视null数据 使用外连接可以得道被忽视的孤儿数据, 包含null数据
    left join right join 全外连接 使用union关键字 或是union all
    union 作用是将两个sql语句查询出来的数据合并在一起, 注意这查询出来的字段要一样
    union会去重复数据 union包含重复数据,

    多表连接时要注意 给表起别名,别名是表首字母,关联条件要有,没有会出现笛卡尔乘积,多表查询的条件是等值或是不等值,
    语法包含了99语法和92语法,
    99语法就是表关联是关联语句 关联条件 和条件语句都是分开的,
    92语法不用表关联,条件可以放到where后面
    等值连接用using关键字 非等值连接用on
    select from table1 join table2 using(等值列)
    select from table1 join table2 on (条件)

  • 其他连接
    自连接 自己连自己 像是有病
    select e.name,m,name from emp e,emp m where e.mgr = m.empno;
    子连接 就是将一条sql语句查询结果作为数据源成为另一条sql的查询条件
    select name,sal from emp where sal=(select min(sal) from mp)
    可以用于from或是where后面

  • 还有数据库必学技能,
    导出表成文档
    导出成sql文件

  • mysql中的执行计划
    可以根据执行计划看到优化器的过程,
    可以通过explain关键字来模拟优化器执行sql语句,
    了解一下数据库查询过程 查询请求-sql解析-处理-生成执行计划 -数据库使用引擎来执行执行计划-返回结果
    启动执行计划 如图
    在这里插入图片描述

  • Explain 中的列详解
    id :是查询执行顺序 id值越高优先执行,id值相同表示从上到下执行,是同一组,
    select_type:查询类型是什么样的,
    simple 表示查询中不包含子查询或是union
    primary 有子查询是在外层
    derived 是子查询 在from后面
    subquery 在select 或是 where后面包含了子查询
    table:显示是哪个表
    partitions:显示是哪个分区
    type:这个是重要的列,显示了连接使用了什么类型,最好到最差的连接类型是system ,const,eq_reg,ref,range,index和all
    就是说了查询效率,
    system查询出一条数据,all表中只有一个条数据
    const 表示速度快,返回只有一条数据,
    possibe_keys: 查询条件字段涉及到的索引,
    key : 实际上使用到的索引,没有使用则为null,
    key_len:表示索引中使用的字节数,
    rows : 估算出所需要读取的行数,
    fitered:显示通过条件过滤出的行数的百分值,

  • 存储引擎
    数据库依赖数据引擎进行创建,查询,更新和删除数据,不同的引擎提供不同的存储机制,索引技巧,mysql使用innoDB引擎,
    innoDB引擎底层是B+树,支持事务处理,

  • 数据库的三大范式
    范式就是对表结构就行规范,表结构要满足数据不要冗余,
    第一个范式 :每一列保证数据的原子性, 都是不能在分开的最小单元,
    第二个范式:一个表描述一个事情,
    第三范式:表中的普通列不要相互依赖,


推荐阅读
  • 本文介绍了在MySQL8.0中如何查看性能并解析SQL执行顺序。首先介绍了查询性能工具的开启方法,然后详细解析了SQL执行顺序中的每个步骤,包括from、on、join、where、group by、having、select distinct、union、order by和limit。同时还介绍了虚拟表的概念和生成过程。通过本文的解析,读者可以更好地理解MySQL8.0中的性能查看和SQL执行顺序。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • vue使用
    关键词: ... [详细]
author-avatar
欣然沐羽民_699
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有