MySQL数据库开发规范1.3

MySQL数据库开发规范1.3
MySQL数据库开发规范1.3

平安金融科技数据库(MySQL)开发规范

作者: 简朝阳

Last Updated: 25/02/14 19:30:18

历史修订记录:

版本修订人修订时间修订内容

1.0

1.1 李海军2013-03-11 增加部分说明及修改

1.2 李海军2013-07-29 增加连接池使用说明和memory引擎的控制

1.3 李海军2014-02-25 增加了char类型,修改了timestamp的使用场合。

说明

?本规范包含平安金融科技使用MySQL 数据库时所需要遵循的所有对象设计(数据库,表,字段),所需要遵循的命名,对象设计,SQL 编写等的规范约定。

?所有内容都为必须严格执行的项目,执行过程中有任何疑问,请联系DBA Team 取得帮助。

概述

?禁止明文传播数据库帐号和密码。

?禁止开发工程师通过应用帐号登录生产数据库。

?禁止应用在服务器安装MySQL客户端(可以安装开发包)。

?禁止开发人员在SQL中添加Hint,Hint只能由DBA审核后添加。

?禁止使用悲观锁定,即读锁select … for update。

?禁止在开发代码中使用DDL语句,比如truncate,alter table … 等。

?禁止DML语句的where条件中包含恒真条件(如:1=1)。

1. 命名规范

总则

?数据库对象名仅可包含小写英文字母、数字、下划线(_)三类字符,并以英文字母开头。

?数据库对象命名禁止使用MySQL保留字。

?多个单词之间用下划线(_)分隔。

?对象名称长度若超过限制,则使用简写/缩写命名。

1.1. 数据库命名

?数据库以"db_"前缀+ "站点名_"前缀及其所服务的应用名称命名。

1.2. 表命名

?所属同一模块的表必须以模块名作为前缀命名。

?历史数据表在原表基础上增加"_his"后缀命名。

1.3. 字段命名

?布尔意义的字段以"_flag"作为后缀,前接动词。如:表示逻辑删除意义的字段可命名为delete_flag。

?各表间相同意义的字段(如:作为连接关系的引用字段)使用相同的字段名。

1.4. 索引命名

?唯一索引以uk_tablename_columnnames 方式命名

?普通索引以idx_tablename_columnnames 方式命名

?组合索引以idx_tablename_column1_column2... 方式命名

示例

?站点名:maymay

?模块名:order ;

?数据表:item;

?字段组成:order_item_id,add_time,raw_update_time,c1,c2,c3,c4,c5

?标准数据库名:db_maymay_order;

?标准数据表名:order_item;

?历史数据表名:order_item_his;

?索引需求:c1唯一,c2和c3 组合索引:uk_order_item_c1, idx_order_item_c2_c3

?字段实际意义:是否已删除;

?标准字段名:delete_flag;

?字段order.order_id被order_item引用;

?order_item 表中与之对应的字段命名必须为:order_id

2. 对象设计规范

总则

?所有表、字段必须添加能够清楚表示其含义的注释。状态类字段的注释中必须明确列出各状态值的说明。

?MySQL数据库中仅可以使用下文提及的数据类型。

2.1. 数据类型

2.1.1. 数值类型

?DECIMAL(M,D)

当表示定点小数的情况下使用该类型,禁止使用浮点类型,会带来不精确。定点数在MySQL内部以字符串形式存储,比浮点数更精确,适合用来表示货币等精度高的数据。

?INT系列

所有整数类型字段使用INT(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT),根据所存放的数据大小选择合适的子类型,且所有INT类型都不使用长度限制。

2.1.2. 字符串类型

?VARCHAR

所有可变长度的字段均使用VARCHAR类型,对于有限类别的字段(如性别、状态等),均建议使用

VARCHAR类型存储能明显表现其意义的字符串。

?TEXT系列

仅当需存储的字节数可能超过20000时,使用TEXT系列类型(TEXT、MEDIUMTEXT、

LONGTEXT)。并和原表进行分拆,与原表主键组成新表存储,且每个表只允许有一个TEXT系列类型字段。

?CHAR

仅当字段确定为定长,且将来不会修改长度时,使用CHAR类型。上线以后不允许修改字段类型。谨慎使用

2.1.

3. 时间类型

?DATE

只需要精确到天的字段使用DATE类型。精确到"天"的取当前时期的操作使用CURDATE()函数实现。-DATETIME

需要精确到时间(时、分、秒)的字段使用DATETIME类型。精确到"秒"的取当前时间的操作使用

NOW()函数实现。取值范围:'1000-01-01'到'9999-12-31'

TIMESTAMP

该类型仅允许raw_update_time字段使用,其它字段不允许使用该类型。取值范围:'1970-01-01

00:00:00'到'2037-01-01 00:00:00'

2.2. 表设计

?必含字段

id INT:主键使用MySQL的自增类型

raw_add_time DATETIME:创建日期(大字段拆分表除外),必须使用数据库时间(用now()生成)

raw_update_time TIMESTAMP:修改日期(大字段拆分表除外, 但内容变化必须修改主表的

update_time字段),由数据库自动变更,应用不操作此字段

以上3个字段都必须是没有任何商业意义的与业务无关的字段,不允许赋予任何商业意义

?作为表间连接关系的字段,数据类型必须保持严格一致,避免索引无法正常使用。

?附属表拆分后,附属表关联字段使用主表主键字段,且附属表须有独立主键(大字段拆分的表不需要单独的主键)

?存在过期概念的表,在其设计之初就必须有过期机制,且有明确的过期时间。过期数据必须迁移至历史表中。

?不再使用的表,必须通知DBA予以更名归档。

?线上表中若有不再使用的字段,为保证数据完整,禁止删除,而是进行更名归档,名称统一增加

