MySQL使用总结

来源:互联网 发布:云计算iaas paas saas 编辑:程序博客网 时间:2024/06/07 02:28

1. NULL和 “”的区别

空值(NULL)不等于空字符(”“),比如电话号码字段,可以设置为NULL(表示电话号码未知)或者设置为“”(表示后来取消该号码)。NULL是不占用空间的, “”其实是占用空间的,对表索引时不会存储NULL值,如果索引字段可以为NULL,索引的效率会下降很多。

注意事项:

(1)NOT NULL字段是不能插入空值(NULL),只能够插入空字符(“”)。

(2)在进行count()统计某列的记录数的时候,如果插入的NULL值,会被系统自动忽略掉,但是“”会进行统计。

(3)判断NULL用IS NULL或者IS NOT NULL,SQL语句函数可以使用ifnull()函数来进行处理,判断空字符用=或者<>来进行处理。

(4)特殊注意,对于timestamp数据类型,如果往该数据类型插入NULL值,则出现的值是当前系统时间,插入空值,则会出现’0000-00-00 00:00:00’。

(5)特殊注意,对于auto_increment属性的列。如果往这个属性的列插入NULL值的话,系统会插入一个正整数序列。

示例

(1)表结构及内容如下

表内容:

    ('Alice', 23, 1, NULL),    ('Bob', 24, 0, ''),    ('Alice', 24, 0, NULL),    ('Alice', 23, 1, NULL),
表结构:CREATE TABLE IF NOT EXISTS `t_test1` (  `name` char(255) DEFAULT NULL,  `age` int(10) DEFAULT '0',  `sex` tinyint(4) DEFAULT '0',  `phone` varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;插入语法:insert t_test (name, age, sex, phone) values ('Bob', 24, 0, ''); //插入空字符insert t_test (name, age, sex, phone) values ('Alice', 23, 1, NULL);//插入空值

测试: IS NULL查询语法

select * from t_test where phone IS NULL

    ('Alice', 23, 1, NULL),    ('Alice', 24, 0, NULL),    ('Alice', 23, 1, NULL),

2.MySQL中单引号(‘)、双引号(“)和反引号(`)

反引号(`)

  • 反引号一般在Esc键的下方,和~在一起。它是为了区分MySQL的保留字与普通字符而引入的符号。
    create table desc 报错
    create table desc 成功
  • 一般我们建表时都会将表名,库名都加上反引号来保证语句的执行度。

单引号(‘)、双引号(“)

  • 在标准 SQL 中,字符串使用的是单引号。
  • 如果字符串本身也包括单引号,则使用两个单引号(注意,不是双引号,字符串中的双引号不需要另外转义)。
  • MySQL对 SQL 的扩展,允许使用单引号和双引号两种。

示例:

insert into t_test (name) values ('Mark'Neoril'); 报错insert into t_test (name) values ('Mark''Neoril'); 成功,将单引号转换为两个单引号

以上是一种字符串中包含单引号的处理方式,笔者使用的是将报错的字符转化为转义字符然后再插入。例如:’Mark’Neoril’-做字符串替换-‘Mark\’Neoril’。

字符串替换

  • MySQL提供REPLACE替换函数

    REPLACE(str,from_str,to_str)

  • MySQL提供QUOTA转义字符处理的函数

    QUOTE(str)

  • 可在插入之前用语言支持的库函数进行替换,例如golang

    func Replace(s, old, new string, n int) string

    如果确认字符串中只包含单引号或双引号两者中的一个,则不必做替换,只需要用另外一种类型包围即可。

    insert into t_test (name) values ('Mark"Neoril');成功insert into t_test (name) values ("Mark'Neoril");成功