Mysql【注意事项】

1. 注意:

        MySQL在windows下是不区分大小写的,将script文件导入MySQL后表名也会自动转化为小

写,结果再想将数据库导出放到linux服务器中使用时就出错了。

        因为在linux下表名区分大小写而找不到表,查了很资料都说在linux下更改MySQL配置使其也

不区分大小写,但是有没有办法反过来让windows下大小写敏感呢?

        其实方法是一样的,相应的更改windows中MySQL的设置就行了。

        具体操作:在MySQL的配置文件my.ini中增加一行:lower_case_table_names = 0    

        其中 0:区分大小写 ; 1:不区分大小写

        MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:

                •  数据库名与表名是严格区分大小写的;

                •  表的别名是严格区分大小写的;

                •  列名不列的别名在所有的情况下均是忽略大小写的;

                •  变量名也是严格区分大小写的;(MySQL的变量名在windows下都不区分大小写)。

2. SQL语句中的数值也可以采用单引号引起来,原因是MySQL数据库做类型自动转换。

3. between … and … 它是包含最大值和最小值。

4. 关于运算符的问题不用死记硬背,没有把握的尽量采用括号。

5. 如果包含where语句 order by 必须放到 where 后面,如果没有 where 语句 order by 放到表的后面。

6. 如果采用多个字段排序,如果根据第一个字段排序重复了,会根据第二个字段排序。

7. 注意:数据处理函数是该数据本身特有的,有些函数可能在其它数据库不起作用。

8. 用substr(字段名称,起始下标,截取长度)函数截取下标是从 1 开始。

9. 在数据库中,有Null参与数学运算的结果一定为Null;为了防止计算结果出现Null,建议先使用ifnull函数预先处理。

10. MySQL默认去除字段后面的空格,原因:MySQL语法松散。

11.

        11.1 日期是数据库本身的特色,也是数据库本身机制中的一个重要内容,所以仍需掌握。

        11.2 每一个数据库处理日期时采用的机制都不一样,都有自己的一套处理机制,所以在实际开发中将日期字段定义为DATE类型的情况很少。

        11.3 如果使用日期类型,java程序将不能通用。实际开发中,一般会使用“日期字符串”来表示日期。

12. str_to_date函数通常使用在插入操作中;字段DATE类型,不接收varchar类型,需要先通过该

函数将varchar变成date再插入数据。

13. date_format()函数主要应用在数据库查询操作上,实际工作中,用户需要日期以特定的格式展

示出来的时候,需要用该函数实现。

14. 注意:

        1. 分组函数自动忽略空值,不需要手动增加where条件排除空值。

        2. 分组函数不能直接使用在where 关键字后面。

15. 注意:

        1. count(*)表示取得当前查询表所有记录。

        2. count(字段名),不会统计为null的记录。

16. distinct只能出现在所有字段最前面,后面如果有多个字段及多字段联合去重。

17. 分组函数:

        结论:有group by 的DQL语句中,select 语句后面只能跟 分组函数+参与分组的字段。

        结论:如果有orderby 参与,必须放在group by 后面。

18. 能够在where在过滤的数据不要放到having中迚行过滤,否则影响SQL询句的执行效率。

19. 注意:外连接的查询结果条数 >= 内连接的查询结果条数。

20. 注意:多张表查询时,通常会对表起别名,若两张表中有相同名称的字段时,该相同名称字段

不知道属于哪张表中,这时需要通过对表起别名来限制该字段属于哪张表,并且提高SQL语句的效

率,可读性也高。

21. 结论:为了避免笛卡尔积现象的发生,必须在迚行表连接的时候添加限制条件。

22. 注意:在连接查询时,即使我们使用的了限制条件,但是匹配次数没有减少,只是显示有效数

据。

23. 注意:仸何一个右外连接都可写成左外连接,仸何一个左外连接都可写成右外连接。

24. 查询字段类型在MySQL中不必完全相同,但是Oracle中一定要类型也相同。

25. 注意:默认情况下,当表创建乊后,没有指定约束也没指定默认值,系统默认值就是 NULL ,

默认值NULL表示:若插入的时候没有指定仸何数据,默认插入NULL值。

26. 注意:update如果没有条件限制,将把整张表的数据全部更新。

27. 注意:若没有条件限制,会将表中所有记录全部删除。

28. 注意:“unique”约束的字段不能重复,但可以为null,null不是一个值,也不能用等号比较。

29. 注意:”unique“约束多个字段设置唯一约束,只有同时相同才会报错。

30. 表的三大范式:

        第一范式:一张表中都应该有主键,一张表中只能有一个主键;(原子性)

        第二范式:所有的非主键字段应该完全依赖主键,不能产生部分依赖。(依赖性、相关性)

        第三范式:所有的非主键字段应该直接依赖主键,不能产生传递依赖。

31. 注意:删除一行数据,自增主键不会替代删除的自增数,会继续排下去,一般删除数据都应该

是逻辑修改,而不是直接删除数据。

32. 重点:典型的一对多设计,在多的一方加外键。

33. 注意:MySQL中没有提供修改外键约束的语法功能。

34. 注意:打卡或关闭事务只对当前窗口(会话)有效。

35. OracleMySQL数据库管理系统默认隔离级别为:可重复读。

36. 添加索引需要根据项目需求和客户需求等因素来决定。

37. 结论:对视图进行增删改查,会影响原表数据。(通过视图影响原表数据的,不是直接操作的原表)可以对视图CRUD操作。

38. 结论:创建原表的视图,再由原表的视图来形成操作表,这样不会影响原表的数据,进行测试CRUD操作。

39. 结论:视图可以隐藏表的实现细节。保密级别较高的系统,数据库只对外提供相关的视图,java程序员只对视图对象进行CRUD。

41. 结论:面向视图查询,只知道myview3中有abc三个字段,不知道该字段视图背后真实表结构是什么。

42. 结论:数据库设计尽量遵循三范式,但是还是要根据实际情况进行取舍,有时可能会拿冗余换速度,最终目的满足客户需求。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

相得益彰.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值