"droped_"前缀

2.3. 约束使用

2.3.1. 主键

?主键不能包含业务含义。

?主键在任何情况下不允许被更新。

2.3.2. 唯一约束

?除主键外,需存在唯一性约束的,可通过创建以"uk_"为前缀的唯一索引实现。

2.3.3. 外键

?任何情况不在数据库创建外键约束,外键规则由应用控制。

2.3.4. 非空列

?所有非空列须在建表之初明确标识"NOT NULL",上线之后,不允许再变更。

2.3.5. 存储过程、触发器、视图、计划任务

?禁止任何业务逻辑通过封装在数据库中的procedure/function/trigger实现。

?禁止应用程序使用view。

?禁止业务逻辑使用数据库的计划任务。

3. SQL编写规范

3.1. 绑定变量与替代变量

原则

所有Query 的Where 条件中的变量,都需要使用绑定变量来实现,此要求并不完全是基于性能的考虑,更多是基于安全方面的考虑。

3.2. 数据类型转换

原则

避免因数据类型转换导致执行计划有误。

说明

?where条件中的过滤字段如需转换类型,只可转换过滤值,不可转换被过滤字段。

?表连接操作中,作为连接条件的字段的数据类型严格一致。

?如果表连接字段数据类型不一致,在SQL中用显示用类型转换,具体情况咨询DBA。

示例

正确用法1:select col1, col2 from tbl1, tbl2

where tbl1.col3 = tbl2.col4;

其中"tbl1.col3"与"tbl2.col4"数据类型严格一致。

正确用法2:select col1,col2 from tbl

where gmt_create = str_to_date('20100526 00:00:00','%Y%m%d %H:%i:%s');

"count(…)"使用

除非是明确目的是统计某个字段上值不为空的记录的数目,否者只允许之用count(*),而不允许使用count(column_name) 或者count(1)。

3.3. "select * from …"使用

原则

为避免查询中无用字段参与排序操作而导致的性能降低及潜在的安全隐患。禁止使用"select * from …"。

说明

任何情况都要明确列出查询需要返回的字段,禁止使用select * 返回所有字段。

3.4. "insert into tablename values()"使用

原则

为避免增加或删除字段带来的SQL报错。禁止使用省略字段名的insert into语句。

任何情况都要明确列出需要写入的字段名称。

3.5. 表连接

原则

规范连接语法以方便SQL脚本的阅读及提升连接操作性能。

说明

?非外连接查询中,连接表在"from"子句中列出,并以逗号分隔;连接条件在"where"子句中列出,而不允许使用join … on 方式实现join。

?外连接查询中,可使用"left join … on"语法;外连接一律使用"left join"表示。

?可以改写为连接的子查询禁止使用子查询方式,而应改写为连接方式。

示例

?规范

select col1, col2 from tbl1, tbl2 where tbl1.col4 = tbl2.col3;

select col1, col2 from tbl1 left outer join tbl2 on tbl1.col4 = tbl2.col3;

select col1, col2 from tbl1 left outer join tbl2 on tbl1.col4 = tbl2.col3;

select col1 from tbl1,tbl2 where tbl1.col2 = tbl2.col3;

select col1 from tbl1 left join tbl2 on tbl1.col2 = tbl2.col3 where tbl2.col3 is null;

?非规范:

select col1, col2 from tbl1 join tbl2 on tbl1.col4 = tbl2.col3;

select col1 from tbl1 where col2 in (select col3 from tbl2);

select col1 from tbl1 where col2 not in (select col3 from tbl2);

3.6. 分页查询

说明

?分页查询必须带有唯一的排序条件,除非业务逻辑明确要求随机展现数据。对于多表连接的分页语句,如果过滤条件在单个表上,则先分页,后连接。见示例

?通过limit进行分页操作的时候,limit参数为start(起始记录数),page_offset(每页记录数)。

规范化用法:

select a.col1, a.col2,b.col1, b.col2

from (select t.col1, t.col2

from tbl1 t where t.col3 = exp

order by t.col4 limit start, page_offerset) a,tbl2 b

where a.col3 = b.col3;

4.数据库级别规范

4.1连接池的使用

应用程序连接数据库必须使用连接池。

4.2存储引擎的选择

尽量不要使用memory引擎的表,除非能把握好对内存表的控制。

MySQL数据库开发规范1.3

平安金融科技数据库(MySQL)开发规范 作者: 简朝阳 Last Updated: 25/02/14 19:30:18 历史修订记录: 版本修订人修订时间修订内容 1.0 1.1 李海军2013-03-11 增加部分说明及修改 1.2 李海军2013-07-29 增加连接池使用说明和memory引擎的控制 1.3 李海军2014-02-25 增加了char类型,修改了timestamp的使用场合。 说明 ?本规范包含平安金融科技使用MySQL 数据库时所需要遵循的所有对象设计(数据库,表,字段),所需要遵循的命名,对象设计,SQL 编写等的规范约定。 ?所有内容都为必须严格执行的项目,执行过程中有任何疑问,请联系DBA Team 取得帮助。 概述 ?禁止明文传播数据库帐号和密码。 ?禁止开发工程师通过应用帐号登录生产数据库。 ?禁止应用在服务器安装MySQL客户端(可以安装开发包)。 ?禁止开发人员在SQL中添加Hint,Hint只能由DBA审核后添加。 ?禁止使用悲观锁定,即读锁select … for update。 ?禁止在开发代码中使用DDL语句,比如truncate,alter table … 等。 ?禁止DML语句的where条件中包含恒真条件(如:1=1)。

