在数据库中通过数据表来存放记录,在数据表中经常会碰到主外键,索引,约束等条件,下面就详细一下。
主键
一张数据表中唯一的标识,确保一张数据表中不会出现两个完全相同的数据记录。
主键可以定义在多个列上,也就是说在定义数据库的时候可以将数据表中的多个列合并在一起作为该表的主键
外键
用来表与表之间关系的。如果字段F是表B中的字段,而且是表A的主键的话,那么列F就是表B的外键。用来执行增
删改查的时候,两张表一致性。
外键删除时,对应的表中的记录也应该做出相应的调整,分为三种方式
1.CASCADE:级联删除,如果主表中的记录被删除,那么从表中的记录也一并被删除
2.SET NULL:置空删除,如果主表中的记录被删除,那么从表中的记录就会被置空
3.RESTRICT:受限删除。如果主表中的一条记录被删除,那么系统会报错,会告知用户从表中的记录仍然存在
create table t_result
(
stuid varchar(15),
curid varchar(15),
result int,
foreign key(stuid) references t_student(stuid) on delete cascade,
--定义外键
)
牛刀小试
create table t_student
(
stuid varchar(15) primary key, --创建主键
stuname varchar(10) not null, --非空约束
age int not null,
sex varchar(2) not null,
birth datetime not null,
)
索引
用来加快访问的速度,节省访问的时间
索引就好比是一本书的目录或者是一个电话薄,能够节约查询的时间
索引就好比是一个数据库中的指针,当执行查询操作时,WHERE子句会首先执行索引的字段
索引的分类
唯一索引 在数据表中使用UNIQUE关键字就可以为一个数据列定义一个唯一索引,当定义了唯一索引列后,就保证
不会有重复的记录插入到该数据表中
主索引 在数据表中使用PRIMARY KEY关键字也可以保证该列不会有重复的记录输入到里面
单列索引 定义在数据表中一个数据列上的索引就是单列索引,当where子句中经常用到数据表中的某一列作为查
询条件时,为了提高查询效率就可以为该列建立单列索引
复合索引 定义在一个数据表的多个数据列上,就别成为复合索引,像单列索引一样,如果where子句用到多列的
话,就可以为多列建立复合索引
聚簇索引 为了提高SQL语句对数据表的查询效率,可以为数据表创建索引
牛刀小试
添加索引
create index i_profession --添加索引
on t_student(stuid asc)
约束
为了保证数据的完整性,需要使用约束
唯一性(UNIQUE):保证某一列没有重复的值,但是可以运行在列中插入空值
主键约束(PRIMARY KEY):使用主键的列只能由唯一值
外键约束(FOREIGN KEY):参照性约束,保证两个关联的表之间不会发生信息不对称
检查约束(CHECK):限制某一个列插入的值符合某一条件
非空约束(NOT NULL):某一列插入的数值不能为空值
牛刀小试
create table t_curriculum
(
curid varchar primary key, --主键约束
curname varchar unique,--唯一性约束
credit int,
check(credit between 2 and 8) --检查约束
)
修改数据库中的表
如果在创建完数据表之后,还需要对数据表结构做一些修改的话,例如修改索引,增加一行,修改数据库表中的某
一列等,就会需要使用ALTER TABLE语句。
添加一列
alter table table_name add column_name data_type
更改一列
alter table table_name alter column column_name
牛刀小试
alter table t_student add salary int not null --更改一个表中的信息
ALTER TABLE t_student alter COLUMN sex char(4)
原文:http://blog.csdn.net/luckyzhoustar/article/details/25739275