热门标签 | 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+树,支持事务处理,

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


推荐阅读
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文总结了在SQL Server数据库中编写和优化存储过程的经验和技巧,旨在帮助数据库开发人员提升存储过程的性能和可维护性。 ... [详细]
  • 在使用达梦数据库时,管理员可能会遇到连接频繁中断或特定SQL语句语法错误的问题。这些问题通常源于开发人员在创建对象时的不规范操作。为了解决这些问题,建议对数据库配置进行优化,并确保所有SQL语句符合达梦数据库的标准语法。此外,定期检查和维护数据库连接参数,以及对异常日志进行详细分析,也有助于及时发现并解决问题。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 重要知识点有:函数参数默许值、盈余参数、扩大运算符、new.target属性、块级函数、箭头函数以及尾挪用优化《深切明白ES6》笔记目次函数的默许参数在ES5中,我们给函数传参数, ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文详细介绍了数据库并发控制的基本概念、重要性和具体实现方法。并发控制是确保多个事务在同时操作数据库时保持数据一致性的关键机制。文章涵盖了锁机制、多版本并发控制(MVCC)、乐观并发控制和悲观并发控制等内容。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 数据类型和操作数据表2.1MySQL类型之整型2.2MySQL数据类型之浮点型2.3日期时间型DATE1支持时间:1000年1月1日~9999年12月31日DATETIME ... [详细]
  • 优化后的标题:Apache Cassandra数据写入操作详解
    本文详细解析了 Apache Cassandra 中的数据写入操作,重点介绍了 INSERT 命令的使用方法。该命令主要用于将数据插入到指定表的列中,其基本语法为 `INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...)`。通过具体的示例和应用场景,文章深入探讨了如何高效地执行数据写入操作,以提升系统的性能和可靠性。 ... [详细]
  • 在什么情况下MySQL的可重复读隔离级别会导致幻读现象? ... [详细]
  • C# 中 SQLite 报错:在 "\\s\\" 附近出现语法错误,如何解决? ... [详细]
  • 搜索引擎技术概论(上篇):核心原理与应用分析
    搜索引擎技术概论(上篇)探讨了搜索的基本概念及其核心原理。搜索的本质在于信息检索,即用户通过输入关键词,利用特定的算法从海量数据中快速定位并提供所需信息。本文详细分析了搜索引擎的工作机制及其在实际应用中的表现。 ... [详细]
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社区 版权所有