200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > mysql创建 修改 删除索引和主键

mysql创建 修改 删除索引和主键

时间:2019-05-19 08:47:10

相关推荐

mysql创建 修改 删除索引和主键

把自增ID从1000起

alter table users AUTO_INCREMENT=1000;

添加一个字段并让他默认是0

alter table res_ad_template add type TINYINT(4) not null DEFAULT 0 ;

登陆到MYSQL环境:

mysql> mysql -u root -p ;

输入密码:

显示所有的数据库名称

mysql> show databases ;

±-------------------+

| Database |

±-------------------+

| information_schema |

| gg |

| hz |

| mysql |

| performance_schema |

| sys |

±-------------------+

6 rows in set (0.00 sec)

切换数据库

use hh ;

显示当前数据库名称

mysql> select database();

±-----------+

| database() |

±-----------+

| gg |

±-----------+

1 row in set (0.00 sec)

显示一个数据库的所有表

show tables ;

创建表

mysql> CREATE TABLE mytable1(

ID INT NOT NULL ,

username VARCHAR(16) NOT NULL ,

INDEX index1 (username(16))

);

Query OK, 0 rows affected (0.02 sec)

插入数据

insert into mytable1(id,username) values (1,“dongwan”);

Query OK, 1 row affected (0.01 sec)

给表增加字段

alter table mytable1 add phone varchar(20);

给表删除字段

alter table mytable1 add class varchar(20);

修改字段名称和类型

mysql> alter table mytable1 change phone sex tinyint ;

Query OK, 1 row affected (0.03 sec)

Records: 1 Duplicates: 0 Warnings: 0

修改字段类型

mysql> alter table mytable1 change sex sex char ;

Query OK, 1 row affected (0.03 sec)

Records: 1 Duplicates: 0 Warnings: 0

修改表名称

mysql> alter table mytable1 rename t1 ;

Query OK, 0 rows affected (0.00 sec)

重命名表名称 -----方式二,而且这种方式可以同时修改好多个表

mysql> rename table t1 to t2 ;

Query OK, 0 rows affected (0.01 sec)

mysql> rename table t2 to t1 ,n1 to t2 ;

Query OK, 0 rows affected (0.00 sec)

普通索引的创建方式

创建索引:1--创建表的时候直接创建索引mysql> CREATE TABLE mytable1(ID INT NOT NULL , username VARCHAR(16) NOT NULL , INDEX index1 (username(16)) );创建索引:2--最普通的索引创建方式create index t2index4 on t2 (school,username);创建索引:3--修改表结构创建方式ALTER table t2 ADD INDEX t2index6 (school);删除索引:

删除索引可以使用ALTER TABLE或DROP INDEX语句来实现。

DROP INDEX可以在ALTER TABLE内部作为一条语句处理,其格式如下:

drop index index_name on table_name ;alter table table_name drop index index_name ;alter table table_name drop primary key ;

其中,在前面的两条语句中,都删除了table_name中的索引index_name。

而在最后一条语句中,只在删除PRIMARY KEY索引中使用,因为一个表只可能有一个PRIMARY KEY索引

,因此不需要指定索引名。

如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。

如果从表中删除某列,则索引会受影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。

如果删除组成索引的所有列,则整个索引将被删除。

删除索引的操作,如下面的代码:

显示一个表中的所有索引mysql> show index from t1 ;+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+| t1 |1 | index1 | 1 | username | A | 0 |NULL | NULL || BTREE| ||+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+1 row in set (0.00 sec)如果一个表中没有索引结果为空mysql> show index from t2 ;Empty set (0.00 sec)mysql> show index from t2 ;+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+| t2 |1 | t2index | 1 | school| A | 1 |NULL | NULL | YES | BTREE| ||| t2 |1 | t2index2 | 1 | username | A | 1 |NULL | NULL | YES | BTREE| ||| t2 |1 | t2index2 | 2 | school| A | 1 |NULL | NULL | YES | BTREE| ||| t2 |1 | t2index3 | 1 | username | A | 1 |NULL | NULL | YES | BTREE| ||| t2 |1 | t2index3 | 2 | school| A | 1 |NULL | NULL | YES | BTREE| ||| t2 |1 | t2index4 | 1 | school| A | 1 |NULL | NULL | YES | BTREE| ||| t2 |1 | t2index4 | 2 | username | A | 1 |NULL | NULL | YES | BTREE| ||+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+7 rows in set (0.00 sec)

唯一索引

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

创建索引

CREATE UNIQUE INDEX indexName ON mytable(username(length))

修改表结构

ALTER table mytable ADD UNIQUE [indexName] (username(length))

创建表的时候直接指定

CREATE TABLE mytable(

ID INT NOT NULL,

username VARCHAR(16) NOT NULL,

UNIQUE [indexName] (username(length))

);

全文索引

ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。

主键

添加主键:

ALTER TABLE tablename ADD PRIMARY KEY (column_name);

删除主键

ALTER TABLE tablename DROP PRIMARY KEY;

2、如果发现主键设置错了,应该是id是主键,但如今表里已经有好多数据了,不能删除表再重建了,

仅仅能在这基础上改动表结构。

先删除主键

alter table table_test drop primary key;

然后再增加主键

alter table table_test add primary key(id);

清空一个表中的数据

truncate table 表名 ;

delete 逐行删除

drop 删除表

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。