1. 命名规范 总则 ?数据库对象名仅可包含小写英文字母、数字、下划线(_)三类字符,并以英文字母开头。 ?数据库对象命名禁止使用MySQL保留字。 ?多个单词之间用下划线(_)分隔。 ?对象名称长度若超过限制,则使用简写/缩写命名。 1.1. 数据库命名 ?数据库以"db_"前缀+ "站点名_"前缀及其所服务的应用名称命名。 1.2. 表命名 ?所属同一模块的表必须以模块名作为前缀命名。 ?历史数据表在原表基础上增加"_his"后缀命名。 1.3. 字段命名 ?布尔意义的字段以"_flag"作为后缀,前接动词。如:表示逻辑删除意义的字段可命名为delete_flag。 ?各表间相同意义的字段(如:作为连接关系的引用字段)使用相同的字段名。 1.4. 索引命名 ?唯一索引以uk_tablename_columnnames 方式命名 ?普通索引以idx_tablename_columnnames 方式命名 ?组合索引以idx_tablename_column1_column2... 方式命名 示例 ?站点名:maymay ?模块名:order ; ?数据表:item; ?字段组成:order_item_id,add_time,raw_update_time,c1,c2,c3,c4,c5 ?标准数据库名:db_maymay_order; ?标准数据表名:order_item; ?历史数据表名:order_item_his;

MYSQL开发规范

MySQL DB规范

目录 简介 (3) 目的 (3) 适用范围 (3) 数据库设计 (3) 引擎及版本选择 (3) 基础规范 (3) 命名规范 (5) 库表设计规范 (5) 字段设计 (6) 常用数据类型: (6) 数据类型使用建议: (6) 索引规范 (8) 索引准则 (8) 索引禁忌 (8) 不使用外键 (9) SQL设计 (10)

简介 介绍在使用mysql中各种注意事项和优化细节 目的 供开发人员参考,合理利用MySQL特性,开发出更高效的代码减少后端数据库压力,让整个系统高效稳定运行适用范围 业务数据库使用的是MySQL的数据库。 数据库设计 实现目标:业务功能实现、数据的扩展性、普遍性适用性 业务中80%+的性能优化是来自架构设计的优化 引擎及版本选择 根据业务特性选择合适的存储引擎,默认选择InnoDB存储引擎,原因如下(MyISAM与InnoDB比较): 基础规范 所有库表默认使用INNODB存储引擎,MyISAM适用场景非常少

●库表字符集使用UTF8,原因如下: 使用utf8字符集,如果是汉字,占3个字节,但ASCII码字符还是1个字节;统一不会有转换产生乱码风险;其他地区的用户(美国、印度、台湾)无需安装简体中文支持,就能正常看您的文字,并且不会出现乱码。 UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。 UTF-8的编码规则很简单,只有二条: 1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。 2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。 ●所有表和字段都需要添加注释,以方便其它开发及dba了解 ●单表数据量纯int型建议控制在1000w以内,含char型的建议500w以内,行平均长度控制在16KB以内, 单表20GB以内 ●不在数据库中存储图片、文件等大数据.原因如下: 1、对数据库的读写速度永远赶不上文件系统的处理速度 2、数据库备份会变的很臃肿,备份很耗时间 3、对文件的访问需要通过你的应用和数据库 ●临时短命数据尽量不要存到数据库中,建议存放于前端的memcache、redis等nosql中,减少后端数据库压 力 ●禁止在线上做压力测试 ●禁止从测试、开发环境直接连接线上数据库 ●用数据库来持久化存储以及保证事务一致性,不是运算器,在应用层实现计算 ●读写分离,主库只写和少量实时读取请求,使用从库来查询。 ●采用队列方式合并多次写请求,持续写入避免瞬间压力 ●超长text/blob进行垂直拆分,并先行压缩 ●冷热数据进行水平拆分(如6个月前后数据),LRU原则 ●快速更新频繁和大数据表禁止直接运行count(*)统计 ●压力分散,在线表和归档表(日志表)分开存储;不重要的非实时查询日志不要存数据库,以文件方式 在应用端统计分析。 ●禁止明文存储机密数据,需至少两次加密(部分数据可逆运算)

MySQL数据库开发期末复习试题1

《MySQL数据库开发》期末复习题 考试题型 一、单选题(每小题 2 分,共40分) 二、判断题(每小题1分,打”√”或”×”,共10分) 三、问答题(共15分,每小题5分) 四、综合题(共35分,每小题5分) 一、填空 1、用来表示数据库中行之间的关系的机制称为______外键_约束。 2、_____字符集___是一套符号与编码,它包括编码规则以定义字符如何被编码为数字。 3、MySQL程序选项有两种通用形式:_______长选项__ 和__短选项_________。 4、MySQL数据类型分为四大主要类别:______数值___、__字符______、__二进制_______、_____时间____。 5、_____存储程序_____是保存在服务器里的一组SQL语句的集合。 6、_____锁_是一种用来防止多个客户端时访问数据而产生问题的机制。 7、_____事务_是将一个数据处理执行步骤的集合作为一个单一单元来处理。 8、______innoDB____引擎是目前唯一可提供外键实现支持的引擎。 9、CREATE ___temporary__________ TABLE创建临时表。 10、_______union_关键字能够将两个或多个SELECT语句的结果连接起来。 选择题主要在认证复习题中。

