- 数据库一些概念:
1.1.PRIMARY KEY主键
什么是主键:表中一列或者多列组成的唯一的key,也就是通过这一个或者多个列能唯一的标识一条记录(正常都是用一列实现)。
特点:1.主键的列不能包含空值Null. 2.主键往往设置为整型、长整型,3.且自增AUTO_INCREMENT.
表中可以没有主键,但是,一般表设计中,都会有主键。
1.2 index 索引
索引的作用:可以看做是一本大字典的目录,为了快速检索用的。空间换时间,显著提高查询效率。
副作用:删除,修改,添加效率减少
可以对一列或者多列设定索引。
索引分类:
主键索引:主键会自动建立主键索引,主键本身就是为了快速定位唯一记录的。
唯一索引: 表中的索引组成的索引必须唯一,但可以为空(NONE),非空值必须唯一
普通索引:没有唯一性的要求,就是建了一个字典的目录而已。
1.3 Constraint (约束)
UNIQUE约束(唯一键约束)
定义了唯一键索引,就定义了唯一键约束
PRIMARY KEY约束
定义了主键,就定义了主键约束。
外键约束Foreign key:
外键,在表B中的列,关联表A中的主键,表B中的列就是外键.
1.如果在表B插入一条数据,B的外键列插入了一个值,这个值必须是表A中存在的主键值,修改表B的外键值也是同样,外键值同样要在表A中存在。
2.如果表A要删除一条记录,那么就等于删除了一个主键,那么如果表B中引用到了这个主键,就必须先删除表B中引用这个主键的记录,然后才能删除表A的记录,否则删除失败。
3.修改表A的主键,由于主键的唯一性,修改的主键相当于插入新主键,那么表B引用过的这个主键,将阻止表A的主键修改,必须先删除表B的相关记录后,才可修改表A的主键。
外键约束,为了保证数据完整性,一致性,杜绝数据冗余,数据讹误。
外键约束不易多用。
1.4 视图
视图:也称为虚表,看起来像表。它是由查询语句生成的。可以通过视图进行CRUD操作。
视图的作用:
- 简化操作,将复杂查询SQL语句定义为视图,可以简化查询。
- 数据安全:视图可以只显示真实表的部分列,或计算后的结果,隐藏真实表的数据。
(视图可以增删改查,建议查询用视图,可以用工具完成视图)
2.数据类型:
MYSQL中的数据类型:
类型:
- Tinyint 1字节,带符号的范围-128到127,无符号的范围是0到255。bool或者boollean,就是tinyint,0表示假,非0表示真
- Smaillint 2字节,带符号的范围是-32768到32767.无符号的范围是0到65535
- Int 整型 4个字节,同integer,带符号范围 -2147483648到2147483647.无符号范围是0到4294967295 (最大10位ID)
- Bigint 长整型,8字节,带符号的范围是 -9223372036854775808到9223372036854775807 无符号的范围是0到18446744073709551615 (20位)
- Float 单精度浮点数精确到大约7位小数
- Double 双精度浮点数精确到大约15位小数位
- DATE 日期,支持范围 1000-01-01 到9999-12-31
- DATETIME 支持的范围1000-01-01 00:00:00 到 9999-12-21 23:59:59
- TIMESTAMP 时间戳,范围 1970-01-01 00:00:00 到 2037年
- Char(M)固定长度,右边填充空格已达到长度要求。M为长度,范围为0-255.M指的是字符个数。(不够长填空格)
- Varchar(M)变长字符串。M表示最大列长度。M的范围是0到65535. 但不突破最大字节数65535
- Text 大文本。最大的长度 65535(2^16-1)
-
BLOB 大字节。最大长度为65535(2^16-1)字节的BLOB列
LENGTH函数返回字节数,而char和varchar定义的M是字符数限制。
Char可以将字符串变成等长的,空间换时间,效率略高;varchar变长,省了空间。