欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Mysql学习笔记1

程序员文章站 2022-05-29 17:42:10
...

一次性插入多条记录: insert into tablename(field1,field2,…,fieldn) values(record1_value1,record1_value2,…,record1_valuen),(…) having和where的区别在于,having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤,如果逻辑允许

  1. 一次性插入多条记录:
    insert into tablename(field1,field2,…,fieldn)
    values(record1_value1,record1_value2,…,record1_valuen),(…)
  2. having和where的区别在于,having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤,如果逻辑允许,我们尽可能用where先过滤记录,这样因为结果集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用having进行再过滤。
  3. 内连接仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录,外连接分为做连接和右连接。
  4. 记录联合
    union和union all的使用,select … [union] | [union all] select …
    区别:前者去重,后者不去重。
  5. int(5),括号里面指的是数字的宽度,如果小于5位就会用0填充,默认不显示,一般通过zerofill配合使用。默认是11。此外,当数值超过设定的参数后,并不会发生截断和报错。
  6. 对于小数的表示,MySQL分为两种方式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),而定点数则只有decimal一种表示。(M,D)的用法是非标准用法,如果要用于数据库的迁移,则最好不要这么使用。float和double在不指定精度时,默认会按照实际的精度(由实际的硬件和操作系统决定),否则会四舍五入。而decimal在不指定精度时,默认的整数位为10,默认的小数位为0。如果用来表示货币等精度高的数据通常采用decimal。
  7. TIMESTAMP类型是4个字节,存储的时候是以数字值存储的,显示为“YYYY-MM-DD HH:MM:SS”如果经常插入或者更新日期为当前系统时间,则采用TIMESTAMP。如果想要获得数字值,应在TIMESTAMP列添加“+0”。此外,还有一个最重要的特点是,它与时区有关。但它有一个缺陷,取值范围小,局限于19700101080001到2038年的某一天。
  8. char和varchar类型区别:varchar是可变字符串,长度范围是0~255(mysql5.0.3版本以前)或者65535(5.0.3以后)。在检索的时候,CHAR列删除了尾部的空格,而VARCHAR则保留这些空格。
  9. 在使用concat(s1,s2,…,sn)函数拼接字符串时注意,任何字符串与NULL进行连接的结果都将是NULL。
  10. STRCMP(s1,s2)函数是比较字符串的ASCII码值的大小。如果后者比前者小,则-1,相等则为0,否则为1。
  11. TRUNCATE(x,y)返回数字x截断为y位小数的结果,但仅仅是截断,不四舍五入,ROUND(x,y)则四舍五入。如TRUNCATE(1.235,2)得到1.23。
  12. 12.