二、选择(单选) 每小题 2 分,共40分 1、哪个连接语句的格式是错误的(D) (A)mysql - - host= (B)mysql –h (C)mysql –(D)mysql –H 、查看MySQL版本语句是(A) (A)mysql - - version (B)mysql - - VERSION (C)mysql - - help (D)mysql - - v 3、设置语句结束符的命令是(C) (A)set (B)end (C)delimiter (D)finish 4、设置MySQL提示符的命令是(B) (A)tip (B)prompt (C)popup (D)message 5、导入sql脚本文件的命令是(A) (A)source (B)script (C)file (D)sql 6、关于SELECT语句以下哪一个描述是错误的(C ) (A)SELECT语句用于查询一个表或多个表的数据。 (B)SELECT语句属于数据操作语言(DML)。 (C)SELECT语句的列必需是基于表的列的。 (D)SELECT语句表示数据库中一组特定的数据记录。 7、ENUM类型的字段level定义为(LOW、MIDDLE、HIGH),ORDER BY level asc的顺序是(B) (A)HIGH、LOW、MIDDLE (B)LOW、MIDDLE、HIGH (C)MIDDLE、LOW、HIGH (D)HIGH、MIDDLE、LOW 8、SELECT * FROM city limit 5,10描述正确的是(C) (A)获取第6条到第10条记录。(B)获取第5条到第10条记录。 (C)获取第6条到第15条记录。(D)获取第5条到第15条记录。 9、GROUP_CONCAT()函数作用是(A ) (A)将每组的结果字符串连接起来(B)将每组的结果累加 (C)统计每组的记录数(D)统计每组的平均值 10、GROUP子句带WITH ROLLUP的作用是(D) (A)将每组的结果累加(B)统计每组的平均值 (C)统计每组的记录数(D)产生多个级别的统计值 11、查看全局SQL模式的命令是(C) (A)select @@sql_mode (B)select (C)select (D)select 12、关于在非严格模式下处理无效值,哪个是错误的(D) (A)基于列定义的限制隐含值来执行类型转化。 (B)在可能的情况下调整无效的输入值为合法值,并产生警告信息。 (C)转换超出范围的值为范围内的值。 (D)拒绝无效值,产生错误。 13、关于在严格模式下处理无效值,哪个是错误的(A) (A)允许超出范围的值 (B)拒绝超出范围的值。

MySQL数据库教案

任务引入[5分钟] 课程介绍[20分钟] 认识数据库 提问:按自己的理解,说说数据库是什么? 展示各类网站 商城网站页面是大家在熟悉不过的了,商城网站上的商品琳琅满目, 让人流连忘返。但是在大家欣赏自己喜爱的商品之余,是否想过商城网站 上的文字信息、图片信息等存放在哪里呢?当大家在商城网站上进行注册 用户时,自己的信息又存在哪里呢?当客户在商城网站上留言的时候,留 言信息又放在哪里了呢?这就是本门课程——《WEB数据库应用》要解决 的问题。 主要让学生明确以下几个问题: 1.明确课程定位与作用 专业基础课,与《程序设计基础》一起,为《网站建设》奠定基础。 同时兼顾计算机二级考试相关内容。通过任务引领型和项目活动形式,掌 握简单的数据库设计、数据管理和维护方法,能进行web服务器的设置, 具备使用web数据库与高级程序设计语言或动态网页结合完成简单程序 开发的基本职业能力。 2.明确课程内容 内容的确定遵循两个原则:一是满足后续课程的基本需求,二是为学 生进一步的学习提供必要的准备。通过对学生就业岗位和用人单位对本专 业毕业生设置的招聘岗位等分析,课程内容应基本包括数据库系统概述、 关系理论、关系数据库查询语言SQL、数据库设计与关系规范化理论、MySQL 数据中管理系统与高级程序设计语言或动态网页技术结合的简单应用。 3.强调学习方法 (1)与以往《计算机基础》、《办公软件应用》在学习方法上不同, 知识与操作的连续性更强,在学习上要坚持一贯,持之以恒。 提问 展示 展示课程 标准、课程 体系图 与教材配 合

新知识[45分钟] (2)课程难度加大,要求大家认真听、认真做,尤其要认真思考。逐渐养成举一反三的习惯、锻炼独立进行逻辑思维的能力。 (3)要学会自学。 (4)要善于和老师沟通。 (5)要学会团队协作。 4.明确考核方式 (1)日常评价 由三个部分组成:出勒(20%)、学习积极主动性(40%)、任务完成情况(40%) (2)终结评价 平时:20% 期中:20% 期末:40% 一、数据库基本概念 请学生回忆从小学——初中——高中——大学,每个期末处理成绩的过程,大部分都有帮助老师统计分数的经历。提问: 1.你用过哪些方式协助老师统计分数? 2.在这个过程中你发现了什么变化?为什么产生这样的变化? 经过充分的讨论发言之后,让学生总结为什么产生数据库技术,并简单说明其发展阶段: 第一代:网状、层次数据库系统 第二代:关系型数据库系统 第三代:以面向对象模型为主要特征的数据库系统 二、数据库基本概念 1.数据 数据是存储在数据库中的基本对象,包括数字、文字、图形、图像和声音等。 2.数据库 数据库简单地说就是存放数据的仓库。这些数据是按照一定的格式存放在计算的存储设备上。

全国计算机等级考试二级MySQL数据库程序设计

全国计算机等级考试二级MySQL数据库程序设计考试大纲(2013年版) 基本要求: 1. 初步掌握数据库技术的基本概念、原理、方法和技术; 2. 熟练掌握MySQL 的安装及配置技能; 3. 熟练使用MySQL 平台下的SQL 语言实现数据库的交互操作; 4. 熟悉一种MySQL 平台下的一个应用系统开发的主语言(C/ Perl/ PHP),并初步具备利用该语言进行简单应用系统的开发能力; 5. 掌握MySQL 平台下的数据库管理与维护技术。 考试内容: 一、基本概念与方法 1. DBS 三级(模式、外模式、内模式)结构; 2. DBS 的运行与应用结构(C/ S、B/ S); 3. 关系规范化的基本方法。 二、数据库设计 1. 概念设计; 2. 逻辑设计; 3. 物理设计。 三、SQL 交互操作 利用MySQL 进行数据库表、数据及索引的创建、使用和维护。 四、MySQL 的日常管理 1. MySQL 安装与配置技能; 2. MySQL 的使用及数据访问的安全控制机制; 3. MySQL 数据库的备份和恢复方法; 4. 性能调优技术。 五、MySQL 的应用编程 1. 触发器、事件及存储过程的使用方法; 2. MySQL 平台下的C 语言(或Perl/ PHP)的应用程序编制。 考试方式: 上机考试120 分钟,满分100 分。 上机考试题型及分值: 单项选择题40 分(含公共基础知识部分10 分)、操作题60 分(包括基本操作题、简单应用题及综合应用 题)。

