目录
Mysql自增长
语法
字段名 整形 PRIMARY KEY AUTO_INCREMENT
实例
CREATE TABLE t24(
id INT PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(32) NOT NULL DEFAULT ' ',
`name` VARCHAR(32) NOT NULL DEFAULT ' '
);
INSERT INTO t24
VALUES(NULL,'mike@qq.com','mike')
SELECT * FROM t24
INSERT INTO t24
VALUES(NULL,'mike@qq.com','mike')
SELECT * FROM t24
INSERT INTO t24
VALUES(NULL,'jack@qq.com','jack')
INSERT INTO t24
VALUES(4,'lili@qq.com','lili')
INSERT INTO t24
VALUES(NULL,'mon@qq.com','mon')
INSERT INTO t24(email,`name`)
VALUES('jack@qq.com','jack')
如上面所示代码可知
1. 当AUTO_INCREMENT字段插入值为NULL时,系统会自行录入
2. 若输入的值不是NULL也是可以的,但在下次输入值为NULL时,系统会根据上条记录的值进行自增长
3. 输入时可以指输入其他字段的值,系统不会报错,不再id字段进行自增长
自增长使用细节
1. 一般来说自增长是和primary key 配合使用的
2. 自增长也可以单独使用[但是需要配合一个unique](id INT UNIQUE AUTO_INSERMENT)
3. 自增长修饰的字段为整数型的(虽然小数也可以但是非常非常少这样使用)
4. 自增长默认从 1开始,你也可以通过如下命令修改 alter table表名auto increment = xxx;
5. 如果你添加数据时,给自增长字段(列)指定的有值,则以指定的值为准,如果指定了自增长,一般来说,就按照自增长的规则来
Mysql索引
索引原理
索引其实就是对表中所有的记录进行相应的编号,并用二叉树算法进行排序,一边更加快速地查询数据,在没有创建索引之前,对数据的查询是对表的每个记录进行逐条对比来找到符合的记录,即使查询的数据比较靠前(哪怕是第一条),也会向后进行查询,直到整张表遍历完为止
实例:
如图所示创建一条具有八百万条记录的表emp
在没有创建索引前emp这张表总共有524mb
现在进行查询操作
SELECT *
FROM emp
WHERE ename = 'axJxCTs'
如图可知,查询时长为3.7s
现在在emp的empno字段上创建索引
create index empno_index on emp(empno)
如图可知,现在的文件为655mb,索引也占用了一定的空间
现在进行查询操作
SELECT *
FROM emp
WHERE ename = 'axJxCTs'
如图可知通过索引使查询速度提升(0.001s)
索引的类型
1. 主键索引,主键自动的为主索引(类型Primary key)
2. 唯一索引(UNIQUE)
3. 普通索引(INDEX)
4. 全文索引(FULLTEXT)[适用于MyISAM]
索引使用
1. 添加索引(建小表测试 id,name)
create [UNIQUE] index index_name on tbl_name (col_ name [(length)][ASC | DESC],......);
alter table table_name ADD INDEX [index name] (index_col_name,....)
2. 添加主键(索引)
ALTER TABLE 表名 ADD PRIMARY KEY(列名...);
3. 删除索引
DROP INDEX index_name ON tbl_name
alter table table_name drop index index_name;
4. 删除主键索引 比较特别
alter table tbl_name drop primary key;
实例:
创建表
create table t(
id int,
`name` varchar(32)
);
添加唯一索引
CREATE UNIQUE INDEX id_index ON t(id)
查询表是否有索引
show indexes from t
如图所示:表中Non_unique字段值若为0,则代表被添加的字段索引为唯一索引,若为1,则为普通索引
创建表
CREATE TABLE tt(
id INT,
`name` VARCHAR(32)
);
添加主键索引
alter table tt add primary key(id)
SHOW INDEXES FROM tt
删除索引
drop index id_index on t
show indexes from t
删除主键索引
ALTER TABLE tt DROP PRIMARY KEY
查询索引
方式一:
show indexes from table_name
方式二:
show index from table_name
方式三:
show keys from table_name
SHOW KEYS FROM t
SHOW KEYS FROM tt
方式四:
desc table_name
DESC t
DESC tt
小结: 哪些列上适合使用索引
1. 较频繁的作为查询条件字段应该创建索引
select *from emp where empno =1
2. 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
select * from emp where sex='男
3. 更新非常频繁的字段不适合创建索引
select *from emp where logincount = 1
4. 不会出现在WHERE子句中字段不该创建索引