主键:唯一标识这一行的数据
外键:关联到其他表主键的字段
索引:提高数据的查询速度,占用一定的磁盘空间,减慢数据删除和插入的速度(因为插入和删除数据都需要更新索引)。
表关联:关系数据库的核心理念,通过关联,可以表达复杂的数据关联(如学生表,课程表进行关联)

SQL:Structured Query Language

SQL 具有下面4个主要的功能:
1.创建数据库并定义表的结构;
2.查询需要的数据;
3.更新或者删除指定的数据;
4.控制数据库的安全。

创建数据表:

create table 表名
(
字段名1 字段类型,
字段名2  字段类型,
... 
约束定义1,
约束定义2,
…
)

如:
create table students(
Snumber int, 
Sname varchar(10),
Sage int)

定义非空约束:直接在字段类型定义后增加:not null即可
如:

create table students(Snumber int not null , Sname varchar(10)not null ,Sage int)

定义默认值:直接在字段类型后加 default"默认值"
如:默认年龄为18

create table students(
Snumber int,
 Sname varchar(10),
Sage int default"18")

定义主键:在所有字段后的“约束定义段”来定义,格式为primary key(主键字段名)
如:定义学生编号为主键

create table students(
Snumber int,
 Sname varchar(10),
Sage int default"18",
primary key(Summer))

注意:主键不能为空,不能存在重复数据,主键名可以不用括号,但是为保证数据语言的可移植性一般都加上。

联合主键:用两个或多个字段来确定一个唯一的数据,定义格式与唯一主键一样,只需要在其后增加一个字段名即可。

如:学生编号在不用的学校可能存在相同的情况,此时我们可以通过学校名称+学生编号来确定一个学生。

create table students(
Snumber int, 
Sname varchar(10),
Sage int default"18", 
Sschool_name varchar(20),
primary key(Summer ,Sschool_nane))

联合主键的缺点:
1,效率低。进行增删改查时数据库需要多个字段,降低效率
2,数据库设计结构变得混乱。使用“业务主键”与最佳实践相冲突,容易造成系统开发和维护的麻烦
3,加大开发难度
4,外键关联变得复杂

定义外键:通过外键可以把相互独立的表联合起来。定义在源表中,也在“约束定义段”所有字段定义的后面,格式为:
foreign key 外键字段名 references 目标表名(被关联的字段名)
如:
1.创建一个部门信息表,主键为FID,部门名Fname,部门级别Flevel等

create table T_department(
Fid varchar(20),
Fname varchar(20),
Flevel int, 
primary key(Fid) )

2.创建员工信息表,记录工号、姓名,所属部门等信息,为了能够建立同部门信息表之间的关联关系,在员工信息表中要保存部门信息表中的主键,保存这个主键的字段就被称为员工信息表中指向部门信息表的外键。

create table T_employee (
Fnumber varchar(20),
Fname varchar(20),
FdepartmentId varchar(20),
foreign key(FdepartmentId) references T_department(Fid))

修改已有数据表:alter table
添加字段:alter table 待改表名 add 字段名 字段类型
如:

alter table student add Sfavorite varchar(20)

删除字段:alter table 待改表名 drop 待删字段名
如:

alter table student drop Sage

在DB2数据库中不能删除字段,若要删除只能从新创建一个表,减少不需要的字段,然后删除源表,重命名新建的表为原表名。

删除数据表:drop table 表名
如:

drop table student

注意:若在表之间创建了外键关联关系,那么在删除被引用数据表的时候会删除失败,因为这样会导致关联关系被破坏,所以必须首先删除引用表,然后才能删除被引用表。比如A表创建了指向B表的外键关联关系,那么必须首先删除A表后才能删除B表(不能直接删除B表)