上机考试内容: 1. 考试环境: 数据库管理系统:MySQL 编程语言:C/ Perl/ PHP 2. 在上述环境下完成如下操作: 创建和管理数据库;数据查询;安全管理;数据库备份与恢复;数据导入与导出。 3. 在上述环境下开发C/ S 或B/ S 结构下的一个简单应用系统。

数据库设计规范

- 茶马古道电子商务有限公司 数据库设计规范 V 1.0 版权所有

文档信息 作者: 创建日期(yyyy-mm-dd): 审核者: 审核日期(yyyy-mm-dd): 最后修订者: 最后修订日期(yyyy-mm-dd): 文档类型: 文档修订历史 版本号修订日期修订者修订内容1.0.0 2011.9.20 金洋初始化

数据库约定 对应于XXXX MYSQL数据库环境的数据库类型定义如下表:1 Development Database 开发环境使用 开发环境数据库 2 Quality Assurance Database 质保环境使用 质保环境数据库 3 Production Database 生产环境使用 生产环境数据库 4 Training Database 培训环境使用 培训环境数据库 5 SIT Database 集成测试环境使用集成测试环境数据库 数据库字符集选择UTF8字符集 (建库时确定) 1. 数据库元素命名规范 长度约定:字段名,表名,视图名称等长度不能超过25个字符1.1. 表命名规范 数据类型数据类型(英文)前缀 主数据Master Data Table TM 业务事务处理数据Transaction Data Table TT 关系表Relationship Table TR 代码列表Code List Table TC 接口表Interface Table TI 系统管理表System administration Table TS 日志表Log Table TL 历史表History Table TH 中间临时表Temparory table TE 汇总表Aggregation Table TA 归档表Archivie Table TZ

mysql数据库编程

Mysql数据库 ◆了解mysql数据库 ◆掌握mysql数据库的安装及配置 ◆掌握mysql中的基本命令 Mysql是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16日被Sun公司收购。目前MySQL被广泛地应用在internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开发源码这一特点,许多中小网站为了降低网站总体拥有成本选择了MySQL作为网站数据库。其官方网址:https://www.360docs.net/doc/0a4918140.html, 连接数据命令:mysql –u用户名–p密码 查看mysql帮助命令:? 创建数据库:creat database 数据库名称; 删除数据库:drop database 数据库名称; 使用数据库:use 数据名称; 创建数据库表:creat table 表名(字段名1 字段类型[DEFAULT 默认值] [约束], 字段名2 字段类型[DEFAULT 默认值] [约束], 。。。 字段名n 字段类型[DEFAULT 默认值] [约束]);例如:creat table mytable(id int auto_increment primery key, name varchar(14)not aull, password varchar(32) not null, age int not null); 删除数据库表:drop table 表名称; 查看表结构:desc 表名称; 查看全部数据库:show databases; 查看一个数据库的全部表:show tables; 运行SQL脚本:\. ***.ql SQL语法基础: SQL(Structured Query Language,结构化查询语言)是一个功能强大的数据库语言。SQL通常用于与数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。现在的数据库系统中,基本上都支持标准的SQL语法的。 SQL分类:SQL功能强大,概括起来,它可以分成以下几组: DML(Data Manipulation Language,数据操作语言)-----用于检索或者修改数据;--是开发中经常使用到的。 DDL(Data Definition Language,数据定义语言)-----用于定义数据结构,如创建、修改或者删除数据库对象; DCL(Data Control Language,数据控制语言)-----用于定义数据库用户的权限。 插入表信息:insert into 表名称values(按字段顺序及对应类型分别为各字段赋值); 执行以上插入信息:commit; Mysql的数据类型

数据库设计格式规范

1) 标准化和规范化 数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但Third Normal Form(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF 标准的数据库的表设计原则是: “One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。 举例:某个存放客户及其有关定单的3NF 数据库就可能有两个表:Customer和Order。Order表不包含定单关联客户的任何信息,但表内会存放一个键值,该键指向Customer表里包含该客户信息的那一行。 事实上,为了效率的缘故,对表不进行标准化有时也是必要的。 2) 数据驱动 采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。 举例,假如用户界面要访问外部数据源(文件、XML 文档、其他数据库等),不妨把相应的连接和路径信息存储在用户界面支持表里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。角色权限管理也可以通过数据驱动来完成。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。 3) 考虑各种变化 在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。 举例,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。 2.数据库涉及字符规范 采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线'_'组成,共63个字符.不能出现其他字符(注释除外). 注意事项: 1) 以上MYSQL数据库命名都不得超过30个字符的系统限制.变量名的长度限制为 29(不包括标识字符@). 2) 数据对象、变量的命名都采用英文字符,禁止使用中文命名.绝对不要在对象名的字符之间留空格. 3) 小心保留词,要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突 5) 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性.假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了.

mysql数据库实验答案

