SQL Server 2005
一.数据完整性
1.实体完整性
实体:数据库表中的一行就是一个实体,也可以称为一个对象。 每一行也可以叫做记录(record)。
实体的完整性就是行的唯一性,即同一张表中无相同记录
2.域完整性
即对每一列来进行约束
列有很多种叫法: 字段(field),域
3.引用完整性
建立两表的联系时,保证外建的值引用主键的值
4.自定义完整性
自定义完整性用来制定特定的业务规则,利用存储过程、触发器来实现。
二.创建表
1.图形界面
展开需要建表的数据库-->右击表-->新建表-->输入列名,数据类型等-->点击工具栏的保存按钮。
刷新表即可看到新建的表。
2.SQL语句
三.添加约束
1.约束
可以在表中的某个列或者几个列上添加约束。
当数据进入表的时候,SQL Server会查看数据是否满足约束,如果满足则将其保存到数据库中,如果不满足,则拒绝数据进入到数据库表中。
为表添加约束是在定义表的时候,或者表结构已经创建,插入数据之前添加约束。
2.约束分类
①主键约束primary key
主键:用来唯一标识表中一行的列称为主键
主键值不能为空,不能重复。
②空约束 null/not null
③外键约束foreign key
一个表可以有多个外键
指定一列为外键,外键所在的表为子表,外键的数据必须引用自另外一个表的主键,这个表称为主表,主键与外键数据类型必须相同,列名可以不同。
外键的数据必须引用自另外一个表的主键,即外键中所有的数据都必须在主键中存在,主键中的某些数据可以不被外键引用。
添加数据时要先添加主表记录,后添加子表记录
删除数据时要先删除子表记录,后删除主表记录
④唯一约束 unique
添加唯一约束的一列称为唯一键,取值必须唯一,不能有重复。
⑤检查约束check
检查字段值所允许的范围,验证数据是否合法,避免脏数据的输入。
⑥默认约束default
设置默认约束的列没有插入数据时,数据库将会为此列自动插入指定的默认值。
3.利用图形界面添加约束
右击要修改的表-->修改表-->在相应列名前面点击设置相应约束-->保存
4.利用SQL语句添加约束
①创建表时添加约束
②表已经建立,添加约束
alter table student
add constraint pk_student_id primary key(stuid)
alter table score
add constraint ck check(labExam>=0 and labExam<=100)
四.数据插入
1.图形界面
右击表-->打开表-->直接输入数据-->保存
2.SQL语句
格式:insert into 表名[列名1,列名2...] values(列值1,列值2...)
列名可省略,省略时为全部列插入数据
Insert into student(stuID,Name,gender,Birthday,address)
values(100,'张三','男','1990-5-5',default)
--address为默认值
3.一次插入多个数据
insert into <表名>(列名1,列名2...)
Select <列值1,列值2...> Union
Select <列值1,列值2...> Union
……
4.❤标识列插入数据
即一个自动增长列。数据库自动生成标识列的数据,向表中插入数据时不用为标识列插入。标识列只能是int型数据。
1.图形界面添加标识列。
可以在定义列的时候将下面的列属性中改成是标识列。或者在列定义完成之后,右击相应表-->选中相应列-->列属性改为是标识列-->保存
2.SQL语句添加标识列
五.数据删除
delete from 表名 [where 条件]
删除指定表中满足where条件的行。
删除张三的记录 delect from student where Name='张三'
六.数据更新
update <表名>
set ...
[where 条件]
给每个学生的成绩加10分
update score
set labExam=labExam+10
七.表复制
select * into新表名 from 原表名
select 列名 into 新表名 from 旧表名
复制表只会复制表结构和存储在表中的数据,不会复制约束。
若只需复制表结构,不复制数据
select * into新表名 from 原表名 where(条件为false)
八.为表添加一个标识列
1.为一个已存在的表添加一个新列,该列为标识列
alter table student
add n int identity (1, 1)
2.在复制表的同时为临时表添加一个新的标识列
select identity(int,1,1) as 别名,列名 into 新表名 from 旧表名
select identity(int,1,1) as id,stuID into score_s from score
九.删除表
1.图形界面
右击要删除的表-->删除-->确定
2.SQL语句
drop table student