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

数据库学习过程随手记

MySQLandOracle瞎记关系型数据库:Oraclesql-server,mysql,db2(围绕事务和交易展开)Nosql:菲关系型数据库(不考虑事务影响)Mongodb,

MySQL and Oracle瞎记

关系型数据库:

Oracle sql-server,mysql ,db2 (围绕事务和交易展开)

Nosql:菲关系型数据库 (不考虑事务影响)

Mongodb,redis,hbase 主要考虑:高并发的写入数据,在数据量庞大的情况下,快速提取数据

在线数据: OLTP(在线交易 transaction)

历史数据:数据仓库 OLAP(在线分析 analyse) hadoop

Hibernate

Gave king

外网系统:

前台系统 :部署在外网上

后台系统 :部署在内网上

前后台系统共用一套数据库

外网用户与管理员用两个不同的表,用户和管理员从不同的网址登陆

企业应用系统

办公环境为企业内网

用户是业务系统的登陆人员的概念,每个业务子系统都有自己的用户

表之间的关系

一对一,一对多,多对多,多对一

drop table tuser; //DDL删除 表结构和数据全部删除

delete from tuser; //事务删除,可以回滚

truncate table tuser; //数据删除,结构保留

表之间的关系:

多对多: 通常用两个多对一表示多对多,需要一个中间表

Class的提取过程:

1. 找名词概念 ——– CDM(概念模型)

2. 把名词抽象成Class或Class的属性

3. 类的目的是组成程序、描述业务

4. 类的设计原则:SRP OCP

Table的提取过程:

1. 找名词概念 ——– PDM(物理模型)

2. 把名词抽象成Table或Table的属性

3. 表的目的是数据存储

4. 表的设计原则:三范式与反范式

三范式:

1. 每一列的概念独立、完整

2. 每个表有主键

3. 不要出现数据冗余 (数据量大幅增加,很难保证数据完整性)

反范式:

1. 通过数据冗余的方式,来提高查询性能

2. 横向切割表——————————如人员表,按省市存储不同的人员数据

3. 纵向切割表—————————–如供应商,基础信息和业务信息分割成一对一的多张表

4. 冗余列

———————————学生表中,既有班级编号,又存有班级名称(冗余的)

——父子表的层级一般不超过4层,超过4层的时候,需要考虑采用冗余列的方式来提高联合查询的性能

5. 附加列

——-订单中的有很多明细项,都有自己的价格和数量。在订单表中增加总价的附加列,提取计算多个明细的总和

//用户是表的管理者

select * from scott.dept

//系统中的图片存储方式

1. blob字段

2. 文件存磁盘,数据库存图片位置

3. 图片服务器

4. CDN

varchar2(4000)

clob ———- 博客、新闻

oracle和mysql 都有 blob ————存二进制字节流

oracle 用 clob ——- 存文本

mysql 用 text

数据库的自增长字段:

oracle ——– sequence

sql server ———- indentity

mysql —————- auto increment

//自增长

create sequence aseq; //在高并发环境下,不会出现数据冲突

insert into taa values(aseq.nextval,’aa’)

//最大值加1

insert into taa values( (select nvl(max(aid),0)+1 from taa),’aa’) //数据迁移性好

//oracle中的虚表

select * from dual;

SELECT master_seq.currval FROM dual;

数据库的翻页算法:

oracle : select * from (select rownum rn, tb.* from (select * from emp)tb) where rn>5 and rn<=11

mysql : select * from emp limit 2,5

Oracle

rownum 伪列 三层嵌套翻页它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。

dual 虚表

rowid select rowid,sno,name from tstaff

select rowid,sno,name from tstaff where rowid = &#8216;#RlCAAK#ADv#&#8217;

每行记录的物理标识,查找记录的速度最快

//必须是两列内容完全一致,才算重复行

select distinct ename,job from emp

注意:不推荐使用distinct进行数据过滤,主要是执行效率比较低

排序

select * from emp order by job desc ,empno asc

//条件查询

select * from emp where deptno != 10

//尽量不要使用!= ,用in语句替代它,效率更高

select * from emp where deptno in (20,30)

select * from emp where deptno = 10 OR deptno=20 //这个语句,也应该用in语句代替

SELECT ename, job,sal FROM emp WHERE sal>1000 AND sal<2000;

还可以使用 between and

SELECT ename, job,sal FROM emp WHERE sal between 1000 and 2000

//模糊查询

SELECT ename, job,sal FROM emp WHERE ename like &#8216;%MA%&#8217;

%:代表0个或多个任意字符。

_ :代表一个任意字符

select * from emp e where job is not null

select * from emp e where job is null

//系统时间转换成指定格式的日期,输出

select sysdate from dual;