实验一创建、修改数据库和表结构 1、用create建立教学数据库的五个基本表: (1)学生表(学号,姓名,性别,年龄),student((Sno, sname,ssex,sage) ; (2)课程表(课程号,课程名,学分),Course (Cno, Cname, credit) ; (3)选课表(学号,课程号,成绩),SC (Sno,, Cno, grade ) ; (4) 教师表(教师号,姓名,性别,出生年月,系部,职称,地址), T(Tno,Tname,ssex,birthday,dept,title,address) ; (5) 工资表(教师号,基本工资,职务工资,合计),Salary(Tno,jbgz,zwgz,hj); Create Database Student default character set utf8 default COLLATE utf8_bin;

Use Student; Create Table Student( SNo c har(20) primary key, SName char(20) , SSex char(4) default '男', SAge int ) ENGINE=InnoDB; Create Table Course( CNo c har(20) primary key, CName char(20) NOT NULL,

CRedit f loat ) ENGINE=InnoDB; Create Table SC( SNo c har(20) NOT NULL, CNo c har(20) NOT NULL, Grade float, Primary Key(SNo, CNo), Foreign Key(SNo) References Student(SNo) On Delete Cascade, Foreign Key(CNo) References Course(CNo) )ENGINE=InnoD B;

MySQL数据库开发规范精编WORD版

M y S Q L数据库开发规 范精编W O R D版 IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】

平安金融科技数据库(MySQL)开发规范 作者: 简朝阳 Last Updated: 25/02/14 19:30:18 历史修订记录: 修订时间修订内容 版本修订人 1.0 1.1李海军2013-03-11增加部分说明及修改 1.2李海军2013-07-29增加连接池使用说明和memory引擎的控制 增加了char类型,修改了timestamp的使用 1.3李海军2014-02-25 场合。 说明 本规范包含平安金融科技使用 MySQL 数据库时所需要遵循的所有对象设计(数据库,表,字段),所需要遵循的命名,对象设计,SQL 编写等的规范约定。 所有内容都为必须严格执行的项目,执行过程中有任何疑问,请联系 DBA Team 取得帮助。

概述 禁止明文传播数据库帐号和密码。 禁止开发工程师通过应用帐号登录生产数据库。 禁止应用在服务器安装MySQL客户端(可以安装开发包)。 禁止开发人员在SQL中添加 Hint,Hint只能由DBA审核后添加。 禁止使用悲观锁定,即读锁select … for update。 禁止在开发代码中使用DDL语句,比如 truncate,alter table … 等。 禁止DML语句的where条件中包含恒真条件(如:1=1)。 1. 命名规范 总则 数据库对象名仅可包含小写英文字母、数字、下划线(_)三类字符,并以英文字母开头。 数据库对象命名禁止使用MySQL保留字。 多个单词之间用下划线(_)分隔。 对象名称长度若超过限制,则使用简写/缩写命名。 1.1. 数据库命名 数据库以"db_"前缀 + "站点名_"前缀及其所服务的应用名称命名。

MySQL数据库技术》实验报告模板

MySQL数据库技术实验报告 系别班级学号姓名地点 地点机房课程名称MySQL数据库技术实验名称实验1 MySQL的使用 实验过程 目的要求: (1)掌握MySQL服务器安装方法 (2)掌握MySQL Administrator的基本使用方法 (3)基本了解数据库及其对象 实验准备: (1)了解MySQL安装的软硬件要求 (2)了解MYSQL支持的身份验证模式 (3)了解MySQL各组件的主要功能 (4)基本了解数据库、表、数据库对象 实验内容: 1.安装MySQL服务器和MySQL界面工具 安装MySQL界面工具。(插入安装好的界面工具截图即可) 2.利用MySQL客户端访问数据库 (1)打开开始,程序,MySQL,MySQL server 5.1,MySQL command line client,进入MySQL客户端界面,输入管理员密码登录。 (2)在客户端输入“help”或“\h”,查看MySQL帮助菜单,仔细阅读帮助菜单的内容。

(3)实用show语句查看系统自动创建的数据库。 (4)实用USE语句选择mysql数据库为当前数据库。(5)使用SHOW TABLES 语句查看当前数据库中的表。

(6)使用了一条SELECT语句查看mysql数据库中存储用户信息表的user的内容。 (7)使用use语句将当前的数据库设定为information_schema,并查看数据库数据库中有哪些表。<图表见下页>

实验小结: 在安装MySql中有时可能不能安装不成功,那么卸载时,会存在删除不完全的情况。导致再次安装时依然不成功。 在对某个数据库进行操作之前,必须先选中该数据库。 在MySql安装过程中,注意修改字符集为gb2312或gbk, 以支持中文信息输入。

数据库设计文档

DR-RD-020(V1.1) Xxx系统 数据库设计说明书 (内部资料请勿外传) 编写:日期: 检查:日期: 审核:日期: 批准:日期: XX公司 版权所有不得复制

XXX系统 (1) 数据库设计说明书 (1) 1引言 (2) 1.1编写目的 (2) 1.2术语表 (2) 1.3参考资料 (3) 2数据库环境说明 (3) 3数据库的命名规则 (4) 4逻辑设计 (4) 5物理设计 (5) 5.1表汇总 (5) 5.2表[X]:[XXX表] (5) 5.3视图的设计 (7) 5.4存储过程、函数及触发器的设计 (7) 6安全性设计 (7) 6.1防止用户直接操作数据库的方法 (7) 6.2用户帐号密码的加密方法 (8) 6.3角色与权限 (8) 7优化 (8) 8数据库管理与维护说明 (8) 一、引言 1.1 编写目的 例如:本文档是xx系统概要设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循《xx 数据库设计和开发规范》。本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。 1.2 术语表

1.3 参考资料 列出有关资料的名称、作者、文件编号或版本等。参考资料包括:a.需求说明书、架构设计说明书等; b.本项目的其他已发表的文件; 二、需求规约 提示:本部分完成此数据库系统业务描述和需求分析 2.1 业务描述 提示:本部分完成此数据库系统的业务描述,例如: (1)数据库系统创建的背景 (2)数据库系统要解决的问题 (3)数据库系统要完成的业务流程及工作内容 (4)揭示该数据库的资源需求和设计约束 2.2 需求分析 提示:本部分完成此数据库系统的需求分析,例如: (1)分析该业务流程的内在联系 (2)业务流程各个节点的依赖关系在数据上的反映 (3)揭示创建此数据库系统的目的、目标、已知条件 (4)将业务流程节点抽象成数据库对象

MYSQL数据库命名及设计规范

MYSQL数据库命名及设计规范 1.设计原则 1)标准化和规范化 数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但Third Normal Form(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF标准的数据库的表设计原则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。 举例:某个存放客户及其有关定单的3NF数据库就可能有两个表:Customer和Order。Order表不包含定单关联客户的任何信息,但表内会存放一个键值,该键指向Customer表里包含该客户信息的那一行。 事实上,为了效率的缘故,对表不进行标准化有时也是必要的。 2)数据驱动 采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。 举例,假如用户界面要访问外部数据源(文件、XML文档、其他数据库等),不妨把相应的连接和路径信息存储在用户界面支持表里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。角色权限管理也可以通过数据驱动来完成。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。 3)考虑各种变化 在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。 举例,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。 2.数据库涉及字符规范 采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线'_'组成,共63个字符.不能出现其他字符(注释除外). 注意事项: 1)以上命名都不得超过30个字符的系统限制.变量名的长度限制为29(不包括标识字符@). 2)数据对象、变量的命名都采用英文字符,禁止使用中文命名.绝对不要在对象名的字符之间留空格. 3)小心保留词,要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突 5)保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性.假如数据类型在一个表里是整数,那在另一个表里可就别变成字符

