[toc]
1、创建表
create table 表名(
列名 类型 是否可以为空,
列名 类型 是否可以为空
)ENGINE=InnoDB DEFAULT CHARSET=utf8
- InnoDB 支持事务回滚,原子性操作
- myisam 不支持事务,但速度快
是否可以为空
- 是否可空,null表示空,非字符串
- not null - 不可空
- null - 可空
默认值
默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
create table 表名(
nid int not null defalut 2,
num int not null
)
2、设置自增和主键
自增
自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
注意:
- 对于自增列,必须是索引(含主键)
- 对于自增可以设置步长和起始值
create table 表名(
nid int not null auto_increment primary key,
num int null
)
或
create table 表名(
nid int not null auto_increment,
num int null,
index(nid)
)
auto_increment
表示:自增
primary key
表示: 主键约束(不能重复且不能为空),有加速查找的效果
主键
主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
create table 表名(
nid int not null auto_increment primary key,
num int null
)
或
create table 表名(
nid int not null,
num int not null,
primary key(nid,num)
)
唯一索引
唯一索引(此列值不能重复)
==unique 唯一索引名称 (列名)==
create table t1(
id int ....,
num int,
xx int,
unique uq1 (num),
constraint ....
)
联合唯一索引(此两列排列组合值不能重复)
==unique 唯一索引名称 (列名,列名)==
create table t1(
id int ....,
num int,
xx int,
unique uq1 (num,xx),
constraint ....
)
外键
外键,一个特殊的索引,只能是指定内容
creat table color(
nid int not null primary key,
name char(16) not null
)
create table fruit(
nid int not null primary key,
smt char(32) null ,
color_id int not null,
constraint fk_cc foreign key (color_id) references color(nid)
)
3、查看表设置
- 查看表设置
desc 表名;
- 以sql语句的方式查看表设置
show create table 表名;
- 以竖向的方式查看
show create table 表名 \G;
4、设置自增起始值
- 设置自增起始值
alter table 表名 AUTO_INCREMENT=20;
5、设置步长
MySQL: 设置自增步长
基于会话级别:
- 查看全局变量
show session variables like 'auto_inc%';
- 设置会话步长
set session auto_increment_increment=2;
- 设置起始值(在表里可以设置起始值,不必在这里设置)
set session auto_increment_offset=10;
基于全局级别(基本上不用):
- 查看全局变量
show global variables like 'auto_inc%';
- 设置会话步长
set global auto_increment_increment=2;
- 设置起始值(在表里可以设置起始值,不必在这里设置)
set global auto_increment_offset=10;
(参考)SqlServer:自增步长:
基础表级别:
CREATE TABLE `t5` (
`nid` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL,
`num` int(11) DEFAULT NULL,
PRIMARY KEY (`nid`,`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=4, 步长=2 DEFAULT CHARSET=utf8
CREATE TABLE `t6` (
`nid` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL,
`num` int(11) DEFAULT NULL,
PRIMARY KEY (`nid`,`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=4, 步长=20 DEFAULT CHARSET=utf8
删除及清空表
- 删除表:
drop table 表名
- 清空表数据:
delete from 表名
- 清空表数据和自增起始值:
truncate table 表名
修改表
- 添加列:
alter table 表名 add 列名 类型
- 删除列:
alter table 表名 drop column 列名
- 修改列类型:
alter table 表名 modify column 列名 类型;
- 修改列名,类型:
alter table 表名 change 原列名 新列名 类型;
- 添加主键:
alter table 表名 add primary key(列名);
- 删除主键:
alter table 表名 drop primary key;
</br>alter table 表名 modify 列名 int, drop primary key;
- 添加外键:
alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
- 删除外键:
alter table 表名 drop foreign key 外键名称
- 修改默认值:
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
- 删除默认值:
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;