数据库里表和表的关系有三种:一对一、一对多、多对多。
在MySQL数据库管理系统中,创建表通过SQL语句create table来实现,语法如下
create table 表名(
属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],
....
属性名 数据类型 [完整性约束条件]
)
表名不能为SQL语言的关键字,一个表中可以有一个或多个属性,在定义时,字母大小写均可,各个属性之间用逗号隔开,最后一个属性后面不需要加逗号
describe 表名;
show create table 表名
删除表是指删除数据库中已存在的表,在删除表时会删除表中所有的数据,因此在删除表时要特别注意。在MySQL中, 使用drop table 语句删除没有被关联的普通表,其基本语法如下:
drop table 表名
~~~
数据库系统通过表名来区分不同的表,表名在同一个数据库中唯一标识一张表,在MySQL中,修改表名是通过SQL语句alter table来实现的
alter table 修改表名 rename [to] 新表名
在创建表时,表中的字段就已经定义完成了,如果要增加新的字段,看了眼通过alter table语句来实现,语句如下
alter table 表名 add 字段名称 数据类型;
可以使用first关键字使所增加的字段位于所有字段的第一个位置,具体SQL语句如下
alter table 表名 add 字段名称 数据类型 first
可以通过关键字after 在指定的字段之后添加字段,具体语句如下
alter table 表名 add 字段名称 数据类型 after 已经存在的字段
在MySQL数据库管理系统中,删除字段通过SQL语句alter table来实现,其语法形式如下:
alter table 表名 drop 字段名
在MySQL中,alter table语句也可以修改字段的名称,其基本语法如下
alter table 表名 charge 所修改字段 新字段名 数据类型
在MySQL中,alter table语句也可以同时修改字段的名称顺序,其基本语法如下
alter table 表名 modify pName1 proptype first|after pName2
完整性约束条件是对字段进行限制的 ,要求用户对该属性进行的操符合特定的要求,如果不满足完整性的约束条件,数据库系统将不再执行 用户的操作,MySQL中基本的完整性约束条件如表所示
约束条件 | 说明 |
---|---|
primary key | 主键约束,标识该属性为该表的主键 |
foreign key | 标识该属性为该表的外键,是与之联系的某表的主键 |
not null | 标识该属性不能为空 |
unique | 标识该属性是唯一的 |
auto_increment | 标识该属性的值自动增加 |
default | 为该属性设置默认值 |
当数据库表中的某个字段不喜欢设置为Null时,则可以使用非空约束进行设置,其语法形式如下
create table 表名(
字段名 字段类型 not null,
)
//键表后添加约束
alter table 表名称 modify 字段名 数据类型 not null;
//删除约束
alter table 表名称 modify 字段名 数据类型;#去掉not null,相当于修改某个非注解字段,该字段允许为空
为字段设置默认值,当为数据库表中插入一条新纪录时,如果没有为某个字段赋值,那么数据库系统会自动为这个字段插入默认值,其语法形式如下
create table 表名(
字段名称 字段类型 default 默认值
)
当数据库表中某个字段的内容不允许重复时,可以使用唯一约束来进行设置,其语法形式如下
create table 表名(
字段名称 字段类型 unique,
)
主键是表的一个特殊字段,该字段唯一的标识该表中的每条信息,主键满足的条件就是主键必须是唯一的且是非空,主键可以是单一的字段也可以是多个字段的组合
create table 表名(
字段名称 字段类型 primary key
)
create table 表名(
字段1,字段类型1,
字段2 ,字段类型2,
....
[constraint pk_name] primary key(字段1,字段2)
)
auto_increment是MySQL唯一扩展的完整性约束,当为数据库表插入新纪录时,字段上的值会自动生成唯一的ID,在具体设置auto_increment约束时,一个数据库表中能有一个字段使用该约束,该约束的数据类型必须是整数类型,由于设置auto_increment约束后悔生成惟一的ID,因此该字段经常会同时设置成PK约束,其语法形式如下
create table 表名(
字段名 字段类型 auto_increment
)
CREATE TABLE table_name(
字段名 数据类型 ,
字段名 数据类型
.......
[CONSTRAINT <外键约束名>] FOREIGN KEY (从表字段) 【,从表字段2 ,.....】
REFERENCES <主表表名> <主表字段 [ ,主表字段2,......] >
);
字段名 | 字段描述 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
---|---|---|---|---|---|---|---|
id | 编号 | int(4) | 是 | 否 | 是 | 是 | 是 |
num | 学号 | int(10) | 否 | 否 | 是 | 是 | 是 |
name | 姓名 | varchar(20) | 否 | 否 | 是 | 否 | 否 |
gender | 性别 | varchar(4) | 否 | 否 | 是 | 否 | 否 |
birthday | 出生日期 | datetime | 否 | 否 | 否 | 否 | 否 |
address | 家庭住址 | varchar(50) | 否 | 否 | 否 | 否 | 否 |
grade | 年级 | varchar(4) | 否 | 否 | 是 | 否 | 否 |
class | 班级 | varchar(10) | 否 | 否 | 是 | 否 | 否 |