MySQL数据库SQL开发手册

MySQL数据库SQL开发手册

目录 一、编写目的 (4) (一)简介 (4) (二)范围 (4) (三)术语和定义 (4) 二、创建规范 (5) (一)通用 (5) (二)兼容性规约 (5) (三)建表规约 (6) (四)主键规约 (7) (五)索引规约 (7) 三、开发规范 (9) (一)通用 (9) (二)Insert (9) (三)Delete (10) (四)Update (10) (五)Select (10) (六)From (11) (七)Where (11) (八)Group by (11) (九)Having (12) (十)Order by (12) (十一)Limit (12) 四、优化规范 (13) (一)通用 (13) (二)Insert (14) (三)Update (14) (四)Delete (14) (五)Join (14)

(六)or (14) (七)Group by (15) (八)Order by (15) (九)Limit (15) (十)子查询 (16) 五、附录 (17) (一) A 保留字 (17)

一、编写目的 (一) 简介 针对关系型数据库MySQL的相关特性,拟定的相关开发过程的规范,其旨在通过该规范的约束和建议,使开发人员可以在他们所编写的代码中保持统一正确的风格,提供代码的可读性以及减少出现错误的几率。 (二) 范围 本规范仅适用于环境MySQL数据库以及其对应的SQL脚本语言。(三) 术语和定义 本规范采用以下的术语描述: ★强制:必须遵从使用的原则。 ★规则:如无特殊情况,应该遵守的原则。 ★推荐:建议遵守的原则。 ★参考:开发人员可以参考了解的原则。

MySQL数据库考试试题及答案

专业:移动通信科目:MySQL数据库 一、单项选择题 1.以下聚合函数求数据总和的是( ) A.MAX B.SUM C.COUNT D.AVG 答案:B 2.可以用( )来声明游标 A.CREATE CURSOR B.ALTER CURSOR C.SET CURSOR D.DECLARE CURSOR 答案:D 3.SELECT语句的完整语法较复杂,但至少包括的部分是( ) A.仅SELECT B.SELECT,FROM C.SELECT,GROUP D.SELECT,INTO 答案:B 4.SQL语句中的条件用以下哪一项来表达( ) A.THEN B.WHILE C.WHERE D.IF 答案:C 5.使用CREATE TABLE语句的( )子句,在创建基本表时可以启用全文本搜索A.FULLTEXT B.ENGINE C.FROM D.WHRER 答案:A 6.以下能够删除一列的是( ) A.alter table emp remove addcolumn B.alter table emp drop column addcolumn C.alter table emp delete column addcolumn D.alter table emp delete addcolumn 答案:B 7.若要撤销数据库中已经存在的表S,可用()。 A.DELETE TABLE S B.DELETE S C.DROP S D.DROP TABLE S 答案:D

8.查找表结构用以下哪一项( ) A.FIND B.SELETE C.ALTER D.DESC 答案:D 9.要得到最后一句SELECT查询到的总行数,可以使用的函数是( ) A.FOUND_ROWS B.LAST_ROWS C.ROW_COUNT D.LAST_INSERT_ID 答案:A 10.在视图上不能完成的操作是( ) A.查询 B.在视图上定义新的视图 C.更新视图 D.在视图上定义新的表 答案:D 11.UNIQUE惟一索引的作用是( ) A.保证各行在该索引上的值都不得重复 B.保证各行在该索引上的值不得为NULL C.保证参加惟一索引的各列,不得再参加其他的索引 D.保证惟一索引不能被删除 答案:A 12.用于将事务处理写到数据库的命令是( ) A.insert B.rollback C.commit D.savepoint 答案:C 13.查找条件为:姓名不是NULL的记录( ) A.WHERE NAME ! NULL B.WHERE NAME NOT NULL C.WHERE NAME IS NOT NULL D.WHERE NAME!=NULL 答案:C 14.主键的建立有( )种方法 A.一 B.四 C.二 D.三 答案:D 15.在视图上不能完成的操作是( ) A.更新视图数据

数据库设计规范范文

数据库设计规范

