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

版权声明:本文为HCG原创文章,未经博主允许不得转载。请联系[email protected] https://blog.csdn.net/qq_39455116/article/details/82789052

把自增ID从1000起

alter table users AUTO_INCREMENT=1000;
  1. 登陆到MYSQL环境:
    mysql> mysql -u root -p ;

  2. 输入密码:

  3. 显示所有的数据库名称
    mysql> show databases ;
    ±-------------------+
    | Database |
    ±-------------------+
    | information_schema |
    | gg |
    | hz |
    | mysql |
    | performance_schema |
    | sys |
    ±-------------------+
    6 rows in set (0.00 sec)

  4. 切换数据库
    use hh ;

  5. 显示当前数据库名称
    mysql> select database();
    ±-----------+
    | database() |
    ±-----------+
    | gg |
    ±-----------+
    1 row in set (0.00 sec)

  6. 显示一个数据库的所有表
    show tables ;

  7. 创建表
    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)

  8. 插入数据
    insert into mytable1(id,username) values (1,“dongwan”);
    Query OK, 1 row affected (0.01 sec)

  9. 给表增加字段
    alter table mytable1 add phone varchar(20);

  10. 给表删除字段
    alter table mytable1 add class varchar(20);

  11. 修改字段名称和类型
    mysql> alter table mytable1 change phone sex tinyint ;
    Query OK, 1 row affected (0.03 sec)
    Records: 1 Duplicates: 0 Warnings: 0

  12. 修改字段类型
    mysql> alter table mytable1 change sex sex char ;
    Query OK, 1 row affected (0.03 sec)
    Records: 1 Duplicates: 0 Warnings: 0

  13. 修改表名称
    mysql> alter table mytable1 rename t1 ;
    Query OK, 0 rows affected (0.00 sec)

  14. 重命名表名称 -----方式二,而且这种方式可以同时修改好多个表
    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. 普通索引的创建方式

    创建索引: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);
    
    
    
    显示一个表中的所有索引
    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)
    
  2. 唯一索引
    它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

    创建索引
    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 ,用于全文索引。
  1. 主键
    添加主键:
    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);

  2. 清空一个表中的数据
    truncate table 表名 ;
    delete 逐行删除
    drop 删除表

猜你喜欢

转载自blog.csdn.net/qq_39455116/article/details/82789052