在弄毕设表的时候 遇到的各种想死问题
2013-01-05 16:33
323 查看
非常呵呵地不想讲……
重新弄了一次毕设的表 然后就遇到了各种残疾问题
首先是 毕设的表这次 完全舍弃了外键 不想建
原本是有建外键的计划 但是后来感觉依旧太麻烦 就被我舍弃掉了
那下面就一一把纠结的问题列一遍
1、自增长
在MySQL中,自增长的关键字是AUTO_INCREMENT,如果需要指定自增长的起点值,CREATE TABLE XX()之后对AUTO_INCREMENT进行起点值的赋值
2、ENGINE = INNODB DEFAULT CHARSET = UTF8
指定引擎和字符集,默认引擎是MyISAM,但是MyISAM不支持事务,就被PASS掉了,最后选择了支持事务的INNODB
3、非聚集索引
这是让我纠结了比较久的事情,PRIMARY KEY在设定主键的同时直接指定了聚集索引,然,我需要一个除了聚集索引之外的唯一索引,就悲剧了,一开始查资料发现MySQL中索引是KEY,就很天真地这么写了“UserName VARCHAR(16) KEY”,然后遭遇了各种报错,各种忽略我
和SQL Server不同,MySQL的语法是这样的——“UNIQUE/INDEX IX_AccountsUser_UserName(UserName(16))” 索引类型 索引名(索引字段(字段长度))
相比SQL Server的语法 这个语法有点疼……
4、BIT类型
BIT不是1就是0 但是一般写值都是这么写的 b'1'
5、MySQL中的日期(建表最疼问题)
Birthday DATE DEFAULT'2012-01-01'
Birthday DATE DEFAULT '2012-01-01'
请对比上述区别——GOOD 一个空格的区别而已 然后 我在执行的时候导致了我各种报错 第二条我执行了千百遍都是报错 然后执行第一条 居然就OK了 BUT 后来更疼的是 在我把表完成 现在在写这篇文的时候 我尝试用第二条去执行 居然又千百遍地执行成功了
最后结论 请不要相信SQLyog……多执行几遍 总有能够吃的菜
5.1、没能实现的初始化
还是日期问题 在表结构里面 有三个地方是用到了日期类型的 一个是写入注册日期 一个是生日 最后一个是暂存的信息
先说注册日期和生日 原本的设计是 使用DATE类型 像SQL Server的getdate()一样 直接在插入记录的时候插入默认值 结果遭遇了这样的问题
——DATE类型不允许使用函数初始化(日期初始化函数CURDATE()或者CURDDENT_DATE())
其实在MySQL里面还有这样一个类型TIMESTAMP(时间戳)是日期类型并且可以用函数进行初始化
但是又存在了这样的问题 时间戳在新版本里面会舍弃指定的精确度 也就是 时间戳精确度达到秒级 暂存信息的可以使用到这个日期类型 但是 注册日期和生日则是完全没有精确到秒级的必要 于是 被我无情抛弃了
不过 发现一个很有趣的东西 TIMESTAMP 是MySQL里面一个很有特色的类型 其特色在于 当你指定了这个类型并且加上一句“ON UPDATE CURRENT_TIMESTAMP”的时候 往后每次对于某条记录进行修改时 TIMESTAMP类型的字段会被同步刷新为当前更新的日期
6、补充一点 NVARCHAR类型
在MySQL里面 我找不到这个类型……
重新弄了一次毕设的表 然后就遇到了各种残疾问题
首先是 毕设的表这次 完全舍弃了外键 不想建
原本是有建外键的计划 但是后来感觉依旧太麻烦 就被我舍弃掉了
那下面就一一把纠结的问题列一遍
1、自增长
在MySQL中,自增长的关键字是AUTO_INCREMENT,如果需要指定自增长的起点值,CREATE TABLE XX()之后对AUTO_INCREMENT进行起点值的赋值
2、ENGINE = INNODB DEFAULT CHARSET = UTF8
指定引擎和字符集,默认引擎是MyISAM,但是MyISAM不支持事务,就被PASS掉了,最后选择了支持事务的INNODB
3、非聚集索引
这是让我纠结了比较久的事情,PRIMARY KEY在设定主键的同时直接指定了聚集索引,然,我需要一个除了聚集索引之外的唯一索引,就悲剧了,一开始查资料发现MySQL中索引是KEY,就很天真地这么写了“UserName VARCHAR(16) KEY”,然后遭遇了各种报错,各种忽略我
和SQL Server不同,MySQL的语法是这样的——“UNIQUE/INDEX IX_AccountsUser_UserName(UserName(16))” 索引类型 索引名(索引字段(字段长度))
相比SQL Server的语法 这个语法有点疼……
4、BIT类型
BIT不是1就是0 但是一般写值都是这么写的 b'1'
5、MySQL中的日期(建表最疼问题)
Birthday DATE DEFAULT'2012-01-01'
Birthday DATE DEFAULT '2012-01-01'
请对比上述区别——GOOD 一个空格的区别而已 然后 我在执行的时候导致了我各种报错 第二条我执行了千百遍都是报错 然后执行第一条 居然就OK了 BUT 后来更疼的是 在我把表完成 现在在写这篇文的时候 我尝试用第二条去执行 居然又千百遍地执行成功了
最后结论 请不要相信SQLyog……多执行几遍 总有能够吃的菜
5.1、没能实现的初始化
还是日期问题 在表结构里面 有三个地方是用到了日期类型的 一个是写入注册日期 一个是生日 最后一个是暂存的信息
先说注册日期和生日 原本的设计是 使用DATE类型 像SQL Server的getdate()一样 直接在插入记录的时候插入默认值 结果遭遇了这样的问题
——DATE类型不允许使用函数初始化(日期初始化函数CURDATE()或者CURDDENT_DATE())
其实在MySQL里面还有这样一个类型TIMESTAMP(时间戳)是日期类型并且可以用函数进行初始化
但是又存在了这样的问题 时间戳在新版本里面会舍弃指定的精确度 也就是 时间戳精确度达到秒级 暂存信息的可以使用到这个日期类型 但是 注册日期和生日则是完全没有精确到秒级的必要 于是 被我无情抛弃了
不过 发现一个很有趣的东西 TIMESTAMP 是MySQL里面一个很有特色的类型 其特色在于 当你指定了这个类型并且加上一句“ON UPDATE CURRENT_TIMESTAMP”的时候 往后每次对于某条记录进行修改时 TIMESTAMP类型的字段会被同步刷新为当前更新的日期
6、补充一点 NVARCHAR类型
在MySQL里面 我找不到这个类型……
相关文章推荐
- mysql远程访问的时候遇到了各种问题
- 日期格式化的时候遇到的奇怪的问题
- 安装xampp后,遇到的各种问题
- 我遇到的各种问题
- iOS 当使用DES解密遇到和解密不一致或者为空的时候问题
- 用Fuel部署OpenStack的时候可能遇到的问题及部分解决办法
- 机器学习实战python版本matplotlib安装遇到的各种问题和代码演示
- JSP遇到的各种中文乱码问题
- 使用oracle中遇到的各种问题【持续更新】
- OOZIE系统遇到的各种问题解决2:to…
- CentOS6.4 安装oracle 11g 遇到的各种问题
- 使用coocaPod遇到的各种问题
- Android开发遇到的各种问题的解决办法(不断更新!!!)
- 安装VirtualBox的时候遇到的问题
- 夜间模式demo做的时候遇到的一些问题
- 各种版本的linux下安装多个版本的NS2(比如ns2.31和ns2.27)中遇到的问题和解决方案
- 做爬虫时候遇到的中文字符编码问题(Python)
- openstack keystone 部署遇到的各种问题
- 测试用activex启动以及服务管理方面遇到的各种问题总结
- 安卓开发遇到的各种问题