内置函数 概念 在开发称之为 ‘方法’ 将一组逻辑语句在方法体中 对外暴露的方法名 作用 1隐藏代码实现细节 2提高代码的重性 调用方法 select 函数名 对表操作的话需要加上表 select 函数名
须见名知意 库名、表名、字段名禁用使 MySQL保留字 临时库、表名必须以tmp为前缀,并以日期为后缀 备份库、表必须以bak为前缀,并以日期为后缀 基础规范 使用INNODB存储引擎 表字符集使用utf8mb4...所有表都需要添加注释 单表数据量建议控制在5000W以内 不在数据库中存储图片、文件等大数据 禁止在线上做数据库压力测试 禁止从测试、开发环境直连数据库 库表设计 禁止使用分区表 拆分大字段和访问频率低的字段
字段名必须使用小写字母并采用下划线分割; 库名、表名、字段名禁 止超过32个字符,须见名知意; 库名、表名、字段名支持最多64个字符,统一规范、易于辨识以及减少传输量不要超过32; 库名、表名、字段名禁止使用MySQL...utf8mb4( 5.5.3版本以上支持) 所有表都需要添加注释,单表数据量建议控制在1000万以内; 不在数据库中存储图片、文件等大数据; 禁止在线上做数据库压力测试; 禁止从测试、开发环境直连数据库...; 三、库表设计规范 禁止使用分区表 MySQL的分区表实际性能不是很好,且管理维护成本较高 拆分大字段和访问频率低的字段,分离冷热数据 用HASH进行散表,表名后缀使用十进制数,下标从...really need VARCHAR(N),N表示的是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择NVARCHAR(N),N尽可能小,因为MySQL...最擅长的是单表的主键/二级索引查询 Join消耗较多的内存,产生临时表 避免在数据库中进行数学运算 容易将业务逻辑和DB耦合在一起 MySQL不擅长数学运算和逻辑判断 无法使用索引
尽量不要在频繁更新的列上建立索引 6) 不在低基数列上建立索引,例如状态、类型等 7) 不在索引列进行数学运算和函数运算(参与了运算的列不会引用索引) 8) 复合索引须符合最左前缀的特点建立索引(mysql
所有的数据库对象名称必须使用小写字母并用下划线分割(MySQL大小写敏感,名称要见名知意,最好不超过32字符)禁止在数据中存储图片,文件二进制数据(使用文件服务器)禁止在线上做数据库压力测试禁止从开发环境...NULL值做特别的处理)使用timestamp或datetime类型来存储时间同财务相关的金额数据,采用decimal类型(不丢失精度,禁止使用 float 和 double)所有的数据库对象名称禁止使用MySQL...字符集必须统一,避免由于字符集转换产生的乱码,汉字utf8下占3个字节)所有表和字段都要添加注释COMMENT,从一开始就进行数据字典的维护建议使用物理分表的方式管理大数据尽量做到冷热数据分离,减小表的宽度(mysql...禁止给表中的每一列都建立单独的索引区分度最高的列放在联合索引的最左侧尽量把字段长度小的列放在联合索引的最左侧尽量避免使用外键(禁止使用物理外键,建议使用逻辑外键)尽量使用 union all 代替 union拆分复杂的大SQL为多个小SQL( MySQL
开发规范对象命名命名规范的对象,是指数据库SCHEMA、表TABLE、字段COLUMN、索引INDEX、约束CONSTRAINTS等【强制】凡是需要命名的对象,其标识符不能超过30个字符【强制】名称必须以英文字母开头...为前缀,以日期yyyymmdd为后缀,比如 tmp_order_20160425,正常业务用到的临时表、中间表,前后缀尽量不要包含 tmp 以免造成歧义库表设计【强制】生产/UAT环境建库建表,请参考《mysql...sql_mode为严格模式(STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION),在此模式下任何不支持的语法或者数据校验不合格的,都将直接返回错误【建议】日志类数据不建议存储在MySQL...建议】禁止使用ENUM,可使用TINYINT代替增加新的ENUM值要做DDL操作;ENUM的内部实际存储就是整数而非字符串;【建议】禁止使用OR条件,必须改为IN查询,并注意in的个数小于200旧版本mysql...)来判断是否为NULL值: SELECT IF(ISNULL(SUM(g)), 0, SUM(g)) FROM table;【建议】SQL合并,主要是指的DML时候多个value合并,减少和数据库交互开发行为规范
打开 MySQL 服务 $ sudo service mysql start Linux 安装mysql #安装mysql服务端,核心程序 $ sudo apt-get install mysql-server...# 安装mysql客户端 $ sudo apt-get install mysql-client 命令验证是否安装并启动成功: $ sudo netstat -tp | grep mysql 如果需要修改配置文件...$ sudo vim /etc/mysql/my.cnf 打开mysql # 启动mysql $ sudo service mysql start # 登录 $ mysql -uroot -pxxxx...新建数据表 CREATE TABLE 表的名字 ( 列名a 数据类型(数据长度), 列名b 数据类型(数据长度), 列名c 数据类型(数据长度) ); MySQL 常用数据类型 数据类型 大小(字节...mysqldump 是 MySQL 用于备份数据库的实用程序。它主要产生一个 SQL 脚本文件,其中包含从头重新创建数据库所必需的命令 CREATE TABLE INSERT 等。
3、 禁止使用分区表 Mysql 分区表技术还是不是很成熟,而且对分区键有严格要求,分区表变大后对于表备份恢复都有很大困难,建议在业务端使用 sharding 技术。...4、 禁止在数据库中存储明文密码 如果需要存储 MySQL 密码可以用 MySQL 内置函数 password()对明文密码进行 MD5 进行加密。...定义为 Not Null 原因如下: MySQL 数据库中每个为 NULL 的列都需要额外的 1 个字节进行存储,浪费空间资源。...3、建议查询中避免隐式转换 MySQL 中如果查询字段与表定义字段不同则会发生隐式转换,从而无法用到索引导致查询效率低下。 4、建议不要在 MySQL 数据库中存放业务逻辑。...,并且对于目前数据量存储过程、触发器、函数等没有任何优势(存储过程、函数对大数据量的处理和复杂业务逻辑很有优势),而且 mysql 存储过程还有一定 BUG。
varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; 忘记了mysql...密码 修改配置文件 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # ADD skip-name-resolve...skip-grant-tables 然后重启MySQL服务并免密码登录 service mysqld restart mysql 执行修改密码SQL 将root用户的密码统一设为'admin' UPDATE...mysql.user SET Password=password('123456') WHERE User='root'; 还原MySQL配置文件并重启服务 修改用户登录HOST UPDATE mysql.user
不允许使用root账号,所有开发和测试应当分配指定账号,并授予最小数据库权限 2....MySQL在处理大表时,性能就开始明显降低,所以建议单表物理大小限制在16GB,表中数据行数控制在2000W内。^[业内的规则是超过2000W性能开始明显降低。...「ORDER BY,GROUP BY,DISTINCT的字段需要添加在索引的后面,形成覆盖索引」 联合索引注意 「最左匹配原则」:必须按照从左到右的顺序匹配,MySQL会一直向右匹配索引直到遇到范围查询
第一章 PHP快速入门 1.18 使用declare declare(directive) { // block } 第十七章 使用PHP和MySQL实现身份验证 识别访问这 实现访问控制...使用基本身份验证 在PHP中使用基本身份验证 在Apache的.htaccess文件中使用基本身份验证 使用mod_autho_mysql身份验证 创建自定义身份验证 17.3
个人学习方法分享 深入浅出后端开发(PHP篇) 深入浅出后端开发(MySQL篇) 本文阅读建议 1.一定要辩证的看待本文. 2.本文仅代表个人片面观点,如有不同观点,还往及时指出. 3.本文只阐述学习路线和学习当中的重点问题...PHP常常用来开发网页,或者网页后台,其学习成本相对其他语言较低,学习路线不会很陡峭,并且拥有ThinkPHP和Laravel成熟框架可供进行开发....深入浅出后端开发(PHP篇) 什么是MySQL 自己的理解 MySQL是一种高效,开源的关系型数据库,数据库是用来存储数据的,不同的数据库其性能,高并发处理,搜索的效率各不相同....深入浅出后端开发(MySQL篇) LAMP黄金搭档 自己的理解 LAMP因为其开源的特点,成本低,建站速度快,易于维护,易于扩展,成型框架多....因为易于学习,成本低,开发环境易于搭建,所以本人也选择了LAMP进行学习,其中MySQL 和PHP 担当了项目当中的后台开发的角色.
注意:在MySQL5.1版本中分区的实现仍然是pre-alpha版本,该版本中分区特性不是特别适用于生产环境,部分本章中描述的一些功能在MySQL5.1版本中没有实现和提供支持,部分在新发布的MySQL5.5...中已经实现,本章基于MySQL5.1版本对分区特性进行描述,如果没有特别标注,描述的特性都适用于MySQL5.1版本,MySQL5.1版本不支持的功能或者在MySQL5.5新增加支持的特性将会特别标注,...MySQL支持使用大部分存储引擎(比如MyISAM、INNODB、MEMORY等存储引擎)创建分区表;MySQL不支持使用MERGE或CSV存储引擎来创建分区表,更多的内容可以参考MySQL最新的官方文档...MySQL的分区表上创建的索引一定是本地LOCAL索引。...说到命名,顺便介绍一下MySQL命名中的大小写敏感:在MySQL中,数据库和表对应于数据目录中的目录和文件。所以,操作系统的大小写敏感性决定数据库和表命名的大小写敏感性。
开发者必备Mysql常用命令,涵盖了数据定义语句、数据操纵语句及数据控制语句,基于Mysql5.7。...数据定义语句(DDL) 数据库操作 登录数据库: mysql -uroot -proot 创建数据库: create database test 查看所有数据库: show databases ?...修改mysql全局时区为北京时间,即我们所在的东8区: set global time_zone = '+8:00'; 修改当前会话时区: set time_zone = '+8:00' http://
禁从测试、开发环境直连数据库 **二、命名规范 1. 库名、表名、字段名禁止超过32个字符。须见名之意 2. 库名、表名、字段名禁止使用MySQL保留字 3....备份库、表必须以bak为前缀,并以日期为后缀 三、库、表、字段开发设计规范 1. 禁使用分区表 2. 拆分大字段和访问频率低的字段,分离冷热数据 3. 采用合适的分库分表策略。 4....CPU) (2) 事务要简单,整个事务的时间长度不要太长 (3) 避免使用触发器、函数、存储过程 (4) 降低业务耦合度,为sacle out、sharding留有余地 (5) 避免在数据库中进数学运算(MySQL
ror对于初学者来讲,可能最大的困难莫过于开发环境的安装与搭建,今天折腾了大半天基本搞定了,把过程贴在这里,以便初学者少走弯路。...3.安装mongrel(相当于asp.net开发中的IIS,在网上看到有说IIS上也可以跑ROR,不过没试过) 命令行: gem install mongrel (有关mongrel的更多操作,可以参照这篇文章...group_id=904 下载InstantRails-2.0-win.zip解压后得到),当然如果想使用mysql做为数据库的话,继续往下看 5.安装mysql 5.1 百度“mysql下载”第一个便是下载地址...6.配置ruby下的mysql连接 6.1 把Mysql安装目录中bin目录下的libmysql.dll 复制到ruby安装目录的bin目录下(一般是c:\ruby\bin下) 6.2 到http://...for ruby的文档 6.3 安装mysql for ruby的驱动,命令行键入: gem install mysql 6.4 把mysql.so复制到C:\ruby\lib\ruby\site_ruby
为了项目的稳定,代码的高效,管理的便捷,在开发团队内部会制定各种各样的规范 这里分享一份我们定义的MySQL开发规范,欢迎交流拍砖 数据库对象命名规范 数据库对象 命名规范的对象是指数据库SCHEMA、...MySQL在处理大表时,性能就开始明显降低,所以建议单表物理大小限制在16GB,表中数据控制在2000W内 13....但N应尽可能小,因为MySQL一个表中所有的VARCHAR字段最大长度是65535个字节,且存储字符个数由所选字符集决定。...如无特殊需要,严禁开发人员使用MEDIUMTEXT、TEXT、LONGTEXT类型 对于精确浮点型数据存储,需要使用DECIMAL,严禁使用FLOAT和DOUBLE 如无特殊需要,严禁开发人员使用BLOB...MySQL中的text类型字段存储的时候不是和由其他普通字段类型的字段组成的记录存放在一起,而且读取效率本身也不如普通字段块。
(uin, num, dttime) values(516751917, 1, now()); 分析: Insert ignore的好处是,当存在唯一/主键冲突时,则直接忽略最新的insert操作,mysql...二、数据查询篇 1、select *和 select a b c的差别 基于MYSQL select数据取值原理,如果抛开索引和where,光从select *和select a b c的效率来说实际是相差不大的...,如下图: 这和mysql内部数据存储结构有关,详细原因有兴趣的可以参考mysql的数据查找原理。...select a b c,查询效率重点还是取决于where后面的索引设计 (2)原则上,尽量少用elect * 虽然从扩展性而已,如果表结构变更比较频繁,使用select *会减少不少的代码变更,但是在营销活动开发的应用场景上说
尽量将子查询转化为连接查询,mysql 查询优化器会优化连接查询,但连接的表要尽可能的少,如果很多,可以考虑反范式设计。即对设计阶段做一些改造。...const、system:当MySQL对查询的某部分进行优化,并转化为一个常量时,可使用这些类型进行访问。...possible_keys 将指出MySQL能使用哪个索引在表中找到行,查询涉及的字段上若存在索引,则该索引将被列出,但不一定会被查询使用。...key:最有价值信息之二 key 将显示MySQL在查询中实际使用到的索引,若没有使用索引,则显示为null。...2.Using where如果查询未能使用索引,则Using where 的作用只是提醒我们 MySQL 将用where 子句来过滤结果集。
领取专属 10元无门槛券
手把手带您无忧上云