1 数据表的创建
详细情况可以参考创建表CREATE TABLE语法 关于constraint的使用可以参见mysql constraint
语法规范:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] <tbl_name>
(
col_name type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string'],
...
) [table_options] [select_statement];
实际上使用的时候:
TEMPORARY一般不需要使用,这个关键字用于创建临时表
if not exists建议使用
括号中为实际字段的定义:
type为数据类型
NOT NULL | NULL:指定该列是否可以为空,如不指定则默认值为NULL
DEFAULT:用于指定默认值,如果不指定则mysql自动分配。自动分配的默认值
1. 默认为NULL
3. 例外的情形:auto_increment-->下一个值; 表中第一个timestamp类型的列,为当前日期时间的timestamp;
AUTO_INCREMENT: 从1开始, 必须被索引,一个表中只能有一个自增列
UNIQUE
KEY: index的同义词
PRIMARY KEY: 隐式指定 NOT NULL, UNIQUE, 唯一。
table options通常用于指定engine和[DEFAULT] CHARACTER SET以及COLLATE
例:
a. 创建普通表
create table if not exists mytable
(
id INT(11),
name VARCHAR(30)
)ENGINE=MyISAM character set=utf-8;
b. 设定主键
i) 直接在列类型后面添加
create table if not exists mytable
(
id INT(11) PRIMARY KEY,
name VARCHAR(30)
);
ii) 单独指定,该方法也可以用于创建多列联合主键
[CONSTRAINT <主键名>] PRIMARY KEY(列名1 [ ,列名2,…])
create table if not exists mytable
(
id INT(11),
name VARCHAR(30),
PRIMARY KEY(id)
);
c. 外键
[CONSTRAINT <外键名>] FOREIGN KEY(列名1 [ ,列名2,…]) REFERENCES <主表名>(主键列1 [ ,主键列2,…])
语法规范:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] <tbl_name>
(
col_name type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string'],
...
) [table_options] [select_statement];
实际上使用的时候:
TEMPORARY一般不需要使用,这个关键字用于创建临时表
if not exists建议使用
括号中为实际字段的定义:
type为数据类型
NOT NULL | NULL:指定该列是否可以为空,如不指定则默认值为NULL
DEFAULT:用于指定默认值,如果不指定则mysql自动分配。自动分配的默认值
1. 默认为NULL
3. 例外的情形:auto_increment-->下一个值; 表中第一个timestamp类型的列,为当前日期时间的timestamp;
AUTO_INCREMENT: 从1开始, 必须被索引,一个表中只能有一个自增列
UNIQUE
KEY: index的同义词
PRIMARY KEY: 隐式指定 NOT NULL, UNIQUE, 唯一。
table options通常用于指定engine和[DEFAULT] CHARACTER SET以及COLLATE
例:
a. 创建普通表
create table if not exists mytable
(
id INT(11),
name VARCHAR(30)
)ENGINE=MyISAM character set=utf-8;
b. 设定主键
i) 直接在列类型后面添加
create table if not exists mytable
(
id INT(11) PRIMARY KEY,
name VARCHAR(30)
);
ii) 单独指定,该方法也可以用于创建多列联合主键
[CONSTRAINT <主键名>] PRIMARY KEY(列名1 [ ,列名2,…])
create table if not exists mytable
(
id INT(11),
name VARCHAR(30),
PRIMARY KEY(id)
);
c. 外键
[CONSTRAINT <外键名>] FOREIGN KEY(列名1 [ ,列名2,…]) REFERENCES <主表名>(主键列1 [ ,主键列2,…])
2 数据表的结构
a desc|describe直接查看表中的字段信息
desc mytable;
b show create查看表的创建信息
show create table mytable;
a desc|describe直接查看表中的字段信息
desc mytable;
b show create查看表的创建信息
show create table mytable;
3 修改表名
语法规范:
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
例:
alter table mytable rename to new_name;
语法规范:
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
例:
alter table mytable rename to new_name;
4 修改字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
例:
alter table mytable change id myid int(11);
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
例:
alter table mytable change id myid int(11);
5 修改字段信息
ALTER TABLE <表名> MODIFY <字段1> <数据类型> [FIRST|AFTER <字段2>];
a 修改字段的数据类型
alter table mytable modify id int(10);
b 修改字段的相对位置
alter table mytable modify id int(10) after name;
ALTER TABLE <表名> MODIFY <字段1> <数据类型> [FIRST|AFTER <字段2>];
a 修改字段的数据类型
alter table mytable modify id int(10);
b 修改字段的相对位置
alter table mytable modify id int(10) after name;
6 添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];
这个方法也可以用来添加表的完整性约束。
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];
这个方法也可以用来添加表的完整性约束。
7 删除字段
ALTER TABLE <表名> DROP <字段名>;
这个方法也可以用来删除PK, FK, Unique等约束
ALTER TABLE <表名> DROP PRIMARY KEY|FOREIGN KEY|INDEX <字段名>;
ALTER TABLE <表名> DROP <字段名>;
这个方法也可以用来删除PK, FK, Unique等约束
ALTER TABLE <表名> DROP PRIMARY KEY|FOREIGN KEY|INDEX <字段名>;
8 修改存储引擎
ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
9 删除表
独立表可以直接删除:
DROP TABLE [IF EXISTS]表1, 表2, . . . 表n;
对于有外键关联的表,需要删除表中或者主表中的外键字段,然后删除该表。
独立表可以直接删除:
DROP TABLE [IF EXISTS]表1, 表2, . . . 表n;
对于有外键关联的表,需要删除表中或者主表中的外键字段,然后删除该表。
10 显示表
show tables;
show tables;
11 表的完整性约束
a alter table add 添加
alter table [table_name] add constraint [constraint_name] [unique| primary key|foreign key] ([column_names])
b alter table drop删除
a alter table add 添加
alter table [table_name] add constraint [constraint_name] [unique| primary key|foreign key] ([column_names])
b alter table drop删除