zoukankan      html  css  js  c++  java
  • MySQL5.7(三)数据表操作

    概念
    在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。
    1、创建数据表
    说明:数据表属于数据库,在创建数据表之前,应该使用语句“USE <数据库实例名>”指定操作的数据库实例。

    USE cuixiaozhao;#使用数据库实例-cuixiaozhao;

    1 CREATE TABLE <表名>( 
    2 字段名1,数据类型 [列级别的约束条件] [默认值]3 字段名2,数据类型 [列级别的约束条件] [默认值]4 字段名3,数据类型 [列级别的约束条件] [默认值]5 ......
    6  [表级别的约束条件]
    7  )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    View Code

    举例说明

    CREATE TABLE empoyee(

    id INT(11),

    name VARCAHR(20),

    deptId INT(11),

    salary FLOAT

    )ENGINE=InnoDB DEFAULT CHARSET = utf8;

     1 主键,又称主码,是表中一列或多列的组合。数据唯一、不允许为空。可结合外键来定义不同数据表之间的关系并且加快数据库查询速度。分为单字段主键和多字段联合主键。
     2 create table tb1(
     3     nid int not null auto_increment primary key,
     4     num int null
     5 )ENGINE=InnoDB DEFAULT CHARSET=utf8;
     6  7 create table tb2(
     8     nid int not null,
     9     num int not null,
    10     primary key(nid,num)
    11 )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    主键约束
     1 外键,用来在两个表之间建立连接关系,可以是一列或者多列。一张表可以有一个或多个外键,作用保持数据的一致性和完整性。
     2 主表(父表),即主键所在的表;
     3 从表(子表),外键所在的表;
     4 CREATE TABLE color (
     5     nid INT NOT NULL PRIMARY KEY,
     6     NAME CHAR (20) NOT NULL
     7 ) ENGINE = INNODB DEFAULT CHARSET = utf8;
     8 
     9 CREATE TABLE fruit (
    10     nid INT NOT NULL PRIMARY KEY,
    11     smt CHAR (32) NULL,
    12     color_id INT NOT NULL,
    13     CONSTRAINT fk_cc FOREIGN KEY (color_id) REFERENCES color (nid)
    14 ) ENGINE = INNODB DEFAULT CHARSET = utf8;
    外键约束
    1 非空约束,Not Null Constraint,指字段的值不能为空。
    2 1null #可为空
    3 2not null#不可为空
    4 语法:
    5 字段名 数据类型 NOT NULL
    非空约束
    1 唯一性约束,Unique Constraint,要求该列唯一,可以为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。
    2 语法:
    3 字段名 数据类型 UNIQUE
    唯一约束
    1 默认约束,Default Constraint,指定某列的默认值。
    2 语法:
    3 字段名 数据类型 DEFAULT 默认值
    4 如果插入一条新纪录时,没有为该字段赋值,那么系统会自动为这个字段赋值为设定的默认值。
    默认约束
    1 在数据库应用中,希望在每次插入新纪录时,系统自动生成字段的主键值。可通过为表的主键增加AUTO_INCREMENT 关键字来实现。MySQL中默认初始值为1,一条记录自动加1,一个表只能有一个字段使用AUTO_INCREMENT 约束,且该字段必须为主键的一部分。AUTO_INCREMENT 的字段类型可以是任何整数类型(TINYINTSMALLINTINTBIGINT等)
    2 语法:
    3 字段名 数据类型 AUTO_INCREMENT 
    自增约束

    注意:外键约束PREIGN KEY 不能跨MySQL存储引擎使用!因为外键约束是用来保证数据的参照完整性,如果之间需要关联外键,却指定了不同的存储引擎,这些表之间是不能创建外键约束的。

    2、查看数据表结构

    • 查看表基本结构语句DESCRIBE               DESCRIBE表名或者简写为DESC 表名;
     1 ysql> DESC tb_emp1;
     2 +--------+-------------+------+-----+---------+-------+
     3 | Field  | Type        | Null | Key | Default | Extra |
     4 +--------+-------------+------+-----+---------+-------+
     5 | id     | int(11)     | NO   | PRI | NULL    |       |
     6 | name   | varchar(25) | YES  |     | NULL    |       |
     7 | deptId | int(11)     | YES  |     | NULL    |       |
     8 | salary | float       | YES  |     | NULL    |       |
     9 +--------+-------------+------+-----+---------+-------+
    10 4 rows in set (0.01 sec)
    11 
    12 mysql> DESCRIBE tb_emp1;
    13 +--------+-------------+------+-----+---------+-------+
    14 | Field  | Type        | Null | Key | Default | Extra |
    15 +--------+-------------+------+-----+---------+-------+
    16 | id     | int(11)     | NO   | PRI | NULL    |       |
    17 | name   | varchar(25) | YES  |     | NULL    |       |
    18 | deptId | int(11)     | YES  |     | NULL    |       |
    19 | salary | float       | YES  |     | NULL    |       |
    20 +--------+-------------+------+-----+---------+-------+
    21 4 rows in set (0.00 sec)
    22 
    23 mysql> 
    View Code
    • 查看详细结构语句SHOW CREATE TABLE   SHOW CREATE TABLE 表名;
     1 mysql> SHOW CREATE TABLE tb_emp1;
     2 +---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
     3 | Table   | Create Table                                                                                                                                                                                                   |
     4 +---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
     5 | tb_emp1 | CREATE TABLE `tb_emp1` (
     6   `id` int(11) NOT NULL,
     7   `name` varchar(25) DEFAULT NULL,
     8   `deptId` int(11) DEFAULT NULL,
     9   `salary` float DEFAULT NULL,
    10   PRIMARY KEY (`id`)
    11 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    12 +---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    13 1 row in set (0.00 sec)
    14 
    15 mysql> 
    View Code

    3、删除数据表

    DROP TABLE 表名

    • 删除没有被关联的表

    语法:DROP TABLE [IF EXISTS] 表1,表2,表3,表n;#加上IF EXISTS 参数,如果表不存在,SQL语句可以顺利执行,但是会发生警告(warnig)

    • 删除被其他表关联的主表

    1、可以先删除关联的子表,再删除父表,但同时删除了两张表;

    2、删除关联表的外键约束,在删除父表,保留了子表;

    4、清空表

    • DELETE FROM 表名;
    • TRUNCATE TABLE 表名;

    5、修改表

    修改表指的是修改数据库中已存在的数据表结构。MySQL中使用ALTER TABLE 语句修改表。包含:需改表名、字段名、字段的数据类型、增加和删除字段、修改字段的排列位置、更改表的存储引擎、删除表的外键约束!

    1、修改表名

    ALTER TABLE <旧表名> RENAME [TO] <新表名>;#其中,TO为可选参数;

     1 mysql> SHOW DATABASES;
     2 +--------------------+
     3 | Database           |
     4 +--------------------+
     5 | information_schema |
     6 | cuixiaozhao        |
     7 | mysql              |
     8 | performance_schema |
     9 | sys                |
    10 +--------------------+
    11 5 rows in set (0.00 sec)
    12 
    13 mysql> USE cuixiaozhao;
    14 Reading table information for completion of table and column names
    15 You can turn off this feature to get a quicker startup with -A
    16 
    17 Database changed
    18 mysql> SHOW TABLES;
    19 +-----------------------+
    20 | Tables_in_cuixiaozhao |
    21 +-----------------------+
    22 | tb_cxz                |
    23 +-----------------------+
    24 1 row in set (0.00 sec)
    25 
    26 mysql> DESC tb_cxz;
    27 +--------+-------------+------+-----+---------+-------+
    28 | Field  | Type        | Null | Key | Default | Extra |
    29 +--------+-------------+------+-----+---------+-------+
    30 | id     | int(11)     | NO   | PRI | NULL    |       |
    31 | name   | varchar(25) | YES  |     | NULL    |       |
    32 | deptId | int(11)     | YES  |     | NULL    |       |
    33 | salary | float       | YES  |     | NULL    |       |
    34 +--------+-------------+------+-----+---------+-------+
    35 4 rows in set (0.00 sec)
    36 mysql> SHOW CREATE TABLE tb_cxz;
    37 +--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    38 | Table  | Create Table                                                                                                                                                                                                  |
    39 +--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    40 | tb_cxz | CREATE TABLE `tb_cxz` (
    41   `id` int(11) NOT NULL,
    42   `name` varchar(25) DEFAULT NULL,
    43   `deptId` int(11) DEFAULT NULL,
    44   `salary` float DEFAULT NULL,
    45   PRIMARY KEY (`id`)
    46 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    47 +--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    48 1 row in set (0.00 sec)
    49 
    50 mysql> ALTER TABLE tb_cxz RENAME TO tb_cxs;
    51 Query OK, 0 rows affected (0.00 sec)
    52 
    53 mysql> SHOW TABLES;
    54 +-----------------------+
    55 | Tables_in_cuixiaozhao |
    56 +-----------------------+
    57 | tb_cxs                |
    58 +-----------------------+
    59 1 row in set (0.00 sec)
    60 
    61 mysql> 
    修改表名

    注意:修改表名并不修改表的结构;

    2、修改字段的数据类型

    ALTER TABLE <表名> MODIFY <字段名> <数据类型>;

     1 mysql> DESC tb_cxs;
     2 +--------+-------------+------+-----+---------+-------+
     3 | Field  | Type        | Null | Key | Default | Extra |
     4 +--------+-------------+------+-----+---------+-------+
     5 | id     | int(11)     | NO   | PRI | NULL    |       |
     6 | name   | varchar(25) | YES  |     | NULL    |       |
     7 | deptId | int(11)     | YES  |     | NULL    |       |
     8 | salary | float       | YES  |     | NULL    |       |
     9 +--------+-------------+------+-----+---------+-------+
    10 4 rows in set (0.00 sec)
    11 
    12 mysql> ALTER TABLE tb_cxs MODIFY name VARCHAR(30);
    13 Query OK, 0 rows affected (0.00 sec)
    14 Records: 0  Duplicates: 0  Warnings: 0
    15 
    16 mysql> DESC tb_cxs;
    17 +--------+-------------+------+-----+---------+-------+
    18 | Field  | Type        | Null | Key | Default | Extra |
    19 +--------+-------------+------+-----+---------+-------+
    20 | id     | int(11)     | NO   | PRI | NULL    |       |
    21 | name   | varchar(30) | YES  |     | NULL    |       |
    22 | deptId | int(11)     | YES  |     | NULL    |       |
    23 | salary | float       | YES  |     | NULL    |       |
    24 +--------+-------------+------+-----+---------+-------+
    25 4 rows in set (0.00 sec)
    26 
    27 mysql> 
    修改字段的数据类型

    3、修改字段名

    ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

     1 修改字段名,数据类型保持不变;
     2 mysql> DESC tb_cxs;
     3 +--------+-------------+------+-----+---------+-------+
     4 | Field  | Type        | Null | Key | Default | Extra |
     5 +--------+-------------+------+-----+---------+-------+
     6 | id     | int(11)     | NO   | PRI | NULL    |       |
     7 | name   | varchar(30) | YES  |     | NULL    |       |
     8 | deptId | int(11)     | YES  |     | NULL    |       |
     9 | salary | float       | YES  |     | NULL    |       |
    10 +--------+-------------+------+-----+---------+-------+
    11 4 rows in set (0.00 sec)
    12 
    13 mysql> ALTER TABLE tb_cxs CHANGE salary pay float;
    14 Query OK, 0 rows affected (0.01 sec)
    15 Records: 0  Duplicates: 0  Warnings: 0
    16 
    17 mysql> DESC tb_cxs;
    18 +--------+-------------+------+-----+---------+-------+
    19 | Field  | Type        | Null | Key | Default | Extra |
    20 +--------+-------------+------+-----+---------+-------+
    21 | id     | int(11)     | NO   | PRI | NULL    |       |
    22 | name   | varchar(30) | YES  |     | NULL    |       |
    23 | deptId | int(11)     | YES  |     | NULL    |       |
    24 | pay    | float       | YES  |     | NULL    |       |
    25 +--------+-------------+------+-----+---------+-------+
    26 4 rows in set (0.00 sec)
    27 
    28 即修改字段名称,同时修改数据类型;
    29 mysql> DESC tb_cxs;
    30 +--------+-------------+------+-----+---------+-------+
    31 | Field  | Type        | Null | Key | Default | Extra |
    32 +--------+-------------+------+-----+---------+-------+
    33 | id     | int(11)     | NO   | PRI | NULL    |       |
    34 | name   | varchar(30) | YES  |     | NULL    |       |
    35 | deptId | int(11)     | YES  |     | NULL    |       |
    36 | salary | float       | YES  |     | NULL    |       |
    37 +--------+-------------+------+-----+---------+-------+
    38 4 rows in set (0.00 sec)
    39 
    40 mysql> ALTER TABLE tb_cxs CHANGE salary pay INT(10);
    41 Query OK, 0 rows affected (0.04 sec)
    42 Records: 0  Duplicates: 0  Warnings: 0
    43 
    44 mysql> 
    修改字段名

    小结:CHANGE也可以只修改数据类型,实现和MODIFY同样的效果,方法是:将SQL语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”!

    但是,由于不同的数据在机器中存储的方式及长度并不相同,修改数据类型可能会影响到数据表中已有的数据记录,因此,当数据表中已经存在数据时,不要轻易修改数据类型;

    4、添加字段

    ALTER TABLE <表名> <新字段名> <数据类型> [约束条件] [ FIRST | AFTER 已存在的字段名 ];#FIRST 与AFTER为可选参数,如果没有,默认将新字段添加至最后列;

    • 添加无完整性约束条件的字段 ALTER TABLE tb_cxs ADD column1 VARCHAR(20);
    • 添加有完整性约束条件的字段 ALTER TABLE tb_cxs ADD column1 VARCHAR(20) NOT NULL;
    • 在表中的第一列添加字段 ALTER TABLE tb_cxs ADD column1 VARCHAR(20) NOT NULL FIRST;
    • 在表中的最后一列添加字段 ALTER TABLE tb_cxs ADD column1 VARCHAR(20) NOT NULL;
    • 在表的指定列之后添加字段(即为在表的指定列之前添加字段,是一个相对概念)ALTER TABLE tb_cxs ADD column1 VARCHAR(20) NOT NULL AFTER name;
     1 mysql> DESC tb_cxs;
     2 +--------+-------------+------+-----+---------+-------+
     3 | Field  | Type        | Null | Key | Default | Extra |
     4 +--------+-------------+------+-----+---------+-------+
     5 | id     | int(11)     | NO   | PRI | NULL    |       |
     6 | name   | varchar(30) | YES  |     | NULL    |       |
     7 | deptId | int(11)     | YES  |     | NULL    |       |
     8 | pay    | int(10)     | YES  |     | NULL    |       |
     9 +--------+-------------+------+-----+---------+-------+
    10 4 rows in set (0.00 sec)
    11 
    12 mysql> ALTER TABLE tb_cxs ADD column1 VARCHAR(20) NOT NULL;
    13 Query OK, 0 rows affected (0.03 sec)
    14 Records: 0  Duplicates: 0  Warnings: 0
    15 
    16 mysql> DESC tb_cxs;
    17 +---------+-------------+------+-----+---------+-------+
    18 | Field   | Type        | Null | Key | Default | Extra |
    19 +---------+-------------+------+-----+---------+-------+
    20 | id      | int(11)     | NO   | PRI | NULL    |       |
    21 | name    | varchar(30) | YES  |     | NULL    |       |
    22 | deptId  | int(11)     | YES  |     | NULL    |       |
    23 | pay     | int(10)     | YES  |     | NULL    |       |
    24 | column1 | varchar(20) | NO   |     | NULL    |       |
    25 +---------+-------------+------+-----+---------+-------+
    26 5 rows in set (0.00 sec)
    27 mysql> ALTER TABLE tb_cxs ADD column0  INT(11) FIRST;
    28 Query OK, 0 rows affected (0.02 sec)
    29 Records: 0  Duplicates: 0  Warnings: 0
    30 
    31 mysql> DESC tb_cxs;
    32 +---------+-------------+------+-----+---------+-------+
    33 | Field   | Type        | Null | Key | Default | Extra |
    34 +---------+-------------+------+-----+---------+-------+
    35 | column0 | int(11)     | YES  |     | NULL    |       |
    36 | id      | int(11)     | NO   | PRI | NULL    |       |
    37 | name    | varchar(30) | YES  |     | NULL    |       |
    38 | deptId  | int(11)     | YES  |     | NULL    |       |
    39 | pay     | int(10)     | YES  |     | NULL    |       |
    40 | column1 | varchar(20) | NO   |     | NULL    |       |
    41 +---------+-------------+------+-----+---------+-------+
    42 6 rows in set (0.00 sec)
    43 
    44 mysql> ALTER TABLE tb_cxs ADD column2  INT(11) AFTER name;
    45 Query OK, 0 rows affected (0.03 sec)
    46 Records: 0  Duplicates: 0  Warnings: 0
    47 
    48 mysql> DESC tb_cxs;
    49 +---------+-------------+------+-----+---------+-------+
    50 | Field   | Type        | Null | Key | Default | Extra |
    51 +---------+-------------+------+-----+---------+-------+
    52 | column0 | int(11)     | YES  |     | NULL    |       |
    53 | id      | int(11)     | NO   | PRI | NULL    |       |
    54 | name    | varchar(30) | YES  |     | NULL    |       |
    55 | column2 | int(11)     | YES  |     | NULL    |       |
    56 | deptId  | int(11)     | YES  |     | NULL    |       |
    57 | pay     | int(10)     | YES  |     | NULL    |       |
    58 | column1 | varchar(20) | NO   |     | NULL    |       |
    59 +---------+-------------+------+-----+---------+-------+
    60 7 rows in set (0.00 sec)
    添加字段

    5、删除字段

    删除字段是将数据表中的某个字段从表中移除的过程。

    ALTER TABLE <表名> DROP <字段名>; 

     1 mysql> DESC tb_cxs;
     2 +---------+-------------+------+-----+---------+-------+
     3 | Field   | Type        | Null | Key | Default | Extra |
     4 +---------+-------------+------+-----+---------+-------+
     5 | column0 | int(11)     | YES  |     | NULL    |       |
     6 | id      | int(11)     | NO   | PRI | NULL    |       |
     7 | name    | varchar(30) | YES  |     | NULL    |       |
     8 | column2 | int(11)     | YES  |     | NULL    |       |
     9 | deptId  | int(11)     | YES  |     | NULL    |       |
    10 | pay     | int(10)     | YES  |     | NULL    |       |
    11 | column1 | varchar(20) | NO   |     | NULL    |       |
    12 +---------+-------------+------+-----+---------+-------+
    13 7 rows in set (0.00 sec)
    14 mysql> ALTER TABLE tb_cxs DROP column1;
    15 Query OK, 0 rows affected (0.03 sec)
    16 Records: 0  Duplicates: 0  Warnings: 0
    17 
    18 mysql> DESC tb_cxs;
    19 +---------+-------------+------+-----+---------+-------+
    20 | Field   | Type        | Null | Key | Default | Extra |
    21 +---------+-------------+------+-----+---------+-------+
    22 | column0 | int(11)     | YES  |     | NULL    |       |
    23 | id      | int(11)     | NO   | PRI | NULL    |       |
    24 | name    | varchar(30) | YES  |     | NULL    |       |
    25 | column2 | int(11)     | YES  |     | NULL    |       |
    26 | deptId  | int(11)     | YES  |     | NULL    |       |
    27 | pay     | int(10)     | YES  |     | NULL    |       |
    28 +---------+-------------+------+-----+---------+-------+
    29 6 rows in set (0.00 sec)
    30 
    31 mysql> 
    删除字段

    6、修改字段的排列位置

    修改字段的相对排列位置。

    ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST | AFTER < 字段2>;

    • 修改字段为表的第一个字段
    • 修改字段到表的指定列之后
     1 mysql> DESC tb_cxs;
     2 +---------+-------------+------+-----+---------+-------+
     3 | Field   | Type        | Null | Key | Default | Extra |
     4 +---------+-------------+------+-----+---------+-------+
     5 | column0 | int(11)     | YES  |     | NULL    |       |
     6 | id      | int(11)     | NO   | PRI | NULL    |       |
     7 | name    | varchar(30) | YES  |     | NULL    |       |
     8 | column2 | int(11)     | YES  |     | NULL    |       |
     9 | deptId  | int(11)     | YES  |     | NULL    |       |
    10 | pay     | int(10)     | YES  |     | NULL    |       |
    11 +---------+-------------+------+-----+---------+-------+
    12 6 rows in set (0.00 sec)
    13 mysql> ALTER TABLE tb_cxs MODIFY pay INT(10) FIRST;
    14 Query OK, 0 rows affected (0.03 sec)
    15 Records: 0  Duplicates: 0  Warnings: 0
    16 
    17 mysql> DESC tb_cxs;
    18 +---------+-------------+------+-----+---------+-------+
    19 | Field   | Type        | Null | Key | Default | Extra |
    20 +---------+-------------+------+-----+---------+-------+
    21 | pay     | int(10)     | YES  |     | NULL    |       |
    22 | column0 | int(11)     | YES  |     | NULL    |       |
    23 | id      | int(11)     | NO   | PRI | NULL    |       |
    24 | name    | varchar(30) | YES  |     | NULL    |       |
    25 | column2 | int(11)     | YES  |     | NULL    |       |
    26 | deptId  | int(11)     | YES  |     | NULL    |       |
    27 +---------+-------------+------+-----+---------+-------+
    28 6 rows in set (0.00 sec)
    29 
    30 mysql> ALTER TABLE tb_cxs MODIFY pay INT(10) AFTER name;
    31 Query OK, 0 rows affected (0.03 sec)
    32 Records: 0  Duplicates: 0  Warnings: 0
    33 
    34 mysql> DESC tb_cxs;
    35 +---------+-------------+------+-----+---------+-------+
    36 | Field   | Type        | Null | Key | Default | Extra |
    37 +---------+-------------+------+-----+---------+-------+
    38 | column0 | int(11)     | YES  |     | NULL    |       |
    39 | id      | int(11)     | NO   | PRI | NULL    |       |
    40 | name    | varchar(30) | YES  |     | NULL    |       |
    41 | pay     | int(10)     | YES  |     | NULL    |       |
    42 | column2 | int(11)     | YES  |     | NULL    |       |
    43 | deptId  | int(11)     | YES  |     | NULL    |       |
    44 +---------+-------------+------+-----+---------+-------+
    45 6 rows in set (0.00 sec)
    46 
    47 mysql> 
    修改字段的排列位置

    7、更改表的存储引擎

    存储引擎是MySQL中的数据存储在文件或者内存中时采用的不同技术实现;其中,主要的存储引擎有:MyISAM、InnoDB、MEMORY(HEAP)、BDB、FEDERATED等。

    ALTER TABLE <表名> ENGINE=<更改后的存储引擎名称>;

     1 mysql> SHOW CREATE TABLE tb_cxs;
     2 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
     3 | Table  | Create Table                                                                                                                                                                                                                                                                     |
     4 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
     5 | tb_cxs | CREATE TABLE `tb_cxs` (
     6   `column0` int(11) DEFAULT NULL,
     7   `id` int(11) NOT NULL,
     8   `name` varchar(30) DEFAULT NULL,
     9   `pay` int(10) DEFAULT NULL,
    10   `column2` int(11) DEFAULT NULL,
    11   `deptId` int(11) DEFAULT NULL,
    12   PRIMARY KEY (`id`)
    13 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    14 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    15 1 row in set (0.00 sec)
    16 
    17 mysql> ALTER TABLE tb_cxs ENGINE=MyISAM;
    18 Query OK, 0 rows affected (0.01 sec)
    19 Records: 0  Duplicates: 0  Warnings: 0
    20 
    21 mysql> SHOW CREATE TABLE tb_cxs;
    22 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    23 | Table  | Create Table                                                                                                                                                                                                                                                                     |
    24 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    25 | tb_cxs | CREATE TABLE `tb_cxs` (
    26   `column0` int(11) DEFAULT NULL,
    27   `id` int(11) NOT NULL,
    28   `name` varchar(30) DEFAULT NULL,
    29   `pay` int(10) DEFAULT NULL,
    30   `column2` int(11) DEFAULT NULL,
    31   `deptId` int(11) DEFAULT NULL,
    32   PRIMARY KEY (`id`)
    33 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
    34 +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    35 1 row in set (0.00 sec)
    36 
    37 mysql> 
    更改表的存储引擎

    8、删除表的外键约束

    对于数据库表中定义的外键,不在需要时可以将其删除。外键一旦删除,将解除主从表之间的关联关系。

    ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;

     1 mysql> SHOW CREATE TABLE tb_emp9;
     2 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
     3 | Table   | Create Table                                                                                                                                                                                                                                                                                                                 |
     4 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
     5 | tb_emp9 | CREATE TABLE `tb_emp9` (
     6   `id` int(11) NOT NULL,
     7   `name` varchar(25) DEFAULT NULL,
     8   `deptId` int(11) DEFAULT NULL,
     9   `salary` float DEFAULT NULL,
    10   PRIMARY KEY (`id`),
    11   KEY `fk_emp_dept` (`deptId`),
    12   CONSTRAINT `fk_emp_dept` FOREIGN KEY (`deptId`) REFERENCES `tb_cxs` (`id`)
    13 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    14 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    15 1 row in set (0.00 sec)
    16 
    17 mysql> ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp_dept;
    18 Query OK, 0 rows affected (0.00 sec)
    19 Records: 0  Duplicates: 0  Warnings: 0
    20 
    21 mysql> SHOW CREATE TABLE tb_emp9;
    22 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    23 | Table   | Create Table                                                                                                                                                                                                                                   |
    24 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    25 | tb_emp9 | CREATE TABLE `tb_emp9` (
    26   `id` int(11) NOT NULL,
    27   `name` varchar(25) DEFAULT NULL,
    28   `deptId` int(11) DEFAULT NULL,
    29   `salary` float DEFAULT NULL,
    30   PRIMARY KEY (`id`),
    31   KEY `fk_emp_dept` (`deptId`)
    32 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    33 +---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    34 1 row in set (0.00 sec)
    35 
    36 mysql> 
    删除表的外键约束

    9、修改默认值

    • 修改默认值:ALTER TABLE <表名> ALTER  <字段名> SET DEFAULT 1000;
    • 删除默认值:ALTER TABLE  <表名> ALTER <字段名> DROP DEFAULT;

    10、增加、删除主键

    • 添加主键:
              ALTER TABLE <表名>  ADD PRIMARY KEY(字段名);
    • 删除主键:
                 ALTER TABLE <表名>  ADD PRIMARY KEY;#此处不需要指定字段名,因为主键默认只有一个;
                ALTER TABLE <表名>  MODIFY  <字段名> <字段类型> DROP PRIMARY KEY;
  • 相关阅读:
    关于代码中写日志的一些思考
    2018 年 深度学习框架 盘点 比较 推荐
    深度学习----实现一个博弈型的AI,从五子棋开始
    深度学习笔记----Anaconda及开发环境搭建
    彩票玩法介绍
    EditPlus 3.41 p1115 0728注册码
    丹--支付宝二维码
    C#类、方法的访问修饰符
    VS2010单元测试入门实践教程
    Nunit中如何进行事务性单元测试
  • 原文地址:https://www.cnblogs.com/tqtl911/p/8453865.html
Copyright © 2011-2022 走看看