MySQL 5.6学习笔记(数据表基本操作)

时间:2020-11-28 14:09:24

1. 创建数据表

1.1 最基本的语法

CREATE TABLE tbl_name
    (col_name column_definition,...)
    [table_options]

-column_definition

详解:

column_definition:
    data_type [NOT NULL | NULL] [DEFAULT default_value]
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
      [COMMENT 'string']
      [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
      [STORAGE {DISK|MEMORY|DEFAULT}]
      [reference_definition]

-table_options

table_options: table_option [table_option] ...

详解:

MySQL 5.6学习笔记(数据表基本操作)MySQL 5.6学习笔记(数据表基本操作)
table_option:
    ENGINE [=] engine_name
  | AUTO_INCREMENT [=] value
  | AVG_ROW_LENGTH [=] value
  | [DEFAULT] CHARACTER SET [=] charset_name
  | CHECKSUM [=] {0 | 1}
  | [DEFAULT] COLLATE [=] collation_name
  | COMMENT [=] 'string'
  | CONNECTION [=] 'connect_string'
  | DATA DIRECTORY [=] 'absolute path to directory'
  | DELAY_KEY_WRITE [=] {0 | 1}
  | INDEX DIRECTORY [=] 'absolute path to directory'
  | INSERT_METHOD [=] { NO | FIRST | LAST }
  | KEY_BLOCK_SIZE [=] value
  | MAX_ROWS [=] value
  | MIN_ROWS [=] value
  | PACK_KEYS [=] {0 | 1 | DEFAULT}
  | PASSWORD [=] 'string'
  | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
  | STATS_AUTO_RECALC [=] {DEFAULT|0|1}
  | STATS_PERSISTENT [=] {DEFAULT|0|1}
  | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}]
  | UNION [=] (tbl_name[,tbl_name]...)
View Code

更多语法详细信息,参考:http://dev.mysql.com/doc/refman/5.6/en/create-table.html

1.2 实例

创建基本表:

create table tb_temp1
(
  id int(11),
  name varchar(25)
);

创建带主键的表(两种方法):

create table tb_temp2
(
  id int(11) primary key,
  name varchar(25)
);

create table tb_temp3
(
  id int(11),
  name varchar(25),
  primary key(id)
);

支持联合主键(同时命名约束名):

create table tb_temp4
(
  id int(11),
  sub_id int(4),
  name varchar(25),
  constraint PK_TEMP4 primary key(id,sub_id)
);

创建带外键的表(注意:外键不能跨存储引擎使用):

create table tb_temp5
(
  id int(11) primary key,
  yourdesc varchar(25),
  constraint FK_TEMP5_ID foreign key(id) references tb_temp2(id)
);

非空约束(略)

唯一性约束(略)

默认约束(略)

创建主键自动增加的表:

create table tb_temp8
(
  id int(11) primary key auto_increment,
  name varchar(25)
);

2. 查看数据表结构

查看表基本结构:

desc tablename

查看表详细结构:

show create table tablename\G

示范:

mysql> show create table tb_temp2\G
*************************** 1. row ***************************
       Table: tb_temp2
Create Table: CREATE TABLE `tb_temp2` (
  `id` int(11) NOT NULL,
  `name` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

3. 修改数据表

3.1 修改表名

alter table <旧表名> rename to <新表名>;

3.2 修改字段的数据类型

alter table <表名> modify <字段名> <数据类型>;

3.3 修改字段名

alter table <表名> change <旧字段名> <新字段名> <新数据类型>;

3.4 添加字段

alter table <表名> add <新字段名> <数据类型>
    [约束条件] [first | after 已存在的字段名];

“first或after已存在字段名”用于指定新增字段在表中的位置,默认加到最后。

示范:

alter table tb_temp4 add manageid int(10);
alter table tb_temp4 add f_id int(4) not null first;

3.5 删除字段

alter table <表名> drop <字段名>;

3.6 修改字段的排列位置

alter table <表名> modify <字段1> <数据类型> first|after <字段2>;

示范:

alter table tb_temp4 modify name varchar(25) after f_id;

3.7 更改表的存储引擎

alter table <表名> engine=<更改后的存储引擎名>;

3.8 增加表的外键约束

ALTER TABLE yourtablename
    ADD [CONSTRAINT 外键名] FOREIGN KEY [id] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name, ...)
    [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
    [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}];

示范:

alter table bbscomment add constraint FK_COMMENT_ID foreign key(detail_id) references bbsdetail(detail_id) on delete cascade;

3.9 删除表的外键约束

alter table <表名> drop foreign key <外键约束名>;

4. 删除数据表

语法:

drop table [if exists] 表1,表2,...表n;

如果表存在外键(被其它表引用),则需要先删除约束关系,参考3.8节。

示范:

drop table if exists tb_temp1;