中北软院创新实验室程序员数据库

MySQL 必知必会知识点

2018-03-23  本文已影响32人  HikariCP
  1. and优于or先执行
  2. SELECT username as uname,age FROM可以从一开始指定检索结果的别名设置。这样适合该查询为主查询时设置别名使用。
    1. 也可以像这样SELECT username FROM user WHERE username = 'JIYONGGUANG' AS name; 在最后指定检索结果的别名。这样是将该查询作为子查询,并将检索出的该列作为主查询的条件使用(该条件已赋,只是作为联合查询进行数据展现)。如:
    SELECT cust_name,
           cust_state,
           (SELECT COUNT(*) FROM orders WHERE cust_id = cust_id) AS orders
    FROM customers ORDER BY cust_name
    
  3. 使用通配符的时候,如果where条件后跟的检索条件是%YongGuang。即以%开头的字符串。那么检索效率会很低
  4. 多表查询尽量把条件至于子查询检索出
  5. 写SQL前先分析,写出步骤,然后依次实现,再整理
  6. <>不等于
  7. MySQL中默认不区分大小写。即Aa相同。但是这个规则可以进行修改
  8. MySQL会重用回收存储空间。如果一张表中的连续记录在物理地址上也是连续存储的,那么当数据进行删除操作后。那么其物理空间会被回收
  9. 多表查询时,连表时用连接条件Inner JoinWHERE有时性能更好
  10. ORDER BY中进行数据排序时,DESC,ASC排序规则作用在其紧跟着的前面那列。SELECT username,age FROM user ORDER BY id DESC,age如此, 作用在id
  11. 条件顺序书写顺序:WHERE -> INNER JOIN -> GROUP BY -> HAVING -> ORDER BY -> LIMIT OFFSET
  12. SQL示例:
SELECT DISTINCT
    < select_list >
FROM
    < left_table > < join_type >
JOIN < right_table > ON < join_condition >
WHERE
    < where_condition >
GROUP BY
    < group_by_list >
HAVING
    < having_condition >
ORDER BY
    < order_by_condition >
LIMIT < limit_number >

执行顺序:

FROM <left_table>
ON <join_condition>
<join_type> JOIN <right_table>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
SELECT 
DISTINCT <select_list>
ORDER BY <order_by_condition>
LIMIT <limit_number>

从哪些表获取数据,这些表中数据通过哪个字段对应,检索什么样的数据,如何进行分组,过滤组,选择排重数据,然后再进行排序限制取几条。

  1. BETWEEEN AND改写为>= 、<=之类的。
  2. in转换多个or。字段为索引时,两个都能用到索引,or效率相对in好一点
  3. 常量传递。a=b and b=2转换为 a=2 and b=2尽量不使用变量a=ba=@var
  4. MySQL处理定长远快于变长列
  5. CHAR定长列,创建时不指定默认1。
  6. BIT,BOOLEAN默认所有数值数据类型均有符号,明确字段不存储负值,UNSIGNED可以增大取值范围为原来的2倍。如1个字节的byte取值为-128 - 127那么当该字段设置为UNSIGNED的时候取值范围就成了0-254
  7. 存储货币数据类型DECIMAL,因为Java中的float,double类型在进行浮点数运算的时候会出现精度丢失的问题。
  8. 每个表只能有一个AUTO_INCREMENT字段,并且必须被索引。
  9. 如果一个列被指定为AUTO_INCREMENT。那么只要你手动进行INSERT操作的时候。指定了这个字段。那么之后所有插入的值都是在该值得基础上进行递增。
  10. last_insert_id()此方法返回最后一个插入的数据的AUTO_INCREMENT字段的值
  11. InnoDB 事物,外键,行锁 MYISAM表锁,性能极高,支持全文本搜索。 两个存储引擎各有适用的地方,妥善选择
  12. 外键不能跨引擎,即两个不同存储引擎的列不能物理上相互关联。
上一篇下一篇

猜你喜欢

热点阅读