0、使用数据库
use test;
1、查看数据表的结构
show columns from tb_name;
2、创建数据表
create table tb1(
username varchar(20) not null,
age tinyint unsigned null
);
3、自动编号
create table tb2(
id smallint unsigned auto_increment,
username varchar(30) not null
);
4、主键约束
每张数据表只能存在一个主键
主键保证记录的唯一性,主键自动为not null
create table tb3(
id smallint unsigned auto_increment primary key,
username varchar(30) not null
);
5、唯一约束
唯一约束可以保证记录的唯一性
唯一约束的字段可以为空值
每张数据表可以存在多个唯一约束
create table tb4(
id smallint unsigned auto_increment primary key,
username varchar(20) not null unique key,
age tinyint unsigned
);
6、默认约束
当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。
create table tb5(
id smallint unsigned auto_increment primary key,
username varchar(20) not null unique key,
sex enum('1','2','3') default '3'
);
7、外键约束
实现一对一或一对多的关系。
父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
数据表的存储引擎只能为InnoDB
外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同。
外键列和参照列必须创建索引,如果外键列不存在索引的话,mysql将自动创建索引。
default-storage-engine=INNODB
7.1、创建省份表(父表)
create table provinces(
id smallint unsigned primary key auto_increment,
pname varchar(20) not null
);
7.2、创建用户表(子表)
create table users(
id smallint unsigned primary key auto_increment,
username varchar(10) not null,
pid smallint unsigned,
foreign key (pid)references provinces(id)
);
8、外键约束(父表进行操作子表的操作)
cascade:在父表删除或更新且自动删除或更新子表中匹配的行
create table users(
id smallint unsigned primary key auto_increment,
username varchar(10) not null,
pid smallint unsigned,
foreign key (pid)references provinces(id) on delete cascade
);
set null:在父表删除或更新行,并设置子表中的外键列为null。(必须保证子表列没有指定not null)
restrict:拒绝对父表的删除或更新操作。
no action:标准sql的关键字,在mysql中与restict相同。
9、表级约束与列级约束
对一个数据列建立的约束,称为列级约束。
对多个数据列建立的约束,称为表级约束。
10、添加约束
添加主键:
alter table user2 add constraint pk_users2_id primary key(id);
添加唯一约束:
alter table user2 add unique(username);
添加外键约束:
alter table user2 add foreign key (pid) references provinces (id);
添加一个字段:
alter table user2 add age tinyint unsigned not null;
添加默认约束:
alter table user2 alter age set default 15;
删除默认约束:
alter table user2 alter age drop default;
11、删除约束
删除主键约束:
alter table user2 drop primary key;
删除唯一约束:
alter table user2 drop index username;
删除外键约束:
alter table user2 drop foreign key user_ibfk_1;
12、修改列定义:
alter table user2 modify id smallint unsigned not null first;
alter tale user2 modify id tinyint unsigned not null;
13、修改列名称:(少使用) 会造成存储过程和视图无法正常工作
alter table user2 change pid p_id tinyint unsigned not null;
14、数据表更名:(少使用)会造成存储过程和视图无法正常工作
alter table user2 rename user3;
rename table user2 to user3;
15、
