在数据库中通过数据表来存放记录,在数据表中常常会碰到主外键。索引。约束等条件,以下就具体一下。
主键
一张数据表中唯一的标识。确保一张数据表中不会出现两个全然同样的数据记录。
主键能够定义在多个列上。也就是说在定义数据库的时候能够将数据表中的多个列合并在一起作为该表的主键
外键
用来表与表之间关系的。
假设字段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子句会首先运行索引的字段
索引的分类
唯一索引 在数据表中使用UNIQUEkeyword就能够为一个数据列定义一个唯一索引,当定义了唯一索引列后,就保证
不会有反复的记录插入到该数据表中
主索引 在数据表中使用PRIMARY KEYkeyword也能够保证该列不会有反复的记录输入到里面
单列索引 定义在数据表中一个数据列上的索引就是单列索引。当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)