MySQL数据库设计规范

目录 1.规范背景与目的 (4) 2.设计规范 (4) 3.1 数据库设计 (4) 3.2.1 库名 (4) 3.2.2 表结构 (5) 3.2.3列数据类型优化 (7) 3.2.4 索引设计 (10) 3.2.5 分库分表、分区表 (10) 3.2.6 字符集 (11) 3.2.7程序DAO层设计建议 (12) 3.2.8一个规范的建表语句示例 (13) 3.2 SQL编写 (14) 3.2.1 DML语句 (14) 3.2.2 多表连接 (17) 3.2.3 事务 (17) 3.2.4 排序和分组 (18) 3.2.5 线上禁止使用的SQL语句 (19)

1.规范背景与目的 MySQL数据库与oracle、sqlserver等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。 2.设计规范 3.1 数据库设计 以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。 对于不满足【高危】和【强制】两个级别的设计,DBA会强制打回要求修改。 3.2.1 库名 1. 【强制】库的名称必须控制在32个字符以内,相关模块的表名与表名之间尽量提现join的关系,如user表和user_login 表。 2. 【强制】库的名称格式:业务系统名称_子系统名,同一模块

实验二MYSQL数据库与表的创建

实验二MYSQL数据库与表的创建 实验平台:安装MYSQL数据库的PC 实验目的:1.深入MYSQL数据表的存储引擎与字段数据类型。 2.掌握MYSQL数据库与数据表的基本操作。 实验内容:1.创建数据库,并查看当前数据库与删除数据库。 2.数据表的创建、修改、删除。 3. 对数据表中的数据进行插入数据,修改数据,删除数据操作。 实验具体要求: 1、数据库模式 ①利用select @@sql_mode命令查看数据库的模式 ②利用set session sql_mode=”模式名”命令修改当前数据库的模式 2、表的存储引擎 ①查看当前默认存储引擎:Show variables like ‘storage_engine’; ②查看当前数据库支持的存储引擎:Show engines;或Show variables like ‘have%; 3、创建数据表 ①创建数据库 stm ②学生表:Student(Sno,Sname,Ssex,Sage,Sdept,Shobby) 课程表:Course(Cno,Cname,Ccredit) 学生选课表:SC(Sno,Cno,Grade) 要求1:sno、sname、Cno为Char(10);Sdept 、Cname 为varchar(20);Sage、Ccredit、Grade为int;Ssex为enum(“男”,”女”);Shobby为set(“旅游”,”音乐”,”读书”,”绘画”,”体育”)。 要求2:利用check子句在sage上建立约束,只能输入18~40之间的整数。 要求3:建立从sc表到student、course表上的外键,实现级联更新和删除 要求4:向每个表中输入数据。 ③利用Desc tablename;或Describe tablename;或Show create table tablename; 或show columns from 表名; 查看表的结构。 4、修改表的结构 利用CREATE TABLE newtable LIKE mytbl,创建一个跟Student结构相同的新表stud。 然后利用Alter tbale语句实现下面操作: ①修改表名为stud1、修改字段名sdept为dept ②修改字段数据类型dept 字段改为varchar(20) ③修改字段排列位置把shobby调整到最前面的字段 ④增加字段Sclassroom char(4)、删除该字段 ⑤更改表的存储引擎为MyISAM ⑥添加、删除表的外键约束及主键约束 5、创建表的索引 利用CREATE INDEX和ALTER TABLE ADD INDEX语句添加索引 ①在student表上创建多字段索引:Ssex升序、Sage降序 ②在student表上创建前缀索引:Sdept(5) ③利用Explain查看索引是否被使用 ④删除刚建立的前缀索引

MySQL数据库简介

Mysql数据库简介 MySQ是一种开放源代码的关系型 数据库管理系统,MySQL数据库系统使 用最常用的数据库管理语言--结构化 查询语言(SQL)进行数据库管理。 由于MySQL是开放源代码的,因此 任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。 Mysql数据库的优势 如今很多大型网站已经选择MySQL数据库来存储数据。MySQL数据库的使用以及非常广泛,尤其是在Web应用方面。由于MySQL数据库发展势头迅猛, Sun 公司于2008年收购了MySQL数据库。这笔交易的收购价格高达10亿美元。这足以说明MySQL数据库的价值。MySQL数据库有很多的优势,下面总结了其中几个优势: 1.MySQL是开放源代码的数据库 2.MySQL的跨平台性 3.价格优势 4.功能强大且使用方便 一些简单的sql命令: 1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES; 2:2、创建一个数据库MYSQLDATA mysql> CREATE DATABASE MYSQLDATA; 3:选择你所创建的数据库 mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)

4:查看现在的数据库中存在什么表 mysql> SHOW TABLES; 5:创建一个数据库表 mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1)); 6:显示表的结构: mysql> DESCRIBE MYTABLE; 7:往表中加入记录 mysql> insert into MYTABLE values (”hyq”,”M”); 8:用文本方式将数据装入数据库表中(例如D:/mysql.txt) mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE; 9:导入.sql文件命令(例如D:/mysql.sql) mysql>use database; mysql>source d:/mysql.sql; 10:删除表 mysql>drop TABLE MYTABLE; 11:清空表 mysql>delete from MYTABLE; 12:更新表中数据 mysql>update MYTABLE set sex=”f” where name=’hyq’; mysql备份容灾基础 备份的方法有很多,命令行上通过mysqldump进行全备份,开启二进制文件进行实时的增量备份,为防止物理上的不可抗性灾难,对于重要的备份数据,有必要通过上传到异地的服务器来确保数据的安全性。 为提高mysql数据库的并发负载能力,有必要对处理大数据量的数据库系统进行主从复制,读写分离等相对复杂的工作。如下图所示

相关文档
最新文档