-
2020-03-31 09:39:15
1、关联数据库表时,用inner join、left join、right join、full outer join等关联函数时,要注意两表关联的数据量,数据大的表需要全部显示时,不能用inner join,以防数据量大的表的数据没有显示完全,造成数据缺漏。业务逻辑需要特殊注意!
2、字符串可以进行比较,数据库会自动通过转换成ASCII,从第一位开始比较ASCII值,如果第一位相同,则依次比较下一位。
3、NULL值不会进行比较和关联。所以在数据抽取时有存在NULL的数据可以直接进行默认值替换,特别是明细维度一般不能有NULL。
4、FIND(查找字符串,被查找字符串,查找起始位置)函数,完全匹配查找方式。如在含有’XDD’字符串中查找’XD’字符,则会返回1;若查找的是’XDDD’,则返回0,因为不能完全匹配到该字符串。;若find(‘XDXDD’,‘D’,3),则返回4。与instr()函数一致。
查找某个字符串在指定字符串中的位置,没查找到为0。更多相关内容 -
MySQL数据库备份过程的注意事项
2021-01-19 21:40:45今天看了看数据备份相关的东西,总结了几个MySQL数据备份的注意事项,简单分享一下吧。 对于MySQL备份,每个DBA的理解可能都不一样,备份可以分为下面几个维度: 文件种类划分: 1、物理备份,以xtrabackup为代表... -
MySQL数据库表分区注意事项大全【推荐】
2021-01-19 23:05:45表分区与数据库分区是不一样的那么碰到表分区使用时我们要注意一些什么事情呢,今天我们来看一篇关于MySQL数据库表分区注意事项的细节。 1、分区列索引约束 若表有primary key或unique key,则分区表的分区列必须... -
【数据库】国土空间规划数据库(中心城区)
2022-01-26 10:17:22国土空间总体规划数据库(中心城区)数据,标准空库 注意事项:为方便使用,数据库未定义坐标系,请自行定义坐标系,数据库也是标准空库模板,不涉及任何的数据 -
Oracle数据库升级注意事项.doc
2020-02-29 20:52:59Oracle数据库升级注意事项,数据库升级注意事项,Oracle数据库升级注意事项,供参考,数据库升级注意事项,Oracle数据库升级注意事项,供参考,数据库升级注意事项,Oracle数据库升级注意事项,供参考 -
Access数据库升级为SQL数据库的注意事项和方法
2020-09-11 15:28:56Access数据库升级为SQL数据库的注意事项和方法 -
Mysql 数据库常用备份方法和注意事项
2020-12-15 04:12:38Mysql数据库备份的常用3种方法: 1、直接拷贝(cp、tar,gzip,cpio) 2、mysqldump 3、mysqlhotcopy 1.使用直接拷贝数据库备份 典型的如cp、tar或cpio实用程序。 当你使用直接备份方法时,必须保证表不在被使用。如果... -
土地利用规划数据库标准汇交要求注意事项及关键点PPT学习教案.pptx
2021-10-05 05:18:54土地利用规划数据库标准汇交要求注意事项及关键点PPT学习教案.pptx -
如何把sqlserver数据迁移到mysql数据库及需要注意事项
2020-12-15 07:30:51二、将SQL Server数据迁移到MySQL需要注意的一些问题 1、唯一索引的不同,sql server的唯一索引的字段只能允许存在一个null值,而mysql,一直oracle中唯一索引对应的字段都允许存在多个null值。 2、存储过程的语法... -
土地利用规划数据库标准、汇交要求、注意事项及关键点.ppt
2021-09-18 17:45:59土地利用规划数据库标准、汇交要求、注意事项及关键点.ppt -
PHP PDO数据库操作预处理与注意事项
2020-10-17 06:51:19今天小编就为大家分享一篇关于PHP PDO数据库操作预处理与注意事项,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 -
laravel使用数据库测试注意事项
2020-10-15 10:47:25主要介绍了laravel使用数据库测试注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 -
Oracle数据库服务器修改操作系统时间的注意事项详解
2020-12-14 09:12:18Oracle 数据库服务器修改操作系统时间的注意事项: 对单机或者ha 1.对数据库本身而言,其实是没有影响的。因为scn不依赖于os时间 2.对app(应用程序)而言,若是app中使用了sysdate之类的,那确实是有影响的。 基于... -
SQL Server 数据库的备份详细介绍及注意事项
2020-09-09 21:58:02主要介绍了SQL Server 备份详细介绍及注意事项的相关资料,需要的朋友可以参考下 -
MySQL数据库的23个注意事项
2020-09-11 07:03:23使用MySQL,安全问题不能不注意。以下是MySQL提示的23个注意事项 -
Excel工作表转换为DBF数据库的注意事项.doc
2022-05-18 08:59:19Excel工作表转换为DBF数据库的注意事项.doc -
oracle数据库注意事项
2011-06-04 14:53:35oracle数据库管理的装库与卸库注意事项,彻底卸载数据库。 -
Oracle数据库远程连接设置的四种方法及其注意事项
2020-12-14 22:42:51Oracle数据库的远程连接可以通过多种方式来实现,本文我们主要介绍四种远程连接的方法和注意事项,并通过示例来说明,接下来我们开始介绍。 第一种情况: 若oracle服务器装在本机上,那不多说了,连接只是... -
BE oracle数据库还原注意事项.docx
2021-04-02 10:30:28BE oracle数据库还原注意事项.docx -
MySQL数据库安全设置与注意事项小结
2020-09-10 18:45:40现在很多朋友使用mysql数据库,为了安全考虑我们就需要考虑到mysql的安全问题,例如需要将mysql以普通用户权限运行,就算出问题了有了root也不能控制系统 -
日常收集整理SqlServer数据库优化经验和注意事项
2020-09-10 06:21:41本文是小编日常收集整理SqlServer数据库优化经验和注意事项,详细介绍了SQL语句优化的基本原则,包括索引、查询和游标的使用等 -
MySQL适配达梦数据库注意事项
2020-06-16 13:29:39问题说明:达梦数据库jdbc驱动无法下载 问题说明:达梦数据库jdbc驱动版本 问题说明:hibernate方言驱动 问题说明:达梦不支持mysql默认时间函数 问题说明:达梦数据库不支持LAST_INSERT_ID() 问题说明: mysql表字...问题说明:达梦数据库jdbc驱动无法下载
现象描述: 在pom文件里配置了,大多数服务器里没有相应的jar包,因此没法自动下载
解决方法: 手动将相应jar包放到仓库里问题说明:达梦数据库jdbc驱动版本
现象描述: 使用 低版本的驱动,在sql语句上的写法可能会不同,例如查询时要加上模式名等
解决方法: 使用下面这个版本驱动,sql语句大部分和mysql一样<dependency> <groupId>com.dm</groupId> <artifactId>jdbc</artifactId> <version>1.8</version> </dependency>
问题说明:hibernate方言驱动
现象描述: 程序中用到了hibernate,需要在配置文件里手动指定hibernate方言的驱动,否则启动会报错
解决方法: 配置文件中的配置spring. jpa.properties.hibernate=dialect: org.hibernate.dialect.DmDialect
使用的hibernate驱动版本,这个驱动也需要手动下载添加
<dependency> <groupId>com.dameng</groupId> <artifactId>DmDialect-for-hibernate5.3</artifactId> <version>8.1.0.157</version> </dependency>
问题说明:达梦不支持mysql默认时间函数
现象描述: 使用达梦数据库字段的迁移工具,从mysql迁移数据库到达梦里时,如果mysql里表的时间字段设置了默认值,使用的是CURRENT_TIMESTAMP函数,在达梦8里迁移会报错,达梦7可正常迁移
解决方法: 先将mysql中的表的默认值去掉,把表结构导过去之后,再在达梦中执行语句alter table 表名 modify 字段名 default sysdate问题说明:达梦数据库不支持LAST_INSERT_ID()
现象描述: 在mysql里新增数据,需要返回刚新增数据的自增主键值,在mybatis里按如下写法
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER"> select LAST_INSERT_ID() </selectKey>
达梦数据库不支持上述写法
解决方法: 在达梦数据库中创建序列
CREATE SEQUENCE config_id_seq INCREMENT BY 1 START WITH 1
将mybatis里的写法换成
<selectKey keyColumn="id" resultType="long" keyProperty="id" order="BEFORE"> SELECT config_id_seq.nextval as id from dual </selectKey>
问题说明: mysql表字段 与达梦数据库关键字冲突
现象描述: mysql里的表字段,取的名字正好是达梦数据的关键字,那么在达梦数据库里使用时,会报错,例如comment是达梦数据库的关键字,mysql里有表的字段取了comment,在mybatis里执行包含comment的查询,新增等语句时会报错,下面这个语句就会报错,因为包含comment
<insert id="insert" parameterType="com.casic.ETL.entity.EtlWholeDBMigrate"> insert into etl_whole_db_migrate (task_id, task_name, src_ds_id, tgt_ds_id, task_type, task_cron,comment) values (#{taskId,jdbcType=INTEGER}, #{taskName,jdbcType=VARCHAR}, #{srcDsId,jdbcType=INTEGER}, #{tgtDsId,jdbcType=INTEGER}, #{taskType,jdbcType=INTEGER}, #{taskCron,jdbcType=VARCHAR}, #{comment,jdbcType=VARCHAR}) </insert>
解决方法: 将名字为关键字的表字段换个名字,然后把xml里的sql语句相关字段名字都换了
问题说明:达梦数据库不支持某些mybatis字符串的拼接写法
现象描述: mybatis里"%“#{name}”%"这种写法达梦数据库会报错
解决方法: 使用函数CONCAT(‘%’,#{name},‘%’),双引号变成单引号问题说明:达梦数据库界面工具使用
现象描述: 达梦数据库表,数据的操作基本上只能通过写sql语句的方式
实现,没有mysql那样强大的客户端
解决方法: 根据官方文档写sql语句 -
数据库镜像最佳实践和性能注意事项.ppt
2022-06-05 23:18:22数据库镜像最佳实践和性能注意事项 -
数据库设计注意事项
2019-03-30 12:17:40DBMS数据库管理系统 数据库设计 1、有效存储 2、高效访问 目的: 1、减少数据冗余 2、避免数据维护异常 3、节约存储空间 4、高效的访问 数据库设计过程: 1、需求分析: 分析需要存储的数据是哪些,这些数据有哪些...DBMS数据库管理系统
数据库设计
1、有效存储 2、高效访问
目的:
1、减少数据冗余 2、避免数据维护异常 3、节约存储空间 4、高效的访问
数据库设计过程:
1、需求分析: 分析需要存储的数据是哪些,这些数据有哪些属性,这些属性各自的特点是什么 2、逻辑设计: 使用ER图对数据库进行逻辑建模, 3、物理设计: 使用哪款数据库设计建表(oracle,myslq,sqlserver) 4、维护优化: 索引优化,大表拆分
数据库设计布置
需求分析—>逻辑设计—>物理设计—>优化
需求分析
数据内容
数据存储特性:时效性
数据生命周期:增长快、量大、非核心,分库分表,归档清理规则
实体间及实体与表的关系,1对1,1对多,多对多
实体的属性,单一属性or属性组合 可以唯一标识实体的逻辑设计
ER图例说明:
矩形:表示实体集,矩形内写实体的名字 菱形:表示联系集 椭圆:表示实体属性 线段:将属性链接到实体集
名词解释
关系是表, 元组是行, 属性是列。 候选码是属性组,可以唯一的确定一个元祖(列) 候选码中选一个当主码 域是属性的取值范围 分量是元组中的一个属性值
常见数据库设计范式:
第一范式、所有字段不可拆分 第二范式、单关键字 第三范式、不存在传递依赖 BC范式(Boyce.Codd)、解决部分主键依赖于非主键部分 第四范式 第五范式
插入异常,更新异常,删除异常
数据冗余:重复数据数据库物理设计
1、选择合适的数据库管理系统
-商业数据库 oracle、sqlserver
-开源数据库 mysql pgsql
2、定义数据库、表以及字段的命名规范
3、根据所选的dbms系统选择合适的字段类型
4、反范式化设计:刻意增加冗余,以空间换取时间MySQL常用的存储引擎:
MylSAM 不支持事务 表级锁 读写效率更高 MRG_MYISAM 不支持事务,表级锁 分段归档 Innodb(推荐) 支持事务 行级锁 Archive 行级锁 日志记录 Ndb cluster(MYSQL集群) 支持事务 行级锁 高可用
数据库表及字段的命名规则:
可读性原则(用大小写区分来提高可读性等) 表意性原则(表的名称应能体现其存储内容等) 长名原则(少用缩写)
字段类型选择原则
优先选择数字类型,其次是日期和二进制类型,最后才是字符串类型; 字符比数据处理慢; 在数据库中,数据处理以页为单位,列的长度越小,利于性能提升; 磁盘的I/O性能决定了数据库的性能。 数字的查询和排序操作优于char和varchar;
decimal 与 float 如何选择:
decimal用于存储精确数据 float只能用于存储非精确数据
char 与 varchar 如何选择:
如果列中要存储的数据长度差不多是一致的,则应该考虑用char,反之使用varchar。 如果列中的最大数据长度小于50byte(utf-8格式中大概13个字符),则一般也考虑用char。(如果这个 列很少用,内里基于节省空间和减少I/O的考虑,还是可以选择用varchar) 一般不宜定义大于50Byte的char类型列 在mysql中,utf8的一个字符占3个字节, 当某个字段的字符数大于15时,要用varchar,小于就用char
时间类型如何存储:
使用int来存储时间字段的优缺点 优点: 字段长度比datetime小。 缺点:使用不方便,要进行函数转换。 限制:只能存储到2038-1-19 11:14:07 即2^32为2147483648
注意事项:
主键: 可以存储业务主键(标识业务数据,进行标语表关联)和数据库主键(优化数据库) 避免使用外键约束: 降低数据导入效率,增加维护成本 避免使用触发器: 导致意想不到的数据异常,是业务逻辑变复杂 严禁预留字段
为什么反范式化
读 > 写 减少表的关联数量 增加数据的读取效率 反范式化一定要适度
维护数据
维护各优化中要做什么
1、维护数据字典 2、维护索引 3、维护表结构 4、在适当的时候对表进行水平拆分或垂直拆分
导出数据字典
SELECT a.table_name,b.TABLE_COMMENT,a.COLUMN_NAME,a.COLUMN_TYPE,a.COLUMN_COMMENT FROM information_schema.COLUMNS a JOIN information_schema.TABLES b ON a.table_schema = b.table_schema AND a.table_name = b.table_name WHERE a.table_name = 'customer'
如何维护索引
建立索引:出现在WHERE从句, GROUP BY从句, ORDER BY 从句中的列 可选择性高的列要放到索引的前面 索引中不要包括太长的数据类型
注意事项:
索引并不是越多越好,过多的索引不但会降低写效率而且会降低读的效率 定期维护索引碎片 在SQL语句中不要使用强制索引关键字
数据库中适合的操作
批量操作 禁止使用 select * 这样的查询 控制使用用户自定义函数 不要使用数据库中的全文索引
垂直拆分:
经常一起查询的列放在一起 text,blob等大字段拆分出到附加表中
水平拆分
表结构相同 数据不同 通过主键hash->平均分表
-
数据库服务器选购注意事项.docx
2021-09-27 08:52:18数据库服务器选购注意事项.docx -
数据库方面注意事项及连接数据库
2011-12-24 13:42:50数据库方面注意事项及连接数据库,希望对你有用! -
SQL数据库创建及部分注意事项
2020-06-16 21:30:35注意:调用系统数据库master是为了方便我们之后删除数据库,解决无法删除数据库的问题。 2、判断所要创建的数据库当前是否已经存在,并删除该库,然后创建重新该数据库 if exists(select * from sys.databases ...1、引用系统数据库master
use master go
注意:调用系统数据库master是为了方便我们之后删除数据库,解决无法删除数据库的问题。
2、判断所要创建的数据库当前是否已经存在,并删除该库,然后创建重新该数据库
if exists(select * from sys.databases where name='DigitalProductShop') drop database DigitalProductShop go create database DigitalProductShop go use DigitalProductShop go
注意:这里name=‘’ 单引号中的内容便是我们所要创建库的名字,go是把t-sql语句分批次执行。(一步成功了才会执行下一步,即一步一个go)
3、创建表(create table 表名)
create table ProductCategory ( Id int primary key identity(1,1),--主键,标识列 主键Id Name nvarchar(16) not null--不能为空 类别名称 ) go
注意:在创建多张表时,一定要看清主外键,先创建主键表,后创建外键表,不能前后搞混。
4、插入数据(insert into 表名 values(值))
insert into ProductCategory values('手机')
注意:在插入数据时,要看表中列给的值类型,从而使用 ‘’(单引号),不是所有的值类型都要加单引号的。
5、查询(select * from 表名)
select * from ProductCategory select * from Product