SELECT TO_CHAR(sysdate,&#8217;YYYY-MM-DD HH24:MI:SS AM DY&#8217;) FROM dual;

update emp set hiredate = to_date(&#8216;2004-11-27&#8217;, &#8216;yyyy-mm-dd&#8217;) where empno=7788

//多表查询,没有任何约束条件,会出现笛卡尔积的结果 (结果:表一记录数 * 表二记录数)

select * from emp ,dept

//避免笛卡尔积的办法就是,要关联的两个表必须有主外键关系

select * from emp e,dept d where e.deptno=d.deptno

select * from emp e inner join dept d on e.deptno=d.deptno

//左外链接

select * from dept d left join emp e on d.deptno=e.deptno

//返回符合查询条件的记录条数

select count(*) from emp

分组查询

select max(deptno),count(*) from emp //多个分组函数可以同时使用

select max(deptno),count(*),deptno from emp //分组函数与字段不能同时使用

//只有分组字段和分组函数,才能同时使用

select job,avg(sal) from emp group by job

select job,max(sal) from emp group by job

select deptno,max(sal) from emp group by deptno

select deptno,max(sal),job from emp group by deptno,job; //可以同时使用多个分组字段,先按部门分组,再按job分组

//使用having语句,对分组结果进行再次过滤

SELECT deptno, max(sal) FROM emp

GROUP BY deptno having max(sal) >3000

// 1.先按照where条件筛选数据结果集

2.然后使用GROUP BY 分组

3.对分组结果使用having进行过滤

SELECT deptno, max(sal) FROM emp where SAL>2500

GROUP BY deptno having max(sal) >3000

insert into tstaff values ( seq_id,nextval,?,?,?)

insert into tstaff values ( (select nvl(max(id),0) from tstafff),?,?,?)

select nvl(max(id),0) from tstafff

//子查询 &#8212; 返回一列数据

select * from emp where sal > (select sal from emp where ename=&#8217;SCOTT&#8217;)

//子查询 &#8212; 返回多列,可以作为新表使用

select rownum rn,tb.* from (select * from emp)tb

select * from (select rownum rn,tb.* from (select * from emp)tb) where rn>3

union 与 union all 的区别:

union是和集,去掉了两个集合的重复部分

union all 保留了重复的记录

uinion 和集

minus 差集

intersect 交集

insert into dept values(50,&#8217;a3&#8242;,&#8217;beijing&#8217;) &#8212;&#8212;&#8212;&#8212;&#8212;只能插入所有字段,而且是按照顺序插入(与列的物理顺序一致)

insert into dept(dname,deptno) values(&#8216;a3&#8217;,52) &#8212;&#8212;&#8212;- 可以少字段,可以调整顺序,更加灵活

//update语句

update emp set sal=sal+100 where job=&#8217;CLERK&#8217;


推荐阅读
  • 本文深入探讨了如何选择适合业务需求的MySQL存储引擎,详细解析了不同存储引擎的特点、适用场景及其在数据存储和管理中的优势。通过对比InnoDB、MyISAM等主流引擎,为读者提供了全面的技术指导和专业建议,帮助开发者在实际应用中做出明智的选择。 ... [详细]
  • 本文详细介绍如何在忘记MySQL服务器密码的情况下进行密码重置,包括具体的步骤和注意事项。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 性能测试中的关键监控指标与深入分析
    在软件性能测试中,关键监控指标的选取至关重要。主要目的包括:1. 评估系统的当前性能,确保其符合预期的性能标准;2. 发现软件性能瓶颈,定位潜在问题;3. 优化系统性能,提高用户体验。通过综合分析这些指标,可以全面了解系统的运行状态,为后续的性能改进提供科学依据。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 本文深入解析了Django框架中的MVT(Model-View-Template)设计模式,详细阐述了其工作原理和应用流程。通过分析URL模式、视图、模型和模板等关键组件,读者将全面理解Django应用程序的架构体系,掌握如何高效地构建和管理Web应用。 ... [详细]
  • 在MySQL中更新密码时,首先需要在DOS窗口中切换到mysql安装目录,并使用`--skip-grant-tables`参数启动MySQL服务,以跳过权限表验证。接着,在MySQL命令行中执行相应的SQL语句来设置新密码。完成密码更新后,重启MySQL服务以使更改生效。此外,对于电脑快捷方式的修改,可以通过右键点击快捷方式,选择“属性”,在弹出的窗口中进行路径或目标的修改,最后点击“应用”和“确定”保存更改。 ... [详细]
  • 人人租机作为国内领先的信用免押租赁平台,为企业和个人提供全方位的新租赁服务。通过接入支付宝小程序功能,该平台实现了从零到百的迅猛增长,成为全国首家推出“新租赁小程序”开发服务的阿里巴巴小程序服务商(ISV)。这一创新举措不仅提升了用户体验,还显著增强了平台的市场竞争力。 ... [详细]
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
author-avatar
手机用户2502927665
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有