本系列出自《深入浅出MySQL》,全文以问答形式展开,是我的个人学习笔记。
问答录
Q:如果我只有一张白表,我为什么还要创建数据库?
A:SQL语言要求所有的表都放在数据库中,这当然有它的理由。SQL能控制多位用户同时访问表的行为,能够授予或撤销对整个数据库的访问权,这有时比控制每张表的权限要简单的多。
Q:我发现CREATE DATABASE 命令的字母全是大写,一定要这样吗?
A:有些系统确实要求某些关键字采用大写形式,但SQL本身不区分大小写。也就是说,命令不大小写也可以,但命令大小写是良好的SQL编程惯例。
大写让我们很容易分辨命令与数据库名称。
Q:给数据库、表和列命名时有什么注意事项吗?
A:创建具有描述性的名称通常有不错的效果。有时候要多用几个单词来命名。所有名称都不能包含空格,所以使用下划线能够让你创建更具描述性的名称。
命名时最好避免首字母大写,因为SQL不区分大小写,极可能会搞错数据库。
Q:为什么不能直接把BLOB当成所有文本值的类型?
A:因为这样很浪费空间。VARCHAR或CHAR只会占用特定空间,不会多于256个字符。但BLOB需要很大的存储空间。
另外,有些重要的字符串运算无法操作BLOB类型的数据,只能用于VARCHAR或CHAR。
Q:NULL是什么都没有的意思吗?
A:当然不是!! 它从来就不等于0。而且它也不等于另一个NULL,事实上,两个NULL根本不能放在一起比较。值可以是NULL,但是它不会等于NULL,因为NULL代表未定义的值!
花絮
- DEC(6,2):六位数,其中小数点后两位数。
- DATATIME(时间和日期):10:30 a.m. 4/12/2020
- 如果想查看表的数据结构,可以使用DESC语句
- DRAP TABLE 语句可以用于丢弃表,谨慎使用!
- 为表插入数据时,可以使用任何一种INSERT语句。
- NULL是未定义的值。它不等于0,也不是空值。值可以是NULL,但绝非等于NULL。
- 没有在INSERT语句中被赋值的列默认为NULL。
- 可以把列修改为不使用NULL,这需要在创建表时使用关键字NOT NULL。
- 创建表时使用DEFAULT,可于日后输入缺乏部分数据的记录时自动的填入默认值。