MYSQL数据库建表注意事项
1.库名、表名、字段名必须使用小写字母,“_”分割。
原因:
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的;
MySQL在Windows下都不区分大小写。
所以在不同操作系统中为了能使程序和数据库都能正常运行,最好的办法是在设计的时候都转为小写,但是如果在设计的时候已经规范化大小写了,那么在Windows环境下只要对数据库的配置做下改动就行了,具体操作如下:
在MySQL的配置文件中my.ini [mysqld]中增加一行 lower_case_table_names = 1
参数解释:
0:区分大小写
1:不区分大小写
在 MySQL中,数据库和表对就于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在Windows 中是大小写不敏感的,而在大多数类型的 Unix系统中是大小写敏感的。奇怪的是列名与列的别名在所有的情况下均是忽略大小写的,而表的别名又是区分大小写的。
要避免这个问题,你最好在定义数据库命名规则的时候就全部采用小写字母加下划线的组合,而不使用任何的大写字母。
或者也可以强制以 -O lower_case_table_names=1 参数启动mysqld(如果使用 --defaults-file=...\my.cnf参数来读取指定的配置文件启动 mysqld的话,你需要在配置文件的 [mysqld] 区段下增加一行lower_case_table_names=1)。这样MySQL
将在创建与查找时将所有的表名自动转换为小写字符(这个选项缺省地在Windows 中为 1 ,在 Unix 中为 0。从 MySQL 4.0.2开始,这个选项同样适用于数据库名)。
2.建议使用InnoDB存储引擎(如果一个表极少更新可以考虑MyISAM)。
原因:
1.MyISAM
MyISAM是mysql5.1及之前版本的默认引擎,很久未被更新。
使用表级锁, 如果数据量大,一个插入操作锁定表后,其他请求都将阻塞。
支持全文索引
支持查询缓存
保存表的总行数,使用count(*) 并且无where子句的时候可以很快返回结果,但是实际使用时基本不会无where子句
简要:不支持事务安全
没有事务日志和分类,因此它只将数据写入Linux文件缓存并希望能最终写入磁盘。如果系统在这个过程中崩溃或者丢失一些数据,MyISAM表会经常出现无法启动或者警告你需要修复表;它恢复数据的方法有限并且经常会丢失数据。另外,MyISAM也很难正确的备份,备份的时候通常需要锁住整个系统的数据,这就意味着每天网站都要宕机或者无法使用一段时间。
MyISAM表允许在定期列中进行全文检索,而InnoDB不支持(这个没搞懂)
2.InnoDB
支持事务
支持行级锁和表级锁,能支持更多的并发量
mysql5.6版本开始支持 全文索引
查询不加锁,完全不影响查询
Innodb会对每个表设置一个事务计数器,里面存储当前最大的事务ID.当一个事务提交时,InnoDB会使用MVCC中系统事务ID最大的事务ID跟新当前表的计数器.只有比这个最大ID大的事务能使用查询缓存,其他比这个ID小的事务则不能使用查询缓存.另外,在InnoDB中,所有有加锁操作的事务都不使用任何查询缓存
简要:支持事务安全
事务日志记录真正的数据库事务,但更重要的是数据崩溃恢复和回滚。基于 InooDB方式的IO,能给予更安全数据保护和更好性能表现
作者:河边的老牛
链接:http://www.jianshu.com/p/6b45b150bfbf
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
4.建议使用UNSIGNED存储非负数值。
create table t (
ip INT UNSIGNED
);
insert into t select INET_ATON('209.207.224.40');
select INET_NTOA(ip) from t;
6.整形定义中不添加长度,比如使用INT,而不是INT(4)。
长度与你存放的数值型的数的大小无关(参考http://www.cnblogs.com/echo-something/archive/2012/08/26/mysql_int.html)
MYSQL数据库建表注意事项的更多相关文章
- mysql数据库建表的基本规范
1.创建表的时候必须指定主键,并且主键建立后最好不要再有数据修改的需求 mysql从5.5版本开始默认使用innodb引擎,innodb表是聚簇索引表,也就是说数据通过主键聚集( 主键下存储该行的数据 ...
- mysql数据库建表授权操作
1.create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库 采用create schema和c ...
- mysql数据库建表分类字段--尽量少用字符串--原因探索
虽然一直都知道,类型 之类的字段 直接用字符窜会很方便,不过最好还是不要用字符串:但是也不是特别清楚为什么不要用,时间久了 就忍不住用一下字符窜试试,这一试 还挺好用的,吓得我 感觉探究了一下 为什么 ...
- MySQL数据库建表命名的坑
今天建了一张表,表名为--inOut: 然后再使用中发现怎么都是SQL错误: 然后在Navacat上发现 这是一个关键词! 如果非要继续使用,只能这样: 类似的坑还有user等.
- mysql数据库建表
主键的问题: 简单的id递加.不过在实习的时候,因为id递增的问题,导致一个项目最后好像产生了严重的问题.所以递增适合小型项目,对我们的项目来说90%足够可以用的. 一些限制: 一般就非空就行,唯一的 ...
- 【记录】Mysql 建表注意事项
博主最近打算搭建商城,由于之前对建表只有很浅显的理解,没有太过深入了解,建表过程中遇到一些问题,现记录如下, 如有问题请各位留言指正,感激不尽: 建表时设置如何设置联合主键?如下标红处: CREATE ...
- MySQL数据库使用时注意事项
MySQL数据库使用时注意事项 建表的角度上 1.合理安排表关系 2.尽量把固定长度的字段放在前面 3.尽量使用char 代替varchar 4.分表:水平分和垂直分 在使用sql语句的时候 1.尽量 ...
- MySQL数据库分表的3种方法
原文地址:MySQL数据库分表的3种方法作者:dreamboycx 一,先说一下为什么要分表 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目 ...
- 【Java框架型项目从入门到装逼】第九节 - 数据库建表和CRUD操作
1.新建学生表 这节课我们来把和数据库以及jdbc相关的内容完成,首先,进行数据库建表.数据库呢,我们采用MySQL数据库,我们可以通过navcat之类的管理工具来轻松建表. 首先,我们得建一个数据库 ...
随机推荐
- 《Lua程序设计》第3章 表达式 学习笔记
3.1 算术操作符“+”(加法).“-”(减法).“*”(乘法).“/”(除法).“^”(指数).“%”(取模).3.2 关系运算符< > <= >= == ~=3.3 逻辑操 ...
- VK Cup 2016 - Qualification Round 2 B. Making Genome in Berland
今天在codeforces上面做到一道题:http://codeforces.com/contest/638/problem/B 题目大意是:给定n个字符串,找到最短的字符串S使得n个字符串都是这个字 ...
- 【LeetCode OJ】Add Two Numbers
题目:You are given two linked lists representing two non-negative numbers. The digits are stored in re ...
- 使用JDBC插入数据到ORACLE,使用标识列自增列
不同于SQL Server的是,Oracle中插入数据的时候,没有自增列或者是标识列,但是,我们又不想显式的进行主键的插入,这里,必须在Oracle数据库中指定一个标识列,或者说是一个序列.具体方法如 ...
- 【转载】Yui.Compressor高性能ASP.NET开发:自动压缩CSS、JS
在开发中编写的js.css发布的时候,往往需要进行压缩,以减少文件大小,减轻服务器的负担.这就得每次发版本的时候,对js.js进行压缩,然后再发布.有没有什么办法,让代码到了服务器上边,它自己进行压缩 ...
- Android自定义组件——四个方向滑动的菜单实现
今天无意中实现了一个四个方向滑动的菜单,感觉挺好玩,滑动起来很顺手,既然已经做出来了就贴出来让大家也玩弄一下. 一.效果演示 (说明:目前没有安装Android模拟器,制作的动态图片太卡了,就贴一下静 ...
- SSH安装篇之——SecureCRT连接(内网和外网)虚拟机中的Linux系统(Ubuntu)
最近在学习Linux,看了网上很多SecureCRT连接本地虚拟机当中的Linux系统,很多都是需要设置Linux的配置文件,有点繁琐,所以自己就摸索了一下,把相关操作贴出来分享一下. SecureC ...
- LeetCode 40 Combination Sum II(数组中求和等于target的所有组合)
题目链接:https://leetcode.com/problems/combination-sum-ii/?tab=Description 给定数组,数组中的元素均为正数,target也是正数. ...
- spring应用中多次读取http post方法中的流(附源码)
一.问题简述 先说下为啥有这个需求,在基于spring的web应用中,一般会在controller层获取http方法body中的数据. 方式1: 比如http请求的content-type为appli ...
- jvisualvm连接远程应用终于成功,附踩大坑记录!!(一:jstatd方式)
一.问题概述 连接远程java应用除了jstatd方式,还有jmx方式.不必拘泥于一种,一种不行可以果断尝试另一种,兴许就行了. 姊妹篇在这: jvisualvm连接远程应用终于成功,附踩大坑记录!! ...