尚硅谷之MySQL基础
(5)非空约束
- NOT NULL 非空约束,规定某个字段不能为空
CREATE TABLE t_stu( sid INT PRIMARY KEY, sname VARCHAR(100) NOT NULL ); |
(6)检查约束
注意: MySQL不支持check约束,但可以使用check约束,而没有任何效果;
例如:age tinyint check(age >20) 或 sex char(2) check(sex in(‘男’,’女’))
CREATE TABLE t_stu( sid INT PRIMARY KEY, sname VARCHAR(100) NOT NULL, gender CHAR NOT NULL CHECK(gender IN('男','女')) ); |
(7)Default缺省约束
default:默认值,在插入数据时某列如果没指定其他的值,那么会将默认值添加到新记录。
CREATE TABLE t_stu( sid INT PRIMARY KEY, sname VARCHAR(100) NOT NULL, gender CHAR NOT NULL CHECK(gender IN('男','女')) ); |
7、索引:INDEX
索引:索引是对数据库表中一列或多列的值进行排序的一种结构。索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。由此可知,索引是要消耗数据库空间的。而约束是一种逻辑概念。
例如:一本字典,如何快速找到某个字,可以给字典加目录,对数据库来说,索引的作用即是给"数据"加目录。
设有N条随机记录,不用索引,平均查找N/2次,那么用了索引之后呢。如果是btree(二叉树)索引,,如果是hash(哈希)索引,时间复杂度是1。
索引好处:加快了查询速度(select )
索引坏处:降低了增,删,改的速度(update/delete/insert),增大了表的文件大小(索引文件甚至可能比数据文件还大)
MySQL提供多种索引类型供选择:
- 普通索引:
- 唯一性索引:
- 主键索引:只有一个主键索引
- 全文索引:X版本只有MyISAM存储引擎支持FULLTEXT,并且只限于CHAR、VARCHAR和TEXT类型的列上创建。
MySQL的索引方法:
- HASH
- BTREE
MySQL中多数索引都以BTREE的形式保存。
索引的使用原则:
(1)不过度索引
(2)索引条件列(where后面最频繁的条件比较适宜索引)
(3)索引散列值,过于集中的值不要索引,例如:给性别"男","女"加索引,意义不大
CREATE INDEX 索引名 ON 表名称 (column_name,[column_name...]); 最左边的列最关键
alter table 表名称 drop index 索引名;