第二章 创建、删除和修改表

创建表

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)先删除子表,再删除父表

posted @ 2016-05-24 21:16  且听风吟-wuchao  阅读(426)  评论(0编辑  收藏  举报