mysql 轮训取数据,MySQL数据库基础培训笔记

a0ee781e128c

1、SQL中的字符串都要用单引号

不用单引号也可能会执行,但是会有类型转换,而类型转换设计函数操作,引起索引失效或逻辑错误的问题。

2、SQL书写顺序和逻辑顺序要一致

order by要放在句末

select a,b from t order by c ,c不在select项中,数据库引擎是怎么处理的?

MySQL进行数据的逻辑存储,以page为单位,会抽取所有数据。

select id1 as fid from t where fid = 2 能执行吗?

不能;执行顺序是先where,再select。

3、内连接与外链接

内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)

包括相等联接和自然联接。

内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。

外联接

外联接可以是左向外联接、右向外联接或完整外部联接。

在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:

1)LEFT JOIN或LEFT OUTER JOIN

左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

2)RIGHT JOIN 或 RIGHT OUTER JOIN

右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

3)FULL JOIN 或 FULL OUTER JOIN

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

考虑这个SQL语句:

select count(*) from a2 left join b2 on a2.id = b2.id

这个语句没有意义:因为a2作为左表,数据项都会被显示,而count将每次都得到相同的结果。

外链接的内部处理方式:(可以从扩展执行计划中查看具体的执行过程,类似于单步调试)

有where条件的left join查询,内部将以内连接处理。

4、语法细节

update同时更新多条,以逗号“,”将update的值分隔,一并执行:

update a1 set a = 1,b = 2 where ...

delete from t where id;

可以正常执行:id有值的数据都满足。

truncate和delete *

truncate是原子事务,没有日志记录(或者说只有一条语句执行的日志),所以不能进行事务回滚。

delete操作将产生详细的日志,IO频繁,支持事务回滚。

5、Quanr数据库命名规范

库、表、字段命名

必须使用小写字母,并采用下划线分割;

不超过32个字符;

必须见名知意,与事务、产品线相关;

禁用MySQL保留字;

临时表以tmp_做前缀,日期做后缀,如:tmp_hourse_xxx_20170301

备份表以bak_做前缀,日期做后缀,如:bak_hourse_xxx_20170301

索引命名

小写字母,下划线分割,禁用驼峰式;

非唯一索引:idx_字段名称[_字段名称]

唯一索引:uniq_字段名称[_字段名称]

6、Quanr数据操作基础规范

使用INNODB存储引擎并且使用业务不相关自增ID为主键;

使用UTF8 / UTFMB4字符集;

所有表、字段都要加注释;

禁止在数据库中存放图片、文件等;

每张数据表数据量控制在5000W以内;

禁止在线上做数据库压力测试;

禁止从测试、开发环境直连数据库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值