创建表
create table 表名(属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件]);
注:建表前先选择数据库
约束条件
约束条件 |
说明 |
primary key |
设为主键 |
foreign key |
设为外键,是与之联系的某表的主键 |
not null |
设该属性不能为空 |
unique |
标识该属性的值是唯一的 |
auto_increment |
标识该属性的值自动增加 |
default |
设置该属性的默认值 |
查看表结构
describe 表名;
mysql> describe user;
设置表的主键
单字段主键
mysql> create table user(id int primary key, name varchar(23));
多字段主键
primary key(属性名1,属性名2)
mysql> create table user(id int,course_id int,grade float,primary key(id,course_id));
设置表的外键
user_id(主键) | name | age |
course_id(主键) | course_name | user_id(外键) |
当父表删除某条信息时,子表对应得信息也会被删除。
constraint 外键别名 foreign key(属性1.1,属性1.2,……) references 表名(属性2.1,属性2.1,……)
创建父表
mysql> create table user(u_id int primary key,name varchar(20));
创建子表
mysql> create table course(id int primary key,u_id int,constraint c_fk foreign key(u_id) references user(u_id));
c_fk为外键的别名,而且外键必须是父表的主键
设置表的非空约束
mysql> create table course(id int primary key,name varchar(20) not null,u_id int,constraint c_fk foreign key(u_id) references user(u_id));
设置表的唯一约束
mysql> create table course(id int primary key,name varchar(20) unique,u_id int,constraint c_fk foreign key(u_id) references user(u_id));
设置表的属性值自动增加
mysql> create table course(id int primary key auto_increment,name varchar(20) not null,u_id int,constraint c_fk foreign key(u_id) references user(u_id));
设置表的属性的默认值
mysql> create table course(id int primary key auto_increment,Computer float default 0,name varchar(20) not null,u_id int,constraint c_fk foreign key(u_id) references user(u_id));
查看表结构
describe
show create table
修改表
修改表名
alter table 旧表名 rename 新表名;
修改字段的数据类型
alter table 表名 modify 属性名 数据类型;
mysql> alter table user modify name varchar(30);
修改字段名
alter table 表名 change 就属性名 新属性名 新数据类型
mysql> alter table user change u_id user_id int;
更改后的字段与原来字段约束一致,如不更改数据类型,则与原来一致
增加字段
alter table 表名 add 属性名1 数据类型 [约束条件] [first| after 属性名2]
first参数指定新增字段为表的第一个字段,after指定在原有某个字段之后。默认在表的最后一个字段
mysql> alter table user add user_age int not null after user_id;
删除字段
alter table 表名 drop 属性名;
mysql> alter table user drop user_age;
修改字段的排列位置
alter table 表名 modify 属性名1 数据类型 first|after 属性名2;
更改表的存储引擎
alter table 表名 engine=存储引擎名;
更改表的默认编码集
alter table 表名 charset=utf8;
删除表的外键约束
alter table 表名 drop foreign key 外键别名;
删除表
删除未被关联的普通表
drop table 表名;
删除被关联的父表
(1)先删除子表的外键约束,再删除父表
(2)先删除子表,再删除父表