回顾数据库系统组成。
数据表是一个数据库里面用来存储数据的基本单元,是由表结构、表数据组成。
SQL语句不区分大小写,但是表就是一个文件名,windows不区分大小写,linux区分大小写,所以在命名时候,需要注意:
表的作用:存放相同规则的数据
表是有由列和数据组成的。每行数据称作一个条目,每一列称作一个字段
create
drop
truncate
rename
alter
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 表名称(
字段名1 列类型 [属性] [索引],
字段名2 列类型 [属性] [索引],
。。。
字段名n 列类型 [属性] [索引],
表的约束条件
) [表类型] [表字符集类型];
表名称和字段名 需要用户自定义名称;
SQL语句不区分大小写,但是表就是一个文件名,windows不区分大小写,linux区分大小写,所以在命名时候,需要注意:
约束的表现形式:
常用约束:
create table t2(id int null);
create table t3(id int,name varchar(30) not null);
create table t3(id int,name varchar(30) not null default ‘briup’);
create table t6(name varchar(30) unique not null,gender enum(‘male’,’famale’) default ‘male’);
create table t7(
id int,
name varchar(30),
unique(id),
unique(name)
);
create table t8(
id int,
name varchar(30),
unique(id,name)
);
create table t9( //主表 学生表
id int primary key, //学号
name varchar(30) //名字
)engine = innodb;
create table t10( //课程表
classId int primary key, //课程编号
className varchar(30),//课程名
credit double //学分
)engine=innodb;
create table t11( //成绩表
id int, //学号
classId int, //课程编号
score double, //成绩
primary key(id,classId),
foreign key(id) references t9(id),
foreign key(classId) reference t10(classId)
)engine=innodb;
注意:现在在成绩表中,单一的一个属性无法唯一标识一条记录,学号和课程号组合起来才可以唯一标识一条记录,所有学号和课程号的属性组是一个主键。
成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键(更加规范而言,只要学号是学生表中的唯一标识即可),则称成绩表中的学号是学生表的外键。
create table tbname(
列的完整定义1,
列的完整定义2,
。。。
列的完整定义n,
key k_name(列的名字),
index idx_name(列名)
);
也可以单独创建
create index idx_name on tb_name(字段1,字段2...);
删除一个索引
drop index idx_name on tb_name;
视图就是数据中表的窗口,在表上的查询所形成的一个数据集体。通过视图,我们可以看到自己需要的信息,而排除其他不关心的内容。
使用视图的好处有:
使用视图的主要目的:
创建和删除:
create view v_name as select id,name from tb_name;
drop view v_name;
总结:
__1.第一范式(确保每列保持原子性):__保证数据库表中的所有字段值都是不可分解的原子值,比如一个字段地址,可以在拆分为省份,县市,街道,门牌号。也视需求而定。
2.第二范式(确保表中的每列都和主键相关): 比如在一个订单表中,有订单的相关信息以外,还有商品编号,商品名称,商品数量,商品单位等信息,但是显然,商品相关的信息与订单无关,一个合理的做法应当是把商品表从订单表中拆分出来。
__3.第三范式(确保每列都和主键列直接相关,而不是间接相关):__第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。
drop table tablename
:将整个表直接删除,所有表中的数据和表定义均被删除,故小心使用这个命令!
truncate table
:清空表内数据,恢复自增序列ID号
alter table test rename as T;
:将数据表清空。
有的时候我们需要对某个表增加字段
有的时候我们需要修改某个字段的长度
有的时候需要去掉某个字段
有的时候需要增加索引
有的时候我们需要增加或者删除主键
有的时候需要增加或者删除表的其他约束
操作实例
注意: