zoukankan      html  css  js  c++  java
  • mysql补充

    char 和 varchar的区别

    char 固定长度
    varchar 可变长

    char:定长
    varchar:变长
    
    #宽度指的是字符的个数
    create table t13(name char(5));
    create table t14(name varchar(5));
    
    insert into t13 values('李杰 '); #'李杰   '
    insert into t14 values('李杰 '); #'李杰 '
    
    select char_length(name) from t13; #5
    select char_length(name) from t14; #3
    
    
    select name from t13 where name='李杰';
    select name from t13 where name like '李杰';
    
    name char(5)
    egon |alex |wxx  |
    
    name varchar(5)
    1bytes+egon|1bytes+alex|1bytes+wxx|
    4+egon|4+alex|3+wxx|
    
    注意:

    1、char填充空格来满足固定长度,但是在查询时却会很不要脸地删除尾部的空格(装作自己好像没有浪费过空间一样),然后修改sql_mode让其现出原形

     SET sql_mode = 'pad_char_to_full_length';
    

    2、 虽然 CHAR 和 VARCHAR 的存储方式不太相同,但是对于两个字符串的比较,都只比 较其值,忽略 CHAR 值存在的右填充,即使将 SQL MODE 设置为 PAD_CHAR_TO_FULL LENGTH 也一样,,但这不适用于like

    mysql> SELECT myname = 'Monty', myname = 'Monty  ' FROM names;
    +------------------+--------------------+
    | myname = 'Monty' | myname = 'Monty  ' |
    +------------------+--------------------+
    |                1 |                  1 |
    +------------------+--------------------+
    row in set (0.00 sec)
    
    mysql> SELECT myname LIKE 'Monty', myname LIKE 'Monty  ' FROM names;
    +---------------------+-----------------------+
    | myname LIKE 'Monty' | myname LIKE 'Monty  ' |
    +---------------------+-----------------------+
    |                   1 |                     0 |
    +---------------------+-----------------------+
    row in set (0.00 sec)
    

    总结:

    虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡

    delete 和 truncate 的区别

    使用方法:
    情况1,清空表所有记录

    1、delete from [table]; 
    2、truncate [table];
    

    情况2,删除表部分记录,只能用select

    select from table where [condition]
    
    
    区别:

    1、delete 可以返回被删除记录数,而truncate返回的是0.

    2、如果一个表中有自增字段,truncates删除所有记录后,新增数据id从1开始,

    delete删除所有记录 新增的数据,仍然是以删除前的最后一条记录作为起始。

    3、truncate速度快,delete速度慢。

  • 相关阅读:
    SSM整合redis
    正则表达式验证
    175. 组合两个表
    SQL高级教程2
    SQL高级教程1
    数据可视化
    SQL基础
    SQL函数
    数据分析
    python数据分析-连接mysql
  • 原文地址:https://www.cnblogs.com/Jason-lin/p/8672509.html
Copyright © 2011